第3周学习:ResNet+ResNeXt

Part1  论文阅读与视频学习

ResNet

网络的亮点:超深的网络结构(突破1000层);提出residual模块;使用Batch Normalization加速训练(丢弃dropout)。

简单的卷积层和池化层的堆叠并不是层数越深效果越好的。由于层数的加深,梯度消失或梯度爆炸的现象越来越明显;退化问题(degradation problem)也会因为层数的加深而存在。残差模块很好地解决了退化的问题。

 两种不同残差结构的​​​​​​。左侧结构针对于网络层数较少的网络使用。右侧残差结构的参数量69732远远小于左侧结构的参数量1179648。

 实线残差结构的主分支和shortcut的输出特征矩阵shape必须相同。为实现网络内特征矩阵的转换,虚线残差结构会将输入特征矩阵的高和宽和深度都进行变换。

图中输入矩阵[56,56,64]. 通过stride更改为2将高和宽缩减为一半,再通过128个卷积核来改变特征矩阵的深度,最终输出矩阵为[28,28,128]。

 原论文中右侧虚线残差结构的主分支上第一个1*1卷积层的步距是2,第二个3*3卷积层步距是1。在Pytorch官方实现过程中是第一个1*1卷积层的步距是1,第二个3*3卷积层步距是2,这样能够在imagenet的top1上提升大概0.5%的准确率。

 对于18层和34层浅层网络结构,通过最大池化下采样后得到的输出是[56,56,64],刚好为实线残差结构所需要的输入shape,所以只在conv3_x、conv4_x、conv5_x对应的第一个虚线残差层使用了虚线残差结构;

对于50层、101层和152层深层网络结构,通过最大池化下采样后得到的输出是[56,56,64],而实现残差结构所需要的输入shape是[56,56,256],所以在conv2_x也使用了虚线残差层,但该虚线残差层只用来调整特征矩阵的深度,高和宽不变。

Batch Normalization 通过该方法能够加速网络的收敛并提升准确率。Batch Normalization的目的就是使我们的feature map满足均值为0,方差为1的分布规律。

batch size为2的Batch Normalization的计算过程。

分别计算x(1)x(1)和x(2)x(2)的均值与方差,得到我们的μ和σ2两个向量。然后在根据标准差计算公式分别计算每个channel的值(公式中的ϵ是一个很小的常量,防止分母为零的情况)。

γ是用来调整数值分布的方差大小,β是用来调节数值均值的位置。这两个参数是在反向传播过程中学习得到的,γ的默认值是1,β的默认值是0。

迁移学习的优势:能够快速的训练出一个理想的结果;当数据集较小时也能训练出理想的效果。

对于conv1、conv2的角点信息和纹理信息都是比较通用的信息,在其他网络中也同样适用,因此可以将学习好的网络参数迁移到新网络中。

常见的迁移学习方式:载入权重后训练所有参数;载入权重后只训练最后几层参数;载入权重后在原网络基础上再添加一层全连接层,仅训练最后一个全连接层。

使用Pytorch搭建ResNet并基于迁移学习训练

浅层残差结构 

深层残差结构

 网络结构

 

根据不同的参数设置相应层数的网络结构

 使用迁移学习的resnet34模型,重新赋值全连接层,花数据集有五个通道(图为猫狗数据集的两个分类的通道)。

根据迁移学习的方法训练 仅训练一个epoch正确率就达到了0.89,损失也降到了0.501。

对某一郁金香图片进行预测也达到了很好的效果。

ResNeXt

ResNeXt网络相对于ResNet网络主要是替换了block的结构。

 组卷积 Group Convolution

 下面的 block模块在数学计算上完全等价

 

 32代表每一个block采用的group数。分组卷积可以提升准确率,相对于低的group数,32个group的错误率达到最低。

 当block层数≥3时才能构建出一个有意义的block。当层数≤3时没有太大的作用。

 使用Pytorch搭建ResNeXt

 当不传入groups和width_per_group时,width为1,构建的是ResNet的深层残差网络结构;当传入参数时构建的是ResNext的block。

 在train.py中更改网络和权重,对ResNeXt50_32x4d网络进行迁移学习训练。

一轮epoch的损失已经降到了0.420

 预测的准确率也很高

 

Part 2 猫狗大战

本次训练采用的网络结构是ResNet34浅层残差结构

进行迁移学习训练,通过三个epoch的训练,准确率达到了0.979,损失也降到了0.127。

 

对于测试集的图片都有很高的正确预测率。

上传到AI研习社 “猫狗大战” 比赛的网站上的结果。

LeNet

网络的处理

输入图像 3x128x128 ==> conv1( 6x124x124 ==> 6x62x62 )

==> conv2( 16x58x58 ==> 16x29x29 )

==> conv3( 32x26x26 ==> 32x13x13 )

==> conv4( 32x10x10 ==> 32x5x5 )

==> conv5( 32x1x1 ==> 32)

==> 32 ==> 16 ==> 2

 

构建的LeNet网络结构的准确率比ResNet的准确率在该数据集的处理上要低很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值