【CV第三篇】目标检测风云二十年

目录

Anchor-free目标检测算法

One-Stage目标检测算法

Two-Stage目标检测算法


开篇寄语

气如云气,自我纵横。

天地洞明,万物可兵。


魔方导读

目标检测(Object Detection)是计算机视觉四大基本任务之一,目的是解决“是什么,在哪里”的问题。作为图像理解和计算机视觉的基石,目标检测是解决图像分割、目标追踪、视频内容理解、图像描述和行为识别等更复杂更高阶的视觉任务的基础。因此,本文整理了目标检测发展二十多年来的优秀算法,包括基于深度学习的Anchor-free、One-stage和Two-stage等目标检测方法。通过本文可快速了解目标检测的发展脉络及相关领域算法!!!

由魔方智能CV空间调研、整理、创作或转载,如有侵权,请联系后台作相应处理!!

往期回顾:

以2012年作为分水岭,目标检测在过去二十多年的发展过程中可大致分为两个时期:传统目标检测方法与基于深度学习的目标检测方法。传统的目标检测方法的代表作主要有三个:Viola Jones Detectors、HOG Detector、Deformable Part-based Model(DPM),在这里不进行过多介绍,接下来重点汇总基于深度学习的目标检测方法。

Anchor-free目标检测算法

1.1 YOLOv1

论文:《You Only Look Once: Unified, Real-Time Object Detection》

论文链接:https://arxiv.org/pdf/1506.02640.pdf

代码链接:https://github.com/AlexeyAB/darknet

参考:https://zhuanlan.zhihu.com/p/364367221

【简介】

(1)以当前视角看,YOLOv1是One-stage开山之作,同时也是最早的Anchor-free通用检测器;

(2)因其简洁的网络结构和GPU实时检测速度而一鸣惊人

(3)最大特点:仅使用一个卷积神经网络端到端地实现物体检测,打破了R-CNN的“垄断”地位,为目标检测领域带来了巨大的变革!

(4)核心思想:就是在每个网格上做预测,如果某物体的Ground Truth中心点坐标落入到某个格子,那么这个格子就负责检测出这个物体。

1.2 CornerNet

论文:《CornerNet: Detecting Objects as Paired Keypoints》

论文链接:https://arxiv.org/abs/1808.01244

代码链接:https://github.com/princeton-vl/CornerNet

【简介】

(1)将目标检测问题当作关键点检测问题来解决;

(2)通过检测bounding box的左上角和右下角两个关键点得到预测框;

(3)CornerNet算法中没有Anchor的概念;

(4)整个检测网络的训练是从头开始的,不受预训练模型的限制.

1.3 CenterNet

论文:《Objects as Points》

论文链接:https://arxiv.org/pdf/1904.07850.pdf

代码链接:https://github.com/xingyizhou/CenterNet

【简介】

传统目标检测将物体定义为沿着坐标轴的边界框,对所有可能的物体进行穷举搜索,再进行分类。这种方法耗时耗力,且需要额外的后处理过程。本文将物体建模为单个点——BBox的中心点,用关键点估计找到中心点,并且回归输出物体其他属性,如:尺寸,3D位置,旋向,甚至位姿。本文方法称为CenterNet,一种端到端具有多种优点的目标检测方法,达到了速度与准确率的平衡.

1.4 FSAF

论文:《Feature Selective Anchor-Free Module for Single-Shot Object Detection》

论文链接:https://arxiv.org/pdf/1903.00621v1.pdf

代码链接:https://github.com/xuannianz/FSAF

【简介】

我们激励并提出功能选择性Anchor-free(FSAF)模块,这是一种简单有效的单点目标检测器构建块。可以将其插入具有特征金字塔结构的单发检测器。FSAF模块解决了传统基于锚的检测带来的两个限制:1)启发式引导特征选择; 2)基于重叠的锚点采样。FSAF模块的一般概念是在线特征选择,用于选择多级Anchor-free分支。具体地,Anchor-free分支附接到特征金字塔的每个级别,从而允许以任意锚的Anchor-free方式进行盒编码和解码。在训练过程中,我们会为每个实例动态分配最合适的功能级别。在推理时,FSAF模块可以通过并行输出预测与基于Anchor的分支共同工作。我们通过Anchor-free分支的简单实现和在线特征选择策略来实例化此概念。在COCO检测的实验结果表明,我们的FSAF模块比Anchor-based的模块性能更好,同时速度更快。当与Anchor-based的分支联合使用时,FSAF模块在各种设置下都大幅提高了基线RetinaNet,同时引入了几乎免费的推理开销。最终得到的最佳模型可以达到44.6%的最新mAP,优于COCO上所有现有的单激发检测器。

