YOLO V1
大致框架:只用一次就可以检测物体的目标检测。YOLOv1借助了GoogleNet的思想,使用了22层卷积层和两层全连接层来进行目标检测。首先是将整张图片传入给神经网络,借助全局的特征更好的进行目标检测任务。
优点:
- YOLO v1将检测视为回归问题,因此处理图像的流程非常简单、直接。
- YOLO在训练和测试时能够看到整个图像,因此其在进行预测时会对图像进行全面的推理。
- YOLO并没有像SSD和Faster R-CNN那样,选择VGGNet或者其他经典的CNN模型作为基础网络。YOLO使用基于GoogLeNet架构的自定义网络DarkNet作为基础网络。DarkNet比VGG16的运行速度快,这也使YOLO的运行速度得到了提升。
(该网络是当时速度最快的网络,速度达到了实时的级别)
(将目标检测问题视为回归问题,简单直接且速度快)
缺点
与两阶段目标检测系统相比,YOLO产生了更多的定位误差且在精度上落后(对小目标的检测效果尤其差)。同时,YOLO对边界框预测施加了空间约束(因为每个网格单元只预测 两个边界框,并且只能有一个类别)。这个空间约束限制了YOLO可以 预测的邻近目标的数量,因此,使用YOLO对鸟群、人群和车队进行预测的效果并不理想。
(精度对比 最好的两阶段目标检测算法较差,因为是预测的边界框大小,所以边界框的精准度较差。)
YOLO V2
大致框架:YOLOv2首先是将YOLOv1的backbone更换成DarkNet19,其次使用了BN层、更大分辨率的输入、给预测边界框做了一系列的尝试、使用基于anchor的聚类方法、使用了细粒度特征进行特征融合、以及多尺度输入的方式来对模型进行了优化。首先将输入传给DarkNet19来进行特征的提取,去掉DarkNet19的全连接层,然后将提取后的特征继续使用两个卷积层进行提取,然后将提取后的特征与pooling4之前的那个26*26的特征图通过passthrough layer 进行特征融合。然后再传入进网络进行特征提取。最后使用一个Conv2D进行目标预测。
优点:在 v1 的基础上改进,精度和速度都有所增加,使用了直接位置预测,对预测的偏移量进行 sigmoid 限制,防止它移动出该网格,导致计算错误,
缺点:它的 全局信息 和 局部信息融合太少,对于小目标的检测精度较差
YOLO v3
大致框架:利用了darknet53架构,进行了特征融合,融合了三次,分别在深层,中层和底层,预测大物体,中物体和小物体,使得预测结果更加的精细,在最后损失函数的时候使用的是逻辑分类而不是softmax分类,因为softmax具有局限性,只能预测一次,而逻辑分类可以多次预测,例如:既能预测出人也能预测出是女人。没有池化层,利用卷积层进行特征图的减小,使得网络更加的准确。
优点:1.YOLO v3在整体结构上有较大的改动,其中较为重大的是使用多个独立的逻辑分类器代替softmax函数,以及使用类似FPN的方法进行多尺寸预测。
(网络的精度和速度较好,使用多预测输出,使用了 v2 相同的直接位置预测,限制偏移量)
缺点:YOLO v3为了提升精度,在速度上进行了一定的舍弃。速度的下降与基础网络DarkNet的复杂度的提高直接相关。
(虽然对小物体预测较好,但是对大物体预测较差。)
YOLO V4
大致框架:主干网络采用CSPDarkNet53
为了增加感受野,采用SPP思想
采用PANet中的路径聚合模块
仍采用YOLO V3的head部分
优点:增强CNN的学习能力,使得在轻量化的同时保持准确性。
降低计算瓶颈
降低内存成本
缺点:
YOLO V5
Yolov5官方代码中,给出的目标检测网络中一共有4个版本,分别是Yolov5s、Yolov5m、Yolov5l、Yolov5x四个模型。
大致框架:设计了两种csp结构,CSP1_X结构应用于Backbone主干网络,另一种CSP2_X结构则应用于Neck中
(1) 输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放
(2) Backbone : Focus结构、CPS结构
(3) Neck : FPN + PAN结构
(4) Prediction : GIOU_LOSS
优点:网络最小,速度最少,AP精度也最低。
缺点:增加计算量
算法性能图
Yolov5s网络最小,速度最少,AP精度也最低。但如果检测的以大目标为主,追求速度,倒也是个不错的选择。
其他的三种网络,在此基础上,不断加深加宽网络,AP精度也不断提升,但速度的消耗也在不断增加。
目前使用下来,yolov5s的模型十几M大小,速度很快,线上生产效果可观,嵌入式设备可以使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:YOLO系列(单阶段目标检测) - Python技术站