《A Neural Algorithm of Artistic Style》笔记

画家画画有独特的风格。之前,没有人工智能系统可以学习画的风格。深度学习在图像分类、人脸识别、物体检测等领域取得了成功。本文提出基于深度学习的算法,将画的内容(content)和风格(style)区分开来。取一幅画的style,另一幅画的content,将两者合并创造出新的画。

卷积神经网络通过不同的Layer学习不同feature,每层的输出都是一系列的feature map。

当训练神经网络进行object recognition时,不同的层学习到图像的不同表示。从输入的像素值逐渐到图像内容。通过不同层的feature map重建,可以看出,higher layer学习到的是high-level content;lower layer的feature map重建是提取了原图的像素值。

通过设计捕捉纹理信息(texture information)的feature空间,来得到图像style的表示。feature空间基于top filter response,包含了不同空间的filter response的相关性。最终得到了图像不同尺度的捕捉texture information的表示。

neural_01.jpg

上图表示给定输入图像,不同层的feature map的表示。网络越深,filter越多,但是filtered image size在减小。

Content ReConstruction,通过VGG-Network的‘conv1_1(a)’, ‘conv2_1(b)’, ‘conv3_1(d)’, ‘conv5_1(e)’的feature map重建输入图像。lower layer(a,b,c)重建的图像很接近原图,higher layer重建得到图像content。

Style Reconstruction, 在原始CNN表示的顶端构建了新的feature空间来捕获输入图像的style。style表示计算不同layer feature的相关性。在layer的子集上重建( ‘conv1 1’ (a), ‘conv1 1’ and ‘conv2 1’ (b), ‘conv1 1’, ‘conv2 1’ and ‘conv3 1’ (c), ‘conv1 1’, ‘conv2 1’, ‘conv3 1’ and ‘conv4 1’ (d), ‘conv1 1’, ‘conv2 1’, ‘conv3 1’, ‘conv4 1’
and ‘conv5 1’ (e))。丢弃scene信息越多,越能得到图像的style。从style feature生成关于图像的纹理,就是呈现出颜色和局部结构。

这篇文章主要发现就是通过卷积神经网络可以将图像的content和style分开。这样可以将不同图像的content和style合成,生成新的图像。将图像内容和名画style合成,如下图所示:
neural_02.jpg

通过不同层来生成style,可以得到不同合成图片(下图行之间的对比)。通过higher layer来生成时,生成图像效果更好(下图最后一行)。

style和content不存在完美的合成。在合成时,最小化的loss函数包含content loss和style loss。权重不同,生成图片不同(如下图列之间对比)。

neural_03.jpg
上图每列上面的数字是 α/β 的比值,即content和style重要性。

Methods

这里使用VGG-Network,具体是16个卷积层和5个pooling层的19层网络。没有使用全连接层。将max-pooling替换为average pooling,改善梯度流动,可以得到更好结果。

一个layer,有 Nl 个不同的filter,包含 Nl 个feature map,feature map大小为width x height = Ml 。layer l 的相应可以存储到矩阵FlRNl×Ml Flij 表示 l 层的第i个fiter在 j 位置的激活值。为了根据content生存图像,用白噪声图像x⃗ 和原图 p⃗  输入到网络,得到不同层的激活值 Pl Fl ,最小化它们之间的平方差,使用它梯度下降法得到 p⃗ 

Lcontent(p⃗ ,x⃗ ,l)=12ij(FlijPlij)

损失函数对第 l 层的激活值求导:

LcontentFlij=(FlPl)ijifFlij>00ifFlij<0

使用反向传播,训练,改变白噪声图像 x⃗  的值,这样得到的图像content会和原图 p⃗  content相近。重建content使用的是VGG的五个层。

重建content,是根据激活值来重建。重建style,是根据不同filter得到的激活值之间的相关性来重建。因为style在图像中的表现就是纹理特征,即像素之间的相关性。到了high-lever layer,体现在不同feature map之间的相关性上。通过求得Gram矩阵 GlRNl×Nl ,这里的 Glij 是第 l i j feature map向量化后的内积

Glij=kFlikFljk

原图像 a⃗  和白噪声图像 x⃗  ,分别计算 l 层的Gram矩阵Al Gl ,这一层的loss函数为:

El=14N2lM2lij(GlijAlij)2

总的loss

Lstyle(a⃗ ,x⃗ )=l=0LwlEl

wl 表示第 l 层的权重。El关于 l 层激活值的导数:

ElFlij=1N2lM2l((Fl)T(GlAl))jiifFlij>00ifFlij<0

求得总的loss, p⃗  是content原图, a⃗  是style原图。

Ltotal(p⃗ ,a⃗ ,x⃗ )=αLcontenx(p⃗ ,x⃗ )+βLstyle(a⃗ ,x⃗ )

α β 关于content和style的权重系数, α/β 比值,决定生成的图像更多来自style还是content。前面图片有展示。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值