一、环境准备

  1. 安装vs2015
  2. 根据显卡驱动安装相应版本的CUDA和cuDNN
  3. 安装OpenCV 4.4.0
  4. 安装CMake
  5. 安装Anaconda

以上所有安装均可轻易找到大量教程,此处不再赘述。

二、搜集样本

运行这篇博客的Python脚本,可以快速搜集目标样本集,亲测可用:

https://blog.csdn.net/qq_40774175/article/details/81273198

三、标注样本

目标检测样本需要把待检测目标在图片中的位置和大小标注出来,采用LabelImg标注Yolo样本非常方便,下面介绍使用方法。

1.用pip安装LabelImg

安装Anaconda以后,在开始菜单打开Anaconda Prompt (Anaconda3)进入base环境,运行pip命令安装LabelImg:

pip install labelImg

2.启动LabelImg

安装好LabelImg之后,在命令行输入程序名回车即可启动:

LabelImg

3.设置样本类型

在LabelImg的界面中,左边“Save”按钮下方的按钮表示样本类型,点击即可切换,将其切换为“YOLO”即可。

4.设置路径

在LabelImg的界面中,点击左侧的“Open Dir”按钮,将目录设置为事先准备好的目标图片文件夹;

再点击左侧的“Change Save Dir”按钮,指定一个输出目录,用于保存每张图片的标注信息文件。

5.开始标注

  1. 设置好“Open Dir”后,会自动加载其中的图片,将输入法切换为英文,按下快捷键“W”,然后在图像区域按下鼠标左键拖动,就会出现矩形框;

  2. 框出目标后会提示输入目标名称(只需输入一次,以后会自动填充),如果有多个目标需要标注,就继续框选,然后输入目标名字即可;

  3. 待所有目标都被标注完毕后,点击界面左侧的“save”按钮,即可保存当前图片的标注信息,到这里第一张图片的标注工作就完成了;

  4. 之后点击界面左侧的“Next Image”按钮,即可开始下一张图片的标注,然后重复第2、3步操作即可;

  5. 重复第2、3、4步,直到指定目录下的所有图片标注完毕。

四、编译Yolo-Fastest

1.下载Yolo-Fastest项目源码

github地址:https://github.com/dog-qiuqiu/Yolo-Fastest

下载后将源码解压到本地熟悉的路径下,接下来以D:\Yolo-Fastest-master为例。

2.配置Makefile

在Yolo-Fastest根目录下找到Makefile,用记事本打开,可以看到前面这几项,保持作者的默认配置即可:

GPU=1           #启用GPU加速
CUDNN=1            #启用cuDNN,支持v5-v7版本
CUDNN_HALF=0
OPENCV=1       #启用OpenCV,支持OpenCV 4.x/3.x/2.4.x

3.用CMake生成解决方案

  1. 打开CMake,将source code路径设置为D:\Yolo-Fastest-master,将目标生成路径也设置为D:\Yolo-Fastest-master
  2. 然后点击“Configure”,设置VS版本为VS2015,目标平台为x64,然后确认;
  3. 若提示没有找到OPENCV_DIR,再选择opencv.exe解压缩后的build文件夹为OPENCV_DIR的路径即可,可以添加OPENCV_DIR环境变量,也可以直接在CMake上面的配置列表中设置;
  4. 然后依次点击“Generate”和“Open Project”按钮即可打开解决方案。

如果上面的过程没有其他报错,就可以编译解决方案了。

4.编译Darknet

打开上一步生成的的解决方案后,生成整个解决方案,如果不能全部成功编译,可能是OpenCV,CUDA或者cuDNN等的安装不正确,或者版本不合适。

如果全部正常通过编译,在D:\Yolo-Fastest-master路径下会多出一个Release文件夹,将其中的darknet.dlldarknet.exe复制到D:\Yolo-Fastest-master/build/darknet/x64目录下。

5.获取Yolo-Fastest的模型文件和权重文件

D:\Yolo-Fastest-master\Yolo-Fastest目录下可以找到COCO或VOC版本的Yolo-Fastest与训练模型,任选一个即可,复制一下4个文件:

yolo-fastest.cfg
yolo-fastest.weights
yolo-fastest-xl.cfg
yolo-fastest-xl.weights

将上面复制的文件粘贴到D:\Yolo-Fastest-master\build\darknet\x64\cfg文件夹。

至此,可以用下面的批处理文件测试一下Yolo-Fastest预训练模型:

darknet detector test cfg\voc.data cfg\yolo-fastest.cfg cfg\yolo-fastest.weights data\person.jpg -i 1 -thresh 0.25 -out_filename data\person_output.jpg
pause

将上述命令保存在.txt文件中,然后改文件名后缀为.bat,将.bat文件复制到D:\Yolo-Fastest-master\build\darknet\x64文件夹,然后双击运行,如果能顺利检测,说明目前为止一切正常,已经成功编译了Yolo-Fastest。

五、在目标数据集上训练Yolo-Fastest

