AdaScale: Towards Real-time Video Object Detection Using Adaptive Scaling
论文链接:https://arxiv.org/abs/1902.02910?context=cs.LG
motivation
输入图像的大小对检测的速度和质量有很大的影响,目标很大,图像也很大时会让网络过分的关注细节,如下图。
而如果目标很小图片很大的话,会很容易漏失目标,如下图。
假装这里有图.jpg
而在对视频进行目标检测时,有一个很关键的性质就是时空一致性,具体来说就是相邻帧之间包含的信息在一定时间内是一致的。作者提出了可以利用当前帧预测下一帧的输入大小,确保每一帧的识别都是最佳的输入大小,具体而言(说人话),就是当前帧检测有小目标那么下一帧应该也有小目标,那就让下一帧的输入图像大点。
方法
作者的思路也很简单,让网络在检测的同时,再添加一个分支去回归图像的最佳尺寸。
评价函数
-
作者首先定义了一个尺寸范围 S S S,例如, S = { 600 , 480 , 360 , 240 } S=\{600,480,360,240\} S={600,480,360,240},训练时将这几个值作为输入分别训练网络,测试时将结果映射到这一区间内。
-
其次需要给图像的尺寸找一个合适评价函数,作者选用了单张图片的检测损失值作为评价函数。
L ( p , u , t , t ^ ) = L c l s ( p , u ) + λ [ u ≥ 1 ] L r e g ( t , t ^ ) L(\mathbf{p}, u, \mathbf{t}, \hat{\mathbf{t}})=L_{c l s}(\mathbf{p}, u)+\lambda[u \geq 1] L_{r e g}(\mathbf{t}, \hat{\mathbf{t}}) L(p,u,t,t^)=Lcls(p,u)+λ[u≥1]Lreg(t,t^)
但是只有前景框才有边界框回归损失 L r e g L_{r e g} Lreg,背景框的回归损失为0。这就导致目标较少的图片的损失值会更低。这显然不符合我们的预想,我们不希望我们的评价函数受到图片中目标数量的影响,所以作者把评价函数改变为如下形式:
L i m ^ = ∑ a ∈ A m , i L i , a m \hat{L_{i}^{m}}=\sum_{a \in A_{m, i}} L_{i, a}^{m} Lim^=∑a∈Am,iLi,am
这里第 i {i} i张图片在尺度 m {m} m的评价值 L i m ^ \hat{L_{i}^{m}} Lim^,等于检测到的集合 A m , i A_{m, i} Am,i各个边界框 a {a} a损失值 L i , a m L_{i, a}^{m} Li,am的总和。
A m , i A_{m, i} Am,i是图片 i {i} i在 m {m} m( m ∈ S m \in S m∈S)尺寸下的 n m i n , i n_{min,i} nmin,i个边界框的集合。
n m i n , i n_{min,i} nmin,i取自各个尺度下能检测到的前景框个数的最小值。
如下图,这里在240这个尺度下,只能检测出2个前景框,所以 n m i n , i n_{min,i} nmin,i为2。
-
根据评价函数可以定义最优的尺度值: m o p t , i = argmin m L i m ^ m_{o p t, i}=\operatorname{argmin}_{m} \hat{L_{i}^{m}} mopt,i=argminmLim^
回归函数
有了最优尺度值的定义,就可以让网络回归这个尺度值了。作者在检测网络上添加了一个回归分支,如下图。
在这里作者没有直接回归最优尺度值
m
o
p
t
,
i
m_{o p t, i}
mopt,i,而是构建了一个相对最优尺度用于回归:
t ( m i , m o p t , i ) = 2 × m o p t , i / m i − m min / m max m max / m min − m min / m max − 1 t\left(m_{i}, m_{o p t, i}\right)=2 \times \frac{m_{o p t, i} / m_{i}-m_{\min } / m_{\max }}{m_{\max } / m_{\min }-m_{\min } / m_{\max }}-1 t(mi,mopt,i)=2×mmax/mmin−mmin/mmaxmopt,i/mi−mmin/mmax−1 (3)
定义的损失函数如下:
L scalereg = 1 ∣ D train ∣ ∑ i ∈ D train ( g ( X i ) − t ( m i , m opt , i ) ) 2 L_{\text {scalereg}}=\frac{1}{\left|D_{\text {train}}\right|} \sum_{i \in D_{\text {train}}}\left(g\left(X_{i}\right)-t\left(m_{i}, m_{\text {opt}, i}\right)\right)^{2} Lscalereg=∣Dtrain∣1∑i∈Dtrain(g(Xi)−t(mi,mopt,i))2
AdaScale testing
测试期间,流程如下。
在初始时,定义的目标尺度为600,之后每次目标尺度都由计算得出。首先将输入图片resize到目标尺度,之后将图片送入检测,得到相对最优尺度值
t
{t}
t,根据原始大小base_size以及尺度范围
S
{S}
S,执行(3)的逆过程得到最优尺度值
m
o
p
t
,
i
m_{o p t, i}
mopt,i,再确保
m
o
p
t
,
i
m_{o p t, i}
mopt,i是S范围内的整数。
实验结果
与另外两种输入尺度调整策略的对比。
SS/SS:训练时为单一尺度输入,测试也为单一尺度输入
MS/SS:多尺度训练,单一尺度测试
MS/AdaScale :多尺度训练,测试时自适应选择下一帧的图像大小
与现有的视频目标检测方法结合,并比较准确率和速度提升。可以发现AdaScale 带给视频目标检测方法准确率和速度的同时提升。