当前位置:   article > 正文

市面上目标检测算法总结_目标检测算法排名

目标检测算法排名

市面上目标检测算法总结


目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型:
(1)two-stage方法:以R-CNN系列框架为代表,其主要思路是先通过启发式方法(selective search)或者CNN网络产生一系列候选框,然后对这些候选框进行分类与回归,two-stage方法的优势是准确度高,但是在速度方面离实时效果还比较远。
(2)one-stage方法:以YOLO框架为代表,其主要思路是均匀地在图片的不同位置进行抽样(滑动窗口),然后利用CNN提取特征后直接进行分类与回归,整个过程只需要一步,所以其优势是速度快,但缺陷是每个网格只能预测一个物体,容易造成漏检;且对于物体的尺度相对比较敏感,面对尺度变化较大的物体时泛化能力较差,同时检测精度上不来。

在这里插入图片描述

1.R-CNN系列,包括(R-CNN、Fast R-CNN、Faster R-CNN)

R-CNN是最早的目标检测算法,它是基于候选区域+深度学习分类,然后经过一系列版本更新接着出现了Fast R-CNN、Faster R-CNN系列。它首先使用选择性搜索(Selective Search)等方法生成一系列候选区域,然后将这些候选区域进行卷积特征提取,并使用支持向量机(SVM)进行分类。

Fast R-CNN是对R-CNN的改进,它通过共享卷积特征提取过程,提高了算法的效率。Fast R-CNN首先将整个图像输入卷积神经网络,得到卷积特征图,然后根据候选区域的位置信息从特征图中提取对应的特征向量,并使用全连接层和softmax分类器进行分类。

Faster R-CNN是对Fast R-CNN的进一步改进,它引入了区域生成网络(Region Proposal Network, RPN),用于生成候选区域。RPN是一个全卷积网络,可以通过滑动窗口的方式生成候选区域的边界框,并对这些边界框进行分类和回归。Faster R-CNN将RPN和Fast R-CNN结合起来,实现了端到端的目标检测

优点:

准确性较高,对小目标检测效果好,具有较好的定位精度。

缺点:

速度较慢,需要对每个候选区域进行特征提取,计算量大;训练过程复杂,需要多阶段的训练。

2.YOLO系列算法(包括YOLOv1-v5)

YOLO是一种目标检测算法,它的主要特点是能够实现实时目标检测。相比于传统的目标检测算法,YOLO可以在一次前向传递中同时预测图像中多个目标的位置和类别。YOLO算法的网络结构由卷积神经网络构成,通过多层卷积和池化层来提取图像特征,然后使用全连接层来预测目标的边界框和类别。在训练过程中,YOLO使用了特殊的损失函数来平衡目标的位置和类别预测的准确性。总体来说,YOLO系列算法是一种快速而准确的目标检测算法,适用于需要实时检测的应用场景,比如自动驾驶、视频监控等。

优点:

速度快,能够实时检测目标;简单且端到端的网络结构,训练和测试过程都较为简单。

缺点:

对小目标的检测效果较差,定位精度相对较低;容易产生较多的误检测,但是随着yolo版的不断更新,以及transformer在计算机视觉领域的运用,其检测效果也在不断上升。

3.SSD(Single Shot MultiBox Detector)算法

沿用了YOLO中直接回归Bounding Box和分类概率的方法,同时又参考了Faster RCNN,大量使用anchor来提升识别准确度。通过把这两种结构相结合,SSD保持了很高的识别速度,还能把mAP(平均精度)提升到较高的水平。

优点:

速度较快,能够实时检测目标;能够检测出不同尺度的目标,且对低分辨率的输入图像的效果很好。

缺点:

SSD的缺点是对小尺寸的目标识别仍比较差,还达不到Faster R-CNN的水准。这主要是因为小尺寸的目标多用较低层级的anchor来训练(因为小尺寸目标在较低层级IOU较大),较低层级的特征非线性程度不够,无法训练到足够的精确度。

4.Mask R-CNN算法

