2020年tensorflow定制训练模型笔记(3)——开始训练

2023-11-11

现在,我们开始训练文件。这里,我将用一些训练好的模型来做迁移训练。
这里简单介绍一下迁移训练,迁移训练就是在别人训练的模型基础上继续训练,这样我们的模型训练就不是从零开始,加快速度以及提高准确率。(我讲的比较简单)
参考网址在这:https://blog.csdn.net/hehedadaq/article/details/79845761

1.配置文件

1.1 配置pbxt文件

  1. 来到object_detection/data/ 文件夹下,随便复制一个.pbxt格式的文件到你的xx_object/data/ 文件下。
  2. 修改里面的内容如下图所示,你有几个类别就写几个。保存并且重命名(随便你命名什么,自己方便即可)
  3. 将两个csv文件和两个record文件都放到这里
    在这里插入图片描述

1.2 下载模型
我举例两个模型,大家二选一即可。理论上faster-rnn更加准确,ssd更加快,但是不知道是不是写代码时间的问题,2018年的faster我感觉速度和准确率都要好于ssd,大家可以试试。由于我暂时找不到还不错的模型地址,正常情况下去在官方渠道上搞到的。我就提供百度云好了。
ssd_mobilenet_v1_coco_2017_11_17模型:
链接:https://pan.baidu.com/s/1mqCa4MqgzFtXPSkoXvIVWA
提取码:yyge

faster_rcnn_inception_v2_coco_2018_01_28模型:
链接:https://pan.baidu.com/s/1PUBklY9FMeBVYy5jQlpMeQ
提取码:tu2d

1.3 解压
放到ogject_detection文件夹下解压
在这里插入图片描述
在这里插入图片描述
1.4 配置.config文件
在object_detection\samples\configs 文件夹下找到对应的.config文件(理论上这里面有的模型你都可以下载训练试试)
理论上这里面有的模型你都可以下载训练试试
我拿faster_rcnn_inception_v2_coco_2018_01_28模型举例 ,复制faster_rcnn_inception_v2_coco.config到 xx_object/training 文件夹下

  1. 修改第10行的num个数,我是6个所以写6
    在这里插入图片描述

  2. 86行的batch_size根据你电脑的性能填,保守起见填1。这可以算是训练的最低标准了。

  3. 修改第107行的文件路径,就是你下载的那个模型文件夹路径
    在这里插入图片描述

  4. 122行与136行是你对应文件夹下的record文件

  5. 124与138行是你对应文件夹下的pbtxt文件

  6. 128行 num_examples 这个值看情况,网上有人目前训练200个样本设置的值是 10,我100个左右所以写了3这样子。详细了解的话百度 。
    在这里插入图片描述
    然后保存,将xx_object文件夹下的data文件夹(为避免重命名所以我改名为mydata文件夹了)和training文件夹单独放入到object_detection文件夹下。现在我们文件就全配置完了,可以开始训练模型了。

2.训练模型

在object_detection文件夹下运行此代码:

python legacy/train.py --logtostderr --train_dir=./training --pipeline_config_path=./training/faster_rcnn_inception_v2_coco.config --num_train_steps=50000   --num_eval_steps=2000   --alsologtostderr
  1. –logtostderr:我也不知道是干啥的
  2. –train_dir:训练文件夹
  3. –pipeline_config_path:config文件所在的位置
  4. –num_train_steps:设置的步数值
  5. –num_eval_steps:设置的验证值
  6. –alsologtostderr:不知道什么作用
  7. 上限200000,在config文件里有说明,你可以找一找。
  8. 如果你是gpu版本的,直接输入上面修改后的代码。但如果是cpu版本的需要打开legacy/train.py,修改clone_on_cpuTrue,原本默认是False的。
    在这里插入图片描述

3.训练理论

现在没有问题的话应该是在训练中,因为我也无法顾及到所有人的情况,如果有什么报错的或者缺失库的话,百度一下基本都能解决。
在这里插入图片描述
gpu基本上0.2秒一个吧,我的cpu会是0.5一个。在训练过程中,你也可以可视化整个过程。另开一个命令窗口,在object_detection 下运行

tensorboard --logdir=my_obgect/training

之后会出现一个6006端口的网址复制粘贴到游览器上即可观看在这里插入图片描述
反正要训练好久,我简单介绍一下它是如何训练的。
我们的图片上的物体经过处理被分为两个东西,一个是这个物体的照片,另一个便是它的标签。

  • 假设这是一张图片上的正方形,正方形返回的值是4,那它对应的标签会是:
    [0, 0 ,0, 1, 0 ,0] #一共六个标签,返回是4.
  • 正方形这个图片信息经过卷积层池化层全连接层之后会返回一个值,比方说输出了这:
    [0.1, 0.05, 0.05, 0.6, 0.1, 0.1] #可以理解为卷积处理后给出的各个图片的概率
  • 将两个一维数组各个值相减的平方作相加,即为loss 损失函数,然后通过梯度下降的方法去更新前面的卷积权重,使得loss函数的值越来越小,这样我们的模型也就会越来越强大。

