经典计算机视觉论文笔记——《Going Deeper with Convolutions》

来源:互联网 发布:php require 一起用 编辑:程序博客网 时间:2024/05/30 04:17

        2014年imageNet挑战赛冠军,Inception系列的开创者,caffe作者贾扬清,google研发……使这篇论文成为深度学习与视觉领域的必读论文,两年时间引用量过千。私以为文中理论部分有点啰嗦,反复强调sparse structure。但精彩之处还是其提出的一种特殊的inception网络结构。

技术概括

  • 提出了一种新型的网络组建单元Inception。其特点是将几种操作并行化,最后再将这几种操作的输出concatenation为一个多通道图像,作为下一层的输入。这几种操作包括:1*1,3*3,5*5的多分辨率的卷积操作,外加一个max pooling操作。
  • 提出了一种多loss的网络结构,在网络的中间部分就外接分类的softmaxloss,所有loss都会加权累加到一起作为总loss进行bp。

一些值得反思的细节

  • 计算复杂度分析。GoogleNet即为Inception V1(后续还有V2-V4),共22层,比AlexNet多了14层,但参数少了12倍,大约500万个参数,caffemodel只有40多M,适合内存资源较少的场景。一次预测需要15亿次加乘。通过对Inception单元的合理组织,运算速度也会有2-3倍的提高(文中没有说得太清楚,估计计算速度不是强项)。
  • 大量使用了NIN的1*1卷积结构。这种结构的好处就是可以降维减参。
  • 文中提出了参数过多带来的影响:过拟合、计算负担过重。所以要减参,即上下两层的连接不要dense,要sparse。当然卷积就是一种sparse structure。但作者认为还不够sparse,所以在每个patch进行convolution时,通过1*1kernel,让连接变得更sparse。这种结构的坏处也很明显,就是感受野更小更局部化了,所以又加入了多分辨率策略,让1*1,3*3,5*5的kernel并行处理,覆盖各种范围。另外在3*3和5*5的convolution之前先做了一下1*1的convolution来降维减参。作者认为虽然参数变少了,连接变sparse了,但多层的stack结构是可以逼近dense结构的表达能力的。
  • 采用了NIN的average pooling层,但最后还是接了一个全连接层,这样会方便fine-tuning。比如待分的类别个数变了,NIN把倒数第二层的feature maps的个数写死了,就没法fine-tuning了。
  • 中间加的分类器,只训练时用,预测时不用。
  • 训练时的技巧:不同的采样方式;不同分辨率的crops;图像变换扩充。
  • 预测时的技巧:不同采样方式训练7个不同分类器;多种不同crops——尺度4*正方形crops3*随机crops6*水平flips2=144;7个分类器*144个crops=1008个结果做平均。
  • 目标检测时,框架同R-CNN,但改进了proposal部分,增大box的大小,增加proposal的覆盖率。没用bbox regression。

借鉴之处

  • 新的网络结构的设计就是要遵循两点:网络更深,但同时参数量不爆炸。全连接显然是不行的,只能采用稀疏连接的方式,而稀疏连接就是各种卷积的变形与stack了。
  • 使用ensemble一般都会提高精度。但计算量提高。比如文中1008倍的计算压力,在并发量较大的预测时显然是行不通的。


0 0
原创粉丝点击