有时,我们需要遮盖一些人的纹身,以避免影响他人模仿。同时,人们也会好奇知名明星如果没有纹身会是什么样子。最近,来自印度的机器学习研究者Vijish Madhavan开源了一个名为SkinDeep的工具,满足了这一需求。
许多网友使用该工具处理了一些重度纹身的照片,效果相当不错。
Vijish Madhavan在观看加拿大歌手贾斯汀·比伯的MV《Anyone》后,决定开展这个项目。比伯在化妆师的帮助下花费了数小时才将身上的纹身覆盖掉。
尽管MV中的效果完美,但由于制作视频输出难度较大,项目作者选择专注于图像处理。这个项目的起点在于探讨深度学习是否能够胜任此项工作,以及与Photoshop的效果相比如何。

项目地址:
https://Github.coM/vijisHMadhavan/SkinDeep
有人可能会问,为什么不直接用Photoshop去掉纹身?虽然Photoshop确实能产生很好的效果,但使用该软件需要专业技能,处理纹身可能需要花费数小时来调整整个图像。
让我们来看一下效果如何。阿伦·艾弗森(美国篮球运动员)的纹身就是通过这个模型去掉的。

下图的第一行为输入图像,第二行为输出图像,显而易见纹身已被去除。

在面部有大量密集纹身的图像中,AI去除纹身的效果也相当出色:

与专业的图像处理软件Photoshop相比,效果不相上下:

尽管SkinDeep的效果令人满意,但对于彩色纹身,可能仍会留下些许痕迹。
项目说明
根据作者的介绍,完成此项目需要大量的图像对。由于缺乏合适的数据集,许多训练内容使用合成数据来补充。具体而言:
首先,将APDRawing数据集的图像与去掉纹身设计的背景图像叠加,使用Python OpenCV实现;
此外,绘制数据集提供了线条艺术图像,模拟纹身线条,这有助于模型学习如何去除这些线条;
APDRawing数据集仅包含头像图像,因此作者采用了之前的项目ARtLine,将输出与输入图像叠加在一起;

imageDRaw.DRaw与森林绿色色码一起使用,并随机放置在身体图像上,类似于FAst.AI中的CRappify;
在需要弯曲和角度变化的对象上,Photoshop也被用来放置纹身。

该项目基于FAst.AI库构建,需要安装FAstAI 1.0.61版(及其依赖库)以及PyToRch 1.6.0,不支持更高版本。
想要快速尝试这个项目,可以在Colab上进行:
https://colab.ReSeaRch.Google.coM/Github/vijisHMadhavan/SkinDeep/blob/Master/SkinDeep.IPynb
请注意,它的输出限制为500像素。
限制
尽管去除纹身的机器学习模型看似不复杂,但在现实中,由于情况千差万别,偶尔会出现“贴图错误”。项目的创建者指出,由于缺乏数据集支持,训练的数据集容量有限。此外,对于彩色纹身,当前的人工智能仍然难以识别。

如果这个效果能够做成网站,或者成为美颜应用的一个滤镜,那将是一个巨大的突破。最后,SkinDeep是否也能反向为人添加纹身呢?“试穿”的效果或许会受到欢迎。
