【Inception-v3模型】迁移学习 实战训练 花朵种类识别

2023-10-26

参考博客:【TensorFlow】迁移学习(使用Inception-v3),非常感谢这个博主的这篇博客,我这篇博客的框架来自于这位博主,然后我针对评论区的问题以及自己的实践增加了一些内容以及解答。

github:代码

知识储备

  • 迁移学习是将一个数据集上训练好的网络模型快速转移到另外一个数据集上,可以保留训练好的模型中倒数第一层之前的所有参数,替换最后一层即可,在最后层之前的网络层称之为瓶颈层。
  • 迁移学习,首先尝试了Inception-V3,直接使用pool_3层的输出,接上一个全连接的分类层,使用softmax进行分类,使用Inception-V3的默认输入。

一、准备工作

1、数据集下载
2、Inception-v3模型下载

flower_photos/
    daisy/
    dandelion/
    roses/
    sunflowers/
    tulips/

数据集文件夹包含5个子文件,每一个子文件夹的名称为一种花的名称,代表了不同的类别。平均每一种花有734张图片,每一张图片都是RGB色彩模式,大小也不相同,程序将直接处理没有整理过的图像数据。

  • 模型解压后的目录:
imagenet_comp_graph_label_strings.txt
tensorflow_inception_graph.pb

3、目录结构

  • 需要自行创建transfer-learning/data/tmp/bottlenec/model/train.py/eval.py文件。
transfer-learning/
    data/
        flower_photos/
            ......
        tmp/
            bottleneck/
                ......
    model/
        imagenet_comp_graph_label_strings.txt
        tensorflow_inception_graph.pb
    train.py
    eval.py

二、代码实现

需要写两个文件:1、train.py 2、eval.py

1、train.py

python3 train.py

import glob
import os.path
import random
import numpy as np
import tensorflow as tf
from tensorflow.python.platform import gfile

# 数据参数
MODEL_DIR = 'model/'  # inception-v3模型的文件夹
MODEL_FILE = 'tensorflow_inception_graph.pb'  # inception-v3模型文件名
CACHE_DIR = 'data/tmp/bottleneck'  # 图像的特征向量保存地址
INPUT_DATA = 'data/flower_photos'  # 图片数据文件夹
VALIDATION_PERCENTAGE = 10  # 验证数据的百分比
TEST_PERCENTAGE = 10  # 测试数据的百分比

# inception-v3模型参数
BOTTLENECK_TENSOR_SIZE = 2048  # inception-v3模型瓶颈层的节点个数
BOTTLENECK_TENSOR_NAME = 'pool_3/_reshape:0'  # inception-v3模型中代表瓶颈层结果的张量名称
JPEG_DATA_TENSOR_NAME = 'DecodeJpeg/contents:0'  # 图像输入张量对应的名称

# 神经网络的训练参数
LEARNING_RATE = 0.01
STEPS = 1000
BATCH = 100
CHECKPOINT_EVERY = 100
NUM_CHECKPOINTS = 5


