Python+AI給老照片上色
哈嘍,大家好。
今天繼續(xù)給大家分享有趣的 AI 項目。
上次我們分享了用GAN(生成對抗網(wǎng)絡(luò))??讓靜態(tài)圖片動起來??。
今天我們分享用NoGAN的圖像增強技術(shù)給老照片著色。效果如下:
原圖
上色后
NoGAN是一種新型GAN,它能花費最少的時間進行GAN訓練。
今天分享的這個項目已在GitHub開源項目,下面我們來運行一下。
1. 準備工作
首先,用git clone命令下載源碼。
git clone https://github.com/jantic/DeOldify.git
進入項目根目錄,安裝Python依賴包。
pip3 install -r requirements.txt
編寫代碼運行項目之前,需要下載預訓練好的模型。項目提供了三個模型:
模型
區(qū)別如下:
- ColorizeArtistic_gen.pth:在有趣的細節(jié)和活力方面實現(xiàn)了最高質(zhì)量的圖像著色效果,該模型在 UNet 上使用 resnet34 為主干,通過 NoGAN 進行了 5 次評論家預訓練/GAN 循環(huán)重復訓練。
- ColorizeStable_gen.pth:在風景和肖像方面取得了最佳效果,該模型在 UNet 上使用 resnet101 為主干,通過 NoGAN 進行了 3 次評論家預訓練/GAN 循環(huán)重復訓練。
- ColorizeVideo_gen.pth:針對流暢的視頻進行了優(yōu)化,它僅使用初始生成器/評論家預訓練/GAN NoGAN 訓練。由于追求流暢的速度,它的色彩比前兩者少。
- 將下載好的模型文件放在項目根目錄的models目錄下即可。
2. 編寫代碼
在項目根目錄同級目錄下創(chuàng)建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模塊將圖片轉(zhuǎn)換成模型輸入所需要的格式,送入模型進行上色,完成后保存。
上述代碼是我從項目源碼中抽取的,可以看到,運行代碼還是非常簡單的。