心中无码:这是壹个能自动脑补漫画空缺部分的AI项目
这篇文章小编将将简要说明这项研究和 DeepCreamPy 实现项目,读者可下载项目代码或预构建的二进制文件,并尝试修复漫画图像或马赛克。这壹个项目可以直接运用 CPU 进行推断,Windows 用户甚至都不需要配置环境都可以直接运行预构建的文件修复图像。
项目地址:https://github.com/deeppomf/DeepCreamPy
图像修复任务可用于多种应用。比如用于图像编辑:移除不需要的图像内容,用合理的图像内容填补移除后的空缺。之前的深度进修方式都聚焦在图像中心的矩形区域,往往依赖昂贵的后处理。而 DeepCreamPy 项目基于的方式提出一种图像修复的新模型,可在不制度的空缺玩法上鲁棒地生成有意义的预测(图 1),预测结局和图像其余部分最佳契合,无需进行额外的后处理或混合操作(blending operation)。
近期不运用深度进修技术的图像修复方式均运用图像剩余部分的统计信息来填补空缺。当前最优方式其中一个 PatchMatch [3] 迭代地搜索最适合的图像块来填补空缺。虽然该方式生成的结局通常较为流畅,但它受限于可用的图像统计信息,且不具备视觉语义学的概念。例如,在图 2(b)中,PatchMatch 能够运用来自周围阴影和墙体的图像快流畅地填补画作的空缺部分,然而语义感知方式利用的是来自画作本身的图像块。
深度神经网络以端到端的方法进修语义优先(semantic prior)和有意义的隐藏表征,这已经用于近期的图像修复职业。这些网络对图像采用卷积滤波器,用固定值替代缺失的内容。结局,这些方式依赖于初始空缺的值,初始空缺的值通常表现为空缺区域缺乏纹理和明显的颜色对比或空缺周围的人工边缘响应。图 2(e)和 2(f)展示了运用具备不同空缺值初始化的典型卷积层的 U-Net 架构的例子(两者的训练和测试运用同样的初始化方法)。
很多近期方式的另壹个曲线是只关注矩形空缺部分,通常位于图像中心。这篇文章小编将说明的研究发现这些缺陷也许导致对矩形空缺部分的过拟合,最终限制这些模型的应用可用性。Pathak 和 Yang 等人假设壹个 128×128 图像的中心处有壹个 64 × 64 的正方形空缺部分,而 Iizuka 等人进一步移除了这一中心空缺假设,能够处理不制度形状的空缺部分,然而无法在大量具备不制度 mask 的图像([8] 中有 51 个测试图像)上执行定量解析。为了化解操作中更常见的不制度 mask 难题,DeepCreamPy 项目运用的方式收集了具备不同大致的不制度 mask 的大量图像,并解析了 mask 大致的影响,以及 mask 和图像边界的关联。
为了恰当处理不制度 mask,Nvidia 的这项研究提出了部分卷积层(Partial Convolutional Layer),包括 mask 和从头标准化卷积操作以及后续的 mask 更新(mask-update)。mask 和从头标准化卷积操作的概念在 [9] 中指图像分割任务的分割感知卷积(segmentation-aware convolution),但它们不对输入 mask 进行修改。该研究运用部分卷积,即给出壹个二元 mask,卷积结局仅依赖于每一层的非空缺区域。该研究的主要扩展是自动 mask 更新步,其移除任意 mask,部分卷积能够在 unmasked 值上运行。给出足够多层的连续更新,即使最大的 mask 空缺也能最终被消除,只在特征图中留下有效响应(valid response)。部分卷积层最终使得该模型不用理会占位符空缺值。
DeepCreamPy 图像修复项目
最近 deeppomf 开源了 Image Inpainting for Irregular Holes Using Partial Convolutions 的修复实现,它主要运用深度全卷积网络修复漫画图像。DeepCreamPy 能将遮挡的漫画图像重构为可信的画像,而且和通常的图像修复不一样,它运用的是不制度的 Mask。
用户需要事先运用绿色指定被遮住的区域,这一经过可以用简单的图画工具或 Photoshop 等。如下展示了加上绿色 Mask 的「损坏图像」和通过 DeepCreamPy 重构的图像。
其实以前也开源过很多杰出的图像修复项目,例如 JiahuiYu 等研究者完成的 DeepFillv1 和 DeepFillv2,不过 DeepFillv2 一直没有放出代码来。机器之心也尝试过 DeepFillv1,不过它的效果在给定的测试图像上特别好,而在大家提供的图像上效果一般。
按照 DeepCreamPy 的项目所述,这个 GitHub 项目的重点是可以修复任意尺寸的漫画图像和任意形状的 mask,同样也能修复漫画中的马赛克,不过这一部分还是不太稳定。除了这些之后,项目作者表示他正在做可视化界面,说不定过一段时刻就能运用可视化界面尝试漫画图像修复的威力。
目前项目作者已经公开了预构建的二进制文件,Windows 体系只需要下载该文件就可以直接运行。当然其它体系同样可以根据该项目运行预训练模型,或者直接从头训练该模型。
预构建模型下载地址:https://github.com/deeppomf/DeepCreamPy/releases
预训练模型地址:https://drive.google.com/open?id=1byrmn6wp0r27lSXcT9MC4j-RQ2R04P1Z
如果读者运用预训练模型或者从头训练,该项目标准大家的计算环境包含下面内容多少工具:
Python 3.6
TensorFlow 1.10
Keras 2.2.4
Pillow
h5py
重要的是,仅运行推断经过修复图像并不需要 GPU 的支持,而且也已经在 Ubuntu 16.04 和 Windows 64 位体系得到测试。这个项目运用的 TF 1.10 版是在 Python 3.6 中完成编译的,因此它并不和 Python 2 或 3.7 兼容。想要试一试的读者可以运行下面内容代码配置项目所需要的库:
$ pip install -r requirements.txt
DeepCreamPy 运用方式
1. 修复条形空缺
对于你想修复的每个图像,运用图像编辑软件(如 Photoshop 或 GIMP)将你想修复的区域的颜色涂成绿色 (0,255,0)。强烈主推运用铅笔工具,不要用刷子。如果你没用铅笔,那么确保你所运用的工具关闭了抗锯齿(ANTI-ALIASING)功能。
作者自己运用的是 wand selection 工具(关闭了抗锯齿功能)来选择空缺区域。接着稍微扩展选中区域,并在选中区域上运用绿色 (0,255,0) 的油漆桶工具。
要在 Photoshop 中扩展选中区域,可以执行该操作:Selection > Modify > Expand 或 Contract。要在 GIMP 中扩展选中区域,可执行该操作:Select > Grow。将这些图像保存为 PNG 格式,并保存到 decensor_input 文件夹中。
A. 运用二进制编译文件(Windows)
双击 decensor 文件来修复图像。
B. 从头开始运行
运行下面内容行进行图像修复:
$ python decensor.py
修复后图像将保存至 decensor_output 文件夹。每张图像的修复需要几分钟。
2. 修复马赛克空缺部分
和修复条形空缺一样,执行同样的着色流程,将着色后图像放入 decensor_input 文件夹。除了这些之后,将原始、未着色图像放入 decensor_input_original 文件夹,并确保每个原始图像和着色后版本名称一样。
例如,如果原始图像名是 mermaid.jpg,你将其放入 decensor_input_original 文件夹;着色后的图像命名为 mermaid.png,放入 decensor_input 文件夹。
A. 运用 binary
双击 decensor_mosaic 文件修复图像。
B. 从头开始运行
运行下面内容行进行图像修复:
$ python decensor.py --is_mosaic=True
修复后图像将保存至 decensor_output 文件夹。每张图像的修复需要几分钟。
疑难解答
如果你的 decensor 输出如下,则修复区域未能正确着色。
下面内容是一些好的和坏的着色图像示例。
论文:Image Inpainting for Irregular Holes Using Partial Convolutions
论文链接:https://arxiv.org/pdf/1804.07723.pdf
简介:基于深度进修的现有图像修复方式利用标准卷积网络修复受损图像,运用以有效像素以及 mask 区域中的替代值(通常为平均值)为条件的卷积核响应。这种行为通常会导致图片出现色差和模糊等难题。后处理通常被用于减少此类难题,但价格昂贵且存在失败的风险。大家提出运用部分卷积网络,其中卷积被掩蔽并从头归一化为仅以有效像素为条件。大家还包含了一种机制,可自动为下一层生成更新的 mask 作为前给传递的一部分。对于不制度 mask,大家的模型优于其它方式。大家通过和其它方式进行定性、定量对比对大家的方式进行了验证。