# 从数据文件夹中读取所有的图片列表并按训练、验证、测试分开
def create_image_lists(validation_percentage, test_percentage):
    result = {}  # 保存所有图像。key为类别名称。value也是字典,存储了所有的图片名称
    sub_dirs = [x[0] for x in os.walk(INPUT_DATA)]  # 获取所有子目录
    is_root_dir = True  # 第一个目录为当前目录,需要忽略

    # 分别对每个子目录进行操作
    for sub_dir in sub_dirs:
        if is_root_dir:
            is_root_dir = False
            continue

        # 获取当前目录下的所有有效图片
        extensions = {'jpg', 'jpeg', 'JPG', 'JPEG'}
        file_list = []  # 存储所有图像
        dir_name = os.path.basename(sub_dir)  # 获取路径的最后一个目录名字
        for extension in extensions:
            file_glob = os.path.join(INPUT_DATA, dir_name, '*.' + extension)
            file_list.extend(glob.glob(file_glob))
        if not file_list:
            continue

        # 将当前类别的图片随机分为训练数据集、测试数据集、验证数据集
        label_name = dir_name.lower()  # 通过目录名获取类别的名称
        training_images = []
        testing_images = []
        validation_images = []
        for file_name in file_list:
            base_name = os.path.basename(file_name)  # 获取该图片的名称
            chance = np.random.randint(100)  # 随机产生100个数代表百分比
            if chance < validation_percentage:
       
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Inception-v3模型】迁移学习 实战训练 花朵种类识别 的相关文章

  • inceptionv3迁移学习 训练+测试

    迁移学习在实际应用中的意义非常大 xff0c 它可以将之前已学过的知识 xff08 模型参数 xff09 迁移到一项新的任务上 xff0c 使学习效率大大的提高 我们知道 xff0c 要训练一个复杂的深度学习模型 xff0c 成本是十分巨大
  • 06.图像识别与卷积神经网络------《Tensorflow实战Google深度学习框架》笔记

    一 图像识别问题简介及经典数据集 图像识别问题希望借助计算机程序来处理 分析和理解图片中的内容 使得计算机可以从图片中自动识别各种不同模式的目标和对象 图像识别问题作为人工智能的一个重要领域 在最近几年已经取得了很多突破性的进展 其中 卷积
  • 决策树(Decision Tree,DT)(ID3、C4.5、剪枝、CART)

    目录 1 算法简介 2 特征选择 3 生成决策树 ID3 C4 5 4 修剪决策树 5 CART算法 CART回归树的生成 CART分类树的生成 CART剪枝 1 算法简介 决策树模型是树形结构 既可以用于分类 也可以用于回归 一颗决策树由
  • 迁移学习三——BDA和W-BDA

    本文是对 Balanced Distribution Adaptation for Transfer Learning 进行学习 问题引入 回顾之前的JDA 其目标函数是 m i n A
  • 学习笔记:SemanticStyleGAN 面向可控图像合成和编辑的组合生成先验学习

    CVPR 2022 SemanticStyleGAN Learning Compositional Generative Priors for Controllable Image Synthesis and Editing 面向可控图像合
  • 课设攻略--人脸特征点检测与图像风格迁移fast-style-transfer-master

    1 1必做题要求 人脸特征点检测 1 对实时的视频进行人脸检测功能 定位和标准 著名的深度学习库opencv和dlib均可检测出图像中的人脸 dlib更提供算法 从标注人脸特征点的数据集中训练模型 高效检测出人脸特征点 用于美颜 人脸位置摆
  • 域适应(Domain Adaptation)综述

    根据李宏毅老师的视频所归纳的笔记 视频链接 https www bilibili com video BV1TL411p7Us spm id from 333 999 0 0 假设我们在训练集上训练黑底白字的手写数字集后 如下图 再把它用在
  • 【神经网络】(9) 迁移学习(CNN-InceptionResNetV2),案例:交通标志4分类

    各位同学好 今天和大家分享一下Tensorflow2 0中使用迁移学习的方法 搭载InceptionResNetV2网络进行交通标志分类识别 1 网络简介 网络复现代码见下文 神经网络学习小记录35 Inception ResnetV2模型
  • PyTorch深度学习实战(15)——迁移学习

    PyTorch深度学习实战 15 迁移学习 0 前言 1 迁移学习 1 1 迁移学习基本概念 1 2 迁移学习的重要性 1 3 ImageNet 1 4 迁移学习流程 2 VGG16 架构 3 使用预训练 VGG16 模型实现猫狗分类 小结
  • Win10系统安装TensorRT

    一 Win10系统安装GPU版本CUDA Cudnn 二 Win10系统安装TensorRT 文章目录 环境搭建系列文章目录 TensorRT简介 一 版本对应关系 二 下载及安装 1 TensorRT 2 No module named
  • 浅谈迁移学习

    迁移学习背景 吴恩达 Andrew Ng 曾说 迁移学习将会是继监督学习之后的下一个机器学习商业成功的驱动力 现如今数据大爆炸 对机器学习模型来说要求快速构建 强泛化 对于数据来说 大部分数据没有标签 而传统的机器学习需要对每个领域都标定大
  • 模型分类model

    模型可以按照多个维度进行分类 以下是常见的几种模型分类方式 1 根据应用领域分类 数学模型 基于数学原理和方程式来描述和解决问题 如微积分模型 线性代数模型等 物理模型 基于物理原理和规律来模拟和解释现象 如力学模型 电路模型等 经济模型
  • 【深度学习】迁移学习

    什么是迁移学习 迁移学习 Transfer Learning 是一种机器学习方法 就是把为任务 A 开发的模型作为初始点 重新使用在为任务 B 开发模型的过程中 迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务 虽然大多数机器学
  • 迁移学习一、基本使用

    非完全原创 但遗失了原文链接 看到可更改 迁移学习 一 迁移学习方法介绍 1 微调网络的方法 微调网络的方法实现迁移学习 更改最后一层全连接 并且微调训练网络 2 将模型看成特征提取器 将模型看成特征提取器 如果一个模型的预训练模型非常的好
  • 部署gitlab以及迁移代码仓库方案

    作者 JohnLi 未经允许 禁止转载 一 关闭防火墙与内核 systemctl stop firewalld setenforce 0 二 配置yum源并下载依赖 root gitlab cd etc yum repos d root g
  • 重塑自监督学习: DINO 网络如何颠覆视觉特征表示的常规方法

    欢迎关注 CVHub 官方微信公众号 Title Emerging Properties in Self Supervised Vision Transformers Paper https openaccess thecvf com co
  • JUST技术:利用迁移学习生成新城市的轨迹

    市民的出行轨迹数据无论是对于城市管理 规划 还是商业活动 都是重要的参考信息 然而 获取一个城市的人群轨迹数据却非常困难 在今年4月份召开的国际顶级互联网会议WWW 2020 CCF A类 上 京东城市报告了被会议收录的论文 What is
  • 什么是迁移学习(Transfer Learning)?【精讲+代码实例】

    文章目录 1 Introduction 2 Development of Machine Learning 3 What is transfer learning 4 How to transfer 4 1 Example 1 物体识别 4
  • 【美国大学生数学建模比赛】2020C题(总结和原创参赛论文)百度云请自取

    最新想法 本学期选修了下大数据 发现其实本题的解法还涉及到数据库 大数据各个层次数据处理和分布式数据流blabla 而之前那几天美赛做的还停留在最基础的数据处理层 而且我现在觉得如果要做大的话不应该在这个层里面进行深度学习 前面的数据库处理
  • scikit-learn学习笔记

    数据划分 from sklearn model selection import train test split 数据预处理 数据标准化 归一化 from sklearn preprocessing import StandardScal

