20210927:Trick篇-Making Convolutional Networks Shift-Invariant Again

论文:Making Convolutional Networks Shift-Invariant Again

论文: https://arxiv.org/abs/1904.11486

代码: antialiased-cnns/antialiased_cnns at master · adobe/antialiased-cnns · GitHub

Trick:
Adobe出品,平移不变性,模型鲁棒性改善明显+提点


Modern-network不具备平移不变性:当输入发生微小的平移或者变换时,输出会产生剧烈变化。主要是因为网络中的下采样操作【max-pooling, avg-pooling, strided-conv】不满足下采样定理导致。如上图所示。

信号处理领域的常规做法:

(1)增大采样频率

(2)抗混叠方法

        在对信号下采样之前,需要使用低通滤波来抗混叠。但是,直接将低通滤波器插入到CNN网络中,会带来性能下降。这就是CNN中没有广泛使用低通滤波器的原因。

图像处理领域的常规做法:设置stride 1增大采样频率,但stride 1已经是极限了。所以本文着重于后者,使用抗混叠使得CNN重新具有平移不变性。

-----------------------------------------------------------------------------------------------------------------

要点记录: 

1:作者认为:Blurred-downsampling 和 max-pooling是可以共存的。

2:max-pooling分为两步:(1)密集计算最大值  (2)经典下采样

       作者的方法是在步骤(1)和(2)中插入 anti-aliasing(抗混叠操作)

3:作者提出的方案,可以运用到任意的下采样层,包括 strided-convolution【注意替换位置】

  -----------------------------------------------------------------------------------------------------------------

 论文核心: 一图胜千言

左图:shift从0-1时,输出结果完全不同

右图:shift从0-1时,输出结果差异缩小了

结论:低通滤波blur有效,但不能完全消除混叠,只是减小了混叠

-----------------------------------------------------------------------------------------------------------------

要点记录:  

1:从baseline可以看出:在使用maxpool的网络中,随着偏移量逐渐增大,准确率并不是一直下降的,而是周期性的震荡,这说明不是偏移量越大网络的效果就越差。导致这个现象的原因就是某些情况下周期性的平移不变性。当平移量为N的整数倍的时候,有些情况下仍可满足平移不变性

-----------------------------------------------------------------------------------------------------------------

 要点记录:  

1:大小网络在精度和一致性上都有提升

2:Blur-kernel 越大,一致性越好

3:Blur-kernel越大,精度不一定最高

按照作者的话就是:这个数值和网络结构相关。不过推荐使用3和5。 

因为2:相当于最近邻; 3:相当于双线性

-----------------------------------------------------------------------------------------------------------------

要点记录:  

1:平移对抗攻击还是效果挺好的

-----------------------------------------------------------------------------------------------------------------

 要点记录:  

1:如果模糊核是可学习的,精度可以保持,但一致性反而不行了

-----------------------------------------------------------------------------------------------------------------

 耗时分析:  毕竟训练速度还是很重要的

1:速度慢了

2:为了提速,可以拆分成垂直和水平两个组件,【估计也提升不了速度】

 3:作者为了速度,在网络浅层也不使用Blurred-pool

 

参考:[论文理解] Making Convolutional Networks Shift-Invariant Again - aoru45 - 博客园

里面有代码的例子,简洁明了!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微风❤水墨

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值