1.5 FCOS

论文:《FCOS: Fully Convolutional One-Stage Object Detection》

论文链接:https://arxiv.org/pdf/1904.01355v5.pdf

代码链接:https://github.com/tianzhi0549/FCOS/

【简介】

(1)最大优势不需要先验框,大大降低了样本量和参数量,计算量也大大降低;

(2)对于小目标检测的效果也不错,通过多尺度检测,增加可以预测的框的数;

(3)最大创新在于center-ness模块,这是其区别于YOLOv1的主要部分。

1.6 SAPD

论文:《Soft Anchor-Point Object Detection》

论文链接:https://arxiv.org/pdf/1911.12448v2.pdf

代码链接:https://github.com/xuannianz/SAPD

【简介】

(1)针对anchor-point检测算法的优化问题,论文提出了SAPD方法;

(2)对不同位置的anchor point使用不同损失权重,并且对不同特征金字塔层进行加权共同训练,去除大部分人为制定的规则,更加遵循网络本身的权值进行训练。

One-Stage目标检测算法

1.1 YOLOv1

论文:《You Only Look Once: Unified, Real-Time Object Detection》

论文链接:https://arxiv.org/pdf/1506.02640.pdf

代码链接:https://github.com/AlexeyAB/darknet

【YOLOv1的缺点】

(1)每个cell只预测两个bbox和一个类别,这限制了能预测重叠或邻近物体的数量,比如当两个物体的中心点都落在这个cell中,但这个cell只能预测一个类别;

(2)不像Faster R-CNN一样预测offset,YOLOv1是直接预测bbox的位置,这就增加了训练的难度;

(3)YOLOv1是根据训练数据来预测bbox的,当测试数据中的物体出现了训练数据中物体没有的长宽比时,YOLOv1的泛化能力低;

(4)经过多次下采样,最终得到的feature的分辨率比较低,可能会影响到物体的定位;

(5)损失函数的设计存在缺陷,使得物体的定位误差有点大,尤其在不同尺寸大小的物体处理上还有待加强。

1.2 SSD

论文:《SSD: Single Shot MultiBox Detector》

论文链接:https://arxiv.org/pdf/1512.02325v5.pdf

代码链接:https://github.com/weiliu89/caffe/tree/ssd

【简介】

(1)SSD是一个One-stage的统一目标检测框架;

(2)SSD 网络模型的特征提取网络是改进 VGG16 网络而来的,通过在 VGG16 网络后面增加几组卷积层增大小特征的特征图;

(3)利用不同尺度的特征图进行目标的检测,经过 SSD 网络特征提取后,会得到两个尺度的特征图,用两个尺度中较大的识别小目标,而较小的识别大目标,提高小目标的识别准确率。

1.3 YOLOv2

论文:《YOLO9000:Better, Faster, Stronger》

论文链接:https://arxiv.org/pdf/1612.08242v1.pdf

代码地址:https://github.com/AlexeyAB/darknet

参考:https://zhuanlan.zhihu.com/p/124269512

【简介】

(1)在YOLOv1基础上,进行了大量改进,提出了YOLOv2和YOLO9000,重点解决YOLOv1召回率和定位精度方面的不足;

(2)是一个先进的目标检测算法,比它之前的算法检测速度更快。同时可以适应多种尺寸的图片输入,并且能在精度和速度之间进行很好的权衡;

(3)借鉴了Faster R-CNN的思想,引入Anchor机制,利用K-means聚类的方法在训练集中聚类计算出更好的Anchor模板,大大提高了算法的召回率;

(4)结合图像细粒度特征,将浅层和深层特征相连,有助于对小目标的检测;

(5)YOLO9000 使用 WorldTree 来混合不同资源的训练数据,并使用联合优化技术在ImageNet和COCO数据集上进行训练,能够实时地检测超9000种物体。

1.4 RetinaNet

论文:《Focal Loss for Dense Object Detection》

论文链接:https://arxiv.org/pdf/1708.02002v2.pdf

代码链接:

https://github.com/facebookresearch/detectron

【简介】

(1)该论文最大贡献在于提出了Focal Loss用于解决类别不均衡的问题,从而创造了RetinaNet;

(2)精度上超越Two-stage网络,在速度上超越one-stage网络的速度,首次实现一阶段网络对二阶段网络的全面超越;

(3)产生精度差异的主要原因:类别失衡(Class Imbalance)

(4)Focal loss的目的:消除类别不均衡+挖掘难例样本

1.5 YOLOv3

论文:《YOLOv3: An Incremental Improvement》

论文链接:https://arxiv.org/pdf/1804.02767v1.pdf

