type
status
date
slug
summary
tags
category
icon
password
comment_flag
SLUGS
这篇文章和上篇读的NIPS20的GFL工作有点类似,都在bbox regress上着手,搞了个分布离散化建模,但也有一些差异。对了,以后还是提一下论文相关的科研机构吧,这篇是成电的工作,读完后感觉挺不错的。
Motivation
现有Object Detection工作生成目标候选框后,预测与gt框的偏移量,通常采用Smooth L1或L2损失来进行回归,而作者认为这两者要么容易产生梯度爆炸,要么就是对产生误差大小不一样的样本却一视同仁了:
- Fast R-CNN研究发现L2损失容易产生梯度爆炸,这是因为有的框能产生巨大的偏移误差,经过平方后很大。所以其采用Smooth L1损失来减小这种爆炸的风险。
- Smooth L1损失对于误差大的样本惩罚力度不够,作者认为这是网络sub-optimal的原因,预测的框很难紧紧包围目标。
为了使网络能更精确地预测偏移量,作者将连续值的回归问题转为离散值的分类问题,然后用交叉熵损失来代替L1、L2损失,这样做的好处是:
- 交叉熵对造成不同大小损失的样本都适应性地进行了惩罚。
- 交叉熵损失不会导致梯度爆炸问题。
在预测处每个离散偏移值的(分类)概率后,积分得处期望的偏移量。
Core Method
bbox如何回归
这里是回顾anchor-based Object Detection工作通常的bbox回归方法。大部分的方法都采用R-CNN类似的bbox回归方法,学习候选框变换到gt框的偏移量,如下:
其中分别是预测值、gt值、候选框值(anchor或proposal box),同理;是预测值,是目标值。回归损失表达为:
通常是:
其梯度:
通常。可见,当时,梯度为,对不同的损失一视同仁。
这里需要说明下,为啥引入anchor而不直接计算预测值与gt值的差距。知乎-chengstar的回答认为不使用anchor的话,直接计算损失可以得到单个比较精准的目标bbox,但Object Detection需要检测出图片中的所有目标。anchor的作用就是检测出所有不同位置,不同大小,不同长宽比的目标提供参照依据。再看知乎另一个回答,总结了引入anchor的作用:1)分配监督RPN的类标签(正样本类还是负样本类);2)解决多尺度和长宽比。
另外在R-CNN原文中,R-CNN作者认为直接将所有预测的bboxes和gt bboxes计算损失,如果预测的和gt差距很大,很难学且啥也学不到。因此R-CNN作者只选取一个与gt bboxes中IoU最大的proposal box来计算,其他预测的bboxes被忽略。
如何离散化偏移量
首先将偏移量范围均分为个不重复的bins(简单理解为块,块上对应的离散值为0或1)。然后和也被定义为两个bins。因此偏移量范围被这样离散为个bins。那么如果网络将偏移量分类到第类,其对应的偏移量数值为:
其中(如无特殊说明,下同)。
当候选框送入BoxHead中后会预测的分数,计算离散类别的概率:
并计算交叉熵损失:
作者说是gt label,至于怎么标的,似乎并未解释。
求其梯度得:
可见,梯度被限制到区间内,比L2损失稳定,且不同样本由于导致损失不一样,也从而梯度不一样,解决了smooth L1损失“一视同仁”问题。最终损失:
其中,作者将设为1。那么最后真实的偏移量可表示为:
其中。
题外话:读到这里,我之前以为这篇论文是一篇anchor-free的工作(主要是作者前面没强调,还开门见山地介绍了R-CNN中回归过程) 🤔,作者也没有提的计算,但如果不是anchor-free的话,必然会有连续值回归啊,难道是用给打的标签?由于作者没有说明,也没公布代码,就不得而知了。
层次偏移预测
其实读前面一部分方法时我也畅想到多阶段预测,不过我想的是串联相乘(脑袋有点傻)。作者搞了个层次预测:以前一阶段一个bin的宽度作为后一阶段偏移量的范围,以前一阶段的预测框作为下一阶段候选框重新进行RoI Align。各个阶段分别进行预测求期望,再把每个阶段预测的偏移量加起来。这样做的目的是更精准,不具体解释了。
作者论文实验部分指出。实验部分我就直接跳过了。
Personal Reflection
- 这应该是一篇anchor-free的工作,和前一篇NIPS20论文的方法有相似之处,但动机却截然不同。前者是针对smooth L1损失的一视同仁出发,后者是从模糊性出发。
- 另外这篇工作将连续值回归问题转为离散值分类问题,并且以层级多阶段细化,思路很有新意。
- 值得注意的是,这篇对偏移量的离散分布建模。(1)没有像NIPS20的GFL工作那样,先验认为离散分布应该紧凑,这种先验感觉是合理的。我不确定本文最后训练好的模型预测出来的离散分布是不是也呈这样的形态。(2)其实这取决于标签,如果是一个one-hot的话,也算是再促使分布更紧凑了。
- 读这篇文章,让我重新浅浅地了解了下bbox的回归流程(主要是我不做这个方向,我没打算深究)。又重新回顾了ROI align和smooth L1。另外才发现,交叉熵损失梯度范围如此小,能更稳定。