设为首页 收藏本站
查看: 1635|回复: 0

[经验分享] CV:object recognition(DRN)

[复制链接]

尚未签到

发表于 2017-6-22 08:54:22 | 显示全部楼层 |阅读模式
  这是微软方面的最新研究成果, 在第六届ImageNet年度图像识别测试中,微软研究院的计算机图像识别系统在几个类别的测试中获得第一名。
  本文是解决超深度CNN网络训练问题,152层及尝试了1000层。
  随着CNN网络的发展,尤其的VGG网络的提出,大家发现网络的层数是一个关键因素,貌似越深的网络效果越好。但是随着网络层数的增加,问题也随之而来。
  首先一个问题是 vanishing/exploding gradients,即梯度的消失或发散。这就导致训练难以收敛。但是随着 normalized initialization [23, 9, 37, 13] and intermediate normalization layers[16]的提出,解决了这个问题。
  当收敛问题解决后,又一个问题暴露出来:随着网络深度的增加,系统精度得到饱和之后,迅速的下滑。让人意外的是这个性能下降不是过拟合导致的。如文献 [11, 42]指出,对一个合适深度的模型加入额外的层数导致训练误差变大。如下图所示:
DSC0000.jpg
  如果我们加入额外的 层只是一个 identity mapping,那么随着深度的增加,训练误差并没有随之增加。所以我们认为可能存在另一种构建方法,随着深度的增加,训练误差不会增加,只是我们没有找到该方法而已。
  这里我们提出一个 deep residual learning 框架来解决这种因为深度增加而导致性能下降问题。 假设我们期望的网络层关系映射为 H(x), 我们让 the stacked nonlinear layers 拟合另一个映射, F(x):= H(x)-x , 那么原先的映射就是 F(x)+x。 这里我们假设优化残差映射F(x) 比优化原来的映射 H(x)容易。
  F(x)+x 可以通过shortcut connections 来实现,如下图所示:
DSC0001.jpg

  2 Related Work
Residual Representations
以前关于残差表示的文献表明,问题的重新表示或预处理会简化问题的优化。 These methods suggest that a good reformulation or preconditioning can simplify the optimization
  Shortcut Connections
CNN网络以前对shortcut connections 也有所应用。
  3 Deep Residual Learning
3.1. Residual Learning
这里我们首先求取残差映射 F(x):= H(x)-x,那么原先的映射就是 F(x)+x。尽管这两个映射应该都可以近似理论真值映射 the desired functions (as hypothesized),但是它俩的学习难度是不一样的。
  这种改写启发于 图1中性能退化问题违反直觉的现象。正如前言所说,如果增加的层数可以构建为一个 identity mappings,那么增加层数后的网络训练误差应该不会增加,与没增加之前相比较。性能退化问题暗示多个非线性网络层用于近似identity mappings 可能有困难。使用残差学习改写问题之后,如果identity mappings 是最优的,那么优化问题变得很简单,直接将多层非线性网络参数趋0。
  实际中,identity mappings 不太可能是最优的,但是上述改写问题可能对问题提供有效的预先处理 (provide reasonable preconditioning)。如果最优函数接近identity mappings,那么优化将会变得容易些。 实验证明该思路是对的。
  3.2. Identity Mapping by Shortcuts
图2为一个模块。A building block
公式定义如下:
DSC0002.jpg
这里假定输入输出维数一致,如果不一样,可以通过 linear projection 转成一样的。
  3.3. Network Architectures
DSC0003.jpg
DSC0004.jpg
  Plain Network 主要是受 VGG 网络启发,主要采用3*3滤波器,遵循两个设计原则:1)对于相同输出特征图尺寸,卷积层有相同个数的滤波器,2)如果特征图尺寸缩小一半,滤波器个数加倍以保持每个层的计算复杂度。通过步长为2的卷积来进行降采样。一共34个权重层。
需要指出,我们这个网络与VGG相比,滤波器要少,复杂度要小。
  Residual Network 主要是在 上述的 plain network上加入 shortcut connections
  3.4. Implementation