其实里面还有很多难搞的学问,比如如何从图片得到数组,我就很皮毛皮毛的讲解一些。
需要注意的是,一旦报错了做好把training下的(除了config)文件全部删除再重新开始。
如果你感觉训练的差不多了(一个指标就是我上面说的loss是否小到你可以接受的位置)你可以直接ctrl+c退出训练,不用担心,程序一直在帮你保存最近的模型,想要恢复训练,重新输入训练得代码就可以了。

4.生成模型

如果一切正常的话,在training文件夹下会是这个样子的在这里插入图片描述
在 “object_detection” 文件夹下新建 “xx_detection” 文件夹,用来存放最终的模型文件,这里我取名为“my_detection_v1”。我喜欢用‘v+数字’来区分我模型的版本。执行下面的代码:

python export_inference_graph.py \ --input_type image_tensor \ --pipeline_config_path my_object/training/faster_rcnn_inception_v2_coco.config \  --trained_checkpoint_prefix my_object/training/model.ckpt-70014 \  --output_directory my_detection_v1

需要注意的是:

  • –pipeline_config_path:config的路径
  • –trained_checkpoint_prefix:最后模型步数的路径,根据你实际的来,我最后保存的模型文件是训练了70014的,所以写70014。

这时候在“my_detection_v1”文件夹下就是这个样子的在这里插入图片描述
我们所需要的就是frozen_inference_graph.pb这个文件。

5.测试模型

回到我的第一篇笔记上2020年tensorflow定制训练模型笔记(1)——object detection的安装。我给出的测试代码,将这三个部分修改成自己的。
在这里插入图片描述
然后将测试图片更换成自己的照片就可以看到结果了。在这里插入图片描述
基本上可以看出效果,不完美是肯定的。比方说,训练照片的丰富程度和质量、训练时间的长短等等。

总结

我觉得三篇写下来,应该能帮助到一些人学会定制自己的模型,并且对深度学习的整个流程会有一些了解 。在这过程中,困难和沮丧会接踵而来,但每一次的突破同样也能让我兴奋到爆,可能这就是人工智能的魅力吧。
希望大家都能追随自己的梦想,一路前行…

