从pix2pix到vid2vid,我们一步领略了图像翻译的魅力

从pix2pix到Vid2Vid,我们一步一步领略了图像翻译的魅力。图像翻译其实就像翻译文字一样,把一张图片变成另一张图片,比如把街景变成语义分割图,把灰度图变成彩色图。这种魔法一样的转换,在过去看来是一个世界难题。不过,这三款模型的出现,让我们看到了图像翻译的未来。pix2pix是第一个突破,它提出了“条件生成对抗网络”统一框架,把任意图像翻译任务都能在一个代码里实现。过去我们得靠专家知识手动设计很多东西,损失函数也有很多项。但pix2pix却用GAN直接塞进条件里,输入只有一对标签图和真实图,结果却意外地跑出了高保真的效果。生成器用的是端到端的U-Net结构,把语义标签喂成照片;判别器用PatchGAN把图像切成小块分别判真伪。损失函数也很有意思,用L1损失保边缘,再加上LSGAN保细节。 虽然pix2pix能生成真实照片,但放大后总会露出锯齿。为了突破这个难题,pix2pixHD来了。它解决了分辨率和多样性两个死穴。多尺度生成器G1负责低分辨率轮廓,G2负责高分辨率细节;多尺度判别器同时判三种不同尺度的图像真伪。Feature Matching和VGG Loss用来防止MSE带来的过度平滑;Instance Map则把语义分割切到个体级。这样一来,同一类物体的边界就能分得很清楚了。 视频生成最大的拦路虎是帧与帧之间要长得像才行。Vid2Vid就在pix2pixHD肩膀上站了起来,给时间一致性加上硬约束。为了让每一帧都能滑到下一帧去,Vid2Vid用到了光流CNN。光流CNN用两个CNN分别预测上一帧到当前帧的光流和当前帧到输出帧的伪光流;再学一个权重门控来决定输出是该抖还是该稳。 为了保证时空双保险,Vid2Vid还有双判别器同时上岗:一个判单帧真伪,一个判“光流+帧内容”是否自然。前景背景分网也很有用处:把行人、车辆当前景;道路、树木当背景。这样背景直接透明度拉满后,光流算得准了。 从pix2pix的“单图单图”到pix2pixHD的“单图高清”,再到Vid2Vid的“视频级连续”,这一路走来模型越来越复杂也越来越稳当。下一站可能就是实时视频翻译、多模态条件输入还有交互式编辑了。 虽然过程有点曲折复杂,但无论是Dropout还是Feature Matching还是HD或者Instance Map还是LSGAN或者Loss或者MSE或者Map或者Matching或者Net还是PatchGAN还是U-Net还是VGG都在这个过程中发挥了重要作用。这些技术的结合让我们看到了图像翻译更多的可能性。 最后不得不提一下CNN这个主角:CNN在所有这些步骤中都起到了关键作用。从光流CNN到双判别器中图像判别器都离不开CNN这个核心技术的支持。 虽然看起来步骤很多很复杂但这就是科技进步带来的结果:越复杂越精密效果也就越好。 就像我们刚才说的那样:从单张图片到高清图片再到连续视频只要一步一步走下去未来可期!