DeOldify 一款可以给老旧照片上色的免费开源工具

 

快速入门:使用开源 DeOldify(免费!)为图像着色的最简单方法在这里:DeOldify Image Colorization on DeepAI

桌面:想要在 Windows 桌面上为照片运行开源 DeOldify?ColorfulSoft 在这里做了这样的事情,它确实有效 –

1.【点击下载-安装包。无需 GPU!

2.安装所需要的环境:【点击下载】Anaconda 3.0

3.训练好的模型【点击下载

高级版本的 DeOldify 图像着色可在此处独家获得。免费试用几张图片!我的色彩遗产

Huggingface Web 演示: 使用Gradio集成到Huggingface Spaces。看演示:拥抱面部空间


图像(艺术)图像 Colab | 视频视频协作

默认图像着色器(又名“艺术”)有问题吗?试试下面的“稳定”。它通常不会产生像“艺术”一样有趣的颜色,但毛刺明显减少了。

图像(稳定)用于稳定模型的 Colab

Old Ireland in Colour 的 John Breslin 以视频教程的形式提供了有关如何使用上述 Colab 的说明。这很棒!点击下方视频图片观看。

关于 DeOldify

简单地说,这个项目的任务是对旧图像和电影镜头进行着色和修复。我们稍后会详细介绍,但首先让我们看一些漂亮的图片和视频!

DeOldify 中令人兴奋的新内容

  • 几乎完全消除了故障和伪像
  • 更好的皮肤(更少的僵​​尸)
  • 更详细和逼真的渲染
  • 更少的“蓝色偏见”
  • 视频– 它实际上看起来不错!
  • NoGAN – 一种新奇但非常有效的方法,可以对图像进行 GAN 训练。

示例视频

注: 点击图片观看

Facebook F8 演示

DeOldify Facebook F8 电影着色演示

无声电影示例

DeOldify 无声电影示例

示例图片

多萝西娅·兰格 (Dorothea Lange) 的《移民母亲》(1936)

打工的妈妈

在瑞典的客厅里放松的女人(1920 年)

瑞典客厅

吉米·西姆 (Jimmy Sime) 的“Toffs and Toughs” (1937)

阶级划分

感恩节面具 (1911)

感恩节面具

马里兰州 Glen Echo Careta 夫人吉普赛营地 (1925)

吉普赛营地

“Lemuel Smith 夫妇和他们年幼的孩子在佐治亚州卡罗尔县的农舍里。” (1941)

格鲁吉亚农舍

“建造金门大桥”(est 1937)

金门大桥

注意: 您可能想知道虽然此渲染图看起来很酷,但颜色准确吗?原始照片确实使桥塔看起来像是白​​色的。我们对此进行了调查,结果证明答案是否定的——此时塔楼已经被红色底漆覆盖。所以要记住这一点——历史准确性仍然是一个巨大的挑战!

“Terrasse de café,巴黎”(1925 年)

巴黎咖啡馆

挪威新娘(1890 年代后期)

挪威新娘

Zitkála-Šá(拉科塔语:Red Bird),又名 Gertrude Simmons Bonnin (1898)

土生土长的女人

中国鸦片吸食者 (1880)

真正的鸦片

应该写在论文中的东西

如何实现稳定的视频

NoGAN 训练对于获得在 DeOldify 的这次迭代中看到的那种稳定和彩色图像至关重要。NoGAN 训练结合了 GAN 训练的优点(美妙的着色),同时消除了令人讨厌的副作用(如视频中闪烁的物体)。信不信由你,视频是使用孤立的图像生成渲染的,没有附加任何类型的时间建模。该过程执行“NoGAN”训练的 GAN 部分的 30-60 分钟,一次使用 1% 到 3% 的 imagenet 数据。然后,与静止图像着色一样,我们在重建视频之前“去旧化”单个帧。

除了提高视频稳定性外,还有一件有趣的事情值得一提。事实证明,我运行的模型,即使是不同的模型和不同的训练结构,都会或多或少地得出相同的解决方案。对于您可能认为随意且不可知的事物的着色,情况也是如此,例如衣服的颜色、汽车的颜色,甚至是特效的颜色(如“大都会”中所见)。

大都会特别外汇

