opencv dnn部署yolov5的口罩检测模型+GUI界面(二)

(二)数据的准备和模型的训练

我做的是口罩检测,数据集是把图像中的人脸框出,再打上是否佩戴口罩的标签,再把数据集按一定的比例划分一下训练集和测试集。

打开yolov5的主目录,点进data里面,把图像和标签分别放在下图的images和labels文件夹下面。

opencv dnn部署yolov5的口罩检测模型+GUI界面(二)_第1张图片而点进其中的images里,又有这样三个目录,test, train, val。这就是我们的数据集了,val是交叉验证集。我的数据集总共只有1400+张图片,划分了70%训练集,测试集和验证集分别15%。

images的结构如下图

opencv dnn部署yolov5的口罩检测模型+GUI界面(二)_第2张图片

同样,labels里的标签也要和images里的图片一一对应。

 opencv dnn部署yolov5的口罩检测模型+GUI界面(二)_第3张图片

opencv dnn部署yolov5的口罩检测模型+GUI界面(二)_第4张图片 测试集标签

opencv dnn部署yolov5的口罩检测模型+GUI界面(二)_第5张图片 测试集图像

 如果是用的labelling标注的数据,需要把xml的标签转换为txt格式。

如下图,txt共有5个数字,第一个代表标注的类别,我的分类只有两类即戴口罩与不戴口罩,0代表没有带,1代表戴了。后面四个数字分别代表框的中心坐标(x,y),框的宽度w和高度h。都是做了相应归一化到了0-1之间。

所以你需要把xml标注格式中:类别id,x,y,w,h 这五个数字取出来,按照顺序放在txt文件里作为标签。

opencv dnn部署yolov5的口罩检测模型+GUI界面(二)_第6张图片

接下来再准备.yaml文件。

直接打开coco.yaml,把coco.yaml改成如图所示。

opencv dnn部署yolov5的口罩检测模型+GUI界面(二)_第7张图片

 接下来就可以训练了。进入train.py里,配置一下运行参数

opencv dnn部署yolov5的口罩检测模型+GUI界面(二)_第8张图片

当然也可以在终端里输入这些参数来运行train.py进行训练。

设置完之后就可以直接运行train.py进行训练了。如果配置了tensorboard,还可以实时查看各种指标的可视化图像。

 训练完之后的.pt模型文件存放在runs/train的最后一个exp文件的weights里.

opencv dnn部署yolov5的口罩检测模型+GUI界面(二)_第9张图片

 测试一下模型的效果如何。

打开detect.py,配置一下参数。

opencv dnn部署yolov5的口罩检测模型+GUI界面(二)_第10张图片

然后运行detect.py,就可以打开本地摄像头对画面实时检测了。

至此,模型的训练就全部完成了。

你可能感兴趣的:(python,opencv,dnn,深度学习,目标检测)