LaMa 图像修复实战教程:推理、掩码生成与指标评测全流程完整指南
2026/9/17 18:35:06 网站建设 项目流程

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.pybin/gen_mask_dataset.pybin/train.pybin/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.pngimage1.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_HOMEPYTHONPATH这两个变量要在同一终端会话中导出后再运行任何脚本,否则权重查找与模块导入都会出问题。

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 512x512CelebA 256x256
窄(Narrow)random_thin_512.yamlrandom_thin_256.yaml
中(Medium)random_medium_512.yamlrandom_medium_256.yaml
宽(Wide)random_thick_512.yamlrandom_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: 3px_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_HOMEPYTHONPATH两个环境变量。解法:在仓库根目录先执行export TORCH_HOME=$(pwd) && export PYTHONPATH=$(pwd)再运行脚本。

  • 现象:部分图片没有输出结果。原因:图片与掩码文件名不配对,或后缀声明不符。解法:核对掩码是否遵循image_maskXXX.ext规则,并检查dataset.img_suffix是否与实际后缀一致。

  • 现象:开 refine 后特别慢甚至显存不足。原因:精修默认对最多 3 个尺度各做 15 次迭代,开销很大。解法:先用refine=False验证流程,确需精修时调小n_iterspx_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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询