Non-local Neural Networks
Non-local Neural Networks是何凯明大佬组最近发表的一篇文章。一作Xiaolong Wang,本科毕业于华南农业大学,研究生是中山大学,博士去了CMU,然后做出了这么好的工作,可以说非常励志了。
类似于Batch Normalization,这篇文章也提出了一种不改变输入输出大小的层,可以直接集成到现有的网络结构中。思想非常简单,却在各大数据集上都取得了良好的效果。
简介
捕捉大范围内数据相互之间的依赖关系是一个很重要的问题。对于序列化的数据,比如语音、视频等等,使用循环神经网络一直是比较主流的做法。对于图片来说,我们通常使用较大的卷积核来捕捉较远距离的像素之间的关系。
然而,循环神经网络或者传统的卷积神经网络都只是在其时间或空间的很小的邻域内进行捕捉,却很难捕获到更远的位置的数据的依赖关系。
这篇论文中,作者提出了一种Non-local层,可以很好地捕捉到较远位置的像素点之间的依赖关系。Non-local mean其实是一种传统计算机视觉方法。作者将其扩展到了神经网络中。
上图是该层训练后的一个效果图。箭头指向的点就是算法认为和箭尾的点关联度最高的一些点。可以看出,对于视频分类任务,人物的动作、球的位置等点的信息之间是有依赖关系的,而这种依赖关系被Non-local层很好的捕捉到了。
算法简介
Non-local的思想十分简单。以一个视频片段为例,假设我们要考虑的某一个帧中的某一个点为xixi,该视频片段里所有的像素点为xjxj。non-local的最终输出为:
这里的f(xi,xj)f(xi,xj)可以看作是两点之间的关联系数,g(x