代码链接:https://pjreddie.com/darknet

【简介】

(1)创新点:a.新的网络结构Darknet-53;b.融合FPN;c.用逻辑回归替代softmax作为分类器;

(2)“分而治之”,从YOLOv1开始,yolo算法就是通过划分单元格来做检测,只是划分的数量不一样;

(3)采用**“leaky ReLU”**作为激活函数;

(4)从yolo_v2开始,yolo就用batch normalization作为正则化、加速收敛和避免过拟合的方法,把BN层和leaky relu层接到每一层卷积层之后

(5)多尺度训练,在速度和准确率之间tradeoff。想速度快点,可以牺牲准确率;想准确率高点儿,可以牺牲一点速度。

1.6 YOLOv4

论文:《YOLOv4: Optimal Speed and Accuracy of Object Detection》

论文链接:https://arxiv.org/pdf/2004.10934v1.pdf

代码链接:https://github.com/AlexeyAB/darknet

【简介】

(1)构建了一个简单且高效的目标检测模型,降低了训练门槛

(2)验证了先进的Bag-of-Freebies和Bag-of-Specials方法在训练期间的影响;

(3)修改了最先进的方法,并且使其更为有效,适合单GPU训练,包括CBN、PAN、SAM等,从而使得YOLOv4能够在一块GPU上就可以训练起来。

1.7 YOLOv5

代码链接:https://github.com/ultralytics/yolov5

【特点】

(1)考虑了邻域的正样本Anchor匹配策略,增加了正样本;

(2)通过灵活的配置参数,可以得到不同复杂度的模型;

(3)通过一些内置的超参数优化策略,提升整体性能;

(4)和yolov4一样,都用了Mosaic增强,提升小物体的检测性能。

1.8 YOLOX

论文:《YOLOX: Exceeding YOLO Series in 2021》

论文链接:https://arxiv.org/pdf/2107.08430v2.pdf

代码链接:

https://github.com/Megvii-BaseDetection/YOLOX

简介

(1)本论文中介绍了YOLO系列的一些经验改进,形成了一个新的高性能检测器——YOLOX;

(2)将YOLO检测器切换为Anchor-free并进行其他先进的检测技术**,decoupled head** 和领先的标签分配策略 SimOTA,以在大量模型中实现最先进的结果。

(3)支持ONNX、TensorRT、NCNN和OpenVINO**的部署版本。

1.9 PP-YOLOE

论文:《PP-YOLOE: An evolved version of YOLO》

论文链接:https://arxiv.org/pdf/2203.16250v2.pdf

代码链接:

https://github.com/PaddlePaddle/PaddleDetection

【简介】

(1)首先PP-YOLOE-l 在COCO数据集上达到了51.4mAP。相比较PP-YOLOv2提升1.9AP和13.35%的速度,相比较YOLOX提升1.3AP和24.96%的速度;

(2)主要的改进点是:anchor-free,powerful backbone and neck,TAL动态label assign,ET-head。

1.10 YOLOv6

技术文章【官方】:

https://mp.weixin.qq.com/s/RrQCP4pTSwpTmSgvly9evg

代码链接:https://github.com/meituan/YOLOv6

【简介】

美团视觉智能部在目标检测框架方面的优化及实践经验,针对 YOLO 系列框架,在训练策略、主干网络、多尺度特征融合、检测头等方面进行了思考和优化,设计了新的检测框架YOLOv6,初衷来自于解决工业应用落地时所遇到的实际问题。

1.11 YOLOv7

论文:《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors》

论文链接:https://arxiv.org/pdf/2207.02696v1.pdf

代码链接:https://github.com/wongkinyiu/yolov7

Two-Stage目标检测算法

1.1 R-CNN

论文:《Rich feature hierarchies for accurate object detection and semantic segmentation》

论文链接:https://arxiv.org/pdf/1311.2524v5.pdf

代码链接:https://github.com/rbgirshick/rcnn

【简介】

(1)RCNN****是Two-stage算法的开山之作**,奠定了一个基础,大大提高了目标检测的效果;

(2)RCNN包含了三个主要的模块:

a. 生成类别独立的regoin proposal(区域建议),为感知器定义候选区域;

b. CNN提取固定长度的特征;

c. 线性SVM分类器进行类别的分类

1.2 Fast R-CNN

论文:《Fast R-CNN》

论文链接:https://arxiv.org/pdf/1504.08083v2.pdf

代码链接:https://github.com/rbgirshick/fast-rcnn

1.3 Faster R-CNN

论文:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》

论文链接:https://arxiv.org/pdf/1506.01497v3.pdf

代码链接:https://github.com/rbgirshick/py-faster-rcnn

