网络模型
![](http://dingyue.ws.126.net/2022/0304/a3978cc0j00r87zlb001bd200q6009ng00q6009n.jpg)
组成部分
网络模型总体分为两部分:Image Transform Net和VGG-16
Image Transform Net是参数W待训练的网络
VGG-16是已经预训练好参数的网络
工作原理
(1) 输入为 :
原始图像x
风格目标图y_s
内容目标图y_c
(2) Image Transform Net作用:
将原始图像x经过Image Transform Net得到输出图像
映射关系为: y^ = Fw(x)
其中W是Images Transform Net的参数 x是网络输入 y^是网络输出
(3) VGG-16作用:
内容层面
将y^与y_c在VGG中间层的欧式距离作为Loss训练图像转换网络
使得Image Transform Net输出的y^与目标内容图y_c越来越接近
风格层面
将y^与y_s在VGG多个中间层得到的feature map生成的Gram矩阵的欧式距离加权和作为Loss训练图像转换网络,使得Image Transform Net输出的y^与目标风格图y_s越来越接近。
损失函数
特征内容损失
(Feature Reconstruction Loss)
![](http://dingyue.ws.126.net/2022/0304/bddb2a2bj00r87zlb0009d200jc003gg00jc003g.jpg)
j 表示VGG-16中间层代号
y表示特征目标图像
$\empty_{j}(y)$ 表示图像y在VGG-16中间层j时的输出
$\empty_{j}(\hat{y})$ 表示图像$\hat{y}$在VGG-16中间层j时的输出
Cj Hj Wj 分别表示在VGG-16中间层j时的通道数、高度、宽度
Feature Reconstruction Loss 这数学公式就可以理解为两个图像在VGG-16中间层j的欧氏距离,越小说明VGG-16网络认为这两张图越接近。
风格损失(Style Reconstruction Loss)
Gram特征矩阵中的元素
![](http://dingyue.ws.126.net/2022/0304/91dfb20dj00r87zlb000ed200oc0050g00oc0050.jpg)
VGG中间层j的feature map大小为[C,H,W]
我们经过flatten和矩阵转置操作可以变形为[C,H*W]和[H*W,C]矩阵
再对两个作内积得到Gram Matrices大小为[C,C]
中间层 j 的风格损失
![](http://dingyue.ws.126.net/2022/0304/339bfd99j00r87zlc0008d200ii0040g00ii0040.jpg)
计算图像$y$和图像$\hat{y}$两者VGG-16中间层j中gram矩阵距离的平方和
简单损失函数
像素损失
像素损失是输出图和目标图之间标准化的差距。
![](http://dingyue.ws.126.net/2022/0304/e8b71a38j00r87zlc0008d200ho0058g00ho0058.jpg)
全变差正则化
为使得输出图像比较平滑,遵循了前人在特征反演上的研究,在超分辨率重建上使用了全变差正则化
Image Transform
Net细节
风格迁移
![](http://dingyue.ws.126.net/2022/0304/442a8864j00r87zlc000qd200u000blg01e200jb.jpg)
具体解释:
1.输入x 大小为3x256x256
2.使用2层 stride=2 的卷积层进行下采样
3.使用5个残差模块
4.使用2层stride=1/2的卷积层进行上采样
5.输出y^ 大小为3x256x256
输入图像与输出图像大小相同 先下采样再上采样的好处。
(1)可计算复杂性
3x3的C个卷积核 在CxHxW的图像上 需要 9 C^2 H W
3x3的DC个卷积核 在DC x (H/D)x(W/D) 的图像上 也需要9 C^2 H W
在下采样之后,我们可以使用一个更大的网络来获得相同的计算成本
(2)有效的感受野大小
优势就在于在输出中的每个像素都有输入中的大面积有效的感受野
一个附加的3x3卷积层都能把感受野的大小增加2倍
在用因子D进行下采样后,每个3x3的卷积增加感受野的大小到2D
下采样使得相同数量的层给出了更大的感受野大小
超分辨率
![](http://dingyue.ws.126.net/2022/0304/50306d84j00r87zlc000td200u000d5g01e400ly.jpg)
具体解释:
1.输入x 大小为3 x 288/f x 288/f
2.使用 5个残差模块
3.使用\log_2{f}个stride=1/2的卷积层进行上采样
5.输出y^ 大小为3x288x288
残差连接
![](http://dingyue.ws.126.net/2022/0304/1de9db07j00r87zld000wd200hb008hg00hb008h.jpg)
其他细节
除开第一个和最后一个层用9x9的kernel 其他所有卷积层都用3x3的kernels;
优化方法选的是SGD(随机梯度下降法);
除去最后一层卷积层后连接Tanh激活层,其他非残差卷积层都连接Batch Norm归一层和ReLu激活层;
上面的做法可以使得输出图像的像素值在 [0, 255]这个范围。
来源:知乎
作者:扁同学不发言
|深延科技|
深延科技成立于2018年1月,中关村高新技术企业,是拥有全球领先人工智能技术的企业AI服务专家。以计算机视觉、自然语言处理和数据挖掘核心技术为基础,公司推出四款平台产品——深延智能数据标注平台、深延AI开发平台、深延自动化机器学习平台、深延AI开放平台,为企业提供数据处理、模型构建和训练、隐私计算、行业算法和解决方案等一站式AI平台服务。
热门跟贴