ThunderNet是旷视提出来的一个用于目标检测的模型,它是基于Light-Head R-CNN 进行改动,使的模型更轻量级,更快速。
上图为ThunderNet的模型结构图
ThunderNet输入图片像素为320*320,模型结构主要分为两部分,主干部分backbone part及检测部分detection part,主干部分用于图像特征的提取。检测部分用于候选框的提取及物体的检测。接下来分别对这两个部分进行详解。
backbone:
(1)Input Resolution : 作者提出输入的分辨率跟backbone模型结构的大小要对应,轻量级的模型跟高分辨率的输入并不是模型的最优选择,所以作者放弃800*的分辨率,采用320*的分辨率输入。
(2)Backbone Networks : 作者首先提出Early-stage and late-stage features的作用,即Net的浅层特征跟深层特征,浅层特征描述图像细节,适用于物体定位。深层特征对图像更有区分能力,适用于分类任务。
作者使用轻量级模型shuffluNetV2为原型,进行改造,提出SNet。
作者经过试验,5*5的卷积核对比3*3卷积核拥有更大的感受野,且速度并不会受到影响,具有相同的speed。于是作者首先将shuffluNet里面的3*3卷积核改为5*5的卷积核,并提出高速的SNet49,高准确率的SNet535,及速度跟准确率综合的SNet146.
SNet146 and SNet535:去除Conv5并在前面几层增加channels。这样可以增加浅层特征的数量。
SNet49:修改Conv5的输出channel为512,并增加前面几层的channel数目来平衡浅层特征与深层特征。
具体的模型结构表如下:
此外,Stage3和Stage4 (SNet49为Conv5)的最后输出特征图分别记为C4和C5,后面会用到。
detection:
Context Enhancement Module模块:
因为Light-Head R-CNN是使用GCN(Global Convolutional Network)去整合backbone的输出特征,虽然GCN具有更大的感受野,但计算量较大,所以ThunderNet放弃GCN,提出CEM模块。
具体的结构如下:
C4进行1*1卷积,输出20*20*245,结果记为C4_lat
C5进行1*1卷积及反卷积,输出20*20*245,结果记为C5_lat
将C5进行全局均值池化Cglb,再进行扩张到size为20*20的尺寸,再进行1*1卷积,输出20*20*245,结果记为Cglb_lat
最后将C4_lat,C5_lat,Cglb_lat进行相加得出最后的输出结果。
RPN模块:
为了平衡backbone跟detection模块的计算量,作者将Light-Head R-CNN中的RPN模块进行压缩。
(1)使用5*5的dw卷积和输出256channel的pw卷积,替换掉原来的3*3卷积。
(2)使用五种尺寸{32,64,128,256,512} 和五种高宽比{1:2, 3:4, 1:1, 4:3, 2:1} 去生成anchor boxes
Detection Head:
Light-Head R-CNN在Roi warping前,将特征图缩放到α×p×p,其中α=10,p=7,为了平衡整个Net的计算量,将α=10下调至5,来减少计算量,此外,使用PSRoI align进行Roi提取。后面紧接着是个1024d的fc操作。
Spatial Attention Module:
为了在Roi选择前,使特征图的背景区域的特征值较小,前景区域的特征值较大,所以作者提出了SAM模块对特征图的weight进行调整,具体的结构图如下:
SAM的关键点是RPN提取Roi的过程中,具有前后景特征的分布信息,所以作者结合RPN的中间层特征及CEM模块的输出特征图,最后输出SAM模块的特征图。具体的计算公式如下:
此外,使RPN多个梯度去迭代RPN的权重,公式如下: