AI 應用 – 幫黑白影片上色

引言

在數位修復與影像處理領域,將歷史黑白影片轉為彩色不僅能賦予新生命,也能帶給觀眾更直觀的視覺體驗。DeOldify 是目前最受歡迎的開源工具之一,採用深度學習模型來對影像自動上色。本篇將分享我在 WSL Ubuntu 20.04 環境中,結合 Miniconda 與 NVIDIA CUDA,裝好 DeOldify 並實際為影片著色的完整流程。

過程中其實充滿了艱辛,連 github 中的源碼庫都不提供直接的 cli 指令,好在有 chatgpt 的幫忙,再嘗試了無數次後終於可以用了。

當然,這篇文章也是以 chatgpt 產生的內容為主,我適當修改一下,現在應該不會再重到到尾寫文章了吧…Orz

 

環境與需求

本文章是在下列環境下完成的,請先準備好

作業系統:WSL Ubuntu 20.04

Python 環境管理:Miniconda

硬體:具備 CUDA 支援之 NVIDIA GPU

 

安裝流程

安裝步驟如下:我的硬體是 RTX 4070, NVIDIA-SMI 570.124.03 Driver Version: 572.60 CUDA Version: 12.8. 主是 CUDA 12.8 這個要裝一樣,可能有相容性問題。

這樣就完成了 DeOldify 執行所需的所有環境配置。

 

轉換程式:deoldify_cli_4.py 解說

將下列程式與專案目錄,放在一起,並命名為 deoldify_cli_4.py

為了自動化「拆幀→合併上色→拆分→合成影片」的流程,我撰寫了 deoldify_cli_4.py,其主要架構如下:

截取前 1 分鐘測試

使用 ffmpeg 保留音軌,快速檢視上色效果。

拆幀

將影片拆為 BMP 圖片序列,以保證高品質。

Pre-merge

每 4 張 BMP 合併為 2×2 大圖,提高 GPU 批次處理效率。

GPU 着色流程

多進程併行:

pre_merge:合併並推到 merge_q

gpu_worker:從 merge_q 取出大圖,透過 DeOldify 模型上色,結果推到 split_q

splitter:從 split_q 拆分回 4 張著色後的 BMP

 

重組影片

合成無聲彩色视频 (colorized_video.mp4)

與原音軌合併,輸出最終檔 (colorized_with_audio.mp4)

這邊的原始檔需固定檔名為 blackwhite.mp4, 若有需要請自行修改。若用 CPU 做上色,可能需要多幾十倍的時間,明顯的不可行,可以多問問 chatgpt 原音。

Leave a Reply(Name請以user_開頭,否則會被判定會垃圾息)

請輸入答案 × 4 = 20