#训练自己的数据集
一、准备数据集
1.准备数据集:先在网上查有没有已经标注的公共数据集,如COCO、VOC数据集,如果公共数据集中没有所需的类,则自己在网上找图片即可(图像尽可能保存为jpg格式),图像尽可能要求分辨率高,背景环境简单
2.数据集的标注:在目标检测中常用labelImg工具进行标注,工具下载地址:link
标注工具github界面如图所示:下载后解压,使用说明见下载文件中的readme.md
3.进入labelImg-master文件夹:
在空白处安装键盘的Shift键+鼠标右键,点击“在此处打开Powershell”(如果没有此选项,用cmd进入该目录即可),对于windows系统:在命令窗口输入命令:
pyrcc5 -o libs/resources.py resources.qrc
python labelImg.py
如下图所示(注意,PowerShell或cmd窗口不要关闭!):
此时会出现labelImg的窗口,如下图所示,在Open Dir找到图片路径:
比如要检测香烟:按一下键盘上的w键,此时鼠标会变成+,对目标画矩形框,并在跳出来的窗口输入标签,如下图所示:
Ctrl+s对标签进行保存(不要更改标签文件名字),标签会以xml文件形式进行保存,标签文件内容如下图,按D可切换下一张:
以上步骤即为自作数据集的全过程,如果在使用labelImg工具标注时发现有鼠标有失控的现象,将工具重新打开即可。
二、训练:
2.1准备工作:
案例介绍的为YOLOv4目标检测,环境为pytorch,显卡为英伟达1650。
代码下载:link.代码相关问题可查看该博主的说明。
下载yolov4的权重文件:链接: link 提取码: q2iv。该权重文件也是上述博主云盘所提供的。将下载好的权重文件放在model_data文件下,同时在model_data下新建一个new_classes.txt文件,输入自己需要检测的类:
打开yolo.py文件,在class YOLO(object)中model_path:为加载的权重文件(前面提到的yolov4的权重文件),文件格式为pth,anchors_path为锚框文件路径,classes_path为检测的类文件路径。
运行predict.py,输入img下的测试图像:street.jpg。如果能显示出检测结果说明程序能正常运行,否则根据报错进行调整,一般错误有某个组件没下载或者版本问题,模型加载路径问题。
2.2 训练自己的数据集:
在VOCdevit/VOC2007下检查有没有上图文件,没有则自己创建Annotation文件用来存放xml标签文件,JPEGImages用来存放图像文件。
运行voc2yolo4.py,此时会在ImageSets/Main文件下生成每个训练图像的txt文件(txt文件中只有图像的名称,没有坐标信息和格式)。
打开voc_annotation.py,将classes中的类修改为自己标记的类名称,并运行,将xml转换为yolo4可读的txt文件,此时会生成2007_train.txt,2007_test.txt,2007_val.txt文件,打开2007_train.txt可看到每个图像的名称即坐标信息,如下图所示:
如果在txt文件中没有这些信息,说明转换有错误,再一步一步检查,如果检查标签文件以及Main文件下的txt文件没问题,可修改voc_annotation.py中in_file这一行的代码,代码修改如下:
打开train_with_tensorboard.py(需要安装tensorboardX),将下图中的classes_path修改为new_classes.txt:
其他训练参数可根据自身需求进行调整,训练后的模型会保存在logs文件中,训练完以后如果想继续训练,可修改model_path的权重路径为自己权重进行预训练。
在yolo.py中可修改model_path和classes_path为自己权重和类文件,然后再predict.py和video.py进行图像或视频检测。