没有过时的技术,只是看什么样的应用场景,某些场景下,老技术也能焕发光彩!
发展历程
CNN思想起源——喵星人的视觉系统
20世纪60年代左右,加拿大神经科学家David H. Hubel和Torsten Wisesel发现了猫的视觉中枢里存在感受野、双目视觉和其他功能结构,这一发现标志着神经网络结构首次在大脑视觉系统中被发现。因其在视觉系统中信息处理方面的杰出贡献,他们在1981年获得了诺贝尔生理学或医学奖。
1、CNN开山鼻祖–LeNet
LeNet神经网络由深度学习三巨头之一的Yan LeCun提出,他同时也是卷积神经网络 (CNN,Convolutional Neural Networks)之父。1998年,LeCun把Neocogniron的精华提取出来,再结合BP(BackPropagation)算法,提出了卷积神经网络算法LeNet-5,也是LeNet系列中效果最佳的版本。LeNet主要用来进行手写字符的识别与分类,并在美国的银行中投入了使用。LeNet的实现确立了CNN的结构,现在神经网络基本以此为基础。
当时受限于无合适的加速硬件,导致LeNet还不如传统机器学习算法,即手工设计特征的算子:SIFT,HOG,LBP以及SVM,它们以原理清晰性,模型可解释,数据需求小,计算需求小等优势深受欢迎。
通用GPU在2001年才开始兴起,在2006年深度学习理论被提出后 ,卷积神经网络的表征学习能力得到了关注,并随着数值计算设备的更新得到发展。
2、AlexNet一炮而红
2012 年,Alex与 Hinton 推出了 AlexNet,并在当年的 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)中以超过第二名10.9个百分点的绝对优势一举夺冠,引起了许多学者对深度学习的研究,使深度学习重回历史舞台。因此,2012年也被称为深度学习近代史的开局之年。
AlexNet是LeNet的一个更深和更广的版本,可以用来学习更复杂的对象。
主要特点:
- 非线性激活函数:ReLU,解决了训练过程中梯度消失问题,加速了训练收敛;
- 防止过拟合的方法:Dropout,Data augmentation,减缓模型的过拟合
- 大数据训练:百万级ImageNet图像数据
- 其他:GPU实现,LRN归一化层的使用(当时他们用了两张 GTX 580 3GB GPU,仍然训练了5~6天时间)
3、VGG使用重复元素的网络
2014 年,牛津大学计算机视觉组(Visual Geometry Group, VGG)提出了 VGG 模型(相关系列包括VGG-11/VGG-13/VGG-16/VGG-19,主要区别是网络深度不同),并在当年的 ImageNet Challenge 上获得图像分类任务第二名、定位(Localization)任务第一名。
主要特点:结构非常简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2),多个3X3卷积序列可以模拟更大的接收场的效果。同时验证了不断加深网络结构可以提升性能。
4、NIN网络中的网络
2014年,新加坡国立大学(NUS)的颜水成老师的团队提出了Network in Network(NiN)。
LeNet、AlexNet 和 VGG 在设计上的共同之处是:先以由卷积层构成的模块充分抽取空间特征,再以由全连接层构成的模块来输出分类结果。其中,AlexNet 和 VGG 对 LeNet 的改进主要在于如何对这两个模块加宽和加深。
而NIN提出了另外个思路,即串联多个由卷积层和“全连接”层构成的小网络来构建个深层网络,核心思想是CNN原来的结构是完全可变的。
它的思想很简单但是很有效,使用1x1卷积给一个卷积层的特征提供了更多的组合性。
每个卷积之后使用空间MLP层,以便在另一层之前更好地组合特征,而没有使用原始像素作为下一层的输入。可以有效地使用非常少的参数,在这些特征的所有像素之间共享。
5、GoogLeNet/Inception含并行连接的网络
2014年,谷歌的Christian Szegedy提出了一种全新的深度学习结构GoogLeNet(名字中的L选择大写是为了致敬LeNet网络)。
Inception的核心思想是将channel分成若干个不同感受野大小的通道,除了能获得不同的感受野,Inception还能大幅的降低参数数量。
GoogLeNet系列包含Inception v1到v4,采用了Inception模块,其中大量采用了1X1的卷积核,主要作用是对数据进行降维,引入更多的非线性,提高泛化能力,因为卷积后要经过ReLU激活函数。
该网络获得2014年ImageNet图像分类冠军。
6、ResNet残差网络
2015年,国人作者何凯明提出的残差网络。
特点是容易优化,并且能够通过增加深度来提高准确率。其内部的残差块使用了跳跃连接,缓解了在深度神经网络中增加深度带来的梯度消失问题 。
在此之前,深度学习因为网络无法继续有效加深而陷入发展停滞,可以说ResNet救活了深度学习。
7、Xception一种极端的Inception
2016年,Google 利用 Depthwise Separable Convolution 对 Inception V3 进行了改进,并结合 Residual Connection 设计了新的网络:Xception(Xception取义自Extreme Inception,即Xception是一种极端的Inception)。
8、DenseNet稠密连接网络
2016 年,DenseNet 横空出世。与 ResNet、Inception Net 不同,DenseNet 即没从网络的深度入手,也没从网络的宽度入手,而是对每层的 FeatureMap 进行特征复用,以此缓解梯度消失问题,加强网络中特征的传递,有效对特征进行复用,并在提高网络的表现效果的同时减少了网络的参数量。
9、MobileNet轻量化CNN
2017年左右,神经网络模型轻量化已经逐渐引起人们的关注,常见的手段分为两种:设计轻量化网络模型以及对已经训练好的复杂网络进行压缩(比如:降低精度、剪枝等等)。此时,Google 提出了一个轻量化模型:MobileNet(应用于移动端和嵌入式),成为后续人们常使用的 Baseline Model。
MobileNet的基本单元是深度级可分离卷积(depthwise separable convolution),其实这种结构之前已经被使用在Inception模型中。深度级可分离卷积其实是一种可分解卷积操作(factorized convolutions),其将一个标准卷积分解为两个更小的操作:逐深度(depthwise convolution)和逐点(pointwise convolution),因此减小了参数量,对应也减小了总计算量。深度可分离卷积的总计算量变小了,但深度可分离卷积的层数变多了。
10、ShuffleNet轻量化CNN
ShuffleNet是旷视科技提出的一种高效的移动端CNN模型,其和MobileNet和SqueezeNet等一样主要是想应用在移动端。
ShffuleNet的作者利用 Group Convolution和Depthwise Separable Convolution 结合,提出Pointwise Group Convolution以避免大量 Convoltuion,并利用Channel Shuffle 缓解由 Group Convolution 带来的副作用,并在 Residual Block 的基础上进行网络结构设计,使得网络的计算量减少的同时,仍能保持较高的性能。
总结
CNN(卷积神经网络)是以卷积为核心的一大类网络,而上述介绍的LeNet、AlexNet、VGG、GoogLeNet等网络就属于CNN。
1.卷积核方面:
大卷积核用多个小卷积核代替;
单一尺寸卷积核用多尺寸卷积核代替;
固定形状卷积核趋于使用可变形卷积核;
使用1X1卷积核。
2.卷积层通道方面:
标准卷积用depthwise卷积代替;
使用分组卷积;
分组卷积前使用channel shuffle;
通道加权计算。
3.卷积层连接方面:
使用skip connection,让模型更深;
densely connection,使每一层都融合上其它层的特征输出(DenseNet)
欢迎大家补充和指正!!!