Non-Stationary Texture Synthesis by Adversarial Expansion
1.主要创新点:
利用Patch Gan,结合风格损失,L1损失,生成非固定纹理。
2.对应损失的贡献:
- 对抗损失作为纹理的主要生成
- L1损失减少噪声和非自然的内容,但是太过平滑
- 风格损失使得图像最终加入更多细节,但是也加入了颜色的扭曲
3.网络训练流程:
-------------------------------------------------------------------------------------------------------------------------
- 参数初始化,取原图的1/2 A作为生成器的输入,取原图B作为比较图
- 前向传播,输入图A,产生和B一样大小的假图fakeA
- 反向传播:
- 判别器:
- 输入假图fakeA给判定器计算判定器的损失
- 输入真图B 给判定器,计算判定器的损失
- 将两者的损失取平均
- 更新参数(更新的是判别器的参数,而生成器不更新)
- 生成器:
- 风格损失:
- 拿真图B在vgg网络前向传播一下,拿出前层的特征
- 拿假图A在vgg网络前向传播一下,拿出前层的特征
- 计算风格损失
- gan损失:
- 再用假图给判定器计算一下,计算损失,生成器的损失
- L1损失:
- 直接将假图和真图进行计算L1损失
- 将三个损失进行结合,分配不同权重进行
- 跟新参数(这里的参数全是生成器的参数跟新,对应的vgg和判别器参数不更新)
- 风格损失:
- 判别器:
- 重复以上迭代流程
--------------------------------------------------------------------华丽的分割线--------------------------------------------------------------
训练的过程可以通过这个流程图来理解,其中 gan损失,中还有一项生成器的损失,还需要计算一下。也就是迭代了判别器之后,生成器也要相应的方向传播,就是patchgan的内容。
4.存在问题:
1.部分边缘还存在一些不自然的现象
2.还是有部分不能很好的将大的全局结构学好