1.配置训练所用数据集

数据集的准备包含5个部分,图片、图片对应的标注文件、trainlist.txt和testlist.txt、yourdataset.data、yourdataset.names。

  1. 检查数据集:用LabelImg标注好的数据集包含一个标注信息文件夹,即用按钮“Change Save Dir”指定的文件夹,里面有一批与图片同名的.txt文件,记录着每张图片的标注信息,还有一个“classes.txt”文件,记录着所有目标类别;

  2. 准备trainlist.txt和testlist.txt文件:这两个文件分别记录训练集和测试集中每张图片的路径,可用如下批处理脚本获得:

    dir /b/s/p/w *.jpg > list.txt
    pause#以下为注释内容,实际使用时应删除
    将上面的命令写入一个.txt文件,更改文件名后缀为.bat,然后将.bat文件复制到图片所在文件夹,双击运行即可获得该路径下所有jpg图片的路径,并保存在list.txt文件中。
    
  3. 准备.names文件:将上一步中的“classes.txt”更名为“yoursataset.names”即可;

  4. 准备.data文件:新建一个.txt文件,更名为“yourdataset.data”,并写入以下内容:

    classes = 1
    train  = data/yourdataset/trainlist.txt
    valid  = data/yourdataset/testlist.txt
    names = data/yourdataset/yourdataset.names
    backup = backup/#以下为注释内容,实际使用时应删除
    上面的选项应根据具体情况修改,其含义如下:
    classes:表示要识别的目标的类别数目,也就是.names文件中记录的类目数量;
    train:指明trainlist.txt文件所在路径
    valid:指明testlist.txt文件所在路径
    names:指明.names文件所在路径
    backup:指定训练结果保存路径,训练好的权重将保存在这个路径下
    
  5. 整理目录结构:所有文件准备完毕后,建议以如下目录结构组织文件:

    train_set(文件夹)
    test_set(文件夹)
    yourdataset.data
    yourdataset.names
    trainlist.txt
    testlist.txt#重要说明
    1.train_set和test_set是文件夹,分别用来放置训练集和测试集,里面应存放着图片文件和相应的标注信息文件;
    2.其余4个文件就是前几步获得的文件;
    3.所有文件名可以自定义,但要保证跟.data中的设置一致;
    4.可以将上述文件和文件夹单独存放到一个文件夹中,例如yourdataset
    

至此,数据集准备完毕,笔者将上述目录结构保存在Yolo-Fastest\build\darknet\x64\data\yourdataset下,接下来将按以此为例进行说明。

2.配置模型文件yolo-fastest.cfg

打开之前复制到D:\Yolo-Fastest-master\build\darknet\x64\cfg目录下的模型结构配置文件yolo-fastest.cfg,可以看到整个模型的各项设置,需要自定义配置的主要有以下几处:

  1. 搜索“[net]”,“[net]”字段下是各种训练参数,训练时一般设置batch=64subdivisions=16,测试时一般设置batch=1subdivisions=1,其他参数可以保持默认;
  2. 搜索“[yolo]”,将所有“[yolo]”字段下的classes项设置为你的目标类别数,然后将每一个“[yolo]”字段前紧邻的一个“[convolutional]”字段中的filters项重置,计算方法为filters=(classes+5)*3

修改后保存即可。

3.开始训练Yolo-Fastest

训练的思路是,先生成预训练模型(骨干网络),然后在其基础上拿自己的数据集进行训练,完成模型的迁移学习。

  1. 生成预训练模型:在D:\Yolo-Fastest-master\build\darknet\x64目录下新建一文件夹pretrained_model,将如下命令写入一.bat文件中,复制文件到D:\Yolo-Fastest-master\build\darknet\x64下,双击运行即可生成预训练模型yolo-fastest.conv.109

    darknet partial cfg\yolo-fastest.cfg cfg\yolo-fastest.weights pretrained_model\yolo-fastest.conv.109 109
    pause
    
  2. 开始训练:将以下命令写入一.bat文件,复制文件到D:\Yolo-Fastest-master\build\darknet\x64下,双击运行即可开始训练:

    darknet detector train data\yourdataset\yourdataset.data cfg\yolo-fastest.cfg pretrained_model\yolo-fastest.conv.109 backup\
    pause
    

4.测试训练好的Yolo-Fastest模型

将以下命令写入一.bat文件,复制文件到D:\Yolo-Fastest-master\build\darknet\x64下,双击运行即可开始测试,测试时根据提示输入待检测图片的路径,即可在D:\Yolo-Fastest-master\build\darknet\x64目录下生成检测结果图片:

darknet detector test data\yourdataset\yourdataset.data cfg\yolo-fastest.cfg backup\yolo-fastest_last.weights

