目标检测的基本范式
单阶段&无锚框检测器选讲
1、什么是目标检测
给定一张图片 ——》用矩形框框出所感兴趣的物体同时预测物体类别。
在智慧城市中的应用
目标检测技术的演进
边界框(Bounding Box)
框泛指图像上的矩形框,边界横平竖直
描述一个框需要 4 个像素值:
边界框通常指紧密包围感兴趣物体的框检测任务要求为图中出现的每个物体预测一个边界框。
交并比 Intersection Over Union
交并比(IoU)定义为两矩形框交集面积与并集面积之比,是矩形框重合程度的衡量指标
2、滑窗 Sliding Window
1)设定一个固定大小的窗口
2)遍历图像所有位置,所到之处用分类模型(假设已经训练好) 识别窗口中的内容
3)为了检测不同大小、不同形状的物体,可以使用不同大小、长宽比的窗口扫描图片
改进思路 1:使用启发式算法替换暴力遍历用相对低计算量的方式粗筛出可能包含物体的位置,再使用卷积网络预测早期二阶段方法使用,依赖外部算法,系统实现复杂
改进思路 2: 减少冗余计算,使用卷积网络实现密集预测目前普遍采用的方式,用卷积一次性计算所有特征,再取出对应位置的特征完成分类。
3、感受野(Receptive Field)
感受野:神经网络中,一个神经元能“看到”的原图的区域
换句话说:
再换句话说:
4、边界框回归 (Bounding Box Regression)
问题
滑窗 (或其他方式产生的基准框)与物体精准边界通常有偏差
处理方法
让模型在预测物体类别同时预测边界框相对于滑窗的偏移量
多任务学习
5、基于锚框vs无锚框
6、非极大值抑制 NMS
滑窗类算法通常会在物体周围给出多个相近的检测框这些框实际指向同一物体,只需要保留其中置信度最高的
算法实现:
7、密集预测模型的训练
匹配的基本思路
8、密集预测的基本范式
9、如何处理尺度问题
图像中物体大小可能有很大差异(10 px ~ 500 px)
朴素的密集范式中,如果让模型基于主干网络最后一层或倒数第二层特征图进行预测:
解决:
单阶段算法直接通过密集预测产生检测框,相比于两阶段算法,模型结构简单、速度快,易于在设备上部署。
早期由于主干网络、多尺度技术等相关技术不成熟,单阶段算法在性能上不如两阶段算法,但因为速度和简洁的优势仍受到工业界青睐随着单阶段算法性能逐渐提升,成为目标检测的主流方法
1、YOLO:You Only Look Once(2015)
最早的单阶段检测器之一,激发了单阶段算法的研究潮流
主干网络: 自行设计的 DarkNet 结构,产生 7x7x1024 维的特征图
检测头: 2 层全连接层产生 7x7 组预测结果,对应图中 7x7 个空间位置上物体的类别和边界框的位置
2、SSD Single Shot MultiBox Detector(2016)
3、RetinaNet(2017)
单阶段算法面临的正负样本不均衡问题
4、YOLOv3(2018)
5、YOLOv5(2020)
基于锚框(Anchor-based)
无锚框(Anchor-free)
1、FCOS,Fully Convolutional One-Stage(2019)
FCOS的多尺度匹配
Anchor-based 算法根据锚框和真值框的 loU 为锚框匹配真值框通常,锚框会匹配到同尺度的真值框,小物体由低层特征预测,大物体由高层特征图预测
由于重叠的物体尺度通常不同,同一位置重叠的真值框会被分配到不后的特征层,从而避免同一个位置需要预测两个物体的情形
2、CenterNet(2019)
针对 2D 检测的算法,将传统检测算法中的“以框表示物体”变成“以中心点表示物体”,将 2D 检测建模为关键点检测和额外的回归任务,一个框架可以同时覆盖 2D 检测、3D 检测 、姿态估计等一系列任务。
3、YOLOX(2021)
以 YOLO v3 为基准模型改进的无锚框检测器
4、YOLOv8(2022)
单阶段与无锚框算法的总结