【模型解读】从“局部连接”回到“全连接”的神经网络
09
这是深度学习模型解读第9篇,本篇我们简单介绍非局部神经网络。
言有三
毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人
作者 | 言有三(微信号:Longlongtogo)
编辑 | 言有三
与全连接神经网络相比,卷积神经网络在每一层是局部的,采用了较小的卷积核,感受实际对应到原始图像空间较大的区域,而且随着网络的加深,感受野增加。但是感受野毕竟不是全图,在降采样的过程中也会丢失信息。
那为什么还要这么做呢?首先这是计算量的限制,卷积核越大计算量越大,而且会存在非常多的冗余。另外,这也是模仿人眼的分层视觉理论,即不断加深抽象层级。
虽然网络结构从全连接进化到局部连接后才有了现在的发展,但并不意味着拥有更大视野的全连接就没有用了,至少Non-local networks又开始重新思考这个问题。
1
什么是Non-Local Networks
这背后的核心思想是non-local,说到non-local又得提一下经典的non-local means滤波算法。
假设输入是f,输出是g,一个经典的局部滤波算子如上,它是只在一个邻域内的加权平均,所以称之为local滤波方法,实际上上面是双边滤波的公式。
而non-local顾名思义,将这个邻域扩展到全图。如上图p作为中心像素,q1,q2,q3对p的滤波都有贡献,实际上图像上任意一个点都有贡献。
借用论文中的公式如上,很简单,关键就在这个f如何定义。传统的最好的图像降噪算法BM3D,就是non-local means方法,它通过计算不同图像块的相似性来获得权重。
2
为什么需要Non-local
在正式说如何实现时,先来总结一下为什么我们需要这个non-local连接。
首先我们要看现在的CNN是怎么做的,为了能够捕捉到更大的感受野,现在的CNN是通过不断加深网络,逐步增加感受野的方案,RNN则是通过循环的方式处理序列输入(如视频帧序列或者图片上一行一列等空间序列),从而融合非局部的信息,它们都有几个缺点。
(1) 计算效率不高,这是肯定的,明明可以一步到位,却去增加了网络深度。
(2) 感知效率不高,虽然感受野可以通过深度增加,但这个增加是有限的,实际上感受野并没有理论计算出来那么大,很多的长程的信息依然获取不到。
(3) 增加优化难度,我们知道随着网络的加深,网络的优化会面对各种梯度问题。
而更大的感受野对于视频图像中的场景理解,跟踪,语音识别等时序问题都是必要的。因此我们需要一个Non-Local连接,而non-local也有理由表现得更好,就好比Non-Local means方法比local filter方法去噪更强,dense crf比普通的crf更强一样。
3
怎么实现
首先要说明的是,non-local可以是只在图像空间上的non-local,也可以是不同时间帧上的non-local,甚至是两者的融合,不过理解起来都是一样的。
上面展示的是一个视频数据的block,首先我们要注意,non-local-block可以作为基础的block嵌入到现有的模块,因为它的输入与输出相等,都是T*H*W*1024。
其中1024是通道数,T就是时间帧数。⊗是矩阵乘法,⊕是逐像素相加。
我们看上面的图,f的操作,对应的就是输入T*H*W*512与512*THW矩阵相乘输出THW*THW的模块。可以看到,f(.)的操作就是每个通道上每个点的特征向量进行内积,空间信息保留了下来,输出还是HxW大小。
另外上面的设计采用了残差的方式,所以可以轻松地嵌入现有的任何网络。
4
总结
一如既往,咱们没有贴实践效果。从理论猜想和作者的实验结果都可以看出,对于视频分类non-local比对应的local网络效果会更好,这是必然的,视频中的主体空间移动速度非常快,如果没有大的感受野未必能很鲁棒的捕捉一个动作到底是跳高还是跳水。
依据作者们的结论,在网络浅层效果会更好,我想这也是可以理解的,毕竟随着网络深度增加,感受野增加了。
更多的实践,放心,随着咱们这个系列接近尾声,实践也快来了,不过你可能需要补一补以前的知识了。
参考文献
【1】Wang X, Girshick R, Gupta A, et al. Non-local neural networks[C]//The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2018.
十月开始,我们有三AI学院开启了“稷”划和“济”划,帮助想入行以及想取得更多实战经验的同学。内容覆盖从自动驾驶到美颜直播等领域的实战项目,从图像基础到深度学习理论的系统知识,欢迎关注。
如果想加入我们,后台留言吧
微信
Longlongtogo
公众号内容
1 图像基础|2 深度学习|3 行业信息
模型解读