LaMa 图像修复实战教程:推理、掩码生成与指标评测全流程完整指南
【免费下载链接】lama🦙 LaMa Image Inpainting, Resolution-robust Large Mask Inpainting with Fourier Convolutions, WACV 2022项目地址: https://gitcode.com/GitHub_Trending/la/lama
LaMa(Large Mask Inpainting)是 WACV 2022 提出的高分辨率鲁棒图像修复模型,训练时只用 256x256,却能修复到约 2k 分辨率。如果你不清楚如何填补图像缺失区域、如何批量生成掩码、如何量化修复质量,本文可以带你从零搭建一套本地可用的图像修复流水线。
📦 概念铺垫:一张表看懂 LaMa 的目录结构与配置项
在动手之前,先搞清楚"每个目录管什么",后面排错时才知道去哪里找。核心入口是四个命令行脚本(bin/predict.py、bin/gen_mask_dataset.py、bin/train.py、bin/evaluate_predicts.py),其余目录按下表理解:
| 路径 | 类型 | 职责 |
|---|---|---|
| configs/prediction/default.yaml | 配置 | 推理默认参数:indir/outdir、模型路径、图片后缀、refine 开关 |
| configs/data_gen/ | 配置 | thin / medium / thick × 256 / 512 共 6 套随机掩码生成参数 |
| configs/training/ | 配置 | 模型结构(lama-fourier、big-lama 等)与数据路径定义 |
| docker/ | 脚本 | 生成掩码、GPU 推理、指标评测三个一键脚本 |
| fetch_data/ | 脚本 | Places、CelebA-HQ 数据集的下载与准备流程 |
| saicinpainting/training/modules/ | 源码 | FFC 傅里叶卷积、多空洞卷积等核心网络层 |
| saicinpainting/evaluation/ | 源码 | FID / SSIM / LPIPS 指标实现与掩码工具 |
| models/lpips_models/ | 权重 | 感知评测所需的 alex / squeeze / vgg 权重 |
命名约定是后面所有流程的前提:原图与掩码放在同一目录,掩码命名为
image1_mask001.png与image1.png配对;若图片后缀不是.png,记得在推理配置里同步dataset.img_suffix。
🚀 快速上手:四步跑出第一次大掩码图像修复
这一节解决"最快看到效果"的问题:装环境、下模型、准备数据、跑推理,全程不需要改动任何源码。
1. 准备环境与依赖
git clone https://gitcode.com/GitHub_Trending/la/lama cd lama export TORCH_HOME=$(pwd) && export PYTHONPATH=$(pwd) pip install -r requirements.txt注意:
TORCH_HOME和PYTHONPATH这两个变量要在同一终端会话中导出后再运行任何脚本,否则权重查找与模块导入都会出问题。
2. 下载预训练模型
推荐先拿效果最好的big-lama.zip(入口见 README.md 中的说明),解压到仓库根目录即可;如果还需要 CelebA-HQ 版本,再下载完整模型包。
3. 准备图片与掩码
| 文件 | 说明 |
|---|---|
image1.png | 待修复的原图 |
image1_mask001.png | 掩码,白色区域即需要修复的位置 |
4. 执行推理
python3 bin/predict.py \ model.path=$(pwd)/big-lama \ indir=$(pwd)/LaMa_test_images \ outdir=$(pwd)/output效果:outdir中会输出与原图同名的修复结果(由配置中out_key: inpainted决定),默认加载best.ckpt检查点。
🛠️ 进阶定制:三个典型场景的完整配置
跑通之后,多数人会遇到三类需求:不想装环境想用 Docker、掩码想自己生成、想给质量打个数。下面分别给出对应做法。
场景一:用 Docker 做 GPU 批量推理
问题:宿主机不想装 PyTorch 全家桶,或者想直接把卡拉满加速。
做法:docker/ 下提供了现成脚本,三个位置参数依次是模型目录、图片目录、输出目录:
bash docker/2_predict_with_gpu.sh $(pwd)/big-lama $(pwd)/LaMa_test_images $(pwd)/output脚本内部会挂载这三个目录进容器并带--gpus all执行predict.py,镜像定义见 docker/Dockerfile。宿主机无卡时,也可以在命令里追加device=cpu覆盖默认配置,先在本地把流程验证通。
效果:宿机零依赖,批量任务直接产出修复图,容器跑完即销毁。
场景二:从自己的图片批量生成不同厚度的掩码
问题:掩码从哪里来?不同粗细的掩码怎么批量造出来?
做法:用随机掩码生成脚本,第一个参数选掩码风格,后两个参数分别是输入图片目录与输出目录:
bash docker/1_generate_masks_from_raw_images.sh \ configs/data_gen/random_medium_512.yaml \ /directory_with_input_images \ /directory_where_to_store_images_and_masks \ --ext png掩码风格按"厚度 × 数据集"选择,与论文测试集一致(随机种子不固定,每次结果会略有差异):
| 厚度 | Places 512x512 | CelebA 256x256 |
|---|---|---|
| 窄(Narrow) | random_thin_512.yaml | random_thin_256.yaml |
| 中(Medium) | random_medium_512.yaml | random_medium_256.yaml |
| 宽(Wide) | random_thick_512.yaml | random_thick_256.yaml |
效果:输出目录中生成"裁剪原图 + 配对掩码",格式与推理入口要求完全一致,可以直接丢进bin/predict.py处理。
场景三:用 refine 精修大图,并用指标量化质量
问题:大图想再精修一轮;另外需要数字而不是"肉眼看着还行"。
做法:推理时追加refine=True(即python3 bin/predict.py refine=True ...)即可启用多尺度精修,相关参数在 configs/prediction/default.yaml 的refiner段:n_iters: 15(每个尺度的迭代数)、max_scales: 3、px_budget: 1800000。评测则跑:
python3 bin/evaluate_predicts.py \ configs/eval2_gpu.yaml \ my_dataset/eval/random_thick_512 \ inference/my_dataset/random_thick_512 \ inference/my_dataset/random_thick_512_metrics.csv效果:输出包含 FID、SSIM、LPIPS 三项指标的 CSV / metrics 文件,无卡环境可换configs/eval2_cpu.yaml。
🩺 排错与验证:常见现象快速定位与本地验证方法
遇到问题时,建议先按下表的"现象 → 原因 → 解法"对照,大多数卡壳都能在三分钟内定位。
现象:模型下载入口失效、找不到 big-lama 文件。原因:README 中旧的网盘链接已陆续过期。解法:按 README 指引从 HuggingFace(big-lama.zip)或 Google Drive 重新下载,解压到仓库根目录。
现象:首次运行报模块找不到或权重加载失败。原因:没有导出
TORCH_HOME与PYTHONPATH两个环境变量。解法:在仓库根目录先执行export TORCH_HOME=$(pwd) && export PYTHONPATH=$(pwd)再运行脚本。现象:部分图片没有输出结果。原因:图片与掩码文件名不配对,或后缀声明不符。解法:核对掩码是否遵循
image_maskXXX.ext规则,并检查dataset.img_suffix是否与实际后缀一致。现象:开 refine 后特别慢甚至显存不足。原因:精修默认对最多 3 个尺度各做 15 次迭代,开销很大。解法:先用
refine=False验证流程,确需精修时调小n_iters或px_budget。现象:Docker 推理报 GPU 相关错误。原因:宿主机缺少 NVIDIA 驱动或 nvidia-container-runtime。解法:先以
device=cpu跑通流程,再补装 GPU 运行环境。
本地验证方法:挑 2~3 张带掩码的样例图,先用 CPU 小批量跑一次推理,确认outdir中出现同名的 inpainted 结果;再执行一次评测,看到 FID / SSIM / LPIPS 均为有限数值,即可认为整条流水线已正常工作。
📚 资源索引
- README.md:环境搭建、推理、训练与评测的完整说明
- configs/prediction/default.yaml:推理配置默认字段
- configs/data_gen/:六套随机掩码生成参数
- docker/:掩码生成、GPU 推理与评测的一键脚本
- saicinpainting/training/modules/:FFC 傅里叶卷积等核心模块源码
【免费下载链接】lama🦙 LaMa Image Inpainting, Resolution-robust Large Mask Inpainting with Fourier Convolutions, WACV 2022项目地址: https://gitcode.com/GitHub_Trending/la/lama
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考