1、目标检测的基本范式
目标检测:框出图片中的感兴趣的物体,识别出框的物品是什么类别;
目前研究方向,不仅识别训练中的目标分类,也可以识别出训练集中没有的分类;
1.1 滑窗
框:矩形框
交并比(IOU):
检测问题的难点:
需要解决是什么 在哪里,图中物体数量,位置,尺度变化多样;
滑窗的效率问题:
改进思路:用卷积一次性计算所有特征,再取出对应位置的特征完成分类;
感受野:神经网络中,一个神经元能“看到”的原图的区域;
感受野的中心
- 对于尺寸3x3、pad=1的卷积 (或池化)堆叠起来的模型,感受野中心=神经元再特征图上的坐标X感受野步长
感受野的步长(=降采样率=特称图尺寸的缩减倍数)。
- 神经网络某一层上,相邻两个神经元的感受野的距离
- 步长=这一层之前所有stride的乘积
边界框回归:
非极大值抑制Non-Maximum Suppression
置信度Confidence Score
置信度(Confidence Score):模型认可自身预测结果的程度,通常需要为每个框预测一个置信度我们倾向认可置信度高的预测结果,例如有两个重复的预测结果,丢弃置信度低的;
- 部分算法直接取模型预测物体属于特定类别的概率
- 部分算法让模型单独预测一个置信度(训练时有GT,可以得相关信息作为监督)
使用密集预测模型进行推理
基本流程
- 用模型做密集预测,得到预测图,每个位置包含类别概率、边界框回归的预测结果
- 保留预测类别不是背景的“框
- 基于“框“中心,和边界框回归结果,进行边界框解码
- 后处理:非极大值抑制(Non-Maximum Suppression)
密集预测模型的训练
匹配的基本思路
- 对于每个标注框,在特征图上找到与其最接近的位置(可以不止一个),该位置的分类真值设置为对应的物体
- 位置的接近程度,通常基于中心位置或者与基准框的loU 判断
- 其余位置真值为无物体
- 采样:选取一部分正、负样本计算 Los (例如可以不计算真值框边界位置的loss)
1.2 使用卷积时间密集预测
1.3 锚框
1.4 多尺度检测与FPN
特征金字塔Feature Pyramid Network(2016)
2、单阶段&无锚框检测器选讲
单阶段算法直接通过密集预测产生检测框,相比于两阶段算法,模型结构简单、速度快,易于在设备上部署
早期由于主干网络、多尺度技术等相关技术不成熟,单阶段算法在性能上不如两阶段算法,但因为速度和简洁的优势仍受到工业界青睐随着单阶段算法性能逐渐提升,成为目标检测的主流方法;
2.1 RPN (Region Proposal Network 2015)
2.2 YOLO、SSD
最早的单阶段检测器之一,激发了单阶段算法的研究潮流
- 主干网络: 自行设计的 DarkNet 结构,产生 7x7x1024 维的特征图
- 检测头: 2 层全连接层产生 7x7 组预测结果,对应图中7x7 个空间位置上物体的类别和边界的位置
YOLO的匹配与框编码
- 将原图切分成SxS大小的格子,对应预测图上SxS个位置
- 如果原图上某个物体的中心位于某个格子内,则对应位置的预测值应给出物体类别和B组边界框位置
- 其余位置应预测为背景类别,不关心边界框预测结果
SSD Single shot MultiBox Detector(2016)
- 主干网络: 使用 VGG + 额外卷积层,产生 11 级特征图
- 检测头:在6级特征图上进行密集预测,产生所有位置、不同尺度的预测结果
2.3 Focal Loss 与 RetinaNet
RetinaNet(2017)
- 特征生成:ResNet 主干网络 + FPN 产生 P~P共5级特征图,对应降采样率8~128倍
- 多尺度锚框:每级特征图上设置3种尺寸x3种长宽比的,覆盖 32~813 像素尺寸
- 密集预测头:两分支、5 层卷积构成的检测头,针对每个锚框产生 个二类预测以及4个边界框偏移量
- 损失函数: Focal Loss
Focal Loss : 解决正负样本不均衡问题
通过分析:使用交叉熵损失CE,简单负样本数量远大于困难负样本数量,
focal Loss 改进,去掉简单负样本;
2.4 FCOS
不同特征层预测不同尺度的目标值;
Center-ness
FCOS将所有框内的位置归类为正样本:
- 相比Anchor-Based 有更多正样本用于训练
- 但也会让分类器更容易在物体周围产生低质量预测框
CenterNet(2019)
针对 2D 检测的算法,将传统检测算法中的“以框表示物体”变成“以中心点表示物体”,将 2D 检测建模为关键点检测和额外的回归任务,一个框架可以同时覆盖 2D 检测、3D 检测、姿态估计等一系列任务
2.5 YOLO系列选讲
总结
单阶段算法和无锚框算法的总结: