以上所有安装均可轻易找到大量教程,此处不再赘述。
运行这篇博客的Python脚本,可以快速搜集目标样本集,亲测可用:
https://blog.csdn.net/qq_40774175/article/details/81273198
目标检测样本需要把待检测目标在图片中的位置和大小标注出来,采用LabelImg标注Yolo样本非常方便,下面介绍使用方法。
安装Anaconda以后,在开始菜单打开Anaconda Prompt (Anaconda3)进入base环境,运行pip命令安装LabelImg:
pip install labelImg
安装好LabelImg之后,在命令行输入程序名回车即可启动:
LabelImg
在LabelImg的界面中,左边“Save”按钮下方的按钮表示样本类型,点击即可切换,将其切换为“YOLO”即可。
在LabelImg的界面中,点击左侧的“Open Dir”按钮,将目录设置为事先准备好的目标图片文件夹;
再点击左侧的“Change Save Dir”按钮,指定一个输出目录,用于保存每张图片的标注信息文件。
设置好“Open Dir”后,会自动加载其中的图片,将输入法切换为英文,按下快捷键“W”,然后在图像区域按下鼠标左键拖动,就会出现矩形框;
框出目标后会提示输入目标名称(只需输入一次,以后会自动填充),如果有多个目标需要标注,就继续框选,然后输入目标名字即可;
待所有目标都被标注完毕后,点击界面左侧的“save”按钮,即可保存当前图片的标注信息,到这里第一张图片的标注工作就完成了;
之后点击界面左侧的“Next Image”按钮,即可开始下一张图片的标注,然后重复第2、3步操作即可;
重复第2、3、4步,直到指定目录下的所有图片标注完毕。
github地址:https://github.com/dog-qiuqiu/Yolo-Fastest
下载后将源码解压到本地熟悉的路径下,接下来以D:\Yolo-Fastest-master为例。
在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
source code
路径设置为D:\Yolo-Fastest-master
,将目标生成路径也设置为D:\Yolo-Fastest-master
;opencv.exe
解压缩后的build
文件夹为OPENCV_DIR的路径即可,可以添加OPENCV_DIR环境变量,也可以直接在CMake上面的配置列表中设置;如果上面的过程没有其他报错,就可以编译解决方案了。
打开上一步生成的的解决方案后,生成整个解决方案,如果不能全部成功编译,可能是OpenCV,CUDA或者cuDNN等的安装不正确,或者版本不合适。
如果全部正常通过编译,在D:\Yolo-Fastest-master
路径下会多出一个Release
文件夹,将其中的darknet.dll和darknet.exe复制到D:\Yolo-Fastest-master/build/darknet/x64
目录下。
在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。
数据集的准备包含5个部分,图片、图片对应的标注文件、trainlist.txt和testlist.txt、yourdataset.data、yourdataset.names。
检查数据集:用LabelImg标注好的数据集包含一个标注信息文件夹,即用按钮“Change Save Dir”指定的文件夹,里面有一批与图片同名的.txt文件,记录着每张图片的标注信息,还有一个“classes.txt”文件,记录着所有目标类别;
准备trainlist.txt和testlist.txt文件:这两个文件分别记录训练集和测试集中每张图片的路径,可用如下批处理脚本获得:
dir /b/s/p/w *.jpg > list.txt
pause
#以下为注释内容,实际使用时应删除
将上面的命令写入一个.txt文件,更改文件名后缀为.bat,然后将.bat文件复制到图片所在文件夹,双击运行即可获得该路径下所有jpg图片的路径,并保存在list.txt文件中。
准备.names文件:将上一步中的“classes.txt”更名为“yoursataset.names”即可;
准备.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:指定训练结果保存路径,训练好的权重将保存在这个路径下
整理目录结构:所有文件准备完毕后,建议以如下目录结构组织文件:
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
下,接下来将按以此为例进行说明。
打开之前复制到D:\Yolo-Fastest-master\build\darknet\x64\cfg
目录下的模型结构配置文件yolo-fastest.cfg
,可以看到整个模型的各项设置,需要自定义配置的主要有以下几处:
batch=64
,subdivisions=16
,测试时一般设置batch=1
,subdivisions=1
,其他参数可以保持默认;classes
项设置为你的目标类别数,然后将每一个“[yolo]”字段前紧邻的一个“[convolutional]”字段中的filters
项重置,计算方法为filters=(classes+5)*3
。修改后保存即可。
训练的思路是,先生成预训练模型(骨干网络),然后在其基础上拿自己的数据集进行训练,完成模型的迁移学习。
生成预训练模型:在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
开始训练:将以下命令写入一.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
将以下命令写入一.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