Win10+Yolov4用yolo_mark标记数据集 训练自己的模型

文章目录

  • 1. 前言
  • 2. darknet
  • 3. yolo_mark
    • 3.1 yolo_mark和opencv的下载
    • 3.2 yolo_mark 的编译
      • 3.2.1 项目重定向
      • 3.2.2 修改为release
      • 3.2.3 配置opencv路径
      • 3.2.4 重新生成项目
      • 3.2.5 打开图片标记软件
    • 3.3 用yolo_mark标记自己的图片
  • 4. 模型训练
    • 4.1 darknet的配置
    • 4.2 开始训练
  • 5. 其他
    • 5.1 暂停训练和恢复训练
    • 5.2 训练时打印的日志部分含义
    • 5.3 测试训练
  • 6. 结语

1. 前言

本文是YOLO教程的第二个模块:在Win10下标记并训练自己的数据集。

第一个模块为:用VS2019 + CUDA搭建YOLOv4/v3环境。点击这里可以直接跳转至第一篇文章。

关于训练自己的数据集的博客,这段时间我也看了很多很多。但是绝大部分博客是在Ubuntu系统进行的训练,很少部分是在Win10上进行的。

此外,关于图片的标记,绝大部分博客是采用的先生成xml文件,再通过python代码转换为txt文件,稍微有点麻烦。但是在我们可以使用yolo_mark来标记,直接生成txt文件,相对更简单。

2. darknet

darknet的下载、编译等,我已经在上一篇文章写得很清楚了,就不再赘述了。

3. yolo_mark

3.1 yolo_mark和opencv的下载

  1. 首先先进入yolo_mark的GitHub下载地址,下载yolo_mark。下载之后解压的熟悉的位置。在其README.md文档中也有其他详细的说明

  2. opencv的下载和配置可以借鉴我这篇博客中的opencv下载部分。建议下载opencv3.4版本(Yolo_mark支持OpenCV 2.x 和 OpenCV 3.x)

3.2 yolo_mark 的编译

在编译之前,需要一些基本的配置,配置流程如下

3.2.1 项目重定向

进入到 …\Yolo_mark-master 文件夹,用VS2019打开 yolo_mark.sln

进入后有一个重定向项目属性,改成如图所示的配置。

如图配置


3.2.2 修改为release

修改项目为Release

3.2.3 配置opencv路径

  • (右键单击项目) ⇒ \Rightarrow ⇒ 属性 ⇒ \Rightarrow ⇒ C/C++ ⇒ \Rightarrow ⇒ 常规 ⇒ \Rightarrow ⇒ 附加包含目录: 将C:\opencv_3.0\opencv\build\include 修改为自己的的opencv路径

  • (右键单击项目) ⇒ \Rightarrow ⇒ 属性 ⇒ \Rightarrow ⇒ 链接器 ⇒ \Rightarrow ⇒ 常规 ⇒ \Rightarrow ⇒ 附加库目录: C:\opencv_3.0\opencv\build\x64\vc14\lib 修改为自己的的opencv路径

(上方操作如下图所示)


记得点确定!!!!

上图为C/C++的修改,下方的链接器修改同理。修改结束后记得点确定

3.2.4 重新生成项目

右键项目,点击如图所示的重新生成,即可编译得到yolo_mark.cmdyolo_mark.exe等。


此时我们进入opencv安装的目录..\opencv\build\x64\vc14\bin,选择opencv_world340.dllopencv_ffmpeg340_64.dll两个文件,复制到yolo_mark的..\Yolo_mark-master\x64\Release路径下。

3.2.5 打开图片标记软件

完成上述操作之后,进入 …\Yolo_mark-master\x64\Release ,双击 yolo_mark.cmd (而不是exe文件) ,即可打开标记软件。

yolo_mark界面


3.3 用yolo_mark标记自己的图片

图片是yolo_mark自带的默认的图片,而且是已经被标记过了。所以我们要把图片换成自己的图片。

  1. 进入到 …\Yolo_mark-master\x64\Release\data 中,可以看见1个文件夹img。该文件夹是用来存放需要被标记的图片和标记后生成的txt文件的地方。所以我们要把里面的文件全部删掉,并把自己的图片数据集放入进去。为了方便,我们将它们命名为 1.jpg, 2.jpg, 3.jpg … (如果太麻烦了可以在CSDN上找到python写的一键重命名的代码)

  2. 打开obj.data。第一行的classes就是你的类数量。比如我只想训练1个类person,我就把它改成 classes = 1。

  3. 打开obj.names。里面是你的类的名称。我因为只有一个person,所以就只写入个person就够了。如果你需要写入多个类,一行写入一个。

  4. 回到 …\Yolo_mark-master\x64\Release,运行yolo_mark.cmd 运行标记软件。之后就可以开始标记了。标记时,拖动 object id 可以更换标记类型。

    如图所示标记

  5. 标记快捷键如图


