###こんにちは、みんな。
今日も引き続き、興味深い AI プロジェクトを皆さんと共有していきます。
前回は、GAN (敵対的生成ネットワーク)
を使用して静止画像を動かすを共有しました。
今日は、NoGAN の画像強化テクノロジーを使用して古い写真をカラー化する方法を共有します。効果は次のとおりです。
![Python + AI で古い写真をカラー化 Python + AI で古い写真をカラー化](https://img.php.cn/upload/article/000/465/014/168112866363672.png)
元の画像
![Python + AI で古い写真をカラー化 Python + AI で古い写真をカラー化](https://img.php.cn/upload/article/000/465/014/168112866346447.png)
着色後
NoGAN は新しいものです。 GAN のタイプでは、GAN のトレーニングにかかる時間が最も短くなります。
今日共有するプロジェクトはすでに GitHub 上のオープンソース プロジェクトです。実行してみましょう。
1. 準備
まず、git clone コマンドを使用してソースコードをダウンロードします。
git clone https://github.com/jantic/DeOldify.git
ログイン後にコピー
プロジェクトのルート ディレクトリを入力し、Python の依存関係パッケージをインストールします。
pip3 install -r requirements.txt
ログイン後にコピー
プロジェクトを実行するコードを記述する前に、事前トレーニングされたモデルをダウンロードする必要があります。このプロジェクトは 3 つのモデルを提供します:
![Python + AI で古い写真をカラー化 Python + AI で古い写真をカラー化](https://img.php.cn/upload/article/000/465/014/168112866427608.png)
モデル
違いは次のとおりです:
ColorizeArtistic_gen.pth: 興味深い詳細活力の点では、最高品質の画像着色効果が達成され、モデルは UNet 上のバックボーンとして resnet34 を使用し、NoGAN を通じて 5 回の批評家事前トレーニング/GAN サイクル繰り返しでトレーニングされています。
- ColorizeStable_gen.pth: 風景とポートレートで最良の結果を達成するこのモデルは、バックボーンとして resnet101 を使用し、NoGAN を介した 3 回のクリティカル事前トレーニング/GAN ループ反復により UNet 上でトレーニングされました。
- ColorizeVideo_gen.pth: スムーズなビデオ用に最適化されており、初期ジェネレーター/クリティカル事前トレーニング/GAN NoGAN トレーニングのみを使用します。スムーズな速度を追求したため、前2つよりも色数が少なくなっています。
- ダウンロードしたモデル ファイルをプロジェクト ルート ディレクトリの models ディレクトリに置きます。
2. コードの記述
プロジェクトのルート ディレクトリと同じディレクトリに Python ファイルを作成し、ダウンロードしたモデル ファイルをロードするコードを記述します。
from DeOldify.deoldify.generators import gen_inference_wide
from DeOldify.deoldify.filters import MasterFilter, ColorizerFilter
# 指定模型文件
learn = gen_inference_wide(root_folder=Path('./DeOldify'), weights_name='ColorizeVideo_gen')
# 加载模型
deoldfly_model = MasterFilter([ColorizerFilter(learn=learn)], render_factor=10)
ログイン後にコピー
root_folder はプロジェクトのルート ディレクトリを指定し、weights_name は写真の色付けに次に使用されるモデルを指定します。
古い写真を読み取り、色を付けます。
import cv2
import numpy as np
from PIL import Image
img = cv2.imread('./images/origin.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
pil_img = Image.fromarray(img)
filtered_image = deoldfly_model.filter(
pil_img, pil_img, render_factor=35, post_process=True
)
result_img = np.asarray(filtered_image)
result_img = cv2.cvtColor(result_img, cv2.COLOR_RGB2BGR)
cv2.imwrite('deoldify.jpg', result_img)
ログイン後にコピー
cv2 を使用して古い写真を読み取り、PIL.Image モジュールを使用して写真をモデル入力に必要な形式に変換し、送信します。色付け用のモデル。完成したら色を付けて保存します。
上記のコードはプロジェクトのソース コードから抽出されたものですが、ご覧のとおり、コードの実行は非常に簡単です。
以上がPython + AI で古い写真をカラー化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。