Python+AI為舊照片上色

王林
發布: 2023-04-10 20:11:01
轉載
1705 人瀏覽過

哈嘍,大家好。

今天繼續跟大家分享有趣的 AI 專案。

上次我們分享了用GAN(產生對抗網路)讓靜態圖片動起來#。

今天我們分享用NoGAN的圖像增強技術來為老照片著色。效果如下:

Python+AI為舊照片上色

原圖

Python+AI為舊照片上色

#上色後

NoGAN是一種新型GAN ,它能花費最少的時間進行GAN訓練。

今天分享的這個專案已在GitHub開源項目,我們來先運行一下。

1. 準備工作

首先,用git clone指令下載原始碼。

git clone https://github.com/jantic/DeOldify.git
登入後複製

進入專案根目錄,安裝Python依賴套件。

pip3 install -r requirements.txt
登入後複製

在編寫程式碼運行專案之前,需要下載預先訓練好的模型。項目提供了三個模型:

Python+AI為舊照片上色

模型

區別如下:

  • ColorizeArtistic_gen.pth:在有趣的細節和活力方面實現了最高品質的圖像著色效果,該模型在UNet 上使用resnet34 為主幹,透過NoGAN 進行了5 次評論家預訓練/GAN 循環重複訓練。
  • ColorizeStable_gen.pth:在風景和肖像方面取得了最佳效果,該模型在 UNet 上使用 resnet101 為主幹,透過 NoGAN 進行了 3 次評論家預訓練/GAN 循環重複訓練。
  • ColorizeVideo_gen.pth:針對流暢的影片進行了最佳化,它僅使用初始生成器/評論家預訓練/GAN NoGAN 訓練。由於追求流暢的速度,它的色彩比前兩者少。
  • 將下載好的模型檔案放在專案根目錄的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中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!