其实只要进去按一下h就可以知道所有快捷键了(记得切换输入法,不然无法识别快捷键)


4. 模型训练

4.1 darknet的配置

  1. 移动文件

    因为用yolo_mark标记后得到的数据 (txt文件) 是存在yolo_mark的data文件中的,所以我们就需要将data文件夹的东西拷贝到darknet的data文件夹下。

    进入yolo_mark的 …\Yolo_mark-master\x64\Release\data 路径和 darknet的 …\darknet-master\build\darknet\x64\data 路径,并将 yolo_mark的data 文件夹下的所有文件拷贝至 darknet的data 文件下。

    移动文件

剩余的部分我们可以直接参考作者AlexeyAB的YOLOv4 readme文档即可,我简单的翻译了文档中关于训练自己模型的部分,也加入了部分我自己的补充,点击博客地址可跳转;此外点击此处即可跳转README的How to train英文原版。

4.2 开始训练

一切配置好之后,就可以正式开始训练了。在 darknet-master\build\darknet\x64 下,空白处 ,shift + 右键,选择 在此处打开Powershell窗口

输入:

./darknet.exe detector train data\obj.data yolo-obj.cfg data\darknet53.conv.74

就可以开始训练了

训练会生成weights权重文件,生成在 \darknet-master\build\darknet\x64\backup 处。

生成的weights文件的文件名是yolo-obj_last.weights,即最后一次生成的weights文件。该文件每迭代100次会更新一次。

此外,每迭代1000次会额外再次生成一个weights文件,如yolo-obj_2000.weight。其他每迭代1000次,迭代10000次命名依次类推。

生成的weight权重文件

5. 其他

5.1 暂停训练和恢复训练

暂停训练:单击一次powershell框;恢复训练:键盘任意键

5.2 训练时打印的日志部分含义

4 :总迭代了的次数

1095.689575 :总体的Loss(损失)

1096.312134 avg loss : 平均的Loss

0.000000 rate :代表当前的学习率,是在.cfg文件中定义的

22.428000 seconds : 训练当前批次所花费的时间

256 images :到目前位置,参与学习了的图片的数量

3068.354482 hours left :到训练结束(默认训练迭代500200次),还需要的时间


没有比较训练这么多次,当Loss为零点几的时候,已经可以推出训练了。其他英文的具体含义也很容易找到,我这里就不多赘述了。

5.3 测试训练

测试训练的时候需要注意!需要使用正确的命令。因为不同教程,把文件放在不一样的目录,所以使用的命令是有区别的。

  • 如果是要识别视频文件,则命令格式为
.\darknet.exe detector demo <.data文件位置> <.cfg文件位置> <权重文件位置> <识别文件位置>
  • 如果是识别图片,则命令格式为
.\darknet.exe detector test <.data文件位置> <.cfg文件位置> <权重文件位置> <识别文件位置>
  1. 此命令需要在x64位置打开Powershell,如果是cmd则把.\darknet.exe切换成darknet.exe
  2. 如果为指定识别文件位置,则命令1会调用摄像头,命令2会让你多次输入图片路径,进行多次识别;
  3. <>需要替换成相应的相对路径路径

6. 结语

写这篇博客很重要的一个原因是,CSDN上,训练的教程多是Ubuntu下的,而且也不是使用的yolo_mark,大都是xml转txt,而且一些操作也很繁琐。对于像我这样的低年级学生,才刚刚想尝试入门的,不太友好。

所以我希望我写的这篇博客,能够帮助到各位,少踩点坑,少一点麻烦吧~

如果能帮到你,不如点个赞吧~

