Tianwen-AI / Non_Local_Net_TensorFlow

TensorFlow implementation of Non-local Neural Network

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

《Non-local Neural Network》复现

  • Non-local Neural Network

  • 作者公开的源代码-caffe

  • 传统的卷积操作一次只是处理的一个局部邻域(local neighborhood),没有考虑到其他位置的像素对其输出的影响。这篇文章呈现的non-local操作能够捕获远距离的像素之间的依赖关系(long-range dependencies

  • non-local公式如下: $$ y_i = \frac{1}{C(x)}\sum_jf(x_i,x_j)g(x_j) $$ 以图像为例,$i, j$为像素位置,$f(·)$表示$i$和$j$之间的关联系数,也可以说是权重,$g(·)$表示像素j的信息,$C(x)$为归一化系数,整个公式表示遍历所有的点$j$,以$f$为权重,将信息$g$进行加权求和

  • 输入和输出尺寸相同

  • non-local对f和g的形式不敏感

  • Non-local block结构如下:

    non-loca.png

  • 这个结构设置通道的数量为输入x通道数的一半,这样可以减少计算量,然后通过Wz的来让输出Z跟输出X通道数保持一致,这点参考了ResNetbottleneck设计

  • 这个结构实现起来不复杂,文章这个block添加到ResNet50中,分别添加1(to res4)、5(3 to res4 and 2 to res3)、10个(to every residual block in res3 and res4non-local block

  • 论文做的是视频分类,该代码做的实现的是在MNIST数据集上的分类,添加10个non-local blockResNet50

  • 由于采用ResNet50,网络的输入尺寸为224x224,所以为了匹配尺寸,强行将28x28pad为224x224,纯粹是为了尺寸的匹配

  • 计算图:

    graph

  • MNIST上训练结果:

    screenshot

accuracy

loss

About

TensorFlow implementation of Non-local Neural Network


Languages

Language:Python 100.0%