SPAN: Spatial Pyramid Attention Network for Image Manipulation
Localization
- University of Southern California, Los Angeles, USA
- Indian Institute of Technology, Bombay, Mumbai, India
- Facebook AI, Menlo Park, USA
ECCV 2020
代码链接
https://github.com/ZhiHanZ/IRIS0-SPAN/blob/d8e4241f151ef2f40eacbb970fe5e3f531c6a4b4/README.md
不过这个作者提供的权重是多gpu的,准确来说是2个GPU,没有这个资源用他这个训练好的模型。受不了。这个作者也是不厚道。使用的tensorflow的框架。
这个代码整了两天没跑起来。生气
这个作者的不厚道有2点
- 至少配备2个GPU才能够使用这个模型。给multi gpu训练的模型是一种很糟糕的行为,根本就没打算让大多数人测试。
- 没有提供requirement.txt.
网络框架
这个 pre-trained feature extracion 使用的是mantra net 的预训练模型,训练时候冻结。
后接5个self attention block.
这个self attention有些玄妙。
self attention block
不知道有没有理解错。
只需要理解成特殊的卷积层即可。
输入输出的矩阵大小没有变化。
中间层把D通道转为了9D通道(假设了n=1,为8邻域。)
9D为自身以及周围的8个点。为原本的通道数*9.
这个玄妙的地方大概在于 能够把一个像素点为中心的周围(2n+1)*(2n+1)邻域之内的所有像素的信息全部接收到一个对应点。
本来这东西是NLP领域提出的,不使用RNN,就得到时间顺序信息。图像和语言还是有些差别的。语言中的语言顺序和图像的邻域或许是等价的吧。
这是抄的这个作者的tensorflow 代码
基本和此图的结果相同,可能卷积层的数量稍微有点出入。
self attention 代码
from keras.engine.topology import Layer
import tensorflow as tf
import keras
from matplotlib.image import imread, imsave
from keras import backend as K
class PixelAttention(Layer):
def __init__(self, kernel_range=[3, 3], shift=1, ff_kernel=[3, 3], useBN=False, useRes=False, **kwargs):
self.kernel_range = kernel_range # should be a list
self.shift = shift
self.ff_kernel = ff_kernel
self.useBN = useBN
self.useRes = useRes
super(PixelAttention, self).__init__(**kwargs)
def build(self, input_shape):
D = input_shape[-1]
n_p = self.kernel_range[0] * self.kernel_range[1]
self.K_P = self.add_weight(name='K_P', shape=(1, 1, D, D * n_p),
initializer='glorot_uniform',
trainable=True)
self.V_P = self.add_weight(name='V_P', shape=(1, 1, D, D * n_p),
initializer='glorot_uniform',
trainable=True)
self.Q_P = self.add_weight(name='Q_P', shape=(1, 1, D, D),
initializer='glorot_uniform',
trainable=True)
self.ff1_kernel = self.add_weight(name='ff1_kernel',
shape=(3, 3, D, D),
initializer='glorot_uniform', trainable=True)
self.ff1_bais = self.add_weight(name='ff1_bias',
shape=(D,), initializer='glorot_uniform'