经典CNN结构的总结剖析

A、流行的网络结构

1、AlexNet

这个模型是深度网络第一次在ImageNet比赛中达到的精度远远甩开传统的方法达到的精度,它是用5层卷积神经网络+3层全连接网络组成的。

改进点:

1.1AlexNet首次采用了ReLU激活函数

1.2 对于全连接层采用了Dropout技术、Local Response

Normalization(局部响应归一化,简称LRN,实际就是利用临近的数据做归一化,使得响应较大的值相对更大,提高模型泛化能力)

1.3 Overlapping Pooling(即重叠池化,Pooling的步长相对于Pooling Kernel的对应边要小)

1.4 采用了数据增强操作

1.5 分组卷积,多GPU并行

2VGG16

改进点:

2.1 去掉LRN层,作者发现深度网络中AlexNet提出的LRN作用并不明显

2.2 采取更小的卷积核3*3,利用更小卷积核的堆叠代替AlexNet中的大的卷积核(参数量更小)。

2.3 采用了有规则的卷积-池化操作

2.4 采取了更深的网络(16/19层)

VGG存在问题:卷积层宽度大使得参数量巨大、效率低(说明SSD的基础特征提取网络需要另行设计符合SAR图像特性的)


3GoogleNet/Inception

改进点:

3.1 发明了Inception模块,使用标准密集连接结构进行稀疏CNN计算(在深度网络中,大部分的激活值都是非必须的,比如激活值为零或是冗余部分),inception采用大小不同的卷积(5*5、3*3、1*1)在不同的尺度上捕捉细节信息。

3.2 大规模采用1*1卷积构建瓶颈层:随着网络的加深、加宽,计算量变的更大,为了避免这个问题,提出在使用卷积之前使用1*1的卷积操作输入,用于降维。

3.3 将全连接层全部替换为简单的全局平均pooling,在最后参数会变的更少。而在AlexNet中最后3层的全连接层参数差不多占总参数的90%。

注:Inception V2/V3相对于inception V1的改进:

Inception V2:

    1、 用两个3x3代替5x5

    2、的Inception块从2个变成了3个

    3、pooling时有些是avg pooling有些是max pooling

    4、在Inception块之间不再有额外的max-pool而是直接把卷积和池化的stride设置为2

    5、BN层被用在每一个输入层后面(先BN再激活)

Inception V3:

    1、修改部分Inception块,分解成非对称卷积(把nxn分解成1xn和nx1卷积,这里n=7。注意原始结构并没有7x7卷积)

    2、修改部分Inception块,扩大卷积核数量(汇聚的分支数量)


4ResNet/Dense Net

此前深度网络的问题:

    4.1 随着网络深度的增加,带来网络精度的增加,但权值更新的信号从网络后面层传到前面层会越来越弱,甚至消失,这也就意味着前面的层被忽略掉了(不发生权值更新),这也称作是梯度消失。

    4.2 网络优化变的越来越难执行,所以简单的增加层会导致训练误差增加(退化问题),残差网络通过构建残差块允许训练更深的网络结构。

改进点:

       提出了残差学习模块,让深度网络也能训练收敛

DenseNet:用通道维度上concatenate代替直接与原信号相加的ResNet。

其与 ResNet 的主要区别在于,DenseNet 里模块B的输出不是像 ResNet 那样和模块A的输出相加,而是在通道维度上concatenate。这样模块A的输出可以直接传入模块B后面的层。在这个设计里,模块A直接跟模块B后面的所有层连接在了一起。这也是它被称为“稠密连接”的原因。

5MobileNets:适用于移动设备,大大减少了网络层的参数数量,效率极高

       改进点:传统卷积层的改进,如下图所示

       我们首先对每一个通道进行各自的卷积操作,有多少个通道就有多少个过滤器。得到新的通道feature maps之后,这时再对这批新的通道feature maps进行标准的1×1跨通道卷积操作。这种操作被称为“DepthWise

convolution”,缩写“DW”。

       比如输入图片维度是11 × 11 × 3,标准卷积为3 × 3 × 3 ×16(假设stride为2,padding为1),那么可以得到输出为6 × 6 × 16的输出结果。现在输入图片不变,如果先通过一个维度是3 × 3 × 1 × 3的深度卷积(输入是3通道,这里有3个卷积核,对应着进行计算),得到6 × 6 × 3的中间输出,然后再通过一个维度是1 × 1 × 3 ×16的1 ×1卷积,同样得到输出为6 × 6 × 16。

       基于深度可分解的卷积,它可以将标准卷积分解成一个深度卷积和一个点卷积(1 × 1卷积核),这种分解可以有效减少计算量,降低模型大小。