我最好的猜测是,这些模型正在学习一些有趣的规则,这些规则是关于如何根据黑白图像中存在的微妙线索进行着色的,我当然不希望存在这些线索。这个结果会产生很好的确定性和一致的结果,这意味着您没有跟踪模型着色决策,因为它们不是任意的。此外,它们看起来非常坚固,因此即使在移动场景中,渲染也非常一致。

移动场景示例

稳定视频的其他方法也加起来。首先,一般来说,以更高分辨率(更高的 render_factor)渲染会增加着色决策的稳定性。这是有道理的,因为该模型具有更高保真度的图像信息可供使用,并且更有可能始终如一地做出“正确”的决定。与此密切相关的是使用 resnet101 而不是 resnet34 作为生成器的主干——由此可以更一致、更正确地检测对象。这对于获得良好、一致的皮肤渲染尤为重要。例如,如果你以“僵尸手”结束,它在视觉上可能会特别刺耳。

僵尸手示例

此外,训练期间的高斯噪声增强似乎有所帮助,但在这一点上,关于多少有点更脆弱的结论(我还没有正式测量过)。这大致基于在风格转换视频中所做的工作,如下所述: https ://medium.com/element-ai-research-lab/stabilizing-neural-style-transfer-for-video-62675e203e42 。

特别感谢 Rani Horev 在实施这种噪声增强方面所做的贡献。

什么是 NoGAN?

这是我为了解决之前DeOldify模型中的一些关键问题而开发的新型GAN训练。它提供了 GAN 训练的好处,同时花费最少的时间进行直接 GAN 训练。相反,大部分训练时间都花在了使用更直接、快速和可靠的传统方法分别预训练生成器和评论家上。这里的一个关键见解是,那些更“传统”的方法通常可以为您提供所需的大部分结果,并且 GAN 可用于缩小现实主义的差距。在非常短的实际 GAN 训练期间,生成器不仅获得了过去需要数天逐渐调整大小的 GAN 训练才能获得的完整逼真着色功能,而且它也不会产生几乎与 GAN 一样多的伪像和其他丑陋包袱。实际上,根据您的方法,您几乎可以完全消除故障和伪像。据我所知,这是一项新技术。而且它非常有效。

原始 DeOldify 模型

闪烁前

基于 NoGAN 的 DeOldify 模型

闪烁后

步骤如下:首先以常规方式单独训练生成器,仅损失特征。接下来,从中生成图像,并训练评论家区分这些输出和真实图像作为基本的二元分类器。最后,在 GAN 设置中一起训练生成器和评论家(在本例中从 192px 的目标大小开始)。现在奇怪的是:这里所有有用的 GAN 训练都只在非常短的时间内进行。有一个拐点,评论家似乎已经转移了对生成器有用的一切。超过这一点,图像质量会在拐点处的最佳图像质量和可预测的糟糕图像质量(橙色皮肤、过红的嘴唇等)之间摇摆不定。拐点之后似乎没有生产性培训。而这一点在于仅对 1% 到 3% 的 Imagenet 数据进行训练!这相当于在 192px 下进行大约 30-60 分钟的训练。

困难的部分是找到这个拐点。到目前为止,我已经通过制作一大堆模型保存检查点(每迭代 0.1% 的数据)然后在图像完全变成橙色皮肤之前寻找图像看起来很棒的点(总是第一件事)来实现这一点去)。此外,生成器渲染此时开始立即出现故障和不一致,这对视频来说尤其不利。我真正想弄清楚的是,拐点的标志是什么,可以很容易地自动化作为早期停止点。不幸的是,我还没有明确的消息。其一,它发生在训练损失减少的过程中——而不是在它趋于平缓的时候,这在表面上看起来更合理。

NoGAN 训练的另一个关键是,您可以在初始 GAN 训练后重复对生成图像的评论家进行预训练,然后以相同的方式重复 GAN 训练本身。这就是我如何使用“艺术”模型获得额外色彩的结果。但目前这确实是有代价的——生成器的输出变得越来越不一致,你必须尝试渲染分辨率 (render_factor) 以获得最佳结果。但是渲染仍然没有故障,并且比我使用原始 DeOldify 模型能够实现的更加一致。据我所知,在你得到递减的回报之前,你可以做大约五个这样的重复周期,给予或接受。

