CNN 图像分类网络系列总结

一、VGG

研究目的:论文主要研究卷积网络的深度(Depth)对于图像识别任务的准确度影响。

论文主要贡献:

  1. 一定的数据规模下,增加网络深度能够有效提升网络的性能;
  2. 两个3x3Conv的感受野等效于1个5x5Conv,并且参数更少,性能更好;
  3. VGG引入了卷积模块的设计模式(Figure 1),其特点是:一个卷积块内的特征图尺寸通常不变,模块之间特征图尺寸降低时,特征图的数量会增加(后续的分类网络基本都是基于模块的设计,比如InceptionResNet,DenseNet);
  4. LRN对于分类性能无明显增益;
  5. VGG结构简洁,网络由3x3Conv+2x2MaxPooling 构成(Figure 1),便于作为基础网络迁移到其它应用场景;
Figure 1

论文不足:总共140M的参数量参数量太大,主要集中在3层全连接层; 

网络结构:论文总共训练和测试了5种结构(A-B-C-D-E),其中,D, E分别为VGG-16VGG-19

训练设置:

  • 优化器:带有动量的SGD,momentum = 0.9,L2=5*0.0001;
  • 学习率:初始学习率为0.01,当验证集误差不降低的时候,除以10;
  • 只在前两层全连接添加Dropout,值为0.5;
  • 数据增强:随机水平翻转和随机RGB颜色偏移,以及多尺度随机裁剪;

二、Inception系列

Inception-v1:

论文目的:在提升网络宽度和深度的同时,保证网络仍具有较高的计算效率;

论文主要贡献:

  1. 设计Inception模块,通过将1x1Conv、3x3Conv、3x3MaxPooling进行通道维度的Concatate(见下图a,b),使得网络更宽,同时可以提取图像中不同尺度、位置的目标特征;
  2. 添加辅助分类器,可以监督中层特征,有效避免梯度消失(但是后续Inception论文否定了辅助分类器的作用);
  3. 添加1x1Conv来降低特征图的通道数量,降低计算的复杂度;
  4. 替换掉全连接层,使用全局平均池化层代替,极大减低了网络的参数量,大概5M的参数,相比于VGG(140M),AlexNet(60M),参数量大幅度降低;

         

网络不足:

  1. 网络设计较为复杂,特别是Inception模块中每一层的卷积核数量(很难设置,没有统一的准则),难以顺利迁移到其它任务场景,网络轻微的修改,可能就无法达到预期的效果;
  2. 虽然参数少,但是训练过程很慢,没有VGG训练快;

网络结构:Inception模块如上图Figure2(b)所示,#3x3reduce和#5x5reduce分别表示在3x3Conv和5x5Conv之前使用1x1Conv,目的是为了降低输入卷积的通道数量;Table1展示的是GoogLeNet的主干结构,不包括辅助分支结构;

GoogLeNet有 9 个线性堆叠的 Inception 模块。它有 22 层(包括池化层的话是 27 层)。该模型在最后一个 inception 模块处使用全局平均池化;

训练设置:

  • 优化器:带有动量的SGD,momentum = 0.9,L2=5*0.0001;
  • 学习率:初始学习率为0.01,当验证集误差不降低的时候,除以10;
  • 只在前两层全连接添加Dropout,值为0.4;
  • 数据增强:随机水平翻转和随机RGB颜色偏移,以及多尺度随机裁剪;

Inception-v2 and Inception-v3:

论文目的:本篇论文进一步研究如何充分利用有限的计算资源,通过对Inception模块进一步设计,使得节省计算资源的情况下,提高其计算效率和分类准确度;

论文贡献:主要的贡献是进一步提出三种Inception模块;

1、将大的卷积核分解为多个小的卷积核,比如将5x5Conv分解为两个3x3Conv, 5×5 的卷积在计算成本上是一个 3×3 卷积的 2.78 倍;

2、非对称分解(7x7分解为1x7conv+7x1conv),作者通过测试发现,非对称卷积用在网络中靠中间的层级才有较好的效果(特别是feature map的大小在12x12~20x20之间);

 

3、为了避免pool带来的表达能力降低,图9中,左边的结构(先使用了Pool)会导致网络表达能力降低,右边的结构会导致计算代价非常高。图10中,通过并行处理的方式,同时降低计算复杂度,同时避免了网络表达瓶颈。                       


          

网络结构:

Inception-v2:在下面的表中,三个Inception模块分别对应上述的图5,图6,图7,不同阶段使用不同的Inception模块;

Inception-v3:在Inception-v2的基础上,辅助分类器添加BN,使用了新的优化器RMSProp,标签平滑以及Factorized 7x7Conv;

Inception-v4:参考链接(https://blog.csdn.net/kxh123456/article/details/102828148

论文目的:在前面Inception基础上,以及ResNet基础上,重新设计Inception结构,进一步提升网络性能,同时保持计算效率最优;

论文优点:

  1. 提出更优的Inception-v4结构,稍微简化了网络的设计准则;
  2. 结合Inception和ResNet的优点,提出Inception-ResNet-v1和Inception-ResNet-v2网络结构;
  3. 丢弃辅助分类器,作者认为其并没有太大的用处;

网络结构:参考上述链接,详细介绍了各种结构;

网络训练:使用新的优化器,RMSProp,decay为0.9;

三、ResNet

论文目的:与之前的卷积网络相比,作者进一步提升网络的层数(比如50, 101, 152, 1000)。但是,作者发现,网络变深之后,训练过程中会出现网络退化的现象。为此论文中引入残差模块,使得深层网络训练更加稳定、更容易。

论文优点:

  1. 提出残差模块(Figure 2),解决深层难以训练的问题;
  2. 残差模块简洁通用,很容易迁移到其它应用场景;

     

网络结构:

CIFAR-10训练设置:

参考如下链接的Sec.4.2:https://blog.csdn.net/kxh123456/article/details/102775867

四、DenseNet

论文目的:论文借鉴了ResNet网络的思想:网络层之间添加短连接。为此,本文设计更为密集的跳跃连接方式,将前面所有的层作为该层的输入,而该层是所有后面层的输入。目的是使得网络特征可以重复利用,保证网络的有效训练。

论文优点:

  1. 设计新的稠密网络模块(dense block),模块中的每一层结构:BN+ReLU+3x3Conv,跟传统的卷积层(3x3Conv+BN+ReLU)有所差别;
  2. 特征重复利用:特征是直接连接,而不是直接求和,并传递到下一层。因此,每一层的特征都会传递到后面的每一层,与最后的损失层直接连接,保证网络被有效的监督;
  3. 这种特征的重复利用以及密集连接的方式,有效的缓解了网络的梯度消失问题;

网络结构:

Dense-B:添加了瓶颈特征,降低每一个模块的特征图数量,BN-ReLU-1x1Conv-BN-ReLU-3x3Conv;

Dense-C:每两个dense block之间有一层transition layer,见下面的Table 1。假设前一个模块特征图数量为m个,那么经过该层后,会添加参数a,a小于等于1,大于0,可以降低特征图数量;

Dense-BC:同时使用瓶颈特征和参数a,并且a<1;

下图是ImageNet上的网络结构:

训练设置:

参考如下链接的:https://blog.csdn.net/kxh123456/article/details/102857035


版权声明:本文为kxh123456原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。