Inceptionv3传送门:Inceptionv3
<https://blog.csdn.net/k87974/article/details/80221215>

DenseNet传送门:DenseNet <https://blog.csdn.net/k87974/article/details/80352315>

SegNet传送门:semantic segmentation-segnet
<https://blog.csdn.net/k87974/article/details/79926014>

ResNet论文地址:https://arxiv.org/pdf/1512.03385.pdf
<https://arxiv.org/pdf/1512.03385.pdf>

先来简单讲讲ResNet的网络结构。ResNet的出现是为了解决深度网络中由于层数太多,导致的degradation
problem(退化问题),作者在原论文中对比了较为“耿直”的深度卷积网络(例如以VGG为原型,不断加深层数)在不同层数的训练精度:



从图中可见,18层的卷积结构反而要比34层的准确率要高,这就是所谓的degradation
problem。而ResNet提出了一种比较新颖的解决方法,即identity mapping:在常用的卷积结构中加入一个shortcut
connection(捷径)。如下图所示:




以上图为例,对于一个input,对其做两层卷积操作(包含BN,RELU),在输出端加上卷积操作之前的数值。这里得到的输出作为后续卷积层的输入。这样一个操作便构成了Residual
module。

其效果也很显著,相比未加入residual结构的卷积网络,其准确率是随着层数加深而增加的,如下图所示:



其中作者在论文中还介绍了一些ResNet的结构变化,比如卷积核的改变:



以及相应的ResNet A(在shortcut connection的部分为了使维度一致,仅使用zero-padding,不加任何训练参数), ResNet
B(仅在需要使维度一致的情况下使用权值参数W计算Wx得到与输出一致的维度), ResNet C(在每一个shortcut
connection均使用权值参数W对shortcut
connection的输入进行训练)。不过C版的参数量相较于B版较大,且并没有较大的提升效果,并不推荐使用。

而在进行cifar10的数据集训练的时候,我这里使用的是A版,即不带参数训练的shortcut
connection。网络的输入是32x32的图片,并且经过预处理对所有点减去平均值。第一层为一个3x3的卷积层。之后一共有6n个3x3的卷积层,其中对于为{32,16,8}的features
maps分别为2n个卷积层。残差网络最后接一个全局的平均池化,以及一个10类的全连接。如果想修改成其他的网络结构(如resnet_56),只需要修改residual_blocks中的n参数即可。

其模型结构部分代码如下所示:



其代码下载地址:Architecture        
<https://download.csdn.net/download/k87974/10416469>其中包含一个之前写好的inceptionv3
和一个正在写的DenseNet.

 

如果你觉得有用,帮忙扫个红包支持一下吧:


友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信