2020年tensorflow定制训练模型笔记(1)——object detection的安装
2020年tensorflow定制训练模型笔记(2)——制作标签
2020年tensorflow定制训练模型笔记(3)——开始训练

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2020年tensorflow定制训练模型笔记(3)——开始训练 的相关文章

  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 如何创建一个语句来打印以特定单词开头的单词? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 python 中打印从特定字母开始的单词 而不使用函数 而是使用方法或循环 1 我有一个字符串 想要打印以 m 开头的单词 S
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

    theano base compiledir指编译后的文件存放的目录 有没有办法可以永久设置theano base compiledir到不同的位置 也许通过修改一些内部 Theano 文件的内容 http deeplearning net
  • 使用 OLS 回归预测未来值(Python、StatsModels、Pandas)

    我目前正在尝试在 Python 中实现 MLR 但不确定如何将我找到的系数应用于未来值 import pandas as pd import statsmodels formula api as sm import statsmodels
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 将 JSON 对象传递给带有请求的 url

    所以 我想利用 Kenneth 的优秀请求模块 https github com kennethreitz requests 在尝试使用时偶然发现了这个问题自由库API http wiki freebase com wiki API 基本上
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • 默认情况下,Keras 自定义层参数是不可训练的吗?

    我在 Keras 中构建了一个简单的自定义层 并惊讶地发现参数默认情况下未设置为可训练 我可以通过显式设置可训练属性来使其工作 我无法通过查看文档或代码来解释为什么会这样 这是应该的样子还是我做错了什么导致默认情况下参数不可训练 代码 im
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • git patch 说明

    联网的模式下就不详述了 可以使用git fetch git pull git checkout git commit git push等操作同步 本文主要说一下离线模式下 不能使用上述命令的情况下 怎么同步版本 假设目前最新开发版本 git
  • H5当前页面选项卡切换,滚动顶部【记录】

    CSS样式中传入变量 鑫动了的主页 欢迎各位小伙伴 前端小白的成长之路 一起学习 一起成长 在H5中当前的页面难免会有多个选项卡切换的需求 在切换时 同一页面会记住相同位置 用户体验不是很好 我的需求就是切换选项卡 重回顶部 切记 targ
  • mongodb启动不了:child process failed, exited with error number 48

    问题 启动mongodb的时候 发现起不来 报错 child process failed exited with error number 48然后先去 var log mongo mongod log 查看启动的日志 可能原因 应该是没
  • excel表格上传

    一 员工页面跳转
  • 用户关闭浏览器事件

    一直以来用户非正常退出系统 即 用户按右上角的 X 按纽后 服务器端 session 无法销毁 一直要等到其过期时间到了才销毁 这样通过session进行在线人数统计就无法准确了 我今天试了才发现 其实关闭浏览器事件可以捕捉到的 那么我们就
  • Spring Cloud简介

    一 Spring Cloud简介 SpringCloud是微服务架构中的集成 将一系列优秀的组件进行了整合 基于SpringBoot构建 对熟希spring的程序员来说 表容易上手 通过简单的注解 就可以快速的在应用中配置一下常用模块并构建
  • java正则表达式-案例代码

    转载请注明出处 http blog csdn net droyon article details 8635735 jdk在线api http docs oracle com javase 7 docs api index html 选择j
  • 使用 Element 实现首页

    完成首页 使用 Container 布局容器 结构
  • 背景渐变,多层背景图

    背景渐变 多层背景图 一 线性渐变 linear gradient 二 径向渐变 三 背景大小 一 线性渐变 linear gradient 为了创建一个线性渐变 你必须至少定义两种颜色结点 颜色结点即你想要呈现平稳过渡的颜色 同时 你也可
  • Relying upon circular references is discouraged and they are prohibited by default.循环依赖bug解决

    Relying upon circular references is discouraged and they are prohibited by default 循环依赖bug解决 出现的bug大概意思是 不鼓励依赖循环引用 默认情况下
  • 肌电信号采集电路分析

    最近在开发肌电信号的采集 表面肌电信号是非常微弱的生物信号 正常人体表面肌电信号赋值为0 1 5mV 主要能量频段集中在10 150Hz 电路主要是根据原始信号 设计相应的放大电路 滤波电路 下面直接放原理图说明 一级放大电路 一级放大电路
  • Spring MVC使用注解实现账户注册与登陆

    涉及到的注解 Controller 控制器类 RequestMapping 映射路径 RequestParam 用于将指定的请求参数赋值给方法中的形参 定义域对象 User1 用来接受并封装前台传递的数据 package com wen d
  • Java基础(七)——eclipse、集合(容器)

    集合 1 集合框架 l 所谓的框架就是一个类库的集合 集合框架就是一个用来表示和操作集合的统一的架构 它包含了实现集合的接口和类 l 集合框架中不同的集合类有各自不同的数据结构 所以在使用中要根据应用的性能要求来选择不用的集合类 l 集合类
  • C语言指针初阶

    思维导图 目录 编辑 1 指针与内存 1 1内存中的门牌号 地址 是如何编号的 1 2一个指针的大小 在32位平台上 1 3内存总空间大小 2 指针的使用 2 1指针的构成 2 2指针类型的作用 1 决定指针访问的权限的大小 2 决定指针走
  • 在家带娃有没有什么副业可以做?在家带娃的副业有哪些?

    很多朋友在有了自己的孩子之后 为了给孩子一个良好的成长环境 就会辞去工作专心在家带孩子 不过 考虑生活开销的支出问题 还是会想要做点副业赚钱 那在家带孩子可以做什么副业呢 1 数据录入 这是一个大行业 几乎所有人都可以做 需要的仅仅是一台能
  • Oracle TNS简述

    什么是TNS TNS是Oracle Net的一部分 专门用来管理和配置Oracle数据库和客户端连接的一个工具 在大多数情况下客户端和数据库要通讯 必须配置TNS 当然在少数情况下 不用配置TNS也可以连接Oracle数据库 比如通过JDB
  • java使用xfire创建和调用webservices

    1 创建工程 File gt New gt Web Service Project 弹出Web Service Project窗口 需要填写Project Name 例子是Demo 选择XFire 然后一路next 直到完成 创建完成后 打
  • 如何让Element UI的Message消息提示每次只弹出一个

    Element UI的Message消息提示是点击一次触发一次的 在开发的时候经常会作为一些校验提示 但是公司的测试人员在进行测试时会一直点 然后就会出现如下图的情况 虽然客户使用的时候一般来说不会出现这种情况 毕竟客户不会闲着没事一直点点
  • 用 visio 2013反转图形或镜像图形

    软件版本 visio 2013 选择待反转图形 依次点击 开始 位置 旋转形状 即可根据需求进行图形反转 若需要进行图形镜像操作 可提前将图形复制出一份 将复制出来的图形进行垂直反转或水平反转
  • 2020年tensorflow定制训练模型笔记(3)——开始训练

    现在 我们开始训练文件 这里 我将用一些训练好的模型来做迁移训练 这里简单介绍一下迁移训练 迁移训练就是在别人训练的模型基础上继续训练 这样我们的模型训练就不是从零开始 加快速度以及提高准确率 我讲的比较简单 参考网址在这 https bl