打开网易新闻 查看精彩图片

网络模型

打开网易新闻 查看精彩图片

组成部分

网络模型总体分为两部分: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)

打开网易新闻 查看精彩图片

j 表示VGG-16中间层代号

  • y表示特征目标图像

  • $\hat{y}$表示image transform net 输出的图像

  • $\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特征矩阵中的元素

    打开网易新闻 查看精彩图片

    VGG中间层j的feature map大小为[C,H,W]
    我们经过flatten和矩阵转置操作可以变形为[C,H*W]和[H*W,C]矩阵
    再对两个作内积得到Gram Matrices大小为[C,C]

    • 中间层 j 的风格损失

    打开网易新闻 查看精彩图片

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

    简单损失函数

    • 像素损失

    像素损失是输出图和目标图之间标准化的差距。

    打开网易新闻 查看精彩图片

    全变差正则化

    为使得输出图像比较平滑,遵循了前人在特征反演上的研究,在超分辨率重建上使用了全变差正则化

    Image Transform

    Net细节

    风格迁移

    打开网易新闻 查看精彩图片

    具体解释:

    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

    • 下采样使得相同数量的层给出了更大的感受野大小

    超分辨率

    打开网易新闻 查看精彩图片

    具体解释:

    1.输入x 大小为3 x 288/f x 288/f
    2.使用 5个残差模块
    3.使用\log_2{f}个stride=1/2的卷积层进行上采样
    5.输出y^ 大小为3x288x288

    残差连接

    打开网易新闻 查看精彩图片

    其他细节

    • 除开第一个和最后一个层用9x9的kernel 其他所有卷积层都用3x3的kernels;

    • 优化方法选的是SGD(随机梯度下降法);

    • 除去最后一层卷积层后连接Tanh激活层,其他非残差卷积层都连接Batch Norm归一层和ReLu激活层;

    • 上面的做法可以使得输出图像的像素值在 [0, 255]这个范围。

    来源:知乎

    作者:扁同学不发言

    深延科技|

    打开网易新闻 查看精彩图片

    深延科技成立于2018年1月,中关村高新技术企业,是拥有全球领先人工智能技术的企业AI服务专家。以计算机视觉、自然语言处理和数据挖掘核心技术为基础,公司推出四款平台产品——深延智能数据标注平台、深延AI开发平台、深延自动化机器学习平台、深延AI开放平台,为企业提供数据处理、模型构建和训练、隐私计算、行业算法和解决方案等一站式AI平台服务。