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)是一个基于傅里叶卷积的图像修复模型,专门负责把图片里被挖掉的大块区域填回来。它训练时只见过 256×256 的小图,却能泛化到 2K 分辨率的输入,对周期性结构这类难点场景也稳。这篇不翻源码,只带你走通一条主线:装环境、备输入、跑推理、判效果、查错误、调参数。
🚀 先把环境跑起来:LaMa的三种安装方式
先拉代码,再建环境:
git clone https://gitcode.com/GitHub_Trending/la/lama cd lama conda env create -f conda_env.yml conda activate lama这是 conda 路线,速度最快;激活后按 README 里的说明补装 PyTorch 相关依赖,README 标了精确版本,别随意升级。偏好 virtualenv 的话,用 python3 建虚拟环境再执行pip install -r requirements.txt即可。手里有 Docker 就完全不用折腾,docker/Dockerfile 基于 CUDA 10.2 把依赖都打进去了。如果你的情况是没有 GPU,别硬装 CUDA 环境,官方支持纯 CPU 推理,命令后加一个device=cpu就行。
🖼️ 准备图片和掩码:LaMa修复输入要守的两个命名约定
LaMa 不接受"一张图加一个随意命名的掩码",它要求图片和掩码放在同一目录,掩码名按[图片名]_maskXXX[后缀]拼写,比如image1.png配image1_mask001.png。另外 configs/prediction/default.yaml 里的image_suffix必须和你真实的文件后缀一致,否则脚本根本配不上对。
掩码没有现成的?用仓库自带的bin/gen_mask_dataset.py生成,参数选 configs/data_gen/ 下的配置,thin、medium、thick 对应窄、中、宽三档掩码,256/512 控制输出分辨率。下面是 countless 掩码生成模块自带的示例照片,可直接当作修复输入:
该模块还配了这张语义分割样例图,用来测试掩码采样策略,色块分明的区域正好适合验证大面积补全场景:
📏 跑一次推理,用三个指标判断修复质量
环境、数据都备好后,在仓库目录执行:
export TORCH_HOME=$(pwd) && export PYTHONPATH=$(pwd) python3 bin/predict.py model.path=$(pwd)/big-lama indir=$(pwd)/LaMa_test_images outdir=$(pwd)/outputmodel.path指向预训练模型所在目录,下载地址 README 里给了,解压后把目录路径填进来即可,结果会写进outdir。嫌边缘不够干净就在命令后追加refine=True,内置的 refiner 会做多尺度迭代增强。
主观感受先看一眼出图,客观数字看三个:SSIM衡量修复图和原图结构上差多少,越高越像;LPIPS算的是感知相似度,模拟人眼觉得像不像;FID从分布层面看整体质量,越低越好。三者都在 saicinpainting/evaluation/losses/ 模块里实现,一条命令出结果:
python3 bin/evaluate_predicts.py $(pwd)/configs/eval2_gpu.yaml <带掩码的图目录> <修复输出目录> <指标csv保存路径>注意一点:论文里的 FID/SSIM/LPIPS 是在 3 万张图的评价集上算的,你拿几十张图复现不出同样数值,拿它做自己不同参数之间的相对比较才有意义。
🧯 报错先按这个顺序查:LaMa部署四个常见坑
第一查模型目录。bin/predict.py 启动时会去model.path下读config.yaml,再去models/子目录取权重(默认best.ckpt),两者缺一就加载失败——所谓"模型加载失败"多数栽在这里,先确认目录里文件齐不齐。
第二查文件配对。脚本能跑但输出是空的、掩码不生效,十有八九是掩码命名没守约定,或者img_suffix和实际后缀对不上。第三查内存。显存爆了先降输入分辨率或批量大小;开了 refine 的,把配置里refiner.px_budget调小,它限制重采样后的像素预算。第四查设备。没有 CUDA 就改device=cpu;进程卡死时,Linux 下发一句kill -10 <pid>,进程会把当前 traceback 打进日志,这是项目自带的调试钩子。
📈 跑通之后怎么调得更顺:参数覆盖与资源监控
Hydra 的命令行覆盖让调参很省事:在训练命令后直接追key=value,不用动 yaml 文件。比如把批量大小改到 10 并给这次实验起个名字:
python3 bin/train.py -cn lama-fourier data.batch_size=10 run_title=my-title训练过程盯 TensorBoard 曲线,损失突然飙升或长时间不降,优先回查批量大小和数据路径配置,日志目录由 configs/training/location/ 下配置文件里的tb_dir指定。推理服务则盯两个数:GPU 显存占用和单张图推理耗时;想接进已有监控体系,用 Prometheus 采集这两个指标、Grafana 画成仪表板就够了。
【免费下载链接】lama🦙 LaMa Image Inpainting, Resolution-robust Large Mask Inpainting with Fourier Convolutions, WACV 2022项目地址: https://gitcode.com/GitHub_Trending/la/lama
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考