传统的CNN结构大家都很熟悉了,在写一个结直肠癌组织纹理分类程序时,我发现还有很多经典的CNN结构,比传统的“堆积木”层次更深,效果更好,并且这些结构都已有成熟的网络架构、训练模型,可以用来做迁移学习,用到自己的数据集上。
这些经典模型相比于传统模型,主要有四个改进方向:
- 网络加深
- 增加卷积层的功能
- 从分类任务到检测任务
- 增加新的功能模块
下面详述这几个经典模型:
1.AlexNet
创新:
- 防止过拟合:数据增强(对已有数据集做一些基本变换,例如水平翻转,旋转,放缩等等,来扩大数据集),Dropout
- GPU实现:将网络分布至两个GPU,且GPU之间在某些层能够相互通信
- 非线性激活:RELU,代替Sigmoid函数,使收敛速度加快
- 大数据训练:120万张ImageNet图像数据集
网络结构:
2.VGGNet
VGGNet可看成加深版的AlexNet,都有5个卷积组,但VGGNet的层数更多(AlexNet有8层,VGGNet11至19层),卷积核的深度更深(大部分逐层递增),下图是5种VGGNet,其中VGG16和VGG16用的最多:
3.GoogLeNet
与之前的CNN相比,GoogLeNet在深度和宽度上都做了提升,深度增加到22层(为避免梯度消失问题,在网络中的两个位置加入损失函数函数),并且提出了Inception网络结构
首先是最原始的Inception网络结构,将多种卷积核放在同一层,一方面增加了网络的宽度,另一方面也增加了网络对尺度的适应性。
之所以卷积核大小采用11、33和55,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定padding =0、1、2,采用same卷积可以得到相同维度的特征,然后这些特征直接拼接在一起(通道相加)
然而这种结构,55的卷积的计算量太大,如图:(图来自添加链接描述)
考虑采用1*1的卷积核来降维
所以最终的Inception网络结构:
4.ResNet
ResNet有158层,为了缓解网络深度过深引起的梯度消失问题,ResNet引入了残差连接,将输入直接跳层传递,与卷积的结果相加。使学习更高效,错误率大幅降低: