在上一篇博文中,我们对Detect-and-Track论文源码中模型构建部分进行了代码梳理,此篇博文我们对其采用的主干网络ResNet18进行详细分析。
目录
一、ResNet简单回顾
二、3D Mask R-CNN代码实现(/lib/modeling/ResNet3D.py)
三、一些疑问
直观来讲,ResNet实现了深层神经网络,就代码应用而言,我们首先要掌握两幅图。首先是ResNet的两种block:building block和“bottleneck” building block:
左侧的block:64通道的feature map经过3*3卷积后,通道依然是64,再通过Relu函数。再进行一次64—>64的3*3卷积。此时加上64个通道的“Shortcut”,再过Relu函数。
右侧的bottleneck:256通道的feature map经过1*1卷积后,通道数变为64(不明白具体操作步骤的建议看此篇博文:【彻底掌握卷积计算】),再过Relu函数。进行64—>64的3*3卷积,过Relu函数。再通过1*1卷积由64通道变为256通道。与Shortcut求和后通过Relu函数。
可以看到,bottleneck的通道数发生了:256—64—64—256的变化,其目的是降低网络的参数。掌握了这两个block,我们可以观察ResNet论文中搭出来的几个ImageNet框架:
以18-layer为例:
Conv1:用(7*7,64通道,2步长)对图片进行卷积,得到112*112*64的输出。
Conv2_x:先进行3*3最大池化。其中的x指的是block过程,在这里是2,意思是有两个block过程:Conv2_1和Conv2_2。这两个过程内容相同,进行3*3的64通道卷积。
Conv3_x、Conv4_x、Conv5_x:与第二阶段相同,用简单的buliding bock搭建两阶段网络。可以观察到feature map越来越小,通道数越来越多(特征图越来越厚)。
Fc:经过平均池化后,由全连接层映射到1000维,再由softmax转化为概率,进行分类。
而后三列与前三列相似,不过是将block换为了bottleneck,还增加了bottleneck数量。以50-layer中的Conv2_x为例,其中包含3个bottleneck,每个bottleneck内部都进行了256—64—64—256的通道变化。
最后一行展现了FLOPs(每秒浮点运算次数)。可以发现由于bottleneck的存在,50层和34层的参数相差无几。
代码中,ResNet18里所有的buliding bock被替换为了bottleneck bock,这点与ResNet论文中原结构不同。同时扩展为了3D版本:ResNet3D。
在 1.模型构建梳理 中的build_generic_fast_rcnn_model()第28行,调用了ResNet函数:
现在开始分析ResNet构建过程,首先看ResNet18主体函数:
定位到add_ResNet_convX_body函数,其实这个conv后面的X可以选为4和5,即最后一个阶段conv5可以省去。这里用的conv4。
在第二个阶段停止了梯度传播,至今不知道为什么……。此函数中最重要的就是add_stage函数了,这个函数直接为网络添加bottleneck block。再定位到add_stage函数,此函数用了一个循环来创建block,循环次数是用n来决定的,n都是2。
add_stage 函数创建了每一个Stage,每个Stage里包含了两个block。具体的block是通过add_bottleneck_block()构建的。
此函数使用globals()的方法调用了bottleneck_transformation()函数来构建一个block,然后将block的卷积路径结果与shortcut结果求和。定位到bottleneck_transformation():
哈哈哈,我们终于找到了最最核心、最最基本的bottleneck核心。通过它自己的注释我们就可以发现:conv 1x1、conv 3x3、conv 1x1这样的基本操作。
当然还有一个shortcut的函数:
至此,3D版本的ResNet18顺藤摸瓜完毕,整个构建过程一环套一环,思路总算清晰了。
1. 为什么要将第二阶段的梯度停掉?
2. 3D卷积部分的张量是怎么样变换的?
欢迎讨论!
到此这篇resnet18网络结构代码(resnet网络结构详解)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/22450.html