【动手学深度学习】27 目标检测算法概览

【动手学深度学习】27 目标检测算法概览
前言在计算机视觉领域目标检测Object Detection的核心任务是解决“是什么分类”和“在哪里定位”两个问题。算法不仅要识别出图像中存在哪些物体还要用边界框Bounding Box把它们框出来。目标检测算法的发展主要经历了两个阶段传统目标检测2014年前和深度学习目标检测2014年后。如今工业界和学术界几乎全部使用基于深度学习的算法。在深度学习时代目标检测算法主要分为三大流派双阶段Two-Stage、单阶段One-Stage以及最新的基于 TransformerDETR 系列的算法。1 Two-Stage算法准确率至上双阶段算法将检测任务分两步走① 区域生成先在图像中找出可能存在物体的候选区域。② 分类与精修对这些候选区域进行特征提取、类别分类以及边界框的精细调整。1.1 R-CNN(2014)R-CNNRegion CNN首次将CNN引入目标检测。它用传统算法Selective Search在图上抠出2000个候选框然后把每个框分别送入CNN提取特征最后训练一个SVM分类训练一个线性回归模型预测边缘框偏移。缺点速度极慢一张图要几十秒因为每个候选框单独送入CNN2000各区域意味着要跑2000次CNN存在大量重复计算。李飞飞团队的Rol Pooling解决了这个问题。1.2 Fast R-CNN(2015)改进将整张图片送入CNN得到特征图再通过 Rol Pooling 层从特征图上截取对应候选区域速度提升了上百倍。Rol池化层给定一个锚框均匀分割成块输出每块里的最大值不断锚框多大总是输出个值。但其实相对来说Fast R-CNN的速度仍然还是比较慢。1.3 Faster R-CNN核心创新RPN区域生成网络。它彻底抛弃了传统的候选框提取算法改用一个纯全卷积网络RPN来自动预测候选框。Anchor Box锚框引入了锚框机制在图像的每个位置生成不同尺度和宽高比的初始框作为预测基准。特点速度达到了实时当时标准的5-7FPS且准确率极高。直到今天很多需要工业级精度的复杂任务如医疗影像病灶检测依然在用Faster R-CNN 作为基线。1.4 Mask R-CNN在Faster R-CNN的基础上增加了一个小巧的实例分割Instance Segmentation分支实现了从“画框目标检测”到“抠图实例分割”像素级的跨越。先来理解Mask R-CNN如何“借力打力”。Faster R-CNN的输出对于每个目标输出两个东西——类别标签class和边界框偏移量Bouding Box。Mask R-CNN的输出在以上两者的基础上并行增加了一个输出——物体的掩码Mask。(1) 整体流水线① Backbone利用 ResNet FPN特征金字塔网络提取多尺度的高级特征图。② RPN区域生成网络筛选出可能存在物体的的候选区域Rol。③ RolAlign层对这些候选区域进行特征对齐和固定的尺寸裁剪。④ 多任务分支a)分支1传统的分类与边界框回归。b)分支2Mask分支采用全卷积网络FCN对每个Rol预测一个像素级的二进制掩码。(2) 核心技术一Rol Align彻底解决像素级错位这是Mask R-CNN最具技术含量的创新。这之前的 RolPooling 在做目标检测画框时没问题但在做实例分割精准到像素的抠图时却是个灾难。为什么RolPooling不行?RolPooling包含两次量化取整操作候选框边界通常是浮点数RolPooling会直接四舍五入或向下取整。将候选框划分为的网格时如果无法整除会再次取整。两次取整会导致特征图与原始图像之间产生像素级的位置偏差通常会有几像素~十几像素的移动。这对于只需要画个大概框的检测任务影响不大但对于需要精细勾勒边缘的分割任务错位直接导致边缘模糊甚至崩塌。RolAlign如何解决RolAlign彻底取消了量化取整无论边界还是网格划分全程保留浮点数比如保留 $4.28$。在每个网格内部均匀采样 4 个坐标点。利用双线性插值Bilinear Interpolation算法通过周围的整数像素点计算出这 4 个采样点的精确特征值。最后对这 4 个点做 Max Pooling最大池化得到该网格的值。结果RoIAlign 实现了特征与原图的完全对齐直接让分割准确率AP获得了质的飞跃。(3) 核心技术二解耦分类与分割早期的分割尝试如 FCIS在预测掩码时会同时让掩码去预测类别比如这个像素是猫、那个像素是狗。这会导致不同类别之间产生竞争效果很差。Mask R-CNN 提出了一个非常聪明的解耦策略Mask 分支不对类别进行竞争。如果数据集中有个类别Mask 分支会对每个 RoI 独立输出个通道的单色掩码每个通道代表一类尺寸为。最终哪个通道的掩码起作用由分类分支Classification Head说了算。如果分类分支说这个框里是“猫”那我们就只取出第“猫”个通道的掩码其余通道丢弃。这种将空间解耦Mask 分支只管形状与类别解耦分类分支只管是谁的设计大大减轻了网络的学习负担。Mask R-CNN 的美感在于它的优雅和简洁。它没有发明什么奇奇怪怪的复杂结构而是把当时最好的目标检测Faster R-CNN、最好的语义分割FCN以及最精细的特征对齐RoIAlign完美地融为一体。1.5 Caascade R-CNN级联 R-CNN核心思想传统的检测器通常只用一个固定的 IoU 阈值比如 0.5来定义正负样本。IoU 低了模型噪声多高了模型容易过拟合。Cascade R-CNN 通过串联多个检测头阈值逐级提高如 0.5 - 0.6 - 0.7前一步的输出作为下一步的输入。特点大幅提升了定位精度是各类 CV 竞赛中刷新双阶段模型最高分数的常客。小结R-CNN是最早也是最有名的一类基于锚框的CNN的目标检测算法随后Fast/Faster R-CNN持续提升性能Faster R-CNN 和Mask R-CNN是在求高精度的场景下的常用算法。2 One-Stage 算法单阶段算法没有独立的候选区域生成步骤而是直接在输入图像的各个位置上进行密集的分类和边界框回归。2.1 YOLO系列YOLOYou Only Look Once是工业界应用最广、名气最大的算法系列。核心思想一次看完整张图片直接预测目标。(1) YOLOv1 - YOLOv3 (经典奠基)将图片划分为的网格每个网格直接负责预测边界框和类别概率。YOLOv3 引入了多尺度预测FPN 思想和 DarkNet-53 骨干网络成为了速度与精度的完美平衡点。YOLO v1 把图片划分网络例如7×7每个 grid 负责预测 bboxclass对于小目标比较困难因为当一格有多个目标时算法只能预测一个。YOLO v2改进Anchor Box提前设计好锚框细长框、正方形框、大框模型学习调整 anchor 以接近真实框。加入BatchNorm、更高分辨率以及Darknet-19YOLO v3经典引入多尺度检测——大尺度检测小目标、中尺度、小尺度检测大目标。(2)YOLOv4 - YOLOv5 (工程落地巅峰)引入了大量的数据增强Mixup, Mosaic、更强的特征融合网络PANet以及自适应锚框计算。YOLOv5 凭借极低的部署门槛、丰富的部署工具链成为了至今工业界最常用的版本之一。(3) YOLOv8 - YOLOv11 YOLO-World (现代演进)后续版本由 Ultralytics、美团等团队持续迭代转向了Anchor-Free无锚框设计直接预测物体的中心点和宽高更加轻量更快进一步精简了模型而 YOLO-World 等更是引入了开放词汇检测输入任意文本即可检测对应物体。- Anchor-free算法在目标检测领域Anchor-free的兴起是近年来最重要的一次技术范式变革。传统的检测器Faster R-CNNYOLO v3/v4SSD极度依赖Anchor-based基于锚框的设计存在诸多痛点。为什么要干掉Anchor(痛点)超参数极其敏感全凭人工经验需要手动设计Anchor的scale和aspect ratio。如果检测任务从“检测行人”变到“检测细长管道”这些超参数必须全部重新设计和调优。极端的正负样本不均衡为了保证覆盖率网络会在一张图上铺设成千上万个甚至几十万个候选框但其中真正包含物体的正样本屈指可数绝大多数都是背景负样本。这浪费了大量的计算资源和显存。NMS计算冗余由于Anchor铺的太密模型会输出海量重叠的预测框后续必须依赖复杂的NMS算法进行后处理滤除这成为了实时检测的算例瓶颈。Anchor-free的两大主流实现路径为了彻底Anchor科学家们探索出了两条截然不同的但同样高效的路线基于关键点Keypoint-based和基于中心点/像素Center-based。(1) keytpoint-based将目标检测任务转换为姿态估计或关键点任务估计。它不再寻找“框”而是寻找框的“角点”。CornerNet(2018)核心思想将物体边界框检测为一对关键点——左上角和右下角。工作原理网络输出左上角和右下角两张热力图并预测一个嵌入向量Embedding。若两个角点的嵌入向量距离很近说明它们属于同一个物体从而将它们配对成框。CenterNet(2019)核心思想既然找到两个角点还需要配对不如直接找物体的中心点。工作原理网络只预测一个点——物体的中心热力图。一旦确定了中心点网络再在每个中心点位置直接回归出物体的宽度和高度WH。(2) Center-based保留了类似语义分割的密集预测模式。它对特征图上的每一个像素点进行分类和回归。FCOS(Fully Convolutional One-Stage, 2019)核心思想彻底将目标检测与语义分割统一。工作原理对于落在物体边界框内部的每一个像素点网络直接预测该点到边界框四个边界的距离。Center-ness中心度由于靠近物体边缘的像素预测的框通常不够准FCOS引入了一个“中心度”分支它计算相似点离物体中心点的距离距离越近权重越高用来在后处理中抑制边缘像素产生的劣质框。为什么 YOLO 也全面倒向 Anchor-free① 标签分配策略的进化早期Anchor-free方法虽然简单但精度干不过精心调参的Anchor架构。后来发明的更高级的动态标签分配策略如SimOTA、Task-Aligned Assigner不再机械地通过IoU阈值来决定哪个像素负责哪个物体而是根据模型当前的预测表现动态地将物体分配给最合适的像素这让 Anchor-free的精度彻底超越了Anchor-based。② 回归损失函数的改良传统的距离回归易受尺度影响。现代检测器引入了GIoU/DIoU/CIoU损失以及DFLDistribution Focal Loss分布焦点损失。DFL不再让网络直接回归一个生硬的绝对数值而是预测边界位置的概率分布这让无锚框检测在面对模糊边界、遮挡物体时定位精度甚至远超传统锚框。2.2 SSDSingle Shot DetectorSSDSingle Shot MultiBox Detector是由 Wei Liu 等人在 2016 年提出的一种经典单阶段One-Stage目标检测算法。前言在它诞生之前目标检测领域面临着两难的选择要么选择以 Faster R-CNN 为代表的双阶段算法精度高但速度慢无法做到实时要么选择 YOLOv1 这样的单阶段算法速度极快但精度低尤其是对小物体几乎测不准。核心思想结合了YOLO的速度和Faster R-CNN 的Anchor机制。它最大的特点是多尺度特征检测——在网络的不同深度的特征图上分别进行检测。浅层大分辨率检测小目标深层小分辨率检测大目标。特点对小物体的检测效果明显好于早期的 YOLOv1/v2但在今天已被现代 YOLO 系列全面超越。核心网络架构SSD的创新在于其多尺度检测机制。整个网络结构主要由3部分组成① Backbone(主干特征提取网络)SSD默认使用VGG-16作为基础分类网络在后来的改进版或轻量化版本中也常替换为Mobile或RseNet作者去掉了VGG-16的全连接层F6、F7将其改写为卷积层Conv6、Conv7从而使网络能够接受任意分辨率的输入。② Extra Features(级联的附加卷积层)在 VGG-16 之后SSD 额外接了数个逐渐缩小的卷积层如 Conv8、Conv9、Conv10、Conv11目的是为了提取不同分辨率的特征图。③ 多尺度预测网络在向下传播的过程中会挑选出6 个不同尺度的特征图例如在输入下特征图大小分别为,,,,,并行进行预测小结SSD通过单神经网络来检测模型以每个像素为中心产生多个锚框在多个段的输出上进行多尺度的检测。2.3 RetinaNet解决单阶段痛点核心创新Focal Loss焦点损失函数。单阶段算法之前准确率不如双阶段核心原因在于“正负样本极度不均衡”背景区域远多于有物体的区域。原理Focal Loss 通过数学公式降低了大量易分类负样本普通背景的损失权重让模型把注意力集中在那些高难度的、真正包含物体的区域。3 TransformerDETR系列2020 年以后Transformer 席卷计算机视觉。目标检测也迎来了革命性的改变。3.1 DETRDEtection TRansformer核心思想由 Facebook 提出的端到端End-to-End目标检测器。它彻底干掉了传统检测算法中极其恶心的两个部分Anchor锚框和NMS非极大值抑制后处理。工作原理将图像特征展开成序列送入 Transformer En-Decoder使用一组固定数量的“物体查询Object Queries”去图像里探查物体最后通过二分图匹配Bipartite Matching直接输出最终的边界框。缺点收敛极慢往往需要训练几百个 Epoch。3.2 DINO-DETR 与 RT-DETRDINO-DETR通过引入对比学习、改进查询初始化等手段解决了 DETR 家族收敛慢、小物体检测差的死穴在 COCO 数据集上疯狂霸榜。RT-DETR (Real-Time DETR)由百度提出。通过优化跨尺度特征交互首次将 Transformer 检测器的速度提升到了实时级别在保持高精度的同时推理速度直接硬刚 YOLOv8。总结目标检测技术历经传统方法和深度学习两个阶段目前主流算法分为三类双阶段、单阶段和Transformer系列。算法家族代表作优缺点适用场景双阶段(Two-Stage)Faster R-CNN, Cascade R-CNN优定位精度极高小物体好。缺速度慢难以部署在嵌入式端。医疗影像、遥感图像、对速度要求低的精密工业质检。单阶段(One-Stage)YOLOv5/v8/v10, SSD, RetinaNet优速度极快端侧部署生态完美如 TensorRT, NCNN。缺极端密集场景易漏检。自动驾驶、安防监控、手机端实时App、工业流水线快速检测。TransformerDETR, RT-DETR优无需调参 Anchor天生具备全局视野上限极高。缺训练吃显存传统硬件部署需适配。前沿学术研究、算力充沛且追求极致泛化性能的场景。(1) 双阶段算法以R-CNN家族为代表通过区域生成和分类精修实现高精度检测如Faster R-CNN和Mask R-CNN加入RoIAlign和实例分割。(2) 单阶段算法如YOLO系列和SSD采用端到端方式实现实时检测YOLO最新版本转向Anchor-Free设计提升性能。(3) Transformer系列如DETR通过自注意力机制实现全局建模RT-DETR进一步优化了实时性。三类算法各具特点双阶段精度高但速度慢单阶段适合实时场景Transformer在算力充沛时表现优异。技术演进呈现从手工特征到自动学习、从局部检测到全局建模的趋势。