针对 ImageNet网络的实现,我们遵循【21,41】的实践,图像以较小的边缩放至[256,480],这样便于 scale augmentation,然后从中随机裁出 224*224,采用【21,16】文献的方法。
  4 Experiments
DSC0005.jpg
DSC0006.jpg

DSC0007.jpg

DSC0008.jpg

DSC0009.jpg

  本文是微软团队对深度残差网络的改进
  Code is available at: https://github.com/KaimingHe/resnet-1k-layers
  原来深度残差网络的一个Residual Units如下图所示
DSC00010.jpg
DSC00011.jpg
DSC00012.jpg
  本文分析深度残差网络主要关注于建立一个直接传播信息的通道,不仅在 residual unit 里面,对整个网络也是如此。我们发现如果是的 h(x)和f(x)都是 identity mappings,那么信息可以直接从一个单元传递到另一个单元,不论是前向还是后向传播。我们的实验结果显示,这么做使得训练更加的简单。
DSC00013.jpg

  我们做了各种尝试,但是identity mappings 效果最好 ,大道至简吧
DSC00014.jpg

DSC00015.jpg

  最后是在Large Scale Visual Recognition Challenge 2012 (ILSVRC2012) 的结果对比
DSC00016.jpg

  介绍了新的residual unit,使训练更容易, 并且improves generalization。
1 Introduction
  Residual Units:
DSC00017.jpg
上篇文章中, h(xl)=xl,是输入,f是Relu,x(l+1)是输出。如果h(xl)和f(yl)都是identity mappings, 信息就会直接从shortcut直接传输。
为了明白skip connections的作用,文章进行了分析与实验,发现identity mapping h(xl)=xl可以取得最快的error reduction和lowest training loss(参与实验的有 scaling,gating, 1x1convolutions)。
这里使用ReLU和BN放置于weightlayer前,作为新的residual unit,如下图:
DSC00018.jpg
新的结构更容易训练也更容易泛化,使用它建立了1001层网络。
另外在上篇文章中200层网络就开始过拟合,这里对其进行改进。
2 Analysis of Deep Residual networks
  如果f也是一个identity mapping,那么其结构可以写成这样:
DSC00019.jpg
上式展现了ResNets两个特性:
1. 模型是以残差形式存在的
2. 这是以相加的形式存在而plain network是以矩阵相乘的形式存在的
上式的反向传播形式ε是loss function:
DSC00020.jpg
可见∂ε∂xl分为两部分其中∂ε∂xL保证了信息直接传递回任何浅层单元l。
并且可以看出其∂ε∂xl 一般不会为0,因为 DSC00021.jpg 一般不会一直为-1,这就意味着某一层的梯度可以非常小但是一般不会为0.
3 On the importance of identity skip connections
  如果我们做一点小的调整,加入一个比例因子λ:h(xl)=λlxl那么:
DSC00022.jpg
DSC00023.jpg
反向传播变为:
DSC00024.jpg
  那么对于深层网络,如果λ大于一就容易成指数爆炸,如果小于1就容易弥散,那么我们原本的shortcut就会被堵塞,反向传播更多的经过权重层,导致优化困难。
如果将h(xl)换做更复杂的变换,如1x1convolution,那么其中的第一项就会变为∏L−1i=lh′,h’代表h的导数,这也可能堵塞训练过程。
3.1 Experiments on Skip connections
DSC00025.jpg
DSC00026.jpg
DSC00027.jpg
事实上, shortcut-only gating和1x1包含原来的identity shortcut, 其表达能力应该更强,但是造成其结果degradation的原因是优化问题,而非representational abilities。

4 on the usage of Activation Fuctions
4.1 Experiments on activation
DSC00028.jpg
Post-activation or pre-activation?
原始的residual unit的设计中,activation xl+1=f(yl)对于两个分支都有影响,我们设计了一个非对称的结构,只对F分支,也就是:
DSC00029.jpg
这就等于pre-activation形式了:
DSC00030.jpg
这里设置了fig4中的de两种方案,d的提高不明显,可以看出BN和ReLU更配,他俩适合在一起,table3更说明了这个问题。

