AISS5 图像生成

图像生成

  • 图像自动化生成
  • 内容可控的图像生成:布局位置,纹理风格

发展

方法 过程 优点 不足
传统纹理合成 非参数化采样- 源块
融合 - 拓展为目标图像
各向同性 纹理错乱、结构丢失
在线迭代优化,时效性差
深度图像生成模型 纹理 - 参数化建模
卷积神经网络
生成式对抗网络
扩散模型
应用广泛

神经风格迁移, CNN

迁移学习

迁移学习 是将一个问题 A 上训练好的模型通过简单的调整使其适应一个新的问题 B 。

  • 实际使用中: 对问题 A 训练出的模型有更完善的数据,而问题 B 的数据量偏小

    如果问题 B 有足够的数据量,那么通过迁移学习得到的模型效果一般情况下不如训练得到的模型效果。此时可以将问题 A 模型的底层的权重参数作为问题 B 模型的初始值来重新训练。

  • 调整的过程: 根据现实情况,

    1. 保留低级特征的提取,保留前几层卷积层的权重;
    2. 保留所有特征提取,保留全部的模型,根据新的任务改变其全连接层
  • 优势:更短的训练时间 / 更快的收敛速度 / 更精准的权重参数。

TensorFlow

Tensor (张量) - N 维数组,Flow (流) - 基于数据流图的计算,TensorFlow即张量从流图的一端流动到另一端的计算过程。TensorFlow 是开源的将复杂的数据传递到人工智能神经网络进行处理和分析的系统。

  • 灵活性
  • 可延展性
  • 支持异构设备分布式计算
  • 支持CNN、RNN和LSTM算法

基于VGG,Visual Geometry Group的风格迁移

VGG

VGG 在所有层都采用 3x3 的小卷积核,卷积层步长被为1,故而在加深网络层数同时避免了过多的参数从而引起的梯度消失。

  • 输入:224x244大小的RGB图像

  • 3层全连接层,8-16个卷积层,5个池化层(分布在不同的卷积层后)

    理解:

    • 前面的卷积层:从图像中提取特征。层数从浅到深,提取特征从简单到复杂,如从提取检测点、线、亮度到是否存在人脸或某种特定物体。
    • 后面的全连接层:把图片的特征转换为类别概率。
  • 输出:图像类别

对于图像风格迁移,则需要输入特征,输出对应特征的图片。基于 VGG 的风格迁移使用 VGG 卷积层的中间特征还原出对应这种特征的原始图像

  1. 选取一副原始图像。
  2. 送入 VGGNET 计算,得到各卷积层特征。
  3. 根据这些卷积层的特征,从白噪声还原出对应这种特征的原始图像。

实践中得知,

  • 浅层卷积层特征:基本保留了所有形状、位置、颜色、纹理等信息,还原效果较好;
  • 深层卷积层特征:大体保留了形状和位置信息,但丢失部分颜色和纹理信息。
生成图象的代价函数

现定义生成图像GG,内容图像CC,风格图像SS。定义代价函数J(G)J(G)评判GG的质量,并使用梯度下降法进行最小化。

J(G)=αJContent(C,G)+βJStyle(S,G)J(G) = \alpha J_{Content}(C,G) + \beta J_{Style}(S,G)

  • JContent(C,G)J_{Content}(C,G) 内容代价函数:度量生成图片 GG 的内容与内容图片 CC 的内容相似程度。
  • JStyle(S,G)J_{Style} (S,G) 风格代价函数:度量图片 GG 的风格和图片 SS 的风格相似程度。
  • 超参数 ααββ :以上两者间的权重。

内容代价

介于可以把 VGG 隐藏层的深浅理解为复杂度不同的图片特征提取, 故选取其深浅合适的某一层来抽象内容代价。假定选中了第ll层,由 NlN_l 个不同的滤波器(卷积核)产生 NlN_l 个大小为Ml=h×wM_l = h \times w 的特征图(feature map),即 ll 层中的响应可存储在矩阵 FlRNl×MlF^l \in \mathbb{R}^{N_l \times M_l} 中。FijlF_{ij}^l 即表示第 ll 层第 ii 个滤波器位置jj 处的激活值。

那么用 CCGGll 层中的响应矩阵 Pl,FlP^l,F^l 的欧氏距离来衡量内容代价,即

JContent(C,G)=12FlPl2=12i,j(FijlPijl)2J_{Content}(C,G) = \frac{1}{2}||F^l - P^l||^2 = \frac{1}{2}\sum_{i,j}(F^l_{ij}−P^l_{ij})^2

  • 关于 ll 的选取:由于较浅的层提取特征简单,代价函数会使生成图片像素上非常接近内容图片;较深的层提取特征复杂,代价函数会使得生成图片控制某个具体物体的存在与否,却不能对具体像素值是否接近原图像进行很好限制,因而需要选择合适的一层。
  • 关于 12\frac{1}{2}:由于超参数的存在,代价函数前的归一化可加可不加。

