MobileNet网络结构介绍-CNN模型系列2

这篇短文向大家简要介绍MobileNet系列的CNN网络结构,也主要以问答的形式来进行,问答反应了作者对这个主题题目的思考和找到问题答案的过程,当然还有更多的问题有待读者提出来,欢迎读者朋友们反馈和一起探讨。

问题1:MobileNet 模型系列的网络结构特征和应用目标(场合)?

回答:MoblieNet顾名思义是面向移动端的深度学习场景,如手机或算力较小的边端智能应用。其中MobileNet V1的模型结构主要采用了Depth wise Convolution取代了传统的CNN卷积进行特征提取。这里简要介绍一下两者的不同,1、一般卷积核的计算特征:在CNN网络结构中,一般在视觉场合的数据以NCHW的形状张量在不同的网络层进行数据的输流动,比如在传统的一个卷积层,其输入为四维张量(N,C_in,H,W),输出为四维张量(N,C_out, H, W)。其中C_in为输入通道,C_out为输出通道,如果卷积核的大小为(3*3),则一个卷积核的参数量为(3*3*C_in),即在3*3大小的特征图(feature map)上对每个通道上的数据进行相关性计算,将计算结果输出到输出特征图上的该卷积核对应的某个通道上。所有卷积核的参数量为(3*3*C_in*C_out)。2、Depwise Separable Convolution,该卷积包含两个步骤,第一步的Depth wise Convolution的计算特征:每个卷积核的参数量只为(3*3),即只与当前自己通道的当前”像素“的周围(包含自己)的9个像素计算相关性,因此输出的通道数和输入的通道数相同,整体参数量为(3*3*C_in),因此参数量少了C_out倍。同时每一个通道的计算量从3*3*C_in下降到3*3,降低了C_in倍。第二步的逐点卷积可以理解卷积核的大小为1*1, 但是会将不同通道上的同一个位置的点进行相关性计算,即一个卷积核的参数量为(1*1*C_in),整个的卷积核的参数量为(1*1*C_in*C_out)。 深度可分离卷积相比标准卷积可以减少 8 到 9 倍的计算量。

问题2:MobileNet模型系列的不同版本分别在前面的版本上做了哪些性能的提升?

MobileNetV2仍旧采用了Depwise Separable Convolution来减少计算量,但也有两处重要的改进:1为采用了类似于resnet的重复结构(减少计算量,堆叠在一起可以提升网络的表达能力),缓解了特征退化问题(残差连接)。2为在通道数较少的特征图上取消了ReLU非线性激活层,而采用了线性瓶颈结构,即inverted residual block。即先将低通道数特征图通过1*1卷积上升到高通道数(高通道数采用ReLU或类似的非线性激活函数),然后在高通道数上进行深度可分离卷积然后再通过1*1卷积降低通道数(这时由于通道数较少不采用激活函数)。瓶颈结构(bottleneck)顾名思义就是先将通道数降低然后进行卷积后再还原通道数,类似时间漏斗一样的形状,故此得名。inverted residual block的意思则是反过来的,中间粗上下细的结构。MobileNetv3在之前的版本上继续做了改进,如基于网络结构搜索,和SE(squeeze and excitation)注意力机制,以及特殊的激活函数等,具体可以参考引文2。

References


by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *