本文对一些常见的目标检测框获取和处理方法进行总结
Anchor-base方法
Anchor方法是较早被采用的,如Fast RCNN网络就采取的该方法用于预测目标框。在其他的一些文章中,也被称为default box或者prior box,其实都是Anchor方法。
Anchor方法简单粗暴,首先由人为设置一些框的大小和形状,在经过神经网络处理的特征图的每个像素上采用这些框(也就是将Anchor在特征图上进行窗口滑动)。每个 Anchor 都被视为一个可能的候选区域,算法会计算每个 Anchor 与真实目标框(GT)的交并比(IOU),并根据 IOU 值来确定 Anchor 是否为正样本或负样本。
每个框会预测框内物体类别、与真实框的偏移量。
为什么是偏移量,因为卷积网络的平移不变性,相比绝对坐标来说相对坐标更加合理
所以对于Anchor来说,超参数(预设框的形状大小)影响很大,不合理的设置会导致模型效果很差。同时由于Anchor的每次预测都生成大量的框,导致推理速度很慢。
具体可以参看
https://blog.csdn.net/qq_35054151/article/details/113011194
Anchor-free方法
Anchor-base方法存在如下缺点:
- 过多的负样本
- 过于依赖超参数设置
- 计算量很大
相比于Anchor-base预设了锚框的形状和大小,Anchor-free方法则舍弃了这一点。直接去预测框相关信息,不同的网络采取了不同的预测策略,比如有的网络预测对角点,有的预测中心点等。并且出现了各种候选框选取的方法,但是始终都是围绕着IOU在进行。
这时的损失函数也要和模型预测的目标相匹配,不过大多都是计算最终候选框和GT框的差异。
Anchor-free的发展具体可以参看
https://blog.csdn.net/SMF0504/article/details/109214527
yolov8的anchor策略详解可以参看
https://www.vectorexplore.com/tech/computer-vision/yolov8/anchor-free.html#anchor-based-%E5%92%8C-anchor-free
Quare方法
Quare方法来自于基于Transformer的目标检测框架,即DETR(DEtection TRansformer),因为Transformer与CNN网络的不同特性,端到端方法的特征,催生出了新的目标框查询Quare。
DETR模型会处理特征图并且生成一系列的预测(N个),一般来说这个N会远大于图像中的目标数,然后利用匈牙利算法匹配最为合适的预测与真实值。这里的匈牙利算法可以理解为DETR里的NMS。
与之相匹配的,就是以匈牙利算法思想得到的bipartite matching loss,具体可以参看
https://blog.csdn.net/zjuPeco/article/details/107209584