6ShuffleNetsGroup convolutional + Channel Shuffle

       这篇文章是在MobileNet的基础上主要做了一点改进:采用channel shuffle、pointwise group convolutions和depthwise separable convolution来修改原来的ResNet单元。

       6.1 Group convolution

        一般卷积操作中比如输入feature map的数量是N,该卷积层的filter数量是M,那么M个filter中的每一个filter都要和N个feature map的某个区域做卷积,然后相加作为一个卷积的结果。对于group操作,设group个数为g,那么N个输入feature map就被分成g个group,M个filter就被分成g个group,然后在做卷积操作的时候,第一个group的M/g个filter中的每一个都和第一个group的N/g个输入feature

map做卷积得到结果,第二个group同理,直到最后一个group。最早的group操作起源于AlexNet(当时主要是问了解决模型在双GPU上的训练)。

问题:多个group操作叠加在一起,会产生边界效应,就是某个输出channel仅仅来自输入channel的小部分,这也学出来的特征比较局限。针对这个问题提出了channel shuffle。

       6.2 channel shuffle

        在进行第二次groupconvolution前,对其输入的特征图进行一个分配,即将每个group的特征图分成几个subgroup并随机打乱。

ShuffleNet的网络模块结构:

下图(a)是ResNet中的bottleneck unit,将原来的3*3 Conv改成3*3 DWConv。图(b)Shuffle Net主要也是在这基础上做改动:首先用带group的1*1卷积代替原来的1*1卷积,同时跟一个channel shuffle操作,然后是3*3 DWConv。图(c)添加了一个Average pooling和设置了stride=2,另外原来Resnet最后是一个Add操作,也就是元素值相加,而在(c)中是采用concat的操作,也就是按channel合并,类似GoogLeNet的Inception操作。

B、关于设计适应于SAR图像特性的基础网络的思考

1、卷积不一定只在同一组中进行---Group convolution

    优点:可以有效的减少网络的参数(参考AlexNet和Shuffle Net)

2、卷积核不一定越大越好

    之前的观念是,卷积核尺度越大,则感受野越大,看到的图片信息越多,因此获得的特征越好。但是大的卷积核会导致计算量的暴增,不利于模型深度的增加,计算性能也会降低。在VGG(最早使用)、Inception网络中,利用2个3×3卷积核的组合比1个5×5卷积核的效果更佳,同时参数量(3×3×2+1 VS 5×5×1+1)被降低,因此采用3×3卷积核是更好的选择。

3、每层卷积层可以采用多种尺度卷积核的组合

    传统的层叠式网络,基本上都是卷积层的堆叠,每层只用一个尺寸的卷积核,例如VGG结构中使用了大量的3×3卷积层。事实上,同一层feature map可以分别使用多个不同尺寸的卷积核,以获得不同尺度的特征,再把这些特征结合起来,得到的特征往往比使用单一卷积核的要好,Inception系列的网络,就使用了多个卷积核的结构,证明了该结构的有效性。

4、如何减少卷积层参数量—Bottleneck

    如果仅仅引入多个尺寸的卷积核,会带来大量的额外的参数,为了解决这个问题,引入1×1的卷积核。

5、对于深层网络,引入ResNet/DenseNet残差结构

    当层数加深时,网络的表现越来越差,很大程度上的原因是因为当层数加深时,梯度消散得越来越严重,以至于反向传播很难训练到浅层的网络。而skip connection可以有效的解决。

6、卷积操作必须同时考虑特征通道和区域吗?---DepthWise操作(MobileNet)

标准的卷积过程如左上图,一个2×2的卷积核在卷积时,对应图像区域中的所有通道均被同时考虑,问题在于,为什么一定要同时考虑图像区域和通道?我们为什么不能把通道和空间区域分开考虑?

    Xception和上述介绍的MobileNet就是给予上述的问题进行了改进,提出了DepthWise connection(简称DW) 。一个depthwise操作比标准的卷积操作降低不少的参数量,同时相关论文中指出这个模型得到了更好的分类效果。

7、卷积网络中的特征通道不一定都是平等的—---SENet

无论是在VGG16、Inception、DenseNet或者ShuffleNet里面,我们对所有通道产生的特征都是不分权重直接结合的,那为什么要认为所有通道的特征对模型的作用就是相等的呢? ImageNet2017 冠军SENet的出现,证明了不同的特征不一定是平等的(有点类似注意力机制)。

8、让固定大小的卷积核有更大的感受野-----dilated convolution

    在设计网络时候,可以考虑引入空洞卷积,如RFBNet根据人类的视觉特点设计了拥有不同尺度的空洞卷积的组合。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352