codeformer 中文文档 下载 App

批处理文件夹:一次跑完整个相册的人脸修复

最简单的批量命令

python inference_codeformer.py -w 0.7 \
    --bg_upsampler realesrgan --face_upsample \
    --input_path D:/old_photos/ \
    --output_path D:/restored/

就这一行。脚本会自动遍历 D:/old_photos/ 及其子目录里的所有图片文件(jpg / jpeg / png / bmp)。

批量处理的核心参数

参数说明批量场景建议
-w所有图片用同一个 w 值老照片统一 w=0.65,AI 生图统一 w=0.3
--bg_upsampler每张图都开背景增强批处理建议开,省得一张一张手动
--face_upsample每张图都开人脸上采样同上
--has_aligned是否跳过检测对齐批量时通常不开(输入是原始相册)
--output_path统一输出目录建议设一个独立目录,结果集中管理

脚本的遍历逻辑

CodeFormer 内部用 os.walk() 递归遍历,这意味着:

提速技巧

1. 关掉 --bg_upsampler(省 30% 时间)

如果背景不是重点,直接修脸就行:

python inference_codeformer.py -w 0.6 --input_path photos/

2. 先离线裁脸(省 50% 时间)

批量跑前先批量裁脸对齐,再用 --has_aligned 模式:

# 第一步:批量裁脸
python scripts/crop_align_face.py -i photos/ -o faces_aligned/

# 第二步:批量修复(跳过检测对齐)
python inference_codeformer.py -w 0.6 --has_aligned --input_path faces_aligned/

3. 多 GPU 并行(高级)

单卡跑批量是串行的。如果你有多张 GPU,可以用 split 把输入文件夹分几份,每个 GPU 一个进程:

# GPU 0
python inference_codeformer.py -w 0.6 --input_path photos_part1/ --output_path results_part1/

# GPU 1(另开一个终端,CUDA_VISIBLE_DEVICES=1)
CUDA_VISIBLE_DEVICES=1 python inference_codeformer.py -w 0.6 \
    --input_path photos_part2/ --output_path results_part2/

批量脚本模板

#!/bin/bash
# batch_restore.sh —— Windows 用户把 .sh 改成 .bat

INPUT_DIR="D:/old_photos"
OUTPUT_DIR="D:/restored"
W_VALUE=0.7
USE_BG_UPSAMPLER=true

mkdir -p "$OUTPUT_DIR"

START_TIME=$(date +%s)

if [ "$USE_BG_UPSAMPLER" = true ]; then
    python inference_codeformer.py \
        -w $W_VALUE -s 2 \
        --bg_upsampler realesrgan --face_upsample \
        --input_path "$INPUT_DIR" \
        --output_path "$OUTPUT_DIR"
else
    python inference_codeformer.py \
        -w $W_VALUE -s 2 \
        --input_path "$INPUT_DIR" \
        --output_path "$OUTPUT_DIR"
fi

END_TIME=$(date +%s)
ELAPSED=$((END_TIME - START_TIME))
echo "完成!耗时 ${ELAPSED} 秒"

批量常见问题

部分图片处理失败

CodeFormer 遇到坏图 / 无脸图会跳过并打印 warning,不会中断整个批量。跑完后检查输出目录——有多少张输入图、多少张输出图,差了哪些。

常见跳过原因:

输出文件名冲突

脚本会保留原文件名。如果子目录里有重名文件,可能会覆盖——建议输入文件夹按人员/地点组织,文件名唯一。

磁盘空间

批量跑前算好磁盘:每张输出图比输入图大 2~5 倍(修复后细节更多、PNG 格式默认无损)。1000 张照片至少留 50GB 空间。

暂停和恢复

CodeFormer 批量处理不支持断点续跑——中断后重开会从头开始。所以: