2017年10月28日 星期六

(可離線/批次/命令列的) 把彩色相片變成黑白、 幫黑白相片上色

想要把彩色圖片變成黑白, 可以這樣下: convert color.jpg -colorspace Gray gray.jpg。 詳見 ImageMagick 手冊

想要把黑白相片塗上顏色, 可以到 梅問題大大 攝影札記 所介紹的網站去上傳相片。

如果不想上傳, 想要離線作業, and/or 需要以指令的方式批次大量處理 -- 例如想要幫歷史黑白影片上色 -- 那就到 github 去下載 colorization 吧。 (有圖可看效果)

站在 docker 的肩膀上, 這個程式很容易安裝, 因為它所需要的相依套件, floydhub/dl-docker 裡面都已經備齊了。 先啟動 dl-docker: docker run -it --name ailab -v ~/share:/root/share floydhub/dl-docker:cpu 。 (或是把最後的 :cpu 改成 :gpu) 關於目錄對應關係, 詳見 跟同學交換 ethercalc 容器, 馬上理解 docker 的 volume、 port、 link。 下載結束、 成功執行、 離開 guest 之後, 以後可以用 docker start -ai ailab 連回去。 詳見 前景/背景/收工休息 圖解 docker 狀態轉換

進入 docker 後, 先從官網下載程式碼: cd ~/share ; git clone -b master --single-branch https://github.com/richzhang/colorization.git 進入 colorization 子目錄之後, 看見其中的 models/fetch_release_models.sh 是一個簡單的 shell script, 用來下載權重矩陣。 可是官網所提供的權重矩陣下載點已經壞掉了。 還好照著 這一頁 做, 也可以下載得到: wget -O model.zip https://modeldepot.io/assets/uploads/models/models/9b018895-225c-4001-841e-06a5f34ddd56_model.zip 解壓縮後會出現一個 model/ 子目錄及底下的模型檔和權重矩陣。

現在假設你在 host 裡有一張黑白相片 ~/share/gray.jpg 。 請進入 ailab 裡面:

cd /root/share/colorization/
# 編輯 colorization/colorize.py 修改模型檔的路徑
python colorization/colorize.py -img_in gray.jpg -img_out color.jpg

然後就可以從 host 裡面收割彩色圖片了: geeqie ~/share/color.jpg。 注意: 在僅能使用 CPU 的電腦上, 必須先編輯 colorize.py 把 caffe.set_mode_gpu() 的 gpu 改成 cpu, 並且把下面那句 caffe.set_device(args.gpu) 註解掉。

誰家有古老的黑白影片啊? 要不要拿出來著色一下呢 :-)

因為著色的可能性太多了, 這個程式只是試著塗上自然、 有意義的顏色, 而不太容易產生跟原相片一模一樣的顏色。 大自然的景象好像比較容易近乎還原; 動物其次; 人造物因為本來就可以塗上各種顏色, 所以還原的結果跟真正的顏色可能差很多。 感覺彷彿它不太有把握時, 就會把相片塗成泛黃的顏色, 有點老舊照片的效果, 很聰明的類神經網路啊!

沒有留言:

張貼留言

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。