近期同时在进行的两个深度学习项目都需要用到3DResNet模型,本着不做调包侠的心态,还是要好好把模型的原理看一看的。

1、ResNet结构理解

首先先理解一下二维的ResNet吧。

ResNet又名残差结构,残差连接等。何恺明大佬提出这个概念是为了解决深层网络的梯度消失和梯度爆炸的问题,以及收敛深层网络的“退化”问题,从而可以使得网络层数变得更深。(常见层数有18-34-50-101-152层)相较于之前的层数大多在10~20层的网络来说,无疑是在层数上有了非常大的突破。

残差结构的原理,主要是把输入输出的映射从F(x)转换到了H(x)=F(x)+x上,这样做的目的,个人理解是:在网络层数足够深的情况下,在接近网络输出端的层结构中,其上一层的输出x很可能已经无限逼近于最优解,这个时候对于此层的参数调整,就可以给网络一种选择:即把F(x)置0,或者赋予很小的权重,让此层的结构发挥的作用是将上一层的输出完好地送至下一层,保留最佳输出的结果,也就是所谓的“恒等映射”。(identity mapping)

而,传统的卷积层结构来说,要调整至这样一种“不怎么改变输入的”参数结构,显然是不如直接将F(x)置为0来的容易的。本质上这是一种模型复杂度的降低(来自李沐老师的观点),即给网络以一个比较“手动”的引导,去让网络的参数能够逼近于你想要的结构。个人认为,这是残差连接能够加深网络层数的一个比较可以解释得通的理由。

另外,这样一种“学习恒等映射”的方法,它的F(x)也未必一定要完全是0,在输入足够趋近最优解的情况下,可以理解为一种“小幅的,进一步促进输出逼近最优的作用”,像是在训练的尾声阶段把lr调的非常小,那种意思。

2、3DCNN的理解

ResNet3D = ResNet+3DConv 所以有必要先理解一下3DConv的基础知识

3DConv与2DConv的区别,首先就体现在了卷积核的参数上。

2DConv的卷积核尺寸一般为:[in_channels,out_channels,W,H]

3DConv的卷积核尺寸一般为:[in_channels,out_channels,W,H,T] T在这里一般是指,需要连续考虑多少帧的参数。

以下图为例:

3DConv的shape讨论:对于3DConv来说,他的输入、特征图都从2DConv的单张featuremap变成了一个在时序上堆叠起来的“series feature map”,而每一个“通道”可以理解为图中的一整“块”,如C2中就可以说是有“两个通道”,因为C2是由H1经过了两个不同的卷积核而输出的。而这一个“通道”中,包含的是一个“series”的feature map,比如第一层3DCNN层中,卷积核的WHT参数分别为[7,7,3],表示卷积核的尺寸为7*7,且每一次需要考虑三个帧的信息。H1中一个特征为7帧,那么经过7*7*3的WHT参数的卷积核之后,就会输出一个54*54*5的特征map,所以这样就可以理解,C2中的54*34*23*2的尺寸的来由。

同样地,对于第二层7*6*3的卷积层,三个不同的卷积核分别卷积S3层的feature series map,得到13*6的shape,注意这里,输出的通道数和卷积核的个数是不相等的,这点与2DCNN不同。就是经过在两个通道卷积后,不是像2DCNN那样把他们的结果叠加起来,而是分别映射到两个通道中,这点是导致两者不同的原因。相当于把两个通道“分开来算”

最后一层C6的卷积层,尺度应该是7*4*78*128,也就是2DCNN中inchannel为78,outchannel为128,这样去卷积。最后输出128个1*1的featuremap之后,再用全连接层连起来输出即可~

总体来看,3DConv相对2DConv来说,最大的区别就在于所有的输入,特征,都变成了时序性的,也就是提升了一个维度。经过这样的时序上的卷积,可以有效地提取输入以及特征图中的时序信息,帮助网络更好的理解视频之类的输入。不过,文章中提到的架构,可以看到第一个Hardwired层是去手动地提取了光流,梯度等特征,并不算是一个“端到端”的结构。

而ResNet3D,只是用残差结构将一个个的3DConv模块连接起来,通过实验科学组成一个效果比较好的网络,感觉应该没有太多需要讲的地方,如果后续有新的理解,前来填坑~

Reference:

(6条消息) ResNet详解——通俗易懂版_sunny_yeah_的博客-CSDN博客_resnet

(6条消息) 残差resnet网络原理详解_mao_feng的博客-CSDN博客_resnet

3DResNet 学习记录相关推荐

  1. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  2. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  3. springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis

    本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...

  4. 【Cmake】Cmake学习记录

    Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...

  5. ASP.NETCore学习记录(一)

    ASP.NETCore学习记录(一) asp.net core介绍  Startup.cs  ConfigureServices  Configure  0. ASP.NETCore 介绍 ASP.N ...

  6. Android开发技术周报176学习记录

    Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...

  7. add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX

    Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几节关于tensorboard的学习记录. https://www.jianshu.co ...

  8. java之字符串学习记录

    java之字符串学习记录 public class StringDemo { public static void main(String[] args) { //静态初始化字符串 String s1 ...

  9. Redis的学习记录

    Redis的学习记录 1.先导了解 1.1 NOSQL概述 1.1.1 为什么要用NoSql? 1.1.2 NoSql了解 1.1.3 NoSql特点 1.1.4 NoSQL的四大分类 2. Redi ...

最新文章

  1. 赛门铁克《勒索软件与企业2016》调查报告:企业将面临更多勒索软件威胁
  2. 360 开源企业级 Kubernetes 多集群管理平台 Wayne
  3. 监听对象中某一项的值_Vue中watch的详细用法
  4. word编辑论文技巧
  5. 华为云数据库亮相下一代数据技术发展论坛,助力“数字一带一路”
  6. 请你努力成为一名优秀的软件工程师,拒绝做优秀的码农!
  7. 10位photoshop顶尖设计大师
  8. Cover Protocol发起新提案,为Nexus Mutual提供保险覆盖
  9. 纳德拉:微软正计划“终极移动设备”
  10. [leetcode] 7. 整数反转
  11. [转]魔兽世界私服Trinity,从源码开始
  12. python 字典(数据结构)
  13. 高通MSM8953平台调整通话音量
  14. 什么可以有助睡眠,助睡眠的生活好品
  15. 阻止野猪入境 丹麦在德国边境开始建设边境围栏
  16. 买就赚到的以色列人工智能
  17. windows PC/SC 常用Scard前缀函数说明
  18. 多用途数据主导“物联网未来”的实施
  19. GIF录制编辑工具(GifCam)
  20. Ubuntu安装多用户免密登录Jupyterhub

热门文章

  1. android漂亮的进度条,Android编程之NumberProgressBar:漂亮的Android进度条
  2. linux自动巡检截图,Linux系统巡检shell脚本
  3. 如何进行并行编程:从并行矩阵运算开始
  4. 全面edge浏览器体验优化
  5. Zeal离线文档下载速度慢的解决方案(跟着做就没错)
  6. 如果没有母亲-八年级作文
  7. 【转】当今在世智商最高的十大天才
  8. NoSQL数据库入门与实践答案----第二章
  9. 在任务栏直接锁定计算机,win7系统怎么把我的电脑图标锁定到任务栏
  10. sass node-sass sass loader