Making Convolutional Networks Shift-Invariant Again

论文开头直接指出,现在的卷积神经网络,没有平移不变性,输入的微小偏移或平移都可能导致输出发生剧烈变化。作者指出,神经网络里面的下采样,例如max-pooling, strided-convolution 和 average-pooling 没有考虑采样定理,下采样后,导致高频信号混叠到低频信号中,最直观的影响就是,在输入的RGB图片中,及其微小的偏移,导致预测结果差别很大。

所以作者的提出,在max-pooling之前,先经过一个低通滤波器。直接分析作者的官方代码。

1、antialised-cnns 中的带blurePool 核的alexnet结构

2、BlurePool 核心步骤

  1. 一维卷积核
python 复制代码
filt_size = 4
if(self.filt_size==1):
   a = np.array([1.,])
elif(self.filt_size==2):
    a = np.array([1., 1.])
elif(self.filt_size==3):
    a = np.array([1., 2., 1.])
elif(self.filt_size==4):    
    a = np.array([1., 3., 3., 1.])
elif(self.filt_size==5):    
    a = np.array([1., 4., 6., 4., 1.])
elif(self.filt_size==6):    
    a = np.array([1., 5., 10., 10., 5., 1.])
elif(self.filt_size==7):    
    a = np.array([1., 6., 15., 20., 15., 6., 1.])

这个是帕斯卡三角形,一个规则就是每个数=上一行"左上+右上"两个数之和,同时也是二项式展开系数(a+b)n(a+b)^n(a+b)n,为什么么要用这个,是因为,1、这个具有对称性,不会产生相位偏移;2、中间大,两边小,天然平滑;3、趋近高斯,是低通滤波器

  1. 二维卷积核
python 复制代码
filt = torch.Tensor(a[:,None]*a[None,:])

a[None, :] 后 ,
[1
 3
 3
 1]
 变成:
 [[1]
 [3]
 [3]
 [1]]
 
a[None, :] 后,
[1 3 3 1]  变成 [[1 3 3 1]]

(4,1) * (1,4) 根据广播机制,filt(i,j)=a(i)⋅a(j) 得到二维卷积核:
1 3 3 1
3 9 9 3
3 9 9 3
1 3 3 1

这个模糊核中心大,四周小,完全对称
  1. 应用上面的二维卷积核
python 复制代码
self.padnn.ReflectionPad2d
F.conv2d(self.pad(inp), self.filt, stride=self.stride, groups=inp.shape[1])

stride = 2

上面是一个正常的卷积,stride=2,实现了下采样,当时在下采样的同时,使用二维的模糊核作为一个低通滤波器,进行滤波。

3、论文核心思路理解

之前不知道在哪里看过说,不管论文的理论多么复杂,最初的想法一定是直观的,要想理解论文,需要重复的理解作者当初面对的直观的问题,即
maxpool 不满足奈奎斯特定理,导致高频信号混叠到低频信号

那就,先去直面理解maxpool的问题。

之前从来没有怀疑过maxpool的有什么问题,还觉得很好用,这次先找一些直观的例子来证明,maxpool有问题。

1、maxpool后高频折叠到低频的例子

原始图片高密度的黑白黑白交替,因此是一个非常高频的图片,使用maxpool之后,所有的高频信号都折叠到了低频,导致maxpool只有的图片,骤然变成一个非常低频的图片,完全丧失了高频信息(细节)

下面我们来看一个,maxpool之后,满足奈奎斯特定理的。

2、maxpool满足奈奎斯特定理

maxpool时,是每次采样要跳过stride个像素,当stride=2时,我们希望,这次采样落到A黑条上,下次采样要落到B黑条上,这样高频保留了,所以黑条纹的宽度>= 2xstride,也可以这样理解,黑条越宽,表示越低频,黑条越窄,表示越高频,要想maxpoo满足奈奎斯特定理,就是不能有太多高频。

3、maxpool 破坏平移不变性

相关推荐
Hello server1 小时前
DeepSeek Harness 深度体验:把「万物皆插件」做到极致的 AI 编程 Agent
人工智能
驴友花雕5 小时前
【花雕动手做】行空板 K10 系列实验之人工智能语音识别小车的10个参考案例
人工智能·单片机·嵌入式硬件·语音识别·行空板 k10 系列实验·花雕动手做·小车的10个参考案例
火山引擎开发者社区7 小时前
DeepSeek-V4 Pro 发布,veStack Day 0 完成模型适配
人工智能
2501_926978337 小时前
AGI 的四种瓶颈:资源型还是发现型--以及DSH的位置
人工智能·经验分享·笔记·ai写作
Q463913497 小时前
线下销售复盘难落地,AI 会话设备能帮上啥忙
人工智能·自然语言处理
ebok.7 小时前
国产大模型落地业务系统的优选载体:京微智枢信创 AI 业务支撑平台
大数据·人工智能·低代码·ai
wujian83117 小时前
怎么用文心生成word文档?从格式错乱到智能导出,AI导出鸭让创作再无后顾之忧
人工智能·ai·word·豆包·deepseek·ai导出鸭
动物园猫8 小时前
猪危险行为目标检测数据集:3类别、5,000+张图像 | 目标检测
人工智能·目标检测·计算机视觉
ai产品老杨8 小时前
AI视频分析并发优化完整流程:解决多路视频并发不足与高延迟排查指南
人工智能·音视频
why技术8 小时前
AI 写的文章,可能都带着手敲一遍都去不掉的“隐形水印”。
前端·人工智能·后端