【论文学习记录】ThunderNet: Towards Real-time Generic Object Detection
本文是旷视科技2019的新作,聚焦目标检测(Object Detection)在移动端的实时应用,提出了ThunderNet网络结构,论文原文《ThunderNet: Towards Real-time Generic Object Detection》。
作者说CNN-based检测网络可以分为backbone part和detection part两部分。
本文的backbone part称为SNet,是基于ShuffleNetV2修改得到的。Detection part是基于Light-Head R-CNN修改得到的,利用了压缩的RPN网络。
和传统的two-stage的检测网络一般都使用大分辨率的图像作为输入不同,为了加快推理速度,作者使用的是320 x 320的图像作为输入。
backbone网络需要大的感受野,这对定位任务很重要。同时定位任务需要low-level的feature,而分类任务需要high-level的feature,所以在检测网络中需要兼顾这两种特征。基于这两点,作者在ShuffleNetV2的基础上修改得到SNet作为backbone,下表是几种不同结构的SNet。
其中,SNet49有更快的推理速度,Snet535有更好的精度,而SNet146则是前面两者的折中。作者将ShuffleNetV2中3 x 3的深度可分离卷积全部替换成5 x 5的深度可分离卷积,因为这二者在实际运行中运行速度相似,但是5 x 5的卷积核有更大的感受野。SNet146和SNet535中,作者将Conv5去掉了,但是在网络的浅层特征提取阶段增加了通道数,这样可以生成更多的位置信息。在SNet49中,作者没有去掉Conv5,而是将其压缩为512个通道,并且同时在浅层特征提取阶段增加通道数,以实现浅层和深层特征的平衡。
Detection part沿用的是Light-Head R-CNN的网络。但是在与SNet进行耦合时显得头轻脚重,引起backbone part和detection part之间不平衡。因此作者使用一个5 x 5的深度可分离卷积核一个1 x 1的卷积替换原来RPN网络中的3 x 3卷积,并且使用五种尺度{32 x 32 , 64 x 64 , 128 x 128 , 256 x256 , 512 x512 }和五种长宽比 {1:2, 3:4, 1:1, 4:3, 2:1}来生成anchor boxes,其他的超参数和原网络保持一致。
Light-Head R-CNN中使用了GCN(Global Convolutional Network),这虽然能够极大地增大感受野,但是计算量也是急剧增加的,因此作者放弃使用GCN,提出了一种CEM结构(Context Enhancement Module)来增大感受野。
CEM用来聚合多尺度局部信息和全局信息,以生成区分性更强的特征。它合并了三个尺度的特征。
尺度一:C4上用1 x 1的卷积将通道数压缩为α×p×p = 245
尺度二:C5进行2x的上采样和1 x 1的卷积将通道数压缩为α×p×p = 245
尺度三:Cglb上进行broadcast和用1 x 1的卷积将通道数压缩为α×p×p = 245
在进行ROI操作时,作者设计了一个SAM模块(Spatial Attention Module),引导网络学习到正确的前景和背景特征分布。
SAM使用来自RPN网络学习到的知识来细化特征图的分布,它有两个输入,分别来自CEN和RPN
其中,θ(·)是一个尺寸变换,以匹配两组特征图中的通道数,为了计算效率的考虑,论文中简单的用1 x 1的卷积来做θ(·)。
基于以上的设计,ThunderNet在速度和准确率上都取得了很好的效果。