JContentFijl={(FlPl)ijif Fij>00if Fij<0\frac{\partial J_{Content}}{\partial F^l_{ij}} = \begin{cases} (F^l - P^l)_{ij}& \mathrm{if} \ F_{ij} > 0\\ 0& \mathrm{if} \ F_{ij} < 0\end{cases}

风格代价

Gram矩阵

nn 维欧式空间中任意 kk 个向量之间两两的内积所组成的矩阵,称为这 kk个向量的 Gram matrix

Δ(α1,α2,...,αk)=((α1,α1)(α1,α2)(α1,αk)(α2,α1)(α2,α2)(α2,αk)(αk,α1)(αk,α2)(αk,αk))\Delta (\alpha_1,\alpha_2,...,\alpha_k) = \left(\begin{array}{cccc}(\alpha_1,\alpha_1) & (\alpha_1,\alpha_2) & \cdots &(\alpha_1,\alpha_k)\\(\alpha_2,\alpha_1) & (\alpha_2,\alpha_2) & \cdots &(\alpha_2,\alpha_k)\\\vdots& & \ddots & \vdots\\(\alpha_k,\alpha_1) & (\alpha_k,\alpha_2) & \cdots &(\alpha_k,\alpha_k)\end{array}\right)

结合神经网络理解gram matrix。对于第 ll 层,该层输入图像的 feature map 为 [ch,h,w][ch, h, w]。对特征图进行flatten,将h×wh \times w 平铺为一维向量得到 [ch,h×w][ch, h\times w],即[ch,size][ch,size]。再对矩阵转置变形为和[size,ch][ size, ch]的矩阵。

作内积即得到了得到Gram Matrices,大小为 ch×chch \times ch的的 G 矩阵。

由于特征图的每个元素都是一个特定滤波器在特定位置的卷积,因而每个元素表征一个特征的强度。因此 Gram 实际上是一个偏心的协方差矩阵,表示了这些特征两两之间的相关性的差异。

[1701.01036] Demystifying Neural Style Transfer (arxiv.org)

仍用第ll层举例,该层由 NlN_l 个不同的滤波器(卷积核)产生 NlN_l 个大小为Ml=h×wM_l = h \times w 的特征图,则

Gij=kFiklFjklG_{ij} = \sum_k F^l_{ik}F^l_{jk}

Al,FlA^l,F^lSSGGll 层中的响应矩阵,则该层的风格损失:

El=14Nl2Ml2i,j(GijlAijl)2ElFijl={1Nl2Ml2((Fl)τ(GlAl))jiif Fij>00if Fij<0E_l = \frac{1}{4N^2_lM_l^2}\sum_{i,j} (G^l_{ij}− A^l_{ij})^2\\ \frac{\partial E_l}{\partial F^l_{ij}} = \begin{cases} \frac{1}{N^2_lM^2_l}((F^l)^\tau(G^l - A^l))_{ji}& \mathrm{if} \ F_{ij} > 0\\ 0& \mathrm{if} \ F_{ij} < 0\end{cases}

总损失是所有层损失的加权平均(或简单取平均):

JStyle(S,G)=l=0wlElJ_{Style}(S,G) = \sum_{l=0}w_lE_l

综上,用p,a,x\vec{p},\vec{a},\vec{x}表示图像C,S,GC,S,G的输入矢量,则总损失函数

Jtotal(p,a,x)=αJContent(p,x)+βJStyle(a,x)J_{total}(\vec{p},\vec{a},\vec{x}) = \alpha J_{Content}(\vec p,\vec x) + \beta J_{Style}(\vec a,\vec x)

训练过程

  • 图像预处理(内容图、画风图),生成图占位符定义:根据内容图片和噪声,生成的一张噪声图
  • 预训练模型加载
  • 将噪声图片、内容图、画风图输入网络
  • 计算 loss
    • 计算内容损失、格拉姆矩阵
    • 计算风格损失
    • 损失和梯度汇总
  • 设置迭代计算图
  • 选择生成图优化方法,根据loss调整生成图
  • 迭代直到达到max_step

不足

很难产生一些局部的夸张变化。

图像翻译(translation),GAN

图像内容(image content):图像的固有内容,作为区分不同图像的依据。
图像域(image domain): 具有某种特定属性的图像集合。在域内的图像具有某些相同的属性。
图像翻译(image translation)**:将图像从一个图像域转移到另一个图像域,即进行图像间的跨域转换。通俗地说是把图像的某种属性移除,添加新的属性。

pix2pix, Based on cGAN

cGAN, conditional GAN

CycleGAN


AISS5 图像生成
http://example.com/2023/09/05/AISS-5/
Author
Tekhne Chen
Posted on
September 5, 2023
Licensed under