目前人工智慧(AI)已有越來越多的應用,而CodeFormer是一種人工智慧數位臉部修復工具,一般可以在其官網上傳照片,它會修復後讓你下載,但傳過一次曠日費時,還好它是開源軟體,於是將其安裝到自己的電腦中,便可以批次處理,不過事涉大量運算,有獨顯速度會快些,沒有的就只能用CPU硬解。
如果原稿臉部夠大張(最好512×512像素以上),其還原程度相當不錯,有針對臉部一般修復、精細修復、上色、破碎還原等,個人覺得蠻自然傳神的。它也可以針對影片做臉部修復,但更耗資源我就不試了,有興趣的可以將你的照片丟到網站上試試看。
CodeFormer專案:
https://github.com/sczhou/CodeFormer
- 先 https://repo.anaconda.com/archive/ 下載 anaconda 2024.06-1 版 (挑選 Linux x86_64)**CodeFormer 建議 Python 3.8~3.11,太新的可能會出問題!!
- 安裝Anaconda(使用者為emer)
chmod +x Anaconda3-2020.11-Linux-x86_64.sh
sh ./Anaconda3-2020.11-Linux-x86_64.sh
[Enter] 觀看版權聲明,[空白鍵]翻頁,按[q]離開
Do you accept the license terms? [yes|no] -> [yes]
Anaconda3 will now be installed into this location:/home/emer/anaconda3 -> [Enter]
Do you wish to update your shell profile to automatically initialize conda? -> [yes] - 關掉終端機再打開終端機。
- 建立 CodeFormer 專用環境與環境變數
conda create -n codeformer python=3.8 -y; conda activate codeformer(CodeFormer 對 3.8–3.10 最穩,此處採 3.8) - 安裝與 GTX 1060 相容的 PyTorch(CUDA 版)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 --cache-dir=$HOME/tmp - 取得 CodeFormer 原始碼並安裝依賴
git clone https://github.com/sczhou/CodeFormer; cd CodeFormer
export TMPDIR=$HOME/tmp
pip install -r requirements.txt --cache-dir=$HOME/tmp
python basicsr/setup.py develop
conda install -c conda-forge dlib
python scripts/download_pretrained_models.py facelib(失敗)
python scripts/download_pretrained_models.py CodeFormer(失敗)
使用 CodeFormer:
將一個批次檔(ex: aiphoto)放置於 /usr/local/bin 內容如下:
#!/usr/bin/env bash
INPUT_DIR="${INPUT_DIR:-$HOME/old}"
OUTPUT_DIR="${OUTPUT_DIR:-$HOME/aiphoto}"
CODEFORMER_DIR="${CODEFORMER_DIR:-$HOME/CodeFormer}"
CONDA_ENV_NAME="${CONDA_ENV_NAME:-codeformer}"
cd "$CODEFORMER_DIR" || { echo "找不到 CodeFormer 目錄:$CODEFORMER_DIR"; exit 1; }
clear
echo "=============================================="
echo " CodeFormer 批次處理操作介面 "
echo "=============================================="
echo "原始圖片資料夾:$INPUT_DIR"
echo "輸出結果資料夾:$OUTPUT_DIR"
echo
echo "請選擇處理模式:"
echo " [1] 僅修復"
echo " [2] 利用 Real-ESRGAN 強化背景區域"
echo " [3] 以 Real-ESRGAN 進一步提升修復後的人臉細節"
echo " [4] 彩色化黑白或褪色照片"
echo " [5] 人臉修補(裁切並對齊的人臉)"
echo " [6] 修復影片"
echo " [0] 離開程式"
read -p "請輸入選項數字(0-6): " choice
if [[ "$choice" =~ ^[1-3]$ ]]; then
read -p "請輸入權重值 (例如 0.7 或 1.0,建議 0.7~1.0): " weight
if ! [[ "$weight" =~ ^0*(\.([0-9]+))?$|^1(\.0*)?$ ]]; then
echo "錯誤:權重請輸入介於 0 與 1 之間的數字"
exit 1
fi
fi
run_py() { conda run -n "$CONDA_ENV_NAME" python "$@"; }
case $choice in
0) echo "離開程式。"; exit 0 ;;
1) echo "執行選項 1:僅使用權重 ${weight} 修復"
run_py inference_codeformer.py -w "$weight" --input_path "$INPUT_DIR" --output_path "$OUTPUT_DIR" ;;
2) echo "執行選項 2:使用權重 ${weight} 並利用 Real-ESRGAN 強化背景區域"
run_py inference_codeformer.py -w "$weight" --bg_upsampler realesrgan --input_path "$INPUT_DIR" --output_path "$OUTPUT_DIR" ;;
3) echo "執行選項 3:使用權重 ${weight} 並以 Real-ESRGAN 進一步提升修復後的人臉細節"
run_py inference_codeformer.py -w "$weight" --face_upsample --bg_upsampler realesrgan --input_path "$INPUT_DIR" --output_path "$OUTPUT_DIR" ;;
4) echo "執行選項 4:彩色化黑白或褪色照片"
run_py inference_colorization.py --input_path "$INPUT_DIR" --output_path "$OUTPUT_DIR" ;;
5) echo "執行選項 5:人臉修補(裁切並對齊的人臉)"
run_py inference_inpainting.py --input_path "$INPUT_DIR" --output_path "$OUTPUT_DIR" ;;
6) shopt -s nullglob
video_files=("$INPUT_DIR"/*.{mp4,avi,mkv,mov})
shopt -u nullglob
if [ ${#video_files[@]} -eq 0 ]; then
echo "錯誤:$INPUT_DIR 目錄中沒有任何影片檔 (mp4, avi, mkv, mov)"
exit 1
fi
echo "執行選項 6:修復影片"
for video in "${video_files[@]}"; do
filename=$(basename "$video")
output_path="$OUTPUT_DIR/$filename"
echo "處理影片 $video ..."
run_py inference_codeformer.py --bg_upsampler realesrgan --face_upsample -w 1.0 --input_path "$video" --output_path "$output_path"
if [ $? -eq 0 ]; then
echo "影片處理完成,輸出 $output_path"
else
echo "影片處理錯誤:$video"
fi
done ;;
*) echo "無效選項,請重新執行並選擇有效選項。"; exit 1 ;;
esac
echo
read -p "是否刪除原始資料夾 $INPUT_DIR 的所有檔案? (y/n): " del_choice
if [[ "$del_choice" =~ ^[Yy]$ ]]; then
rm -rf "$INPUT_DIR"/*
echo "原始資料已刪除。"
else
echo "保留原始資料。"
fi
如果有 Nvidia 顯卡,運算速度將會加快許多,方法如下:(以使用 LDS1.x 為例),注意!核心要使用 Debian 標準版核心以免編譯失敗。
sudo apt update
sudo apt upgrade
sudo apt install linux-headers-amd64
sudo apt install nvidia-detect nvidia-driver firmware-misc-nonfree
作業系統會自動將 Nvidia 支援加入核心中,重新開機即可生效,再跑看看會發現速度加快非常多。
留言
張貼留言