由于在寒假学习目标检测的时候,在yolo,rcnn,SSD等目标检测的学习过程中,其backbone是是用到了图像分类网络,因此就要系统的学习下相关的经典的图像分类网络。以便更好的理解学习目标检测,为课题提供强有力的支撑。
本次记录算是对这周学习网络的一个总结,主要针对各个网络有何亮点以如何实现的进行一个回顾。
AlexNet分类网络来自于文章《ImageNet Classification with Deep Convolutional Neural Networks》,是2012年的ImageNet竞赛中来自多伦多大学的Alex Krizhevsky等人取得冠军的一个模型整理后发表的文章。
该网络的亮点在于:
LeNet分类网络来自于LeCun在1998年发表的文章《Gradient-Based Learning Applied to Document Recognition》(基于梯度的学习应用于文档识别)
其网络结构为
VGG分类网络在2014年由牛津大学著名研究组VGG(Oxford Visual Geometry Group)提出,该团队斩获2014年ImageNet挑战赛分类第二(第一是GoogLeNet),定位任务第一。来自于论文《VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION》
其网络中的亮点:
GoogLeNet分类网络来自论文《Going deeper with convolutions》,其在2014年由Google团队提出,斩获当年ImageNEt竞赛ClassificationTask(分类任务)第一名
网络中的亮点:
Inception模块它的主要思想是设计一种效果好的局部网络拓扑结构(local network topology),也就是在网络中嵌套网络,最后把这些网络堆叠成一个网络,示意图大概是这样的:
左边是初期版本,这里使用三个不同的patch size, 1 × 1 1 \times1 1×1, 3 × 3 3\times3 3×3, 5 × 5 5 \times5 5×5,主要是为了避免patch alignment问题和减少计算量。。由于池化层在卷积神经网络中的作用往往都是起关键作用的,所以Inception model里也加入了一个池化层。但这种设计不是必须的,只是为了更方便。
但是初级的版本有个很大的缺点就是参数量和计算量会很大,而且将三个卷积层和一个池化层的输出拼接后的feature map数量会变得很大,随着网络层数的增加,模型会变得很复杂,变得难以训练。以GoogLeNet的3a模块为例,输入的feature map是28×28×192,3a模块中1×1卷积通道为64,3×3卷积通道为128,5×5卷积通道为32,如果是左图结构,那么卷积核参数为 1 × 1 × 192 × 64 + 3 × 3 × 192 × 128 + 5 × 5 × 192 × 32 1×1×192×64+3×3×192×128+5×5×192×32 1×1×192×64+3×3×192×128+5×5×192×32,而右图对3×3和5×5卷积层前分别加入了通道数为96和16的1×1卷积层,这样卷积核参数就变成了 1 × 1 × 192 × 64 + ( 1 × 1 × 192 × 96 + 3 × 3 × 96 × 128 ) + ( 1 × 1 × 192 × 16 + 5 × 5 × 16 × 32 ) 1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32) 1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32),参数大约减少到原来的三分之一。同时在并行pooling层后面加入1×1卷积层后也可以降低输出的feature map数量,左图pooling后feature map是不变的,再加卷积层得到的feature map,会使输出的feature map扩大到416,如果每个模块都这样,网络的输出会越来越大。而右图在pooling后面加了通道为32的1×1卷积,使得输出的feature map数降到了256。GoogLeNet利用1×1的卷积降维后,得到了更为紧凑的网络结构,虽然总共有22层,但是参数数量却只是8层的AlexNet的十二分之一(当然也有很大一部分原因是去掉了全连接层)。
这个是在深度方向上进行拼接
ResNet分类网络在2015年由微软实验室提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割,识别等领域里得到广泛的应用。
网络中的亮点:
在上图中,有链接线的就是残差结构,由一系列的残差结构组成,最后来一个平均池化和全连接层组成 resnet网络结构
文章指出,随着网络层数的增加,梯度消失和梯度爆炸会越来越明显。因此可以使用残差结构解决退化问题,来加深网络来获得更好的结果。
左边的残差结构适用于网络层数较浅的网络,也就是ResNet-34,右边的适用于ResNet-50/101/152.
这个是进行一个相加操作,不是拼接操作
这里是对ResNet网络有一个详细的描述,比如在34-layer中, conv2_X有3层残差结构,conv3_X有4层残差结构等。
但是为什么有的是实线,有的是虚线呢?
对于我们实线的残差结构来说,其输入的shape和输出的shape相同,可以直接相加。而虚线的残差结构不同,就拿上图来说,输入的是[56,56,64],而输出的是[28,28,128]。第二个不同点是 残差结构中的第一层的stride不同,实线是1,虚线是2,就是为了改变形状。
这里需要注意的是在50-layer,101-layer,152-layer中conv2_x的第一层也是虚线残差层,是仅调整特征矩阵的深度,高度和宽度不变。
BatchNormalization的目的是是我们的一批(batch)feature map满足均值为0,方差为1的分布规律
链接:https://blog.csdn.net/qq_37541097/article/details/104434557
本博文主要对一部分图像分类网络的亮点,以及主要结构进行了汇总,并没有将这些网络联系起来,等把剩下的经典图像分类网络学完之后,就要仔细思考下,网络之间有何联系?为什么要这样改进?以及是否还有改进的余地。争取写一篇论文综述。
哔哩哔哩up主 霹雳吧啦Wz
AlexNet分类网络
LeNet分类网络
VGG分类网络
GoogLeNet分类网络
ResNet分类网络