paint-brush
白黒写真をカラー化する方法@alexk0
615 測定値
615 測定値

白黒写真をカラー化する方法

Aleksandr Korepanov4m2024/06/07
Read on Terminal Reader

長すぎる; 読むには

DeOldify は、数回クリックするだけで古い写真をカラー化できるツールです。無料のオープンソースで、少しの Python コードを書くだけで済みます。
featured image - 白黒写真をカラー化する方法
Aleksandr Korepanov HackerNoon profile picture
0-item

私たちは皆、両親や祖父母などから受け継いだ古い写真の宝庫を持っています。これらの写真は白黒であることが多いですが、時にはカラーで生き生きとさせたいこともあります。ブラウザで数回クリックするだけでこれを実現できる Web サイトは数多くあります。しかし、これらのサイトの問題は、量と品質に多くの制限があることです。


さらに、これらのサービスでは登録やサブスクリプションが必要になることが多く、非常に面倒な場合があります。


この記事では、制限や登録、サブスクリプションの煩わしさなしに、素晴らしいツール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画像を読み取り、それらをカラー化して、結果を 2 番目のスクリプト引数として渡されたディレクトリに保存します。出力ディレクトリが存在してはならないことに注意してください。スクリプトによって自動的に作成されます。私はスクリプトをSandbox/runner.pyファイルに保存しましたが、必要に応じて別の場所と名前を使用することもできます。


試してみましょう!白黒写真をSandbox/photos/inに配置し、出力ディレクトリはSandbox/photos/outです。

 # from Sandbox directory PYTHONPATH=./DeOldify/ python3 runner.py photos/in/ photos/out/


環境変数PYTHONPATH はDeOldifyディレクトリを参照する必要があります。


結果は次のとおりです。

白黒写真

カラー写真

オリジナル写真