《Multi-Scale Aligned Distillation for Low-Resolution Detection》论文笔记

一、介绍

           在实例检测中,用深度学习模型进行推理需要巨大的运算量,这适得模型不容易部署在计算资源有限的嵌入式设备中。加速推理的方法有压缩模型,比如裁剪神经网络的深度或高度、采取高效的分块结构设计。除此之外,降低输入图像的分辨率也可以提高推理速度,但降低输入图像分辨率会导致模型性能退化。因为用低分辨率图片训练的模型比用高分辨率图像训练的模型预测准确度要低。

            于是我们希望提升用低分辨率图片训练的模型(以下简称low-res student)的性能,方法是对用高分辨率图片训练的模型(以下简称 high-res teacher)进行知识蒸馏。但这有一个问题,就是high-res teacher 和low-res student 它们在同一个network stages 输出的 feature map size / feature spatial size(特征图尺寸)是不一样的。比如800x800的灰度图在经过第一个卷积层后输出400x400的特征图。而对应低分辨率的400x400的灰度图在第一个卷积层输出200x200的特征图。一般的方法是对high-res teacher输出的特征图进行降采样。但这会严重破坏high-res teacher预测的特征,不能很好反映其所学到的东西。

            作者提出了特征图对齐的方式解决这个问题。在特征金字塔(FPN)中,每一个network stage的特征图都是上一个stage的0.5倍,于是作者对student输入图像的分辨率也是teacher的0.5倍,因为这有利于不同阶段的特征图对齐。

    

原本特征图不对齐                                 现在对齐了

特征图对齐为后面的high-res teacher和low-res student之间的知识蒸馏做铺垫。

最直接的方法是只训练一个高分辨的教师模型去指导学生模型,但这个教师模型学习的特征对多分辨率的输入不兼容(poorly compatible),不太适用于学生模型,作者希望训练一个有多分辨率知识的老师模型,训练好之后再把知识蒸馏给学生模型。于是提出了对齐多尺度学习(aligned multi-scale training)以及交叉特征级融合(crossing feature-level fusion module)的方法。作者用FCOS作为detector,提出该方法的论文为《FCOS: Fully Convolutional One-Stage Object Detection》

二、教师模型训练

     1.对齐多尺度学习(Aligned multi-scale training)

首先对教师端进行训练,教师端训练高分辨率和低分辨率两个模型。左边输入的是高分辨率的图像。右边输入的是低分辨率的图像,在这个结构图中其尺寸为高分辨率图像的0.5倍。训练过程中每一次迭代都会用一个随机比例因子α来改变原输入图像的大小,α的范围可以是[0.8,1]

           特征金字塔(FPN)结构提取出HPs×WPs×256 的feature map (Ps 表示第s层的FPN生成的feature map,HPs×WPs表示这个feature map的宽和高)。它们的feature map只相差一层,即P3与P2' feature map的尺寸相同,P4与P3' feature map的尺寸相同,以此类推。FPN提取完两个分辨率模型的特征后,就传入detection Head模块进行处理

           其中 Lcls 是classification loss, Lreg 是 bounding box regression loss, and Lctr 是 centerness loss。于是对齐多尺度学习损失(aligned multi-scale training loss)的定义为:

 

2.交叉特征级融合( Crossing feature-level fusion)

           高分辨率的模型在小物体检测中表现更好,低分辨率模型在大物体检测中表现更好,我们在教师网络中训练了两个模型,那怎么权衡它们呢。于是作者提出了C-FF模块

           这个模块接收两个同样空间大小的feature map Ps 和P's-1(假设为HPs×WPsxC),然后对它们进行拼接(concatenation),通道数由原来的C变成2C。然后再进行全局池化,即对一个channel的特征图的HxW个元素值求和,再除以HxW,得到一个整数。于是2C个channel就有2C个整数,所以Global pooling 的输出就是1x1x2C。然后再经过FC进行维度变换,以及ReLu层。最后生成1x1x2维的整数,然后把整数经过softmax映射成概率(权重)。最后Ps 和P's-1 分别乘以其对应的权重,再相加,就得到最终的输出PsT了。

PsT 损失计算公式为

           λ是loss weight,(H&H') × (W&W')表示融合后的特征图, 的计算方法跟 是一样的。

           于是教师模型的损失函数为:

 

三、知识蒸馏

           在得到multi-resolution 特征图 PsT后,就可以蒸馏给学生模型了。

           其中 ,m=k/2,k是低分辨率图像的缩放倍数,这里k=2。τ 是超参数,代表loss weight。

           学生模型的损失由知识蒸馏损失和original  detection损失组成,公式为

γ是loss weight

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值