目标检测算法发展综述

一、目标检测算法

主流的目标检测算法大致分为one-stage与two-stage。
two-stage算法代表有R-CNN系列,one-stage算法代表有Yolo系列。自己理解,two-stage算法将步骤一与步骤二分开执行,输入图像先经过候选框生成网络(例如faster rcnn中的RPN网络),再经过分类网络,对候选框的内容进行分类;one-stage算法将步骤一与步骤二同时执行,输入图像只经过一个网络,生成的结果中同时包含位置与类别信息。two-stage与one-stage相比,精度高,但是计算量更大,所以运算较慢。
简单时间线:
在这里插入图片描述

目标检测算法分类:
在这里插入图片描述
在这里插入图片描述

二、目标检测算法存在的问题

1.目标种类与数量问题:同一幅图下要识别的物体类别和数量可能同时存在多个,在要识别的目标密度非常大时就可能出现像相互遮挡的问题。
2.目标尺度问题:同一幅图下同一类别的物体可能因为透视原理的印象,变得有大有小。尤其是有时候目标的大小可能会变得非常小。
3.外在环境干扰问题:由于光照等问题引起的图片质量问题。
4.目标检测和目标分割:目标识别、目标检测、语义划分、实例检测
在这里插入图片描述

三、目标检测算法的基本流程

候选框的选择是依靠滑动窗口来选择的。
在这里插入图片描述

四、传统的目标检测算法

1.Viola-Jones(VJ人脸检测算法)

  • Haar特征抽取(Opencv中有这个特征提取包)
    在这里插入图片描述
  • 训练人脸分类器(Adaboost算法)
    在这里插入图片描述
  • 滑动窗口选取候选框

2.HOG + SVM(行人检测,使用Opencv实现)

  • 提取HOG特征
    在这里插入图片描述
  • 训练SVM分类器
    这里的SVM是二分类分类法。(我们会使用现成的包就好,不一定需要自己去实现,最好自己手动写一下。)
    SVM又叫支持向量机,所谓支持向量正是图中所画的虚线上的点,他们对最后分类的结果影响较大。
    在这里插入图片描述
  • 利用滑动窗口提取目标区域,进行分类判断
  • NMS
  • 输出检测结果

3.DPM(物体检测)

  • DPM特征提取
    在这里插入图片描述
    在这里插入图片描述
  • HOG的扩展
  • 使用SVM训练得到物体的梯度

补充——NMS

在这里插入图片描述

五、基于深度学习的目标检测算法

1.Two-Stage算法(段到段)

在这里插入图片描述

  • 使用各种CNN卷积神经网络作为backbone主干网络,进行特征提取
  • 然后进行一步粗分类(区分前景和后景)和粗定位(anchor),也就是说在上图的“产生候选区域CNN特征”之前还应该有一个框“使用RPN网络产生候选区CNN特征”
  • 段到段的目标检测
  • 准确度高但速度较one-stage慢
    在这里插入图片描述

2.One-Stage算法(端到端)

  • 使用CNN卷积特征
  • 直接回归物体的类别概率和位置坐标值
  • 准确率低但速度快
    在这里插入图片描述

3.对比

  • 双阶段精度高但速度慢,单精度速度快但精度稍逊。
  • 双阶段目标检测器采用了两段结构采样来处理类别不均衡的问题(意思就是在同一张图片中需要进行检测的目标太少,不需要检测的背景信息太多),一阶段中:rpn使正负样本更加均衡(先粗分类,区分前后景),再粗回归,使用Anchor来拟合bbox,然后再二阶段精调。
  • One stage detector 的一个通病就是既要做定位又要做classification。最后几层1x1 conv layer的loss混在一起,并没有什么专门做detection或者专门做bbox regression的参数,那每个参数的学习难度就大一点。
  • Two stage detector 的第一个stage相当于先拿一个one stage detector来做一次前景后景的classification + detection。这个任务比 one stage detector 的直接上手N class classification + detection要简单很多。有了前景后景,就可以选择性的挑选样本使得正负样本更加均衡,然后拿着一些参数重点训练classification。训练classification的难度也比直接做混合的classification和regression 简单很多。
  • 双阶段其实就是把一个复杂的大问题拆分成更为简单的小问题。各个参数有专攻,Two Stage Detector 在这个方面是有优势的。但one stage detector 里如果用了 focal loss 和 separate detection/classification head 那效果跟 two stage detector 应该是一样的。
    在这里插入图片描述
### 目标检测技术的发展历程 目标检测作为计算机视觉领域的重要分支之一,经历了多个阶段的技术演进和发展。以下是其发展历程中的关键节点和技术突破: #### 传统方法时期 在深度学习兴起之前,目标检测主要依赖手工设计特征和经典机器学习算法。其中最具代表性的方法包括 Viola-Jones 框架[^1] 和 HOG+SVM 方法。Viola-Jones 提出了基于 AdaBoost 的级联分类器框架,用于快速人脸检测;而 HOG 特征结合线性 SVM 则成为通用物体检测的经典方案。 #### 深度学习崛起 随着 AlexNet 在 ImageNet 竞赛上的成功,深度学习逐渐主导了目标检测的研究方向。R-CNN(Region-based Convolutional Neural Network)系列模型标志着这一转变的开端。具体来说: - **R-CNN**:首次引入 CNN 进行区域提议提取和特征表示的学习。 - **Fast R-CNN**:优化了训练流程并提升了效率。 - **Faster R-CNN**:提出了 Region Proposal Networks (RPN),进一步加速了检测过程[^2]。 #### 单阶段检测器的出现 为了简化两阶段架构带来的复杂性和计算开销,单阶段检测器应运而生。这类模型直接预测边界框位置及其类别概率,典型代表包括 YOLO(You Only Look Once)、SSD(Single Shot MultiBox Detector)。这些方法显著提高了实时性能,在许多实际应用场景中表现出色[^3]。 #### 新兴趋势与未来展望 近年来,目标检测研究呈现出以下几个新特点: - 锚点机制改进:Anchor-Free 方法摒弃了传统的锚定框设定方式,转而采用中心点回归策略。 - Transformer 结构应用:Vision Transformers 开始被应用于目标检测任务,展现出强大的建模能力。 - 多模态融合:结合图像、视频等多种数据源的信息提升检测精度。 关于您提到的目标检测技术发展历史及相关图表,可以参考以下资源链接获取更详细的资料说明以及可视化展示效果。 ```python import matplotlib.pyplot as plt from PIL import Image # 加载一张示意图像 image_path = 'detection_history.png' img = Image.open(image_path) plt.figure(figsize=(8, 6)) plt.imshow(img) plt.axis('off') # 关闭坐标轴显示 plt.show() ``` 上述代码片段可用于加载并展示有关目标检测技术发展的历史沿革图谱,请确保本地存在对应文件路径下的图片素材。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值