4.2 Analysis
  我们发现pre-activation主要影响有二:
1. 优化更加简单,f成了一个identity mapping(图1)
2. BN提高了regularization,防止过拟合。
但是我们也发现,当层数不是那么多,比如图6中的164时(==|),原本的ReLU的影响可能没有那么大,大部分的yl都是整数,其反向传播公式越接近:

但是如果到了1000层,非正数的情况越来越多,上式不再合适。
4.3 比较
DSC00031.jpg
DSC00032.jpg

  这个是全明星阵容的paper,提出了深度模型另一个重要的需要考量的纬度:cardinality。(用简单的方式做不简单的事情)
  众所周知,提高模型的performance,最直接的就是从模型的depth和width入手,即加深网络的深度,让网络变得更胖点(宽度,即layer的filter的数目)
  但是这会有问题:1)网络越深,越难训练;2)网络越宽,模型复杂度越高,计算量越大,需要显存越多。
  那有没有办法,在保持模型现有的复杂度的情况下,提高模型的学习能力?
  该论文从这个角度出发,提出了考量模型的另一个纬度:cardinality(即模型split-transform-merge的集合的数目,笔者理解就是一个block里面,branches或者paths的个数)
  先看图: DSC00033.jpg
  fig1的左图就是今年火爆的resnet的一个block的经典形式,而右图是该论文提出的ResNeXt (suggesting the next dimension) 的一个block。
  很显然resnet的cardinality为2(ResNets [13] can be thought of as two-branch networks where one branch is the identity mapping.),而ResNeXt的cardinality设为C(这里不包括identity mapping)。
  从图中看,ResNeXt还是很容易看懂的,前提是,ResNeXt做了两个假设:
  i) if producing spatial maps of the same size, the blocks share the same hyper-parameters (width and filter sizes),
  ii) each time when the spatial map is downsampled by a factor of 2, the width of the blocks is multiplied by a factor of 2. The second rule ensures that the computational complexity, in terms of FLOPs (floating-point operations, in #of multiply-adds), is roughly the same for all blocks.
  基于这两个假设(rules),we only need to design a template module, and all modules in a network can be determined accordingly. So these two rules greatly narrow down the design space and allow us to focus on a few key factors. The networks constructed by these rules are in Table 1.
DSC00034.jpg

  但是有一个问题,如果粗暴地按fig1的右图来设计模型(prototxt文件)时,会很繁琐,而且没有经过优化,使得模型的训练时间变长,
  那么怎么优化呢?
  骚年还记得12年的Alexnet么,里面的group convolution恰恰可以做这个优化问题,见下图:
DSC00035.jpg

  fig3也很容易看懂,关键在于理解group convolution而已。见下面的解释:
  In a group conv layer [23], input and output channels are divided intoC groups, and convolutions are separately performed within each group.
  是不是顿时觉得在two rules的前提下,ResNeXt非常简单,既没有加深模型的深度,又保持模型相同(差不多)的复杂度。
  理解了fig3,就可以理解整个ResNeXt了。
  那么它的效果如何?
DSC00036.jpg

  哈至于ResNeXt的perfomance以及和Resnet做对比的实验等等,笔者在这里就展开详细说了,建议各位看论文去哈,
  (论文非常值得深读,比如ResNeXt的cardinality是怎么来的,通用的ResNeXt是怎样的(也就是去掉上面的two rules),和以往的模型有哪些异同,group-convolutioin的好处在哪里,如何在coco上做detection,split-transform-merge的本质是什么? 等等)
  最后附上一个论文的截图,关于怎么设caridinality的参数C

  相关博客:
  http://blog.csdn.net/zimenglan_sysu/article/details/53239837
  http://blog.csdn.net/cv_family_z/article/details/51919007
  http://blog.csdn.net/bea_tree/article/details/51817142
  http://blog.csdn.net/u012816943/article/details/51702520
  http://blog.csdn.net/cv_family_z/article/details/50328175

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-386694-1-1.html 上篇帖子: (转) Awesome 下篇帖子: WEB网络问题的排查【转】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表