原文链接:【CV第三篇】目标检测风云二十年开篇寄语\x0d\x0a气如云气,自我纵横。天地洞明,万物可兵。‍http://mp.weixin.qq.com/s?__biz=MzI1MzUyMTMwOA==&mid=2247484778&idx=1&sn=e53b6bc2461490a73223d57da62f581a&chksm=e9d27999dea5f08fd29129e41130602375c587f3ba4ca1e7a43317b3d3eec36dd86e44eb80e0&token=349007583&lang=zh_CN#rd

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 用 Python 写一篇目标检测综述,首先要明确目标检测的定义,即根据图像中特征信息对特定对象进行识别,分类,定位和跟踪的过程。然后要介绍Python目标检测的基本原理,包括目标检测的基本任务、特征提取、分类器和回归器等。接下来要介绍Python中常用的目标检测方法,如滑动窗口法、R-CNN、Faster R-CNN、YOLO 和 SSD 等。最后要结合实际应用,简要讨论Python中目标检测的未来趋势。 ### 回答2: 目标检测计算机视觉领域中的重要任务,其目标是在图像或视频中准确地识别和定位多个目标物体。Python作为一种高级编程语言,有着强大的图像处理和机器学习库,如OpenCV、TensorFlow和PyTorch等,可以用于快速实现目标检测算法。 目标检测方法可以分为两大类:基于特征的方法和基于深度学习的方法。基于特征的方法主要使用传统的计算机视觉技术,如Haar特征、HOG特征和SIFT特征等,通过提取图像中的特征并使用机器学习算法进行分类器训练,从而实现目标检测。这种方法的优点是速度快,但准确率相对较低。 基于深度学习的方法则是利用神经网络模型进行目标检测。其中最经典的方法包括Faster R-CNN、YOLO和SSD等。这些方法通过在网络中引入不同的结构和损失函数来解决目标检测问题。深度学习方法的优点是能够自动学习到更丰富的特征表示,从而提高准确性,但需要更多的计算资源和大量的标注数据来训练模型。 近年来,在目标检测领域还出现了一些新的方法和技术。例如,一些研究人员提出了基于注意力机制的方法,通过学习图像中目标物体的重要区域来提高检测性能。此外,一些针对特定场景或任务的目标检测算法也得到了广泛研究和应用。 总的来说,Python以其丰富的库和易用性成为目标检测算法的理想选择。通过结合传统的计算机视觉技术和深度学习方法,我们可以在图片和视频中准确地检测目标物体。随着深度学习等技术的不断进步,目标检测在各个领域都有着广泛的应用和研究前景。 ### 回答3: 目标检测计算机视觉领域的重要任务之一,它旨在识别和定位图像或视频中的特定目标。Python作为一种简单易用且功能强大的编程语言,常用于目标检测算法的开发和实现。 针对目标检测任务,Python提供了丰富的开源库和工具,例如NumPy、OpenCV和TensorFlow等。其中,NumPy是一个基于Python的科学计算库,为目标检测算法提供了基本的数学和数组操作功能。OpenCV是一个广泛应用于计算机视觉任务的开源库,提供了各种图像处理和特征提取函数,可以用于目标检测的预处理和特征提取步骤。TensorFlow是一个用于人工智能和深度学习的开源库,通过提供高级API和工具,支持目标检测算法的实现和训练。 目标检测算法可以分为传统方法和深度学习方法两类。传统方法包括特征提取和目标分类两个主要步骤。其中,特征提取阶段通常使用滑动窗口或基于特征描述符的方法,提取图像的局部特征。目标分类阶段则使用分类器,如支持向量机或随机森林等,将提取的特征与目标类别进行匹配。 深度学习方法在目标检测任务中取得了重大突破,尤其是使用卷积神经网络(CNN)进行特征提取和目标分类。著名的深度学习目标检测算法包括R-CNN、Fast R-CNN、Faster R-CNN和YOLO等。这些算法通过先提取图像的特征映射,然后使用卷积层和全连接层对特征进行分类和定位。它们不仅能够获得更好的检测精度,还具有更快的处理速度。 此外,近年来还出现了一些基于弱监督学习、多尺度和注意力机制的目标检测方法,这些方法在提高检测性能的同时,减少了标注数据的需求和计算复杂度。 总结来说,Python提供了丰富的库和工具,用于目标检测算法的开发和实现。目标检测算法的发展已经从传统的特征提取和分类方法转向深度学习方法。深度学习方法通过卷积神经网络实现特征提取和目标分类,这些方法在检测精度和处理速度上取得了巨大的进步。未来,目标检测算法将继续发展,以满足不断增长的应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值