请记住——我并没有完全严格地弄清楚 NoGAN 中发生的一切——我会把它留到一篇论文中。这意味着我很有可能在某件事上错了。但我认为它现在绝对值得推出,因为我发现它非常有用——它基本上解决了我在 DeOldify 中剩下的大部分问题。

这建立在与 Jeremy Howard 和 Sylvain Gugger 合作为 Fast.AI 的第 7 课编码器实用深度学习第 1 部分开发的技术的基础上。可以在此处找到特定的课程笔记本: https ://github.com/fastai /course-v3/blob/master/nbs/dl1/lesson7-superres-gan.ipynb

为什么是三个模型?

DeOldify 中现在有三种模型可供选择。其中每一个都有关键的优点和缺点,因此有不同的用例。视频当然是为了视频。但是稳定和艺术都是图像,有时一个人做图像会比另一个更好。

更多细节:

  • 艺术– 该模型在有趣的细节和活力方面实现了图像着色的最高质量结果。然而,最显着的缺点是摆弄以获得最佳结果有点痛苦(您必须调整渲染分辨率或 render_factor 才能实现此目的)。此外,该模型在一些关键的常见场景(自然场景和人像)中表现不佳。该模型在 UNet 上使用 resnet34 主干,强调解码器端的层深度。除了初始生成器/评论家预训练/GAN NoGAN 训练外,该模型还通过 NoGAN 进行了 5 次评论家预训练/GAN 循环重复训练,分辨率为 192px。这加起来总共有 32% 的 Imagenet 数据训练过一次(12.5 小时的直接 GAN 训练)。

  • 稳定– 此模型在风景和人像方面取得了最佳效果。值得注意的是,它产生的“僵尸”较少——面部或四肢保持灰色而不是正确着色。与艺术作品相比,它通常具有更少的怪异色彩错误,但总体上也没有那么丰富多彩。该模型在 UNet 上使用 resnet101 主干,强调解码器端的层宽度。除了初始生成器/评论家预训练/GAN NoGAN 训练之外,该模型还通过 NoGAN 进行了 3 次评论家预训练/GAN 循环重复训练,分辨率为 192px。这加起来总共有 7% 的 Imagenet 数据训练过一次(3 小时的直接 GAN 训练)。

  • 视频– 此模型针对流畅、一致且无闪烁的视频进行了优化。这绝对是三个模型中最不丰富多彩的,但老实说,它离“稳定”相差不远。该模型在架构方面与“稳定”相同,但在训练方面有所不同。它仅使用初始生成器/评论家预训练/GAN NoGAN 训练(1 小时的直接 GAN 训练)以 192 像素训练了一次 2.2% 的 Imagenet 数据。

因为艺术和稳定模型的训练是在“什么是NoGAN???”中描述的NoGAN训练的“拐点”之前完成的。被发现后,我相信可以大大减少对他们的训练量。据我所知,这些模型停在了远远超出进行生产性培训的“好点”。以后我会研究这个。

理想情况下,最终这三种模型将合并为一个具有所有这些理想的统一模型。我认为那里有一条路,但这需要更多的工作!所以目前,最实用的解决方案似乎是维护多个模型。

技术细节

这是一个基于深度学习的模型。更具体地说,我所做的是结合以下方法:

自注意力生成对抗网络

除了生成器是预训练的 U-Net之外,我刚刚修改它以使其具有光谱归一化和自注意力。这是一个非常简单的翻译。

两个时间尺度更新规则

这也非常简单——它只是一对一的生成器/批评家迭代和更高的批评家学习率。这被修改为包含一个“阈值”critic loss,确保 critic 在继续进行生成器训练之前被“赶上”。这对于下面描述的“NoGAN”方法特别有用。

诺甘

这里没有纸!这是我为了解决之前DeOldify模型中的一些关键问题而开发的新型GAN训练。要点是,您可以在花费最少的时间进行直接 GAN 训练的同时获得 GAN 训练的好处。更多详细信息,请参阅什么是 NoGAN?部分(这是一个愚蠢的)。

发电机损失

NoGAN 学习过程中的损失分为两个部分:一个是基于 VGG16 的基本感知损失(或特征损失)——这只是使生成器模型产生偏差以复制输入图像。第二个是来自评论家的损失分数。对于好奇的人——知觉损失本身并不足以产生好的结果。它往往只会鼓励一堆棕色/绿色/蓝色——你知道,在测试中作弊,基本上,哪些神经网络真的很擅长做!这里要认识到的关键是 GAN 本质上是在为你学习损失函数——这实际上是朝着我们在机器学习中追求的理想迈进了一大步。当然,当你让机器学习你以前手工编码的东西时,你通常会得到更好的结果。这当然是这里的情况。

