深度学习在图片处理中的应用是从图像分类开始的,所以我们要先从图像分类中了解深度学习的应用情况。
本文根据阅读大量的资料和视频资源,简单地总结了图像分类中所有经典的深度学习神经网络。
LeNet神经网络由深度学习三大巨头之一的Yan LeCun在1998提出,他同事也是卷积神经网络CNN父。LeNet主要用来进行手写字符的识别与分类。虽然LeNet早在20世纪90年代就已经提出了,但由于当时缺乏大规模的训练数据,计算机硬件的性能也较低,因此LeNet神经网络在处理复杂问题时效果并不理想。
LeNet网络结构
由上面的网络结构可以看出,网络通过一个输入Input,首先经过一个卷积层;再经过一个下采样层;再是一个卷积层;再是一个下采样层,最后是两个全连接层,经过一个softmax输出。可以说LeNet5是世界上第一个CNN网络。
项目地址:https://github.com/YouthJourney/Deep-Learning-For-Image-Process/tree/master/TensorFlow_Classification
AlexNet网络是2012年ISLVRC 2012竞赛的冠军网络,分类准确率由传统的70%+提升到80%+。它是由Hinton和他的学生Alex设计的。也是至此,深度学习开始迅速发展。
AlexNet网络结构
由上面的网络结构图可以清楚地看到AlexNet的整个网络结构由5个卷积层和3个全连接层组成,深度总共8层。
该网络的亮点在于:
(1)首次利用GPU进行网络加速训练。
(2)使用了ReLU激活函数,而不是传统的Sigmoid激活函数以及Tanh激活函数。
(3)使用了LRN局部响应归一化。对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
(4)在全连接层的前两层中使用了Dropout随机失活神经元操作,以减少过拟合。
项目地址:https://github.com/YouthJourney/Deep-Learning-For-Image-Process/tree/master/TensorFlow_Classification
VGG在2014年由牛津大学研究组VGG(Visual Geometry Group)提出,斩获该年ImageNet竞赛中定位任务第一名和分类任务第二名。有多种网络模型,比如VGG11、VGG13、VGG16、VGG19。
VGG16网络结构
使用比较多的是VGG16网络结构,包括13个卷积层和3个全连接层。
网络中的亮点:通过堆叠多个3×3的卷积核来代替大尺度卷积核,它的原理在于感受野相同(减少所需参数,提高训练速度)。
项目地址:https://github.com/YouthJourney/Deep-Learning-For-Image-Process/tree/master/TensorFlow_Classification
GoogLeNet是在2014年由Google团队提出,斩获当年ImageNet竞赛中分类任务第一名。名称中的L大写是为了致敬LeNet。
GoogLeNet网络结构
通过网络结构图可以看出网络结构图使用了一系列的Inception结构,并添加了两个辅助输出器,还有局部响应归一化处理等
Inception结构
Inception结构是并行分支结构,输入特征矩阵传入Inception结构,每个分支会得到一个输出特征矩阵,再将这些特征矩阵按深度进行拼接得到一个输出特征矩阵。注意每个分支所得的特征矩阵高和宽必须相同。
网络中的亮点:
项目地址:https://github.com/YouthJourney/Deep-Learning-For-Image-Process/tree/master/TensorFlow_Classification
ResNet在2015年由微软实验室提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。有多种网络模型,比如ResNet18,ResNet34,ResNet50,ResNet101,ResNet152。
ResNet34网络结构
该网络由一系列残差结构组成,比如ResNet由4个残差结构组成。
网络中的亮点:
残差结构
普通的网络中,如果不断增加网络层数,即使做了防止梯度消失和梯度爆炸的操作,依然会出现随着网络层数的增加得到的模型效果变差。因此引入了残差结构。
①实线残差结构,主分支输出特征矩阵和截近分支输出特征矩阵shape相同,可以相加。
②虚线残差结构,为了使主分支输出特征矩阵与截近分支输出特征矩阵的shape相同,需要在截近分支加一个1×1的卷积对输入特征矩阵降维。
Batch Normalization
批标准化,目的是使我们的一批feature map满足均值为0,方差为1的分布规律。通过该方法可以加速网络的收敛并提升准确率。Batch Size尽可能设置大一点,设置小了话结果会很差,设置的越大求的均值和方差越接近整个训练集的均值和方差,得到的拟合结果越好。
项目地址:https://github.com/YouthJourney/Deep-Learning-For-Image-Process/tree/master/TensorFlow_Classification
MobileNet网络是由Google团队在2017年提出的,专注于移动端或者嵌入式设备中的轻量级CNN网络。相比传统卷积神经网络,在准确率小幅降低的前提下大大减少模型参数与运算量。(相比VGG16准确率减少了0.9%,但模型参数只有VGG的1/32)有三个版本:MobileNetV1、MobileNetV2、MobileNetV3。
MobileNetV1网络结构
网络结构由大量DW卷积和PW卷积组成
网络中的亮点:
DW卷积和传统卷积的区别
DW卷积和PW卷积的区别
MobileNet V2网络
MobileNet V2网络是由Google团队在2018年提出的,相比MobileNet V1网络,准确率更高,模型更小。
MobileNet V2网络结构
网络中的亮点:
倒残差结构与残差结构
MobileNet V3网络
MobileNet V3网络发表于2019年,V3版本结合了V1版本的深度可分离卷积、V2版本的Inverted Residual和Linear Bottleneck、SE模块(注意力机制)。利用NAS(神经结构搜索)来搜索网络的配置和参数。
MobileNet V3-Large网络结构
网络中的亮点:
项目地址:https://github.com/YouthJourney/Deep-Learning-For-Image-Process/tree/master/TensorFlow_Classification
ShuffleNet网络是由旷视科技在2017年底提出的轻量级可用于移动设备的卷积神经网络。该网络的创新之处就在于使用PointWise Group Convolution还有Channel Shuffle,保证网络准确率的同时,大幅度降低了所需的计算资源。
ShuffleNet V1中的Channel Shuffle结构
ShuffleNet V1中的Block结构
ShuffleNet V2
在ShuffleNet V2中提出了FLOPs不能作为衡量目标检测模型运行速度的标准,因为MAC(Memory access cost)也是影响模型运行速度的一大因素,论文中提出四点来说明此问题,并最终加以改进得到ShuffleNet V2的网络结构以及它的性能测试指标。
ShuffleNet V2网络结构
ShuffleNet V2中的Block结构
项目地址:https://github.com/YouthJourney/Deep-Learning-For-Image-Process/tree/master/TensorFlow_Classification
参考资料: https://space.bilibili.com/18161609/dynamic