目标检测简述

139 阅读10分钟

目标检测概要

目标检测时计算机视觉中的核心任务之一.其主要任务是在图片中找到感兴趣的事物,将其使用矩形框标记出来并确定其分类.

根据核心任务我总结了一个简单的公式:

💡目标检测 = 特征提取 + 分类 + 回归

1. 目标检测

1.1 目标检测算法划分

当前目标检测的发展,算法可归纳为如下图所示:

目标检测.png

  • 传统方法: 依赖手工设计的特征在图片上进行全局匹配
  • 按照stage划分: 通常划分为one-stage(一阶段)和two-stage(二阶段),主要区别是任务流程的设计特征处理的机制.一阶段中使用单个网络进行端到端检测,二阶段检测使用双网络分布进行处理.
  • 按照anchor划分: 按照是否预定义了anchor(锚框,详见2.2关键术语解释)划分.
  • 按照是否采用transformer结构划分: 利用自注意力机制建模全局依赖,不再有手工设计组件(如Anchor)

1.2 目标检测算法发展

1.2.1 早期传统方法阶段(1980s~2012年)

  1. 基础理论和方法
    • 模版匹配 : 通过预设的目标模版图像,在待检测图像中滑动对比,计算相似度.
    • 特征匹配 : 提取图像局部特征,通过特征描述符匹配目标位置
      • Haar
      • HOG
      • SIFT
  2. 技术局限
    1. 依赖手工设计的特征,泛化弱
    2. 计算量大
    3. 精度低

1.2.2 两阶段方法崛起(2012~2015年)

  1. 理论基础和方法
    1. 深度学习的突破 : AlexNet在ImageNet的夺冠,使得CNN(卷积神经网络)成为了主流的特征提取器
    2. R-CNN系列
      • R-CNN: Selective Search生成候选框 + CNN特征提取 + SVM分类,PASCAL VOC mAP提升至58.5%,但速度慢(47秒/帧)
      • Fast R-CNN:Selective Search生成候选框+CNN特征提取+ROI Pooling 共享卷积计算,大约2FPS,VOC mAP为66%
      • Faster R-CNN: RPN(区域提议网络) + CNN 实现端到端训练,5FPS,VOC mAP为70%
  2. 技术局限
    1. 训练复杂
    2. 流程多、速度慢

1.2.3 一阶段实时检测器兴起(2016~2020年)

  1. 理论基础和方法
    1. YOLO系列
      1. YOLO v1 : 单阶段端到端检测,45 FPS (mAP 63.4%)
      2. YOLO v3: 引入多尺度预测, 优化小目标检测(mAP 68.2%)
      3. YOLO v8: Anchor-free 设计 + 解耦检测头, COCO中 mAP(53.9%) 速度300+FPS
    2. SSD : 多尺度特征图检测,兼顾速度与精度
    3. RetinaNet : 提出Focal Loss,解决正负样本不平衡问题
  2. 技术局限
    1. 牺牲了精度
    2. 对小目标的处理不足

1.2.4 多尺度优化与架构创新(2017年~至今)

  1. 理论基础和方法
    1. FPN(特征金字塔网络): 多尺度特征融合,提升小目标检测能力.
    2. 注意力机制:为输入的不同部分分配权重,实现信息的动态筛选.权重越高,表示该部分信息对当前任务越重要.
    3. DETR:首次将Transformer的编码器-解码器融入到目标检测,摒弃了手工设计的锚框和NMS后处理,对全局建模能力强
    4. Deformable DETR:改进计算效率,动态注意力机制适应稀疏目标.
  2. 技术局限
    1. 训练成本高,难以部署

1.3 目标检测的优化方向

  • 泛化性
  • 速度
  • 精度
  • 资源效率

2. 术语解释

2.1 核心模块

