最近,我将Isola等人做的pix2pix移植到了Tensorflow 平台。Tensorflow 平台包含在Tensorflow的图像到图像翻译(Image-to-ImageTranslation in Tensorflow)论文中。我采用了一些预训练的模型,并制作了一个网络互动的程序可以直接尝试玩玩。建议使用 Chrome 浏览器来查看效果。
pix2pix模型通过对图像对进行训练来工作,例如给建筑物的立面添加建筑物立面的标签,然后尝试从任何输入图像生成相应的输出图像。这个想法是直接从pix2pix 论文( pix2pix paper)而来,这是一篇好文章。
立面(facades)
在建筑立面数据库上训练有标签的建筑立面。它似乎不知道如何处理一个大的空白区域,但如果放上足够的窗口,那么结果往往合理。绘制“墙”颜色矩形来擦除东西。
我没有建筑立面给定不同部分的名字,所以我只是猜测它们叫什么。
边缘转换成猫咪(edges2cats)
在约2k 存储猫照片和从那些照片自动生成的边缘之上训练。生成了彩色猫对象和一些带有噩梦的脸。我所见过的最好的一个是猫猫。
一些图片看起来特别蠕动,因为对动物辨识产生误判,特别是在眼睛周围。自动检测的边缘在很多情况下不是很好,没有检测到猫的眼睛,使得训练图像翻译模型效果更差。
边缘转换成鞋(edges2shoes)
在从Zappos收集的〜50k鞋子图片以及从那些图片自动生成的边缘的数据库上训练之后。如果你真的擅长绘制鞋子的边缘,可以尝试产生一些新的设计。请记住,因为是在真实的对象上进行训练,所以如果你可以绘制更多的3D物体,所以似乎工作得更好。
边缘转换成手袋(edges2handbags)
和前面类似,在从亚马逊收集的〜137k手袋图片及从那些照片自动生成边缘数据库上训练。如果你在这里画一个鞋而不是手提包,你会得到一只非常奇怪的纹理鞋。
实现
使用pix2pix-tensorflow的pix2pix.py脚本训练和导出模型。交互式演示是使用Canvas API 以 Javascript 编写的,并与通过Tensorflow运行图像的后端服务器通信。后端服务器可以运行Tensorflow本身,或者将请求转发到由Google运行的托管Tensorflow服务的Cloud ML 上。
预训练模型在GitHub上的数据集部分提供。所有的发布与原来的pix2pix实现应该都是可用的。模型可以使用pix2pix.py脚本从预训练的模型中导出,导出的模型从GitHub上的服务器README链接过来的。
猫照片的边缘是使用整体嵌套边缘检测(Holistically-Nested EdgeDetection)生成的,并且将功能添加到process.py脚本中,并将依赖项添加到Docker镜像中。
除非另有说明,否则本网站上的所有代码示例都以公共领域协议发布,并托管在GitHub上。
原文:http://affinelayer.com/pixsrv/
作者:Christopher Hesse