目标探测进化YOLO v1-v5

目标检测是一门与计算机视觉和图像处理相关的计算机技术,用于识别一幅图片中某些目标的类型,同时要求标注出目标的位置。目标检测在人脸检测、自动驾驶和视频监控等图像领域有着广泛的应用。

目标检测中常用的方法可分为一阶段法和两阶段法。一步法首先输入图片,输出包围盒(bbox)和分类标签,由网络完成。YOLO和SSD是这种方法的主要代表。两阶段方法由fast-RCNN表示。输入图片后,首先生成一个区域建议,然后输入到分类器中进行分类。这两个任务由不同的网络完成。

其中,YOLO目标检测是一种突出优秀的算法,是“你只看一次”的简称,意思是只需浏览一次,就可以识别出图片中物体的类别和位置,完美平衡了检测速度和准确率的关系。YOLO也从最初的YOLO v1发展到最新的YOLO v5。

2015年,YOLO v1第一版提出,YOLO参考GoogleNet提出了Darknet网络。Darknet是用C语言和CUDA编写的开源神经网络框架。1x1卷积层+3x3卷积层取代了GoogleNet的Inception模块。该网络由24个卷积层和2个全连接组成,如图1所示:

YOLO v1的帧如图2所示:首先将图像尺寸调整为448×448,然后将图像输入CNN,最后通过NMS保存最终的校准帧。

YOLO v1的核心思想是将目标检测视为一个回归问题,将画面分成SxS个网格,如果目标中心落入一个网格单元,则该网格负责检测目标。每个网格单元预测B边界框(bbox)和类别信息。此外,每个bbox需要预测(x,y,w,h)和置信度***5个值。所以最后每个网格要预测B bbox和C类,最后输出S x S x (5*B+C)的张量。

优势:

YOLO v2在YOLO v1的基础上做了一系列改进,在保持分类准确率的同时,提高了目标定位的准确率和召回率。首先,YOLO v2可以适应不同的输入大小,可以根据需要权衡检测精度和检测速度。其次,根据层次分类,提出用词树来混合检测数据集和分类数据集。最后,提出了一种联合训练方法,可以同时在检测和分类数据集上进行。检测数据集用于训练模型识别部分,分类数据集用于训练模型分类部分,以扩展检测类型。

对YOLO v1更具体的改进包括以下几点:

然而,YOLO v2仍然不能解决同一网格中对象重叠的问题。YOLO v3在YOLO v2的基础上继续做了一些改进:

2020年4月,YOLO v4发布。在MS COCO数据集上的准确率达到43.5% AP,速度达到65FPS,分别比YOLO v3高出10%和12%。

YOLO v4首先总结相关工作,拆分目标检测框架:

物体检测=脊柱+颈部+头部

另外,所有的调音方式都分为“一袋赠品”和“一袋特价”两类。

YOLO v4总结了以上调优技术,寻找最佳组合。在培训过程中,免费赠品和专业赠品对YOLO v4的影响得到了验证。

在YOLO v4发布40多天后,Ultralytics已经开放了非官方的YOLO v5,该版本完全基于PyTorch。值得注意的是,每张图片的推理时间达到140 FPS,YOLOv5的权重文件大小仅为YOLOv4的1/9。YOLO v5更快更小!

从YOLO的上述发展历程可以看出,YOLO系列在开发后期更注重应用落地,并没有提出非常新颖的创新。