Striving For Simplicity-the All Convolutional Net 笔记

链接

https://arxiv.org/abs/1412.6806

摘要

大多数执行目标检测任务的卷积神经网络架构基本都遵循 ( L a y e r c o n v − L a y e r m a x p o o l i n g ) × n + L a y e r f u l l y c o n n e c t i o n × m (Layer_{conv} - Layer_{maxpooling}) \times n +Layer_{fullyconnection} \times m (LayerconvLayermaxpooling)×n+Layerfullyconnection×m 这样的架构,本文对目前从小图片中进行目标检测的几种性能较好的网络进行重新评估,提出了各种组件是否为必须组件这样的提问。结果发现max-pooling层是可以通过 s t r i d e > 1 stride \gt 1 stride>1 的卷积层来实现的,而且不会带来精度的降低。据此提出了全卷积网络。
为了分析网络,还引入“反卷积方法”来把网络特征可视化。

去掉Pooling层的思路

  1. 比方 w i n d o w = 2 window=2 window=2 的Pooling层,直接去掉,然后在它前面的Conv层用 s t r i d e = 2 stride=2 stride=2 替代,结果是识别的准确率会稍微降低(为什么?
  2. 用用 s i z e = 3 , s t r i d e = 2 size=3, stride=2 size=3,stride=2 的Conv层替代 w i n d o w = 3 , s t r i d e = 2 window=3, stride=2 window=3,stride=2 的Pooling层,不存在识别准确率降低的问题,但是会导致参数增加(可能会增加过拟合的可能?注意:除非是参数矩阵 θ \theta θ 有约束条件,否则用Conv层替换Pooling层会增加参数间的依赖(It is worth noting that replacing pooling by convolution adds inter-feature dependencies unless the weight matrix θ \theta θ is constrained)

实验的情况

一般来讲,ALL_CNN_LAYERS的表现更为突出,就是上面提到的第二种情况

结论

  1. 一个只含有Conv层和Subsampling层的网络性能和含有maxpooling层的网络相比,可能差不多甚至更好;
  2. 和之前的观察不一致的是,在网络里显式增加(最大)池化层并不总是提升性能,尤其是对于对于其训练的数据集来说,用卷积层就能学到所有的必要的不变量的网络。

可以借鉴的思路

在Tiny YoloV3里面的MaxPooling Layer里面用 w i n d o w = 2 , s t r i d e = 2 window=2, stride=2 window=2,stride=2 的Conv层替换掉,看看效果(两方面,一方面是准确率,另一方面是推理的时间有没有增加)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值