从风格迁移与格拉姆矩阵(Gram Matrix)聊到实例归一化(IN - Instance Normalization)

什么是风格迁移?

风格迁移指的是将A风格的图像转换为B风格的图像,如素描转油画等。

什么是Gram Matrix?

图像尺寸假定为H x W x C的三维矩阵,讲其进行transpose和resize之后我们可以获得C x HW 与 HW x C这两个二维矩阵。对两个矩阵进行点乘,即可获得C x C的Gram Matrix。

那么格拉姆矩阵又有什么意义呢?

说起格拉姆矩阵的意义,我们先要了解向量点乘的几何含义。
X ⋅ Y = ( x 0 , x 1 , . . . , x n ) ⋅ ( y 0 , y 1 , . . . , y n ) = x 0 ⋅ y 0 + . . . + x n ⋅ y n = ∣ ∣ X ∣ ∣ ⋅ ∣ ∣ Y ∣ ∣ ⋅ c o s θ \begin{aligned} X \cdot Y &= (x_0, x_1, ..., x_n) \cdot (y_0, y_1, ..., y_n) \\ &= x_0\cdot y_0 + ... + x_n\cdot y_n \\ &= ||X|| \cdot ||Y|| \cdot cos\theta \end{aligned} XY=(x0,x1,...,xn)(y0,y1,...,yn)=x0y0+...+xnyn=XYcosθ
其中 θ \theta θ X X X Y Y Y的夹角,点乘在几何上表示的就是两个向量的余弦相似度(实际上还是要把两个向量的模长除掉,这里是为了和格拉姆矩阵对齐)。

好,那么格拉姆矩阵表示的含义就很明显了。对角线上数字表示了各个channel的自身强度,其他数字则蕴涵着两个channel本身的强度与余弦相似度。

如此一来,不难看出,格拉姆矩阵可以从某种程度上去描述一张图像的风格。比如说,channel是RGB,则描述了三种色彩强度与他们之间的关系。

当然,仔细想来这其实有看起来没有那么严谨,所以只能说是从某种程度上来说。(比如,格拉姆矩阵可以说涵盖了像素级和全图级的信息,缺少了中间的局部信息对比。)

风格迁移和格拉姆矩阵有什么关系?

经过上面的解释,格拉姆矩阵可以描述一类图像的风格,风格迁移任务可以转换为缩小两个域之间格拉姆矩阵的差异(距离)。

不得不提的Instance Normalization

大家更加熟悉的一般都是BN,那么IN又是个什么东西呢?

其实IN就是batch_size = 1的BN。(滑稽

不就是改个参数,为什么要单独去说这个呢?因为IN可以说在风格迁移的任务上大放异彩,碾压了BN。

很多人会说,这是因为风格迁移讲究的是单体到目标域的转移,和其他任务有区别,要避免各个输入数据(图像)之间的互相影响。

说实话,这个理论乍一听还蛮像那么回事,细想起来又怪怪的。我们的任务就是让网络学习到源域到目标域的magic transfer function,这里为什么又要在源域里强调个体呢?整体不就是个体的一个概率分布么?和其他任务的区别又在哪里呢?

唯一可以勉强解释的是,GAN的生成器有一个输出多样化的需求,确实需要从源域中剥离个体的特性。

但是如果我们从格拉姆矩阵的角度去看这件事情,从两个域中进行个体采样,使用个体之间差异的来度量两个域的差异,通过极小化两张图之间格拉姆矩阵的MMD距离来优化整个过程。

至于什么是MMD距离,我也还没看懂。:)

感谢Naiyan Wang在知乎问题-Batch normalization和Instance normalization的对比?下的回答,给了我这些启发。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值