Fast R-CNN中的边框回归
前面对R-CNN系的目标检测方法进行了个总结,其中对目标的定位使用了边框回归,当时对这部分内容不是很理解,这里单独学习下。
R-CNN中最后的边框回归层,以候选区域(Region proposal)为输入,来对Region proposal中包含的目标进行准将的定位。但是,这个输入的候选区域通常不会正确的包含目标区域,如下图:
绿色边框是飞机的Ground Truth边框,绿色的是Region proposal边框,虽然Region proposal中包含了目标飞机,但是其定位却不是很准确,这就需要对候选区域的边框进行修正,调整其位置和大小,以使其能够更为接近绿色的Ground Truth边框。
边框回归的方法
无论是Ground Truth边框还是Region proposal边框,可以使用一个四元组来表示。其中,表示边框的中心位置,表示边框的宽和高。
在边框回归时,实际就是找到一种变换,使修正的后的Region proposal边框位置和Ground Truth边框尽可能的接近,公式表示如下:
其中,输入的候选区域的边框,是Ground Truth边框。
那么这种变换怎么进行呢?
观察边框的四元组表示表示中心位置,对于位置的修正通常使用平移;表示边框的宽和高,则可以使用缩放进行修正。也就是对边框的回归修正,
-
对边框的中心位置进行平移
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \Delta x &= P_…
则修正的中心位置就是
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \hat{G_x} &= … -
对边框的宽和高进行缩放,
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ S_w &= exp(d_w…
修正后的边框的宽和高为
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \hat{G_w} &= …
修正后的边框要近似等于Ground Truth的边框。
通过上述公式可以知道,边框回归实际上就是学习这4个变换。在边框回归的全连接层,输入的是候选区域的特征信息以及其边框信息,要学习的是全连接层的权值矩阵,也就说回归的全连接层就实现了上述变换,输出的是,经过上述公式的可以得到平移和缩放。 对候选区域的边框进行该平移和缩放得到的边框尽可能的和Ground Truth相近。
学习得到的通过数码的公式可以很容易得到,也可以说学习得到的是。 这两者没有区别,不用做区分。 但是在计算预测边框位置的时候,需要注意。
损失函数
R-CNN使用一个全连接网络实现边框的回归,
- 其输入的是候选区域的特征及其边框
- 输出的该候选框要进行的平移和缩放。
- 要学习的是权值矩阵,以使候选框进行变换后,尽可能和Ground Truth接近。
有了以上认识,来看下损失函数的设计
其中,是分类的损失函数,是class u的真实分类的概率。这里,约定表示背景,不参与边框回归的损失计算。上面是Fast R-CNN将分类的损失和边框回归的损失放到了一起,这里这关注边框回归的损失
KaTeX parse error: No such environment: align* at position 8:
\begin{̲a̲l̲i̲g̲n̲*̲}̲
L_{Ioc}(t^u,v)…
其中,表示类别,表示预测边框的偏移量(也就是预测边框进行偏移后,能够和真实边框最接近),表示预测边框和实际边框之间真正的偏移量。
也就是为学习得到的偏移量,而则是输入的候选区域的边框和Ground Truth的真正偏移。
训练样本偏移的构造
我们使用下面的公式描述了边框修正的过程
KaTeX parse error: No such environment: align* at position 8:
\begin{̲a̲l̲i̲g̲n̲*̲}̲
\hat{G_x} &= …
为输入的边框,为修正后的边框,修正使用的平移和缩放为。通过上述的公司,就可以得到训练样本相对于Ground Truth边框的真实偏移量
KaTeX parse error: No such environment: align* at position 8:
\begin{̲a̲l̲i̲g̲n̲*̲}̲
v_x &= (G_x - …
偏移量的构造
边框回归的偏移量使如下公式表示
KaTeX parse error: No such environment: align* at position 8:
\begin{̲a̲l̲i̲g̲n̲*̲}̲
\Delta x &= P_…
从上面公式可知,从边框回归的学习得到的并没有直接用于平移和缩放,而是加了一步处理:对于平移,添加了比例宽高比例因子;宽和高的缩放,使用其比例的形式。
对于中心点平移,学习到的值需要添加宽和高的因子。这是由于,CNN具有尺度不变性,对于不同尺度的同一个目标,在最后的特征输出层学习到的特征是相同。如下图
两个不同尺度的人,CNN提取的特征分别为,这两个特征应该是相同的。 假如边框回归学习到的映射为,且学习到的量。 以为例,分别为两个人的Ground Truth,为两个候选区域的坐标。假如,直接表示平移的差值,则有。而,这两个特征是相同的,则有。故有。从,上图看,这两个不同尺度的人的平移量,显然是不相同的。 所以,将学习到的量作为坐标偏移显然是不可行的,R-CNN中给其添加了个尺度因子,也就是目标的宽和高。 如下:
尺度(宽和高)的缩放,取其形式。
需要学习得到宽和高的缩放因子,就需要将学习到的值限制为大于0,这里就取其,来保证缩放因子都大于0.
总结
边框回归输入的是CNN学习到的候选区域的特征,以及候选区域的边框信息。通过学习得到映射。添加尺度因子后,作为坐标的平移;取作为宽和高的缩放。