Win10+YOLOv4/v3用yolo_mark标记数据集 训练自己的模型相关推荐

  1. MSCOCO数据集转VOC数据集训练目标检测模型

    MSCOCO数据集转VOC数据集训练目标检测模型 Images 2014 Train images [83K/13GB] 2014 Val images [41K/6GB] 2014 Test ima ...

  2. paddle - crowdHuman数据集训练人体识别模型

    paddle - crowdHuman数据集训练人体识别模型 数据集annotation crowdhuman的odgt文件各项意义 转换为paddle yolo的格式 输入哪些数据? 输出模型 数据 ...

  3. Keras之DNN:利用DNN算法【Input(8)→12+8(relu)→O(sigmoid)】利用糖尿病数据集训练、评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果)

    Keras之DNN:利用DNN算法[Input(8)→12+8(relu)→O(sigmoid)]利用糖尿病数据集训练.评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果) 目录 输出结果 ...

  4. tensorflow精进之路(二十五)——Object Detection API目标检测(下)(VOC数据集训练自己的模型进行目标检测)

    1.概述 上一讲,我们使用了别人根据COCO数据集训练好的模型来做目标检测,这一讲,我们就来训练自己的模型. 2.下载数据集 为了方便学习,我们先使用别人整理好的数据集来训练---VOC 2012数据 ...

  5. Yolov1-手把手用自己的数据集训练自己的模型

    TensorFlow下使用YOLOv1训练自己的数据集+测试自己的模型 一. 前期准备 环境:(用cpu跑的) win10 + python3.6.8 + tensorflow2.4.1+pychar ...

  6. 利用COCO API测试自己数据集训练的YOLOv3模型的mAP(VOC格式数据集)

    目录 工具 前言 生成标注集的json文件 数据集准备 将voc注解格式数据集的注解转换成txt注解格式 自定义数据集的注解转换成coco的注解格式 生成结果集的json文件 安装darknet 获取 ...

  7. coco 数据集_如何用 coco 数据集训练 Detectron2 模型?

    随着最新的 Pythorc1.3 版本的发布,下一代完全重写了它以前的目标检测框架,新的目标检测框架被称为 Detectron2.本教程将通过使用自定义 coco 数据集训练实例分割模型,帮助你开始使 ...

  8. 数据不够怎么训练深度学习模型?不妨试试迁移学习 ——重用神经网络的结构2...

    数据不够怎么训练深度学习模型?不妨试试迁移学习 本质就是这个图!pretrained model就是你截取的部分神经网络模型(迁移学习),而nanonet就是你自己加入的网络层. 随着深度学习技术在机 ...

  9. Yolov5自定义图片训练测试及模型调优(详细过程)

    Yolov5自定义图片训练测试及模型调优(详细过程) 1. 图像数据获取.标注 2. 数据集划分及准备 3. 配置训练参数,准备训练: 3.1 修改data/训练配置xxx.yaml文件: 3.2 修 ...

最新文章

  1. 关于卡巴斯基部分激活问题的解决方案
  2. redis 集群 及 管理初步
  3. PostgreSQL、Greenplum 日常监控 和 维护任务
  4. Ubuntu 建立tftp服务器
  5. Sharepoint学习笔记—DebugTroubleShooting--不同调试对象的Attach方式
  6. 一起学习C语言:函数(二)
  7. mojoportal升级中用户相关设置
  8. c语言边界条件的设置,求解能不能用c或c++语言实现下面的约束条件
  9. uitableview 弹性_iOS UITableView/UICollectionView的嵌套和悬停的解决方案
  10. 第3章-线性概率模型(1)-logistics/probit模型
  11. ITIL学习笔记——核心流程之:服务级别管理
  12. Mybatis对Double类型的字符串进行范围查询
  13. python 基础系列(四) — Python中的面向对象
  14. 幽灵蛛(pholcus)(三)--goquery学习资料
  15. iPad 生产力指南:如何把MathType7安装在iPad中,方便写公式,写论文,公式编辑器,完全免费
  16. 快速了解 CMYK印刷色与三原色,CMY三原色为什么要加K黑色?
  17. 【优秀课设】基于Python的百度API的OCR名片识别【含完整API账户】
  18. css 网站大背景(按比例缩放背景图片)
  19. html5以图片为背景的代码,HTML5画布背景图片
  20. 你觉得自己牛逼在哪儿?

热门文章

  1. 时间戳与日期时间的转换
  2. vue3 props 声明默认值
  3. JS 轻松搞定数据处理,让前端开发更高效
  4. 程序员如何学习英语效率高?
  5. 【leetcode】1849. 将字符串拆分为递减的连续值
  6. [Software]Vivado 2018.2 安装及激活教程
  7. keras:Convolution2D与Conv2D
  8. 对象头与锁与synchronized简述
  9. html css print打印,打印样式
  10. 世界观和方法论是一致的,有怎样的世界观就有怎样的方法论