在目标检测中,Backbone、Neck、Head是模型结构的三个核心模块,它们分工协作,共同完成特征提取和任务预测.

  • Backbone(骨干网络) :
    • 功能 : 作为模型的基础特征提取器,负责从原始输入(如图像)中提取多层次的语义特征。
    • 作用原理:
      • 通过多层卷积、池化等操作,逐步提取低级特征(边缘、纹理)和高级特征(物体形状、类别语义).
      • 通常采用预训练的经典卷积神经网络(如 ResNet、VGG、MobileNet),利用迁移学习加速训练并提升泛化能力
  • Neck(颈部网络):
    • 功能 : 连接 Backbone 和 Head 的中间模块,对 Backbone 提取的特征进行融合、增强或尺度调整,提升特征表达力.
    • 核心需求
      • 多尺度融合 : 图像中目标大小差异大(如小物体易漏检),需整合不同层级的特征图
      • 上下文增强 : 引入注意力机制或空间金字塔,提升特征区分度
    • 典型结构
      • FPN(特征金字塔) : 自顶向下融合深层语义与浅层细节,提升小目标检测能力
      • 注意力模块 : 聚焦关键区域,抑制无关背景
  • Head :
    • 功能 : 根据 Neck 处理后的特征执行具体任务预测(如分类、定位、分割),输出最终结果
    • 任务适配设计
      • 分类分支: 预测类别概率
      • 回归分支:预测边界框坐标偏移量

2.2 关键术语

  • Anchor(锚框) :在目标检测中,我们预先定义的具有不同尺度和长宽比的矩形框,在图像上滑动扫描,用以预测可能存在的目标区域。其大小会对检测精度有影响
  • 边界框(Bounding Box):标记目标位置的矩形框,格式为 (左上x, 左上y, 右下x, 右下y) 或 (左上x, 左上y, 宽, 高)
  • RoI(Region of Interest):感兴趣的区域,需要进一步分类/回归的区域
  • 提议框(Region Proposals) : 初步筛选的可能包含目标的区域
概念定义与锚框的关系
锚框预定义的基准框,用于初始化目标位置和尺度基准框本身
检测框模型最终预测的目标边界框(Bounding Box)通过对锚框位置回归得到
提议框初步筛选的可能包含目标的区域(如RPN生成的候选框)由锚框调整生成(如Faster R-CNN的RPN)
感兴趣区域需进一步分类/回归的图像区域(RoI)提议框的子集,输入到检测头进行细化
  • IoU(交并比):用于描述图像中预测框和真实框的重叠程度。IoU=预测框和真实框的交集面积预测框与真实框并集面积IoU = \frac{预测框和真实框的交集面积}{预测框与真实框并集面积}
  • 置信度(Confidence Score): 模型对预测框内存在目标且类别正确的确信程度(范围 0~1)
  • NMS(非极大值抑制):当同一个目标存在多个检测框,通过比较其置信度(即是该目标的概率,不同的目标检测模型有不同的计算方法),选择区域置信度最高的,抛弃掉那些非局部极大值的框,只保留最有代表性的框。用于消除冗余的检测结果
    • 区域中我们只能找到极大值,不能找到最大值,最大值是全局视角下的
  • FPN(特征金字塔):通过构建不同尺度的特征图层次结构,融合低层次的高分辨率特征和高层次的语义特征,从而更好地处理不同大小的目标,提高检测性能
  • 检测头(Detection Head): 在特征图上执行分类和回归的网络层
  • mAP(Mean Average Precision):目标检测中的一个评估指标,用来衡量模型的性能,越高越好。
    • AP:针对每个类的评估指标,通过计算不同召回率(Recall)水平下的精确率(Precision)值,并对这些值进行积分,得到该类别的AP值
    • 细节:
      • mAP@0.5:IoU 阈值 0.5 下的 mAP(宽松标准)
      • mAP@0.5:0.95:IoU 从 0.5 到 0.95 的平均 mAP(严格标准,COCO 主要指标)
  • AR(Average Recall): 固定每张图检测框数量时的平均召回率
    • AR@100:每图 100 个检测框时的召回率,反映模型查全能力上限。
  • FPS(Frames Per Second): 每秒处理图像帧数,衡量实时性
  • 感受野(Receptive Field):指神经网络中一个神经元可以看到的大小,比如你用一个窗口看一颗树,在一个小窗口(小感受野)前面我们能看到一片叶子,你看到的就是局部的细节。在一个大窗口(大感受野)我们能看到整棵树,你看到的就是更全局的信息,但对细节的把握就不如刚才的小窗户了
    • 计算方法:
      • 单层感受野为卷积核尺寸
      • 多层感受野为: RFₙ = RFₙ₋₁ + (Kₙ - 1) × Sₙ₋₁
        • RFₙ:第n层感受野
        • Sₙ₋₁:前一层步长(Stride)的累积乘积
        • Kₙ:当前层卷积核大小
      • 影响感受野的因素:
        • 卷积核大小
        • 步长
        • 空洞卷积
        • 网络深度

