Perceptual Losses for Real-Time Style Transfer and Super-Resolution 解读

1.网络模型

1.1 组成部分

网络模型总体分为两部分:Image Transform Net和VGG-16

  • Image Transform Net是参数W待训练的网络
  • VGG-16是已经预训练好参数的网络

1.2 工作原理

(1) 输入为 :

  • 原始图像 x x x
  • 风格目标图 y s y_s ys
  • 内容目标图 y c y_c yc

(2) Image Transform Net作用:

  • 将原始图像 x x x经过Image Transform Net得到输出图像 y ^ \hat{y} y^
  • 映射关系为: y ^ = f W ( x ) \hat{y} = f_W(x) y^=fW(x)
  • 其中W是Images Transform Net的参数 , x是网络输入,y是网络输出。

(3) VGG-16作用:

  • 内容层面

    y ^ \hat{y} y^ y c y_c yc在VGG中间层的欧式距离作为Loss训练图像转换网络

    使得Image Transform Net输出的 y ^ \hat{y} y^与目标内容图 y c y_c yc越来越接近

  • 风格层面

    y ^ \hat{y} y^ y s y_s ys在VGG多个中间层得到的feature map生成的Gram矩阵的欧式距离加权和作为Loss训练图像转换网络

    使得Image Transform Net输出的 y ^ \hat{y} y^与目标风格图 y s y_s ys越来越接近

2.损失函数

2.1特征内容损失(Feature Reconstruction Loss)

ℓ f e a t ∅ , j ( y ^ , y ) = 1 C j H j W j ∥ ∅ j ( y ^ ) − ∅ j ( y ) ∥ 2 \ell_{feat}^{\empty , j}(\hat{y},y) = \frac{1}{C_jH_jW_j}\Vert \empty_j(\hat{y})-\empty_j(y)\Vert_2 feat,j(y^,y)=CjHjWj1j(y^)j(y)2

  • j 表示VGG-16中间层代号
  • y表示特征目标图像
  • y ^ \hat{y} y^表示image transform net 输出的图像
  • ∅ j ( y ) \empty_{j}(y) j(y) 表示图像y在VGG-16中间层j时的输出
  • ∅ j ( y ^ ) \empty_{j}(\hat{y}) j(y^) 表示图像 y ^ \hat{y} y^在VGG-16中间层j时的输出
  • C j H j W j C_jH_jW_j CjHjWj分别表示在VGG-16中间层j时的通道数、高度、宽度

Feature Reconstruction Loss 这数学公式就可以理解为两个图像在VGG-16中间层j的欧氏距离

越小说明VGG-16网络认为这两张图越接近

2.2风格损失(Style Reconstruction Loss)

  • Gram特征矩阵中的元素
    G j ∅ ( x ) c , c ′ = 1 C j H j W j ∑ h = 1 H j ∑ w = 1 W j ∅ j ( x ) h , w , c ∅ j ( x ) h , w , c ′ G_{j}^{\empty}(x)_{c,c^{'}} = \frac{1}{C_jH_jW_j} \sum_{h=1}^{H_j} \sum_{w=1}^{W_j}\empty_j(x)_{h,w,c}\empty_{j}(x)_{h,w,c^{'}} Gj(x)c,c=CjHjWj1h=1Hjw=1Wjj(x)h,w,cj(x)h,w,c

VGG中间层j的feature map大小为[ C j C_j Cj, H j H_j Hj, W j W_j Wj]

我们经过flatten矩阵转置操作可以变形为[ C j C_j Cj , H j ∗ W j H_j*W_j HjWj]和的[ H j ∗ W j H_j*W_j HjWj , C j C_j Cj]矩阵

再对两个作内积得到Gram Matrices大小为[ C j , C j C_j,C_j Cj,Cj]

  • 中间层j的风格损失

ℓ s t y l e ∅ , j ( y ^ , y ) = ∥ G j ∅ ( y ^ ) − G j ∅ ( y ) ∥ F 2 \ell_{style}^{\empty,j}(\hat{y},y) =\Vert G_j^{\empty}(\hat{y}) - G_j^{\empty}(y)\Vert_{F}^{2} style,j(y^,y)=Gj(y^)Gj(y)F2

计算图像 y y y和图像 y ^ \hat{y} y^两者VGG-16中间层j中gram矩阵距离的平方和

2.3简单损失函数

  • 像素损失

    像素损失是输出图和目标图之间标准化的差距
    ℓ p i x e l ( y ^ , y ) = 1 C H W ∥ y ^ − y ∥ 2 2 \ell_{pixel}({\hat{y},y}) = \frac{1}{CHW}\Vert \hat{y}-y\Vert_2^2 pixel(y^,y)=CHW1y^y22

  • 全变差正则化

​ 为使得输出图像比较平滑,遵循了前人在特征反演上的研究,在超分辨率重建上使用了全变差正则化 ℓ T V ( y ^ ) \ell_{TV}(\hat{y}) TV(y^)

3.Image Transform Net细节

3.1 风格迁移

Layer
9x9 conv , stride=2
3x3 conv , stride=2
Residual blocks
Residual blocks
Residual blocks
3x3 conv , stride= 1 2 \frac{1}{2} 21
9x9 conv , stride= 1 2 \frac{1}{2} 21

具体解释

1.输入 x x x 大小为3x256x256

2.使用2层 stride=2 的卷积层进行下采样

3.使用5个残差模块

4.使用2层stride= 1 2 \frac{1}{2} 21的卷积层进行上采样

5.输出 y ^ \hat{y} y^ 大小为3x256x256

输入图像与输出图像大小相同 先下采样再上采样的好处

  • 可计算复杂性
    • 比较
    • 3x3的C个卷积核 在CxHxW的图像上 需要 9 C 2 H W 9C^2HW 9C2HW
    • 3x3的DC个卷积核 在DC x H D \frac{H}{D} DHx W D \frac{W}{D} DW 的图像上 也需要 9 C 2 H W 9C^2HW 9C2HW
    • 在下采样之后,我们可以使用一个更大的网络来获得相同的计算成本
  • 有效的感受野大小
    • 优势就在于在输出中的每个像素都有输入中的大面积有效的感受野
    • 一个附加的3x3卷积层都能把感受野的大小增加2倍
    • 在用因子D进行下采样后,每个3x3的卷积增加感受野的大小到2D
    • 下采样使得相同数量的层给出了更大的感受野大小

3.2超分辨率

假设上采样因子 f f f

Layer
Residual blocks
Residual blocks
Residual blocks
3x3 conv , stride= 1 2 \frac{1}{2} 21
3x3 conv , stride= 1 2 \frac{1}{2} 21
( 一 共 使 用 log ⁡ 2 f 个 c o n v 一共使用\log_2{f}个conv 使log2fconv)
9x9 conv , stride= 1 2 \frac{1}{2} 21

具体解释

1.输入 x x x 大小为3 x 288 f \frac{288}{f} f288 x 288 f \frac{288}{f} f288

2.使用 5个残差模块

3.使用\log_2{f}个stride= 1 2 \frac{1}{2} 21的卷积层进行上采样

5.输出 y ^ \hat{y} y^ 大小为3x288x288

3.3 残差连接

3.4其他细节

  • 除开第一个和最后一个层用9x9的kernel 其他所有卷积层都用3x3的kernels
  • 优化方法选的是SGD(随机梯度下降法)
  • 除去最后一层卷积层后连接Tanh激活层,其他非残差卷积层都连接Batch Norm归一层和ReLu激活层
  • 上面的做法可以使得输出图像的像素值在 [0*,* 255]这个范围
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值