PI-REC 水记 (线稿+色块→绘画)

PI-REC 水记 (线稿+色块→绘画)

在这里插入图片描述

https://github.com/youyuge34/PI-REC

官方视频教程:BV1db411g74d

概览

训练分三个阶段,但是都是用同一套模型

在这里插入图片描述

数据集

数据集有 edges2shoes(鞋),edges2handbags[21](包包),getchu[22](动漫脸),CelebA(人脸)

预处理

边缘(线稿):

用 Canny 算法提取边缘

色域(色块):

先用中值滤波,再 K 均值[9],得到色块。

然后再用一次中值滤波,模糊掉边缘

关于中值滤波,看这个《中值滤波与高斯滤波的原理和应用场合》

数据增强:

超参混淆:提取线稿和色块的时候需要设置超参。生成数据集的时候,超参是在一个范围内随机变化的。

线稿中的任意像素,有8%的概率变为0。

模型

生成器

U-Net结构,用了感知损失Johnson etal. [24]

(有意思的是这篇文章后面也用到了 LPIPS 来评价结果,但是训练还是用了这篇更老的感知损失)

8个残差块,膨胀卷积

因为有三个阶段,移除了冗余的跳跃连接

为了解决棋盘格伪影,把第一个反卷积层替换为双线性插值上采样和卷积

生成器训练的三个阶段

直接用色块来训练很难生成细节所以有三个阶段

在每个阶段训练时,在当前阶段上收敛后,才会进入下一个阶段

阶段一:

输入 线稿和 masked ground truth

输出 ground truth

这里的 mask 率不超过70%(似乎是 pixel-wise 的mask)

阶段二:

输入 线稿和色块

输出 ground truth

阶段三:

输入 线稿 和 阶段二的输出

输出 ground truth

设计这个阶段,来自[33]

鉴别器

用了 PatchGAN ,结合 Spectral Normalization [31]

激活函数最后一层用的是 Sigmoid ,其余层用的 Leaky ReLU

损失函数

分为生成器损失和鉴别器损失

在这里插入图片描述

生成器损失分四个部分:像素级重建损失、对抗损失、特征损失、风格损失

鉴别器只有对抗损失

在三个阶段使用不同的权重

像素级重建损失 ⁍对抗损失 ⁍特征损失 ⁍风格损失 ⁍
阶段一10.011150
阶段二0.10
阶段三20

像素级重建损失:

在这里插入图片描述

这里的 F s u m F_{sum} Fsum 计算非零元素的数量,用于控制 L p e r − p i x e l L_{per-pixel} Lperpixel 的权重。

在阶段一中,随着 M M M 遮罩面积的增大, 整个 L p e r − p i x e l L_{per-pixel} Lperpixel 的权重也会变大;

在阶段二和阶段三中, L p e r − p i x e l L_{per-pixel} Lperpixel 的权重恒为 1 。

对抗损失:

选择了 LSGAN [29] 。这是为了提升稳定性,并且拟合真实图像中的高频细节

在这里插入图片描述

其中 I I I 表示不同阶段的输入图像

(看式子,似乎就是一般的损失函数?

特征损失:

属于感知损失的一部分

在这里插入图片描述

Φ i \Phi_i Φi 表示一个 VGG19 第 i i i 层的输出

N i N_i Ni 表示这个 VGG19 第 i i i 层输出的尺寸

采纳了 ESRGAN 的建议,使用激活前的特征图,这样能产生更清晰的边缘线

特征图来自于 conv1-1,conv2-1, conv3-1, conv4-1, conv5-1(没懂啥意思)

风格损失:

属于感知损失的一部分

在这里插入图片描述
G i Φ G_i^\Phi GiΦ 表示第 i i i 层特征的 Gram 矩阵

作者注意到风格损失可以在 阶段一 有效减少棋盘格伪影,但是在后面两个阶段没用

所以可以看到,后面两个阶段风格损失的权重都被设为 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值