实现是一个单一文件 pix2pix.py ,尽可能在 TensorFlow 图谱之内。移植过程多是观察现有的 Torch 实现和 Torch 源代码,搞明白什么种类的层和设置被使用,以确保 TensorFlow 版本与原始版本尽可能一致。调试一个有问题的实现很耗时间,因此我细心地尝试这次转化以规避掉大量的调试。 pix2pix.py: https://github.com/affinelayer/pix2pix-tensorflow/blob/master/pix2pix.py 实现开始于创建生成器图,接着是鉴别器图,最后是训练系统。在运行时使用 Torchpix2pix 代码打印生成器和鉴别器图。我在 Torch 框架源中寻找不同的图层类型,并发现了当前的设置和操作,以及如何在 Tensorflow 中将其实现。 最理想的情况是能把 pix2pix 训练的网络权重导进 Tensorflow 以验证图形构造。但是这令人厌烦,而且我很不擅长 Torch,所以我没有那样做。 本代码中的大多数错误与 Tensorflow 的 build-graph-then-execute 模型相关,如果你习惯于命令式代码,那么 Tensorflow 会让你感到一点惊讶。 论文:Image-to-Image Translation with Conditional Adversarial Networks 摘要:为实现图像到图像转化(image-to-image translation)任务,我们研究了条件对抗网络。这些网络不仅会学习从输入图像到输出图像的映射,而且还学习损失函数来训练映射。这使得我们不必在此类任务中加入通常需要的不同的损失公式。我们的实验证明了这种方法在从有标记的地图中生成照片,利用单色线图生成照片,为黑白图填充色彩等任务中是有效的。我们证明了在此类模型的训练中,人类不再需要手动输入的映射函数以及损失函数。 原文链接:https://affinelayer.com/pix2pix/ ©本文为机器之心编译,转载请联系本公众号获得授权。 ?------------------------------------------------ 加入机器之心(全职记者/实习生):[email protected] 投稿或寻求报道:[email protected] 广告&商务合作:[email protected] (责任编辑:本港台直播) |