注意: 这里不再进行任何“GAN 的渐进式增长”类型的培训。只是不需要它来代替上述“NoGAN”技术获得的卓越结果。

这个模型的美妙之处在于它应该对各种图像修改都很有用,而且应该做得很好。您在上面看到的是着色模型的结果,但这只是我使用完全相同的方法开发的管道中的一个组件。

这个项目,前进

所以这就是这个项目的要点——我希望用 GAN 使旧照片和电影看起来非常好,更重要的是,让这个项目变得有用。与此同时,尽管这将是我的宝贝,但我将在可预见的未来积极更新和改进代码。我会尽量使它对用户友好,但我确信在此过程中会出现问题。

哦,我发誓我会正确记录代码……最终。不可否认,我是 那些相信“自文档化代码”(LOL)的人之一。

自己开始

最简单的方法

最简单的入门方法是直接转到 Colab 笔记本:

图片图像 Colab | 视频视频协作

特别感谢 Matt Robinson 和 María Benavente 为 Colab notebook 贡献的图片,以及 Robert Bell 为视频 Colab notebook 所做的工作!

你自己的机器(不那么容易)

硬件和操作系统要求

  • (仅限培训)BEEFY 显卡。我真的很想拥有比我的 GeForce 1080TI (11GB) 中的 11 GB 更多的内存。少花钱你会过得很艰难。Generators 和 Critic 大得离谱。
  • (单独着色)不错的显卡。大约 4GB+ 内存的视频卡应该足够了。
  • Linux。我使用的是 Ubuntu 18.04,我知道 16.04 也能正常工作。 Windows 不受支持,因此不会调查与此相关的任何问题。

简易安装

您现在应该能够使用 Anaconda 进行简单的安装。以下是步骤:

打开命令行并导航到要安装的根文件夹。然后输入以下命令

git clone https://github.com/jantic/DeOldify.git DeOldify
cd DeOldify
conda env create -f environment.yml

然后开始运行这些命令:

source activate deoldify
jupyter lab

从那里您可以开始在 Jupyter Lab 中运行笔记本,通过它们在控制台中提供给您的 url。

注意:如果你有最新版本的 conda,你现在也可以执行“conda activate deoldify”,事实上现在推荐这样做。但是很多人还没有,所以我不打算把它作为这里的默认指令。

替代安装:用户 daddyparodz 为 Ubuntu 创建了一个安装程序脚本,特别是 WSL 上的 Ubuntu,这可能会使事情变得更容易: https ://github.com/daddyparodz/AutoDeOldifyLocal

关于 test_images 文件夹的注意事项

文件夹中的图像test_images已被删除,因为它们使用的是 Git LFS,而且当 GitHub 实际上对一个流行的开源项目的带宽收费时,这会花费很多钱(他们最近修复了一个计费错误)。使用它们的笔记本(图像测试笔记本)仍然指向我 (Jason) 个人拥有的那个目录中的图像,我想保持这种状态,因为毕竟我是迄今为止最主要和最活跃的开发商。但他们不会为你工作。尽管如此,如果您愿意,这些笔记本仍然是您进行自己测试的方便模板。

典型培训

创建笔记本ColorizeTrainingWandb是为了通过Weights & Biases记录和监控结果。您可以通过查阅W&B 报告找到典型培训的描述。

预训练权重

要立即在您自己的机器上使用您自己的图像或视频开始而不用自己训练模型,您需要下载下面列出的“已完成的生成器权重”并将它们放在 /models/ 文件夹中。

着色推理笔记本应该能够从这里指导你。要使用的笔记本名为 ImageColorizerArtistic.ipynb、ImageColorizerStable.ipynb 和 VideoColorizer.ipynb。

完成的发电机重量

完成的评论权重

仅预训练生成器权重

Pretrain Only Critic 权重

想要 Old DeOldify 吗?

我们怀疑你们中的一些人出于各种原因想要访问原始的 DeOldify 模型。我们把它存档在这里: https ://github.com/dana-kelley/DeOldify