ml4a中的6个生成艺术图片的模型 | 第126期
要说最有趣的视觉类深度学习模型,那得数图片生成或者合成。这一类模型能够产出引起普通人讨论的图片。其他模型可能更重要,却只是在技术圈有名,而且说不上有趣。ml4a是一款用于生成艺术化图片的Python第三方库,估计全名应该是 machine learning for artists。这个软件包里的模型可以辅助大家制作类似画作风格的图片。官方推荐的方式直接安装已经不可行了,使用各种小技巧勉强安装上也无法正常运行。这里就整理出其中可以正常运行的6个模型,在不用安装ml4a的情况下,让大家看看效果。
1. 前景和背景合成图片
BASNet 模型可以提取图片中的前景目标的区域mask,这样就可以提取出图像中的前景色。通过取补集的方式,将前景的mask转换为背景的mask。我们把背景mask作用在另一张图片上,就可以完成图片的背景替换了。以《蒙娜丽莎》为前景,以梵高的《星空》为背景,就得到一幅视觉效果奇特的新合成图片。
2. 图片转换为素描画
在很多的视觉特效中会用到真实世界的画面到素描画的变换,看起来有在两个世界穿行的效果。除了在一些简单情况下可以手绘,更吸引人的是使用算法生成画面的素描画。算法不仅能处理复杂的情况,而且更加高效。PhotoSktch就是用来实现这一效果的模型。这里展示一张风景图转换为素描画的效果。
3. 语意分割
语义分割是与跟踪、检测、识别等同样类型的基本问题。基本问题一般很难有什么趣味性。但语义分割能够对图片中不同目标进行像素级的精细标注,在按照类别涂上不同颜色之后,似乎形成了一幅具有抽象风格的艺术作品,就像下面的这张图展示的。不过,这里收集语义分割模型的目的,只是为了另一个模型根据像素级标注生成图片。
4. 语意标签生成图片
SPADE模型可以根据语意级的标签生成对应的图片,不过它要求的标签是像素级的。这样的话,基本不太可能由人工提供这样的输入。我们考虑引入语义分割模型来提供这样的输入,也就是上一个模型的产出。对真实世界的照片进行语义分割就可以产生像素级的语义标签,然后使用SPADE模型根据语意标签生成一幅图片,就像下图中展示的效果。生成的图片与原始照片中的景物类别是一致的,但是风格明显不同,似乎是一幅画作。
5. 超分辨率图像生成
近几年常常看到有些小视频创作者发布高清的旧影视剧。由于当时播放设备的限制,旧影视剧的分辨率比较低,直接在现在设备上播放会显得比较模糊。这时就需要一个提升图像分辨率的算法,将低分辨率的图像转换为高分辨的图像,同时保证细节仍然丰富不模糊。esrgan模型可以将图像的分辨率提升4倍,下图就展示了超分辨率前后的效果对比。
6. 修改图像特征
我们常常以一些图片作为描述事情的证据,因为要篡改图像并且不留痕迹的难度是比较高的。有些图像特征甚至是很难篡改的,比如添加微笑的表情。idinvert模型就是用来实现这个功能的。这个模型能实现的功能很多,首先来看下图中的图片生成的效果。在保留原图大体特征的情况,生成了另一张人脸的图像。
在换脸或者其他的图片合成任务中,常常需要增加一步图片融合的操作,以保证图片风格一致,避免生硬的过渡导致穿帮。idinvert模型也可以满足这种需求。下图就是将一个人的面部融合到另外两个人的头部。
idinvert模型还可以修改图片中人脸的年龄。比如下图就是分别在原图的基础上变得更年轻和更年老。除了年龄还可以修改其他属性,除了人脸也可以修改其他类型的图片内容。看到这些之后,你还敢相信自己看到的图片或者视频证据了吗?
生成模型已经从几年前的生成对抗网络发展成一类丰富的算法类别,产出的结果带有比较大的趣味性,往往能在社交媒体上引起一些关注。如果你是开发者,可以通过我提供的代码运行这些模型试试看;懒得跟代码打交道的朋友,可以等我在应用软件中集成这些功能之后再好好体验一下。