我们每个人都有父母、祖父母等传下来的大量旧照片。这些照片通常都是黑白的,有时我们希望将它们变成彩色。网上有许多网站,您只需在浏览器中单击几下即可实现此目的。然而,这些网站的问题在于它们在数量和质量上有很多限制。 此外,这些服务通常需要注册和订阅,这可能令人非常沮丧。 在这篇文章中,我想分享如何使用奇妙的工具 为任意数量的照片上色,而不受限制、注册或订阅的麻烦。 DeOldify 有一个 ,你可以使用它,但对于没有准备的人来说,它可能看起来有点难。这里,我想演示一种更简单的使用 的方法。 DeOldify 很棒的介绍 DeOldify 准备环境 首先,你需要一台运行 或 计算机。如果你使用的是 ,你仍然可以通过使用 来继续。 Linux macOS 的 Windows Windows Subsystem for Linux (WSL) 以下是 所需软件包的列表: Ubuntu sudo apt update sudo apt install python3-pip wget git ffmpeg libsm6 libxext6 如果您有其他 发行版,您可以使用该列表作为参考。 Linux 对于 (不幸的是,这是一个近似列表,因为我没有明确的 可供测试): macOS macOS brew install python wget git ffmpeg libsm libxext 下一步是创建一个名为 单独文件夹来执行所有操作。您可以选择任何其他名称,甚至可以选择不创建任何内容并完全跳过此步骤。 Sandbox 的 # Optional mkdir Sandbox cd Sandbox 然后克隆 : DeOldify git clone https://github.com/jantic/DeOldify.git 没有任何版本或标签,这意味着我们使用 分支。我相信所有内容都应该随时与最新的主分支兼容。但以防万一,这里是我用来测试所有内容的修订号: DeOldify 主 。如果你愿意,你可以看看: be725ca6c5f411c47550df951546537d7202c9bc # Optional cd DeOldify git checkout be725ca6c5f411c47550df951546537d7202c9bc cd .. 之后,安装所有 Python 依赖项: pip3 install --user -r DeOldify/requirements.txt pip3 install --user -r DeOldify/requirements-colab.txt pip3 install --user -r DeOldify/requirements-dev.txt 接下来,为模型创建一个目录,并下载模型: mkdir -p DeOldify/models wget https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth -O DeOldify/models/ColorizeArtistic_gen.pth 就这样!环境已经准备好了;最困难的部分已经过去了。现在,让我们写一些 Python 代码。 给一切涂上颜色 对我们来说最有趣和最有用的函数是 。 ModelImageVisualizer.plot_transformed_image() 我们需要做的就是围绕它编写代码。 这是我的实现: #!/usr/bin/python3 from deoldify import device from deoldify.device_id import DeviceId # choices: CPU, GPU0...GPU7 device.set(device=DeviceId.GPU0) from deoldify.visualize import * import warnings import sys import os warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?") # Play with this constant! render_factor = 35 input_dir = sys.argv[1] output_dir = sys.argv[2] if not os.path.isdir(input_dir): print("input directory is not a directory or not exist") sys.exit(1) if os.path.exists(output_dir): print("out directory is already exist") sys.exit(1) os.makedirs(output_dir) root_dir = Path(os.environ['PYTHONPATH']) colorizer = get_image_colorizer(root_folder=root_dir, artistic=True) for filename in os.listdir(input_dir): f = os.path.join(input_dir, filename) if os.path.isfile(f) and (f.endswith(".png") or f.endswith(".jpg") or f.endswith(".jpeg")): image_path = colorizer.plot_transformed_image( path=f, results_dir=Path(output_dir), render_factor=render_factor, compare=True, watermarked=False ) print("{} ready".format(image_path)) 请随意复制、粘贴并修改它。 该脚本从作为第一个脚本参数传递的目录中读取所有 、 和 图像并对其进行着色,将结果保存到作为第二个脚本参数传递的目录中。请注意,输出目录一定不存在;脚本会自行创建。我将脚本保存在 文件中,但如果您愿意,可以使用其他位置和名称。 .png .jpg .jpeg Sandbox/runner.py 我们来尝试一下吧!我将一张黑白照片放入 ,输出目录为 : Sandbox/photos/in Sandbox/photos/out # from Sandbox directory PYTHONPATH=./DeOldify/ python3 runner.py photos/in/ photos/out/ 环境变量 必须引用 目录。 PYTHONPATH DeOldify 结果如下: