我们见过各种AI的神奇应用,包括围棋、聊天、融合两张照片的风格、小说创作等。按理说,再也没有什么令人吃惊的了。
但,如果连万恶的马赛克都能消除呢?
一般的水印或者马赛克,用 Photoshop 的「内容识别」工具就能搞定。只需要框选水印区域,选择「填充」-「内容识别」,软件便会根据选区周边的内容自动填充,在那些构图和色彩简单的图片上可以轻松去除不想要的元素。
然而内容识别工具说到底还是对选区周围的内容平均取样之后填充,就像是图片的「自体皮肤移植」,无法修复已经被水印破坏的内容,在面对复杂图像以及我们最熟悉的黑条马赛克时可谓束手无策。
比如说,这里有一个西部牛仔的照片。他是诸多暴力行为的嫌疑人,我们先在这按照法律保护隐私的要求给双眼打上马赛克。要是我们试图用内容识别工具来使图片恢复原貌,那很遗憾,只可能得到一个恐怖的「无眼人」,因为关于眼睛的信息已经被遮挡起来,无法通过「移植」的办法来解决。
所以,要想找回被遮挡的眼睛,只能靠「脑补」——可以是人脑,也可以是人工智能。
前段时间在 GitHub 上线的 DeepCreamPy 项目正是为此而生。它是个以修复任意尺寸和形状的图像损坏为志业的项目,因运用了新算法的缘故,效果是目前类似项目中最好的。
比如说,同样的图片,使用 DeepCreamPy 处理后,会发现被遮挡的眼睛被它重新「画」出来了,虽然还做不到 100%完美,但粗看之下已经和原图相差无几。
什么是 DeepCreamPy?
DeepCreamPy 由 deeppomf 开发,技术上主要参考了 NVIDIA 今年发表的一项研究。通过深度全卷积网络,使用 CPU 即可推断出图像缺失的内容并给出有意义的预测——也就是说,作为一个图像处理项目,甚至不需要显卡的支持便可运行。
这意味着项目依赖 CPU 的处理能力。像我这台仍用着 3 代 i5 的电脑,处理一张图片就要大约 30 秒时间,并且目前版本的 DeepCreamPy 还要求使用者手动标明哪里是打码区域,因此还实现不了大规模自动化处理。
虽然图形化界面尚未完成,但作者发布了经过训练的预构建模型,哪怕是对神经网络一窍不通的人,只要按着流程来依然能体验上这套工具的神奇威力。
此外,作者已经将项目开源,我们也可以重新训练或编译这个模型,不过前提是要安装 Python、TensorFlow、Keras、Pillow、h5py 等工具,学有余力的同学可以自行尝试。下面将会用预构建模型为例介绍怎么使用 DeepCreamPy 去除马赛克。
如何使用 DeepCreamPy?
首先,你需要下载作者发布的整合包并解压,要注意的是,它只能在 64 位 Windows 系统上运行。
别忘了 DeepCreamPy 现在还不支持全自动化处理,所以还得用 Photoshop 打开需要处理的图片:用纯绿色(#00FF00) 涂抹打码部分,以便程序识别需要处理的区域。最好使用铅笔工具涂色,若要用画笔工具的话一定要记得关闭抗锯齿功能,否则会导致识别错误。
然后,将涂上绿色的图片以 PNG 格式保存到整合包的「decensor_input」文件夹里——根据个人经验,大多数不运行的情形都是因为忘记了正确的文件格式。
最后,双击运行「decen」等待程序自动处理完成后,到「decensor_output」文件夹就能查看处理完毕的图片。程序的启动和运行会花费一定时间,所以看到空白的命令行界面不要慌张,耐心等待或者干脆把程序切到后台去干别的事就行了。
就我个人的测试体验来看,大多时候 DeepCreamPy 的确能给出惊艳的答案,但它的「脑补」能力自然还不及大脑,马赛克面积过大的话给出来的结果也不大靠谱。好在我的对手只是 E 绅士上工整的小型黑条马赛克,目前的算法就完全应付得来。
咳咳,你懂的。