Mask R-CNN是一个实例分割(Instance segmentation)算法,可以用来做“目标检测”、“目标实例分割”、“目标关键点检测”。Mask R-CNN是对Faster R-CNN的直观扩展,网络的主干有RPN转换为主干网络为ResNet的特征金字塔网络(FPN),同时添加了一个分支用于预测每个感兴趣区域(RoI)上的分割掩模,与现有的用于分类和边界盒回归的分支并行。

优点:

在目标检测的基础上增加了实例分割功能,能够同时得到目标的位置和像素级别的分割结果。

缺点:

速度较慢,计算量大;对小目标的检测效果较差。

不同检测算法性能对比

随着计算机视觉领域的不断发展,越来越多目标检测算法都在不断更新迭代,其中最受欢迎的yolo系列到目前为止已经更新得到v8版本,其速度与精度都有较好的提升,并且随着一些新的网络结构改进,轻量化的运用,也把目标检测算法推向高潮,下表是收集现阶段比较流行大的不同目标检测算法在coco数据集上测试的结果,包括FPS、精度。

在这里插入图片描述

AP: PR曲线下的面积,综合考量了 recall 和 precision 的影响,反映了模型对某个类别识别的好坏。

mAP: mean Average Precision, 即各类别AP的平均值,衡量的是在所有类别上的平均好坏程度。

FPS:即每秒帧率 (Frame Per Second)除了检测准确度,目标检测算法的另一个重要评估指标是速度,只有速度快,才能够实现实时检测。FPS用来评估目标检测的速度。即每秒内可以处理的图片数量。

所以由上表可以发现,在coco数据集上测试结果,yolov5在精度和速度上都有比较好的效果。

YOLOv5-v8对比

由下图可以发现在coco数据集测试下,大致参数量相差不多时yolov8的精度相对于v5、v6、v7版本较好,并且其fps也相差较小

在这里插入图片描述

但是我对模型分别测试,每种算法均按默认配置,使用小麦检测数据集训练100轮,batch_size按显存最大来设置,img_size均为640*640,使用train.py进行4卡训练,使用detect.py进行单卡预测。加粗的表示最优结果。

算法batch_sizeparam/MillionFLOPs/Gweight_size/MBP/%R/%mAP50/%mAP50-95/%train_time/hSpeed/ms
yolov5n2561.74.33.991.988.193.953.20.68211.0
yolov5s2567.016.014.592.790.394.855.60.70513.0
yolov5m12820.948.342.393.189.494.255.01.009816.8
yolov5l6446.2108.392.993.188.894.355.01.75125.6
yolov5x3286.2204.8173.292.689.494.555.43.06840.4
yolov7-tiny5126.0313.212.364.461.268.829.11.13011.5
yolov712837.2105.274.992.091.994.954.91.91230.4
yolov7x12870.9189.0142.293.491.094.654.92.66842.3
yolov8n2563.18.26.391.988.494.155.61.64114.7
yolov8s12811.128.722.591.189.094.256.11.86213.9
yolov8m12825.979.152.191.690.094.656.42.22820.3
yolov8l6443.6165.487.792.189.194.656.62.97430.7
yolov8x6468.2258.2136.891.890.395.056.83.65840.2

总结:

  • 从同一模型来看,模型的准确率和召回率并没有随着模型的加深而提高,相反,有着一定的降低,这主要是由于数据集量相比COCO数据集小得多,模型中有着大量的冗余参数,导致模型的各项指标下降;因此,对于量较小的数据集,选用参数量较少的模型,不光可以提高准确率,降低训练时间,还能在预测速度上有着比较大的优势;
  • 对比不同模型来看,yolov8相较yolov5和yolov7在准确率方面确实有一定的提升(仅限于大模型l/x),在本文使用的数据集上提升大概在1个点左右;而小模型(n/s)其实差距不大,甚至yolov7-tiny远低于正常水平(不知道是否是训练的时候出问题了,后续需要再测一下),这是我没有想到的;
  • 需要根据实际情况挑选自己的模型,没有最好的模型,只有最适合自己数据集的模型。
    )其实差距不大,甚至yolov7-tiny远低于正常水平(不知道是否是训练的时候出问题了,后续需要再测一下),这是我没有想到的;
  • 需要根据实际情况挑选自己的模型,没有最好的模型,只有最适合自己数据集的模型。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/815773
推荐阅读
相关标签
  

闽ICP备14008679号