Acquistion of localization confidence for accurate object detection
NMS组件
IoU(intersection-over-union),表示交并比。
非极大值抑制:剔除同一个目标上的重叠建议框,最终一个目标保留一个得分最高的建议框。
步骤如下:
假设进行非极大值抑制的输入为2000x20的矩阵,2000表示该图像上框的个数,20表示类别数
1.对2000*20维矩阵中每列按从大到小进行排序(每列表示一类,共20类,同一类可能有多个目标)
2.从每列最大的得分建议框开始,分别与该列后面的得分建议框进行Iou计算,若Iou>阈值,则剔除得分较小的建议框,否则认为图像中同一类别有多个目标
3.从每列次大的得分建议框开始,重复2
4.重复3直至遍历完所有的建议框
在目标检测算法的最后都会通过NMS算法来移除重复预测框,移除的依据是预测框的分类得分(softmax层的概率输出),但是这种依据并不能很好的表征预测框的准确性,换句话说,对于同一个ground truth而言,分类得分高的预测框并不定比分类得分低的预测框好,有些和ground truth坐标更接近的框在nms阶段被过滤掉了。(nms以分类得分为导向确实不是一个非常好的指标)
IOU-Net: 预测检测框和ground truth的IOU
- 提出IOU-guided NMS,在NMS阶段引入回归得分(Localization confidence)作为排序指标而不是采用传统的分类得分
- 提出optimization-based bbox refinement 替换传统的regression-based方法
- Precise ROI Pooling
a. 说明了用预测框的分类得分作为NMS的依据的缺点
红色框和绿色框都是对同一个ground truth的预测,红色框的分类得分高于绿色框,只要两框得问IoU高于NMS设定的阈值,那么绿色框就会被过滤掉,但是每一个object中绿色框的classification score都是要高于分类得分(这个回归得分是作者自己定义的)。
b. 说明了传统的基于回归目标的框位置迭代回归存在的缺点
实验证明:
在NMS阶段引入localization confoidence作为排序指标而不是采用传统的分类得分指标
从a中可以看出IOU值和分类得分之间没有明显的正相关,但是从b中可以看出IOU值和回归得分之间有明显的正相关。皮尔逊相关系数,0.217,0.617.
这说明用分类得到作为依据判断一个预测框是否准确预测对ground truth是不合理的。
因此作为提出了IoU-guided NMS,也就是NMS操作以预测的IOU为依据而不是传统的以预测框的分裂得分为依据来解决这个问题。
Parameter-NMS and Soft-NMS
当IOU为0.9时,no-nms的框是很多的,有nms的框少了一半,说明nms容易误将部分高质量的预测框过滤掉,不过去掉的打不跟框也是冗余的框,所以并不好界定去掉的这一半框都是应该保留的,采用IoU-Guided nms对应的黄色比蓝色还是要多一点
Optimization-based refine 预测框
多级联几个回归之路不断refine预测框从而达到更加准确的预测结果?
Cascade RCNN中直接采用模型级联方式进行预测框的refine,模型的数量也不要超过2个
在FPN中嵌入了IOU预测支路,IOU预测支路的监督信息就是ground truth和预测框的IOU值,该支路在结构设计上和FPN网络原来的回归和分类支路类似,另外将ROI pooling替换成PrRoi pooling.
把分类得分换成预测iou
当剔除一个预测框时,会计算被剔除框的分类得分和之前计算的最高分类得分的最高值,保留最高的分类得分,返回的是IOU最大的预测框对应下的最大的分类得分。
ROI pooling:预测得到的ROI先除以stride先量化取整得到坐标值为整数值的ROI,然后将ROI划分为k*k个bin,每个bin取均值
ROI align:红色点是周围绿色点线性插值得到,包括了绿色点的加权信息,再对四个红色点取均值
PrRoi pooling:认为所有绿色点都是插值得到,积分除以bin的面积
two-stage中并行的输出两个任务:cls score + bbox offset,调整好bbox位置后,再做NMS剔除冗余bbox
经典的NMS做法是:将所有输出的output_bbox按cls score划分(如pascal voc分20个类,也即将output_bbox按照其对应的cls score划分为21个集合,1个bg类),再在每个集合内根据各个bbox的cls score做降序排列,在逐步根据cls score和iou情况,剔除冗余bbox。
(比如iou阈值0.5,那么0.5以上的所有值全部保留下来,内部进行一个iou计算,保留下面之后按照score顺序给拍了个排)
但是使用cls score衡量bbox质量并进一步来剔除冗余bbox就不太合适了,bbox的定位质量本身和Iou关联更高的
Bbox reg: 对每个bbox输出偏移向量,通过对该偏移向量来调整bbox的位置
Abstract:bbox reg + NMS来确定定位目标,使用cls score作为定位准确度的衡量指标,没有一个score专业用于表示bbox定位准确与否的依据,这就导致了迭代若干轮bbox reg和nms,bbox定位不准确。
通过Iou bbox和gt bbox的定位精确度得分,并将之作为nms中提出冗余bbox的依据
将Iou score作为优化目标,多次迭代不影响bbox refine的精度
IOUNet高性能组件
1.将前景目标从背景中揪出来,并为这些proposals指定正确的类别标签
2.通过最大化pred bbox与gt bbox的Iou,求得pred bbox和gt bbox的偏移向量,在基于该偏移向量refine bbox
以上两步操作得到的bbox存在大量冗余,一般使用nms后处理操作筛选
PrROI pooling使得可以通过梯度下降的方式解决Iou score的优化问题
ResNet-50 + FPN
Delving into object localization
2.1 Misaligned classification and localization accuracy
NMS用于剔除图像中的冗余bbox,标准NMS的具体做法为:(和代码的思路一模一样)
1 将所有输出的output_bbox按cls score划分(如pascal voc分20个类,也即将output_bbox按照其对应的cls score划分为21个集合,1个bg类);
2 在每个集合内根据各个bbox的cls score做降序排列,得到一个降序的list_k;
3 从list_k中top1 cls score开始,计算该bbox_x与list中其他bbox_y的IoU,若IoU大于阈值T,则剔除该bbox_y,最终保留bbox_x,从list_k中取出;
4 选择list_k中top2 cls score(步骤3取出top 1 bbox_x后,原list_k中的top 2就相当于现list_k中的top 1了,理解这么个意思就行),重复3中的迭代操作,直至list_k中所有bbox都完成筛选;
5 对每个list_k,重复3、4中的迭代操作,直至所有list_k都完成筛选;
Bbox定位精度与cls Score不正相关的原因如下:
在目标检测中我们通过bbox与gt的Iou来区分正负样本,在训练阶段,当一个pred box与任意一个gt box的Iou大于阈值时,该pred bbox可以认为是正样本,但这种操作并不会带来pred bbox的高精度,比如bbox的cls score高了,但是其定位精度并不一定高
2.2 Non-monotonic bounding box regression
Bbox-based方法将目标定位表示bbox reg任务,本质上就是学习一个转换函数,使得pred bbox尽量接近gt bbox,bbox reg已经成为目标检测的标配
RCNN,Fast RCNN:使用线性回归/全连接将selective search,edgeboxes得到的proposals做refine,使之更接近gt bbox.
Faster RCNN:基于RPN生成anchor,bbox回归器的参数可以做到end2end训练
DenseBoxes,unitBox:anchor-free,使用FCN处理目标大大尺度变化
Multi Region CNN,AttractioNet,Refinenet,craft:迭代的使用多次bbox reg来refinebbox,也成为iterative bbox reg
Faster RCNN:将bbox操作了两次,一次在RPN中,另一次在2nd-stage的Fast RCNN中
Group Recursive Learning: 提出group递归学习方法来迭代的refine bbox,通过考虑多个proposals间的全局依赖关系,来最小化pred bbox与gt bbox间的偏移量
G-CNN:在图像中生成多尺度的规则化网络,迭代的将网络中pred bbox逼近gt bbox
3.IoU-net
3.1 Learning to predict IoU
Iou predictor使用FPN网络中所提取的特征,为每个bbox进行IOU精准度预测,通过对图像中gt bbox做数据增强操作来生成bbox和gt labels,用于训练IoUNet,而非使用RPN中生成的proposals;
具体地,对训练集图像中的所有gt bbox,通过随机参数手动地调整这些gt bbox(manually transform them with a set of randomized parameters),生成candidate bbox集合,再从candidate bbox集合中剔除与gt bbox的IoU小于Ω_train = 0.5的低质量bbox,最后从剩余的candidate bbox集合中随机采样以生成训练集数据(如fig 5中Jittered RoIs);作者发现此套训练数据生成策略可以得到更好的训练结果,并使得IoUNet更加鲁棒;
对于RPN中生成的proposals,通过prRoI Pooling在RPN主干网的feature map上提取7 x 7 x 256维特征,再输入IoU predictor用于IoU score的预测;为了得到更好的性能,文中使用到了class-aware IoU predictors;---- 对类别敏感的IoU score预测,什么意思?意味着IoU predictor要输出21维的特征,每个维度分别表示一类预测结果;
IoU predictor与大部分RoI-based检测算法都是兼容的。因为IoU predictor的训练过程独立于具体的检测算法,因此即使改变输入数据的分布,也不会对IoU predictor的性能产生大的影响;3.4小节将具体介绍如何将IoU predictor集成至已有的目标检测算法(如RPN、FPN)中做到end2end的联合优化
3.2 IoU-guided NMS
在NMS的pred bbox降序排序中,使用IOU score,而非cls score作为bbox的ranking ketword
之前选择cls score最高的后面所有的框做IOU,达到预测的就保留下来。
与gt bbox最高的IOU score的pred bbox保留,当pred bbox iou大于阈值的pred bbox时要更新bbox的cls score,当bbox_i剔除bbox_j,bbox_i的cls score si更新为si = max(si,sj),可以解释为cls score的聚类操作,对于匹配同一个gt bbox的多个pred bboxes集合,iounet选择得分最高的cls score作为最终的pred bbox的分类得分。
3.3 Bounding box refinement as am optimization procecdure
Bbox refine过程如下,找到最优的c*
Box_det: pred bbox
Box_gt: 对应的 gt bbox
Transform: 转换函数,参数为c,将box_det转化为尽量靠近box_gt
Crit:转换的评估标准,衡量box_det与box_gt间的距离,如Fast RCNN中,使用bbox坐标log-scale的smooth-L1距离,UnitBox使用-IN(Iou)衡量两个bbox间的距离
将IoU score作为最终的优化目标,基于IoU score计算的梯度来迭代优化bbox坐标,使得pred box与gt bbox之间的IoU最大化,此外,预测得到的IoU score可以更客观的表示pred bbox的定位精准度。