Win10平台训练Yolo-Fastest模型全流程相关推荐

  1. 风控评分模型全流程的开发及应用

    风控评分模型全流程的开发及应用   信用评分卡的应用场景有申请评分卡(A卡).行为评分卡(B卡).催收评分卡(C卡)和反欺诈评分卡(F卡).   用户申请信用贷款的流程依次是基本信息核查.强规则校验. ...

  2. R语言使用knitr生成机器学习模型全流程步骤示例:knitr与自动化结果报告、knitr常用参数

    R语言使用knitr生成机器学习模型全流程步骤示例:knitr与自动化结果报告.knitr常用参数 目录

  3. 差分定位中控软件_【软件2】SUAV三鼎航测一体化平台、航测内业全流程解决方案...

    平台简介 SD UAV 2.0三鼎航测一体化平台软件系统旨在实现针对航测数据的全流程一体化作业全覆盖,提供航测数据预处理.空三加密生成传统4D产品.三维模型数据的生产.基于实景三维模型或立体像对采集D ...

  4. 华为云构建云原生DevSecOps平台,保障软件供应链全流程安全可信

    摘要:面临网络安全挑战的大环境下,华为云构筑的云原生DevSecOps平台,打造了创新可控的安全服务,助力企业软件供应链全生命周期安全. 2022年8月13日,"2022中国DevOps社区 ...

  5. 亿发ERP系统,全链条采购协同管理数智化平台,中小企业采购业务全流程管理

    在数字时代,中小型企业在采购管理方面面临多项挑战. 集采管理难:由于资源和专业知识有限,中小企业通常难以建立集中采购职能,无法有效简化整个组织的采购活动.这一挑战包括定义采购政策.标准化程序和实施高效 ...

  6. 训练yolo V4模型调优的十个建议

    1.获取更多的数据 2.数据增广 3.输入分辨率 4.使用预训练pretrained模型 5.选择合适的模型尺寸和架构 6.继续之前的训练 7.选择最好的模型 8.模型评估 9.导出模型 10.优化推 ...

  7. 2021东南亚新兴平台Lazada开店入驻最全流程Lazada新店运营思路分享

    写在前面:今年国内做跨境转型的企业很多,东南亚市场Lazada平台成为了卖家朋友们的首选平台,最近咨询Jack的主要是开店入驻的问题,小编今天做了2021最新开店流程和新店运营思路的整理,以下是内容分 ...

  8. yolov3目标检测android,目标检测 | YOLOv3训练自己的数据全流程

    1.构建YOLOv3网络的cfg文件 该文件表示的是你的检测网络的结构,类似caffe的prototxt文件. YOLOv3的cfg文件 上篇介绍YOLOv3网络中提到的去掉上采样操作的YOLOv3c ...

  9. 训练YOLO v4模型时,xml格式转txt格式

    YOLO训练时需要的标签数据是txt格式的 而以前做Faster-RCNN的时候,标签文件是xml格式的 特别当下载别人标记好的数据集时,很有可能提供的是xml格式的文件,那么如何将xml格式转为tx ...

最新文章

  1. 基于Smiles2vec预测化合物物理性质
  2. Vue教程5【vuex】getters,mapState,mapGetters,mapActions,mapMutations,模块化namespace
  3. Linux监控平台介绍、zabbix监控介绍、安装zabbix、忘记Admin密码如何做
  4. Git分支命令学习使用
  5. python loads_python dumps和loads区别详解
  6. Eclipse is running in a JRE, but a JDK is required
  7. QT每日一练day14:QFontDialog字体对话框
  8. linux登录界面说明,Linux登录界面以及简单使用入门
  9. 2016 年 7 个最佳的 Java 框架
  10. ssm(spring + spring-mvc + mybatis)整合
  11. 2.5 柱面 (1)
  12. UK EU 码对照表,USA EURO SIZE码对照表 国外衣服码对照表
  13. gromacs 安装_GROMACS简介与安装
  14. python之sklearn学习笔记
  15. 软件研发落地实践,要从设计就开始
  16. Python连接MySQL insert插入语句
  17. Multisim电路仿真-验证KCL和KVL
  18. 鸿蒙系统怎么安装mate30,mate30 5g 鸿蒙系统在哪里下载安装
  19. 【读书笔记】20210812《海底捞你学不会》——黄铁鹰
  20. python因子分析 ic值 函数_Python——因子分析(KMO检验和Bartlett's球形检验)

热门文章

  1. c/c++ 中的左值和右值 理解
  2. vba 引用Sheet的几种方法
  3. 40岁程序员“删库”被判7年,曾提出系统安全问题被无视,怒删9TB财务数据及系统...
  4. python支持的数据类型char_python基本数据类型
  5. 黑盒监控(black_exporter)
  6. 二十一世纪大学英语读写教程(第三册)学习笔记(原文)——6 - Every 23 Minutes(每隔二十三分钟)
  7. (死宅福利)python爬虫脚本 爬取兔玩君分享计划 千套写真
  8. PDF页面参差不齐统一页面大小--Adobe印刷制作功能
  9. GD32F4xx SD卡读写及FATFS移植记录
  10. 【BATCH_SIZE大小设置影响测试结果】