本文作者:Liyang
作者学校:复旦大学
研究方向:Object Detection/CNN complier
论文地址:https://arxiv.org/pdf/1903.11752.pdf
源码地址:https://github.com/mohhao/TF-Keras-ThunderNet
论文作者:Zheng Qin, Zeming Li, Zhaoning Zhang, Yiping Bao, Gang Yu, Yuxing Peng, Jian Sun(megvii 旷视科技)
本文将对ICCV2019会议论文《ThunderNet:Towards Real-time Generic Object Detection》进行解读,这篇论文在目标检测领域取得了比较好的成果,作者在Shufflenet v2和Lighthead r-cnn基础上,提出了一种新的SNet主干,进一步压缩RPN和检测头,并设计了独特的CEM和SAM模块,在轻量化和精度上均有出色的表现。
ThunderNet的整体结构输入为320x320分辨率,整体结构分成名为SNet的轻型Backbone(主干)和Detection(检测)部分。主干部分ThunderNet输入分辨率。作者采用320*320的分辨率,目的是提高推理速度。
作者通过实验分析,一方面,小分辨率图像会丢失较多的细节特征,很难通过增加主干网络的容量来弥补,如SNet535(输入分辨率192x192)超过SNet146(分辨率320x320)8.2%的算力,但AP反而下降了14%;另一方面,小主干网络太弱,很难满足大尺寸图像的编码需要,如SNet48(分辨率480x480)即使算力超过了SNet146(分辨率320x320),但仍然明显低于后者的AP;因此,作者认为输入分辨率和主干网络应该匹配。
SNet主干网络。作者认为主干网络需要遵守两大原则:第一,较大的感受野。由于CNN只能在接受区域内捕获信息,较大的感受野可以利用更多的信息并更有效地编码长距离像素之间的关系。第二,浅层特征和深层特征数量的平衡。浅层特征空间信息丰富,深层特征较小而有更大的区分性。
作者认为ShuffleNetV1 / V2具有感受野有限,ShuffleNetV2和MobileNetV2缺少浅层信息,Xception缺乏深层信息,因此基于ShuffleNetV2,构建一个名为SNet的轻量级主干。作者介绍了三个主干:SNet49用于更快推理,SNet535有更高的准确性,SNet146可兼顾推理速度和准确性,实际上是通过处理浅层conv5及通道数量来实现。
相对于ShuffleNetV2,作者采用5x5深度卷积替换所有3x3深度卷积,两者推理速度几乎相当,但前者有效地扩展了感受野(从121像素到193像素)。检测部分作者认为通常的two-stage检测器RPN(Feature Pyramid Network)较大,检测头较重,Light-Head R-CNN虽有轻量级的检测头,但与较小的主干连接时仍然太重,导致冗余计算,而且增加过拟合的风险。
基于Light-Head R-CNN,作者做了如下改进来压缩RPN:作者使用一个5x5 depthwise convolution和一个256-channel 1x1 convolution取代原始RPN中256-channel 3x3 convolution;采用分别为{32^2,64^2,128^2,256^2,512^2}的5个尺度和分别为{1:2,3:4,1:1,4:3,2:1}的5个长宽比来生成anchor boxes,实现压缩RPN的目的。
实验表明此举可减少28%的计算量,不会损失精度!Light-Head R-CNN在RoI warping前面会产生α×p×pchannels(池化大小p = 7,α = 10)的feature map,由于ThunderNet主干输入尺寸更小了,因此作者使用α =5来减小冗余计算。并使用PSRoI align代替RoI warping来压缩通道数到α。
考虑到SRoI align的RoI特征仅为245-d,作者在R-CNN子网络中使用1024-d全连接层。此举可进一步降低13%计算量,但可能会损失0.2AP!
作者认为在感受野要求下,Light-Head R-CNN采用的GCN计算过高,传统FPN结构有很多额外的卷积和检测分支,会带来计算成本和巨大的运行时延,因此作者设计了CEM模块以扩大感受野,CEM的关键思想是聚合多尺度的局部上下文信息和全局上下文信息,以生成更具区分性的特征。
CEM融合来自三个尺度的特征图:C4采用1×1卷积将通道数量压缩为245,C5进行2X上采样,并采用1×1卷积将通道数量压缩为245,Cglb采用average pooling做Broadcast以保证特征图空间尺寸相同。CEM几乎不增加计算量,但可提升1.7 AP!由于ThunderNet是轻量级主干,输入图像较小,为了改善RoI warping的前景区域特征分布。
考虑到经训练的RPN对前景识别较好,作者设计了SAM模块,其关键思想是引入RPN来优化feature map的特征分布,目的是抑制背景特征。如下图所示,SAM的输入为:RPN中间特征图和CEM的“薄”特征图(thin feature map),两者加权作为SAM输出。SAM可提升1.7 AP,会增加5%的计算量。
作者在PASCAL VOC数据集上测试结果如下,ThunderNetSNet49仅有MobileNet-SSD的21%计算量,ThunderNetSNet146仅占Tiny-DSOD的43%计算量,mAP均明显优于后者。尤其SNet535在计算量与Tiny-DSOD相当情况下,超过后者6.5 mAP。
作者在MS COCO数据集上测试结果如下,ThunderNetSNet49同样明显优于MobileNet-SSD,ThunderNetSNet146在不超过40%计算量下,超过MobileNet-SSD、MobileNet-SSDLite、Pelee。ThunderNetSNet535超过其他one-stage网络至少4.8 AP,5.8 AP50和6.7 AP75。
ThunderNet在推理速度上也有强劲性能,ThunderNet SNet146在Snapdragon 845(ARM)上达到13.8fps,在Xeon E5-2682v4(CPU)上达到32.3fps,在GeForce 1080Ti(GPU)上达到248fps!
作者提出来一种名为ThunderNet的轻量级two-stage检测器,整体结构分成名为SNet的轻型Backbone(主干)和Detection(检测)部分,其中SNet是基于ShuffleNetV2网络,用于对象检测,Detection部分是基于Light-Head R-CNN,并进一步压缩RPN和R-CNN子网,并设计了两个模块:Context Enhancement Module(CEM)和Spatial Attention Module(SAM),CEM将多尺度的局部特征和全局特征进行整合,SAM引入RPN信息来再调整RoIwarping层的特征分布。
ThunderNet在推理速度、精度均显著优于同类网络,可部署在ARM平台上实现实时检测。