随机推荐

  • C++外观模式

    外观模式 1 外观模式简介及应用场景 外观者模式其实就是相当于对一组子系统功能的组合 对外提供统一的简单接口的模式 当我们在实际开发中 一般情况下是一个单独的子系统对应的是一个独立的功能模块 但是随着业务功能的不断增加 对应子系统的迭代必然
  • CentOS8 服务篇4:FTP文件传输服务搭建与配置

    FTP 文件传输服务三种配置模式 匿名模式 本地用户模式 虚拟用户模式 安装ftp服务 安装完后再根据不同模式进行配置 root localhost yum repos d yum install y vsftpd ftp vsftpd是搭
  • Qt中qss样式表

    qss样式表是用于设置QT程序UI界面中控件的背景图片 大小 字体颜色 字体类型 按钮状态变化等属性 美化UI界面 实现界面和程序的分离 可以快速切换皮肤 1 基本语法 selector attribute value 说明 selecto
  • Java生成exe执行文件

    一 准备工作 下载可将jar包转换的工具EXE4J工具 下载地址为 https www ej technologies com download exe4j files 下载完成 直接点击下一步安装 直到安装完成 导出项目jar包 按以下步
  • javaFile类知识点总结

    1 File类 Java io File类是文件和目录路径名的抽象表示 主要用于文件和目录的创建 查找 删除等操作 File中的静态成员变量 pathSeparator与系统有关的路径分隔符 File pathSeparator 代表路径分
  • android系统删除apk的广播,研究androidapk安装卸载等产生的系统广播

    想更加清楚的了解 android 系统在安装 卸载时产生的系统广播 于是写了一个 demo 来做监听 BroadReceiver 配置如下 html 这里有一点要注意 需配置 否则收不到广播 1 当你第一次安装某个应用的时候 java 10
  • 干货

    SpringCloud的从整体架构上看 相对来说是完整的 庞大的 它不仅仅是一个基础性架构工具 它为微服务架构提供了一个 全家桶 的套餐 每一个模块关注各自的职能 并且能够很好地配合与协作 能够帮助入门者快速搭建起一套微服务架构的服务 内容
  • MyBatis之使用JSONObject代替JavaBean优雅返回多表查询结果

    项目中需要返回多个表的查询结果 比如user表中的用户信息和user个人的所在班的班级信息 目前我们有user实体类和class实体类 一般情况下如果是单表查询 比如查询user信息 那么查询的返回值就是一个user对象或一个user对象列
  • Qt_Qt报错multiple target patterns

    去看看pro文件中的路径是否有问题
  • ARM7的三级流水线过程

    看到汇编中很多关于程序返回与中断返回时处理地址都很特别 仔细想想原来是流水线作用的效果 所以 决定总结学习下ARM流水线 ARM7处理器采用3级流水线来增加处理器指令流的速度 能提供0 9MIPS MHz的指令处理速度 PS MIPS Mi
  • Android RxJava第一弹之原理详解、使用详解、常用场景(基于Rxjava2.0)

    Android RxJava第一弹之原理详解 使用详解 常用场景 基于Rxjava2 0 Android RxJava第二弹之RxJava封装库 RxJava Animation RxJava Glide Android RxJava第三弹
  • C语言数据结构复杂度

    文章目录 前言 什么是数据结构 什么是算法 算法效率 算法的复杂度 时间复杂度 时间复杂度的概念 大O的渐进表示法 常见时间复杂度计算举例 空间复杂度 常见复杂度对比 前言 从这篇博客开始为数据结构与算法的相关内容 数据结构比较难 博主建议
  • Leecode初级算法字符串——验证回文串

    给定一个字符串 验证它是否是回文串 只考虑字母和数字字符 可以忽略字母的大小写 说明 本题中 我们将空字符串定义为有效的回文串 示例 1 输入 A man a plan a canal Panama 输出 true 解释 amanaplan
  • tcp三次握手

    在TCP IP协议中 TCP协议提供可靠的连接服务 采用三次握手建立一个连接 第一次握手 建立连接时 客户端发送syn包 syn j 到服务器 并进入SYN SEND状态 等待服务器确认 第二次握手 服务器收到syn包 必须确认客户的SYN
  • Ubuntu18.04安装教程

    Ubuntu18 04安装教程 一 准备工作 1 下载 Ubuntu 镜像 2 制作U盘启动盘 3 给 Ubuntu 分配硬盘空间 二 安装 Ubuntu18 04 1 设置启动项 2 正式安装 1 选择语言 2 键盘布局 3 无线连网 4
  • Python 字典10种意想不到的用途

    Python 字典10种意想不到的用途 1 switch case语句 2 记忆化 3 稀疏矩阵 4 图表 5 状态机 6 计数频率 7 XML HTML 解析 8 配置文件 9 缓存 API 响应 10 编码和解码数据 源码 参考 Pyt
  • GIS gentools jar包使用

    package ghgf import java io File import java io IOException import java io Serializable import java net MalformedURLExce
  • 随机梯度下降求解svm(MATLAB)

    本文转载自 http blog csdn net orangehdc article details 38682501 随机梯度下降法 Stochastic Gradient Descent 求解以下的线性SVM模型 w的梯度为 传统的梯度
  • VTK学习之vtkProp

    vtkProp 渲染场景中数据的可视表达 Visible Depictions 是由vtkProp的子类负责 也就是说 数据想要进行可视化显示 需要一个转换过程 这个过程就是转换为vtkProp 这样才能进行渲染展示出来 而vtkProp子
  • 【Inception-v3模型】迁移学习 实战训练 花朵种类识别

    参考博客 TensorFlow 迁移学习 使用Inception v3 非常感谢这个博主的这篇博客 我这篇博客的框架来自于这位博主 然后我针对评论区的问题以及自己的实践增加了一些内容以及解答 github 代码 知识储备 迁移学习是将一个数