论文阅读与机制理解pix2pix: Image-to-Image Translation withConditional Aversarial Networks

  1. L2和L1损失,用来减少生成图像和目标图像像素之间的距离,这会导致图像模糊(实验结果就表明L1生成的图像像素值处于中间水平),因为这样的损失函数通过对所有可能的输出像素值的平均来减少像素之间的距离。从数学上来说,在-1到1范围内,L1损失是比L2损失要偏大的,那么L1的平均效果应该比L2的要大,也就可以推测L1会比L2更加模糊,但这与他们的结果相反,不知我错在何处?
  2. L1和L2损失可以用来将生成图像向目标图像拉,使目标图像不仅只是看起来像真的,而且还要和原图像(被翻译的图像)相关。
  3. 条件GAN和非条件GAN的区别在于前者将生成的图像与目标图像建立了关系,使生成的图像不仅看起来在domain B中,还得与具体的翻译对象相关。这与L1损失有相同作用。
  4. U-Net 加上了跳跃连接,也可以认为是约束了生成图像与被生成图像之间具有某种相似性,这也是符合逻辑的。我们翻译一张图片到另一个域,那么生成的图像与被翻译的图像也应该有一定关系。而不是只要看起来像domain B的图片一样就行。
  5. 总结一下2,3,4。这三个方法都使得生成图片与被翻译的图片建立了某种关系:L1损失,条件GAN,U-net条约连接。
  6. L1损失是针对pixel的,是属于低层结构,可以认为是很多个pixel的叠加再平均的作用,会导致图像模糊;GAN(范围是大于条件GAN的)是高层结构,可以使得细节上更像domain B的图像,而这可能会导致局部的artifact。L1 + cGAN似乎有一定的缓解作用
  7. patchGAN是为了使生成的图片更具有细节,或者说更sharpen(锐利)。patchGAN的区域如果等于1,就是pixel 级别了,正好等于图像的大小,就是最高的级别。
  8. 另外还要注意到不同图像翻译的区别,在将真实道路场景翻译成标签图像中(也就是segmentation),L1损失就已经足够了,再加上其他的损失函数不一定就很好。这也说明没有什么方法适合所有的问题。
  9. 最后再提醒自己一点:图像翻译至少符合两个条件:使生成的图像看起来像目标域的样子(GAN),被生成的图像与原图像是有关系的(条件GAN,L1损失,U-net 跳跃连接,patchGAN)

你可能感兴趣的:(十年磨一剑,GAN)