2.3 数据格式

目标检测领域常用的数据格式主要包括 VOC(XML)COCO(JSON)YOLO(TXT) 三类。

维度VOC 格式COCO 格式YOLO 格式
文件结构每张图对应一个 XML 文件所有标注整合到单个 JSON 文件每张图对应一个 TXT 文件
边界框表示(xmin, ymin, xmax, ymax)(绝对坐标)(x_top, y_left, width, height)(绝对坐标)(x_center, y_center, w, h)(归一化值)
标注内容类别、边界框、遮挡/截断标记、难易样本标识类别、边界框、实例分割掩码、关键点、面积等仅类别索引 + 归一化边界框坐标
扩展性仅支持检测任务支持检测、分割、关键点、描述生成等多任务仅支持检测任务

2.3.1 COCO数据集

1. 核心特性

  • 数据规模
    • 训练集:118K 张图
    • 验证集:5K 张图
    • 总目标数:超过 50 万个(平均每图 7.2 个目标)
  • 类别:80 类(含牙刷、遥控器等细粒度物体)1
  • 标注内容
    • 边界框 + 实例分割掩码 + 关键点坐标
    • 目标面积、遮挡等级(iscrowd

2. 适用场景

  • 复杂环境检测:图像来源多样(街景、室内、自然场景),包含 40% 小目标(<32×32 像素)和密集遮挡
  • 多任务学习:支持检测、分割、姿态估计等任务的联合训练
  • 工业级模型预训练:因数据量大、泛化性强,成为 ResNet、YOLOv5 等模型的基准预训练集

VOC数据集

1. 核心特性

  • 数据规模
    • VOC2007:9,963 张图,24,640 个目标
    • VOC2012:23,080 张图,54,900 个目标
  • 类别:20 类日常物体(如人、车、猫、电视)
  • 标注内容
    • 边界框坐标 + 类别名称
    • 遮挡标记(truncated)、难易样本标识(difficult

2. 适用场景

  • 轻量级模型验证:数据量小、标注简单,适合算法快速原型验证(如 YOLOv1、Faster R-CNN 的早期测试)
  • 教学用途:结构清晰,便于初学者理解目标检测流程

3. 局限性

  • 场景单一:图像多为摆拍或简单背景,目标遮挡少、分布均匀
  • 任务扩展弱:不支持分割或关键点等高级任务

好的,现在我们就介绍完了目标检测的大体框架,回顾一下,我们了解了目标检测的算法分类;目标检测传统方法到两阶段再到一阶段和transform的迭代过程;目标检测中的主要术语和常用的数据集。可以说我们目前对目标检测有了一个整体的了解了。

接下来 我们将会深入算法,下一篇我们会详解R-CNN系列算法,带你了解两阶段目标检测的进化过程,敬请期待。

文章首发gzh【破茧plan】,欢迎关注。