环境要求

关于在Windows下的配置(无GPU)基于VS和opencv,参考这个博客

介绍的很详细,我就是按照这个配置成功的,只不过我的版本是:
VS2019+opencv4.2
博客中说到opencv版本不超过3.6,我也不清楚为什么自己的4.2版本成功了。。。emmm
(PS:这里的Opencv是需要扩展contribute后的包)
(因为是无GPU的,所以训练过程超级超级慢,及时记下来也怕是以后忘了,虽然想到以后也不会使用无GPU来训练,哈哈)

相关配置文件下载

链接:https://pan.baidu.com/s/1UVuTIlOeD7XZnl3ngbX3EA 提取码:4o2b
里面那个我已配置好的yolov3文件夹可忽略(是我自己电脑的),其他三个是下面训练过程需要的。

训练过程

第一步:

准备训练样本,因为知道无GPU肯定很慢,这里我准备了100个样本,用来识别人有没有戴口罩,50个正样本mask,50个负样本nomask,使用网盘中的labelImg.exe软件进行训练集的标注,打标签生成xml文件。

我的如下:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_txt文件


opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_vs2019_02

第二步:

打开从网盘中下载的VOCdevkit文件夹,在下面路径下,删掉那四个txt文件:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_YOLO_03


然后把相应的文件放入如下路径相应的文件夹中,正负样本一起放进去,看好序号:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_txt文件_04


然后,运行test.py文件,

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_YOLO_05


会发现刚刚删掉那四个txt文件的Main文件夹里面,又重新生成了四个txt文件,如下:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_YOLO_06

打开后是这个样子:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_txt文件_07

第三步:

现在把VOCdevkit文件夹

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_txt文件_08

放到如下路径中:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_txt文件_09


然后在这个目录中找到voc_label.py文件,用记事本打开或者用notepad++打开,打开里面是这样,有几个地方要改:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_Darknet_10


opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_Darknet_11


修改后保存下,因为我是两个类,戴口罩和没戴口罩,如下所示:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_vs2019_12


运行刚刚修改的voc_label.py文件,就会在该目录中生成如下这几个文件:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_txt文件_13


现在在这个文件夹下运行cmd 输入

type 2007_train.txt 2007_val.txt> train.txt,按回车

这个命令是把两个文件里的数据合到一个文件里,生成train.txt文件

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_opencv_14


opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_vs2019_15


运行完了,检查下这个文件夹里的TXT有没有数据

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_opencv_16

这里如若没有数据即txt文件显示为空的话,就将你的xml文件转成txt格式放进去


看下这个,把xml文件转换成txt文件



opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_opencv_17

第四步:

在下面的路径下找到这两个文件:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_opencv_18


下面修改这两个文件中的内容:

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_opencv_19


opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_vs2019_20


在如下的路径下,打开这个文件yolov3-voc.cfg

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_Darknet_21


opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_txt文件_22


opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_txt文件_23


在这个文件最下面有个[yolo]

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_txt文件_24

第五步:

将从网盘下载中的预训练权重,放到x64文件夹下

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_Darknet_25


opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_Darknet_26


感人的时候到了。。。。。。

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_opencv_27


opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_Darknet_28

PS:

这次我就不等数据训练完了,仍清楚记得上次训练了5次,跑了三四个小时。。。

数据训练完了之后,在如下路径下会生成一个你刚刚训练好了的权重

opencv4对图片处理与opencv3区别 opencv3和opencv4哪个好_YOLO_29


然后再回到X64文件夹下,cmd回车进入cmd界面,

输入命令:

darknet.exe detector test cfg\voc.data cfg\yolov3-voc.cfg backup\yolov3-voc_final.weights data\voc\VOCdevkit\VOC2007\JPEGImages\000004.jpg

此时可以随意测试一个视频或者图片,看看能否识别出来。。。

关于其他一系列的操作,我这个小白还没掌握,仍努力摸索中。。。