YOLOv4最近几乎刷屏了CV界,要说有多牛批,就一句话:同样的效果,速度吊打一切;同样的速度,效果吊打一切。
当然,是否真的有描述的那么厉害,还得检验它的通用性,也就是能不能为我们的数据所用。
废话不多说,直接上教程。
1.源码与论文下载:
YOLO v4 论文:https://arxiv.org/abs/2004.10934
YOLO v4 开源代码:https://github.com/AlexeyAB/darknet
大家可以直接在github上下载AB版本的YOLOv4代码,有余力的童鞋可以看看论文。简单来说,YOLOv4的创新点就在于各种数据增强的方式以及新的网络结构。
2.数据集的准备:
本文的目的就是为了教大家如何使用YOLOv4训练自己的模型,因此数据集的重要性不言而喻。
在这里为了实验方便,本文使用了pascalVOC2007的数据集作为样例,大家可以按照方法更换成自己的数据集。
数据集的下载路径我会放在网盘中供大家下载使用。
打开我们的数据集文件夹VOC2007_Ori可以看到:
在这里我们只需要用到JPEGImages和Annotations这两个文件夹。前者是图片,jpg格式的。后者是每张图片对应的标签信息,xml格式的。标签信息中最主要的内容就是相对应的图片中包含的物体类别以及它们的坐标位置信息。
这里需要注意的是,pascalVOC2007提供的是尺寸大小不一的图片,没有办法直接在统一的分辨率下获取Anchor。因此,我们必须预先处理成训练所需的分辨率,也就是yolov4.cfg模型中的608x608。
VOC2007_608_608即为resize之后的图片与标签文件夹。
接下来我们需要对数据集进行处理。
我们需要在VOC2007_608_608的同级目录中创建maketxt.py和voc_label.py两个脚本文件,如下所示:
(1)生成文件名maketxt.py:
该脚本会在VOC2007_608_608/ImageSets文件夹下生成:trainval.txt, test.txt, train.txt, val.txt,内容如下图所示,将图片分成了训练集,验证集和测试集,并将文件名(不带扩展名)汇总在txt文件中。
生成的文件结构以及文件内容如下图