LaMa 图像修复实战指南:如何 5 条命令跑出第一个修复结果
2026/9/17 23:35:16 网站建设 项目流程

LaMa 图像修复实战指南:如何 5 条命令跑出第一个修复结果

【免费下载链接】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 with Fourier Convolutions,WACV 2022)是一个基于傅里叶卷积的图像修复项目:给它一张原图和一张掩码,它负责填出掩码内的像素。模型官方在 256×256 上训练,可以泛化到约 2k 的图像。如果你的需求是照片去物、破损修补,或者想复现和微调大掩码修复模型,这个项目提供预训练权重和完整的训练、评估管线。

第一次上手:5 条命令跑出第一个修复结果

先克隆仓库并建环境,conda 和 virtualenv 两条路线的命令都写在 README 的 Environment setup 一节。最短路径是:

git clone https://gitcode.com/GitHub_Trending/la/lama && cd lama # 克隆仓库并进入项目 conda env create -f conda_env.yml && conda activate lama # 创建并激活 Python 环境

然后下载预训练模型。官方推荐 big-lama(在 Places Challenge 数据上训练,适合大场景),压缩包的下载入口列在 README 里,按其说明下载并解压,把big-lama目录放在项目根目录。同一个数据包里还有示例集 LaMa_test_images,解压后是一组现成的"原图+掩码",可直接当输入。

再跑推理。两个环境变量必须导出,否则脚本会因找不到依赖而报错:

export TORCH_HOME=$(pwd) && export PYTHONPATH=$(pwd) # 必需的环境变量 python3 bin/predict.py model.path=$(pwd)/big-lama indir=$(pwd)/LaMa_test_images outdir=$(pwd)/output # 开始推理

跑完后 outdir 里就是修复结果。没有 GPU 就在命令末尾加device=cpu,速度变慢但能跑;想要零安装环境,docker/2_predict.sh可直接拉镜像执行推理。

看懂输入与输出:原图、掩码、结果的文件对应关系

输入目录只有一条规则:掩码是文件名带mask的 PNG,原图由掩码文件名去掉_maskXXX再拼上图片后缀得到。例如:

  • image1.png:原图
  • image1_mask001.png:掩码,与原图同尺寸,白色区域是要修复的部分
  • 输出:outdir 下生成与掩码同名的image1_mask001.png,输出后缀可用out_ext改,默认.png

上图是仓库 countless 掩码目录里的示例输入照片,关键在文件名配对而不是画面内容。原图后缀读自 configs/prediction/default.yaml 的img_suffix,默认.png。如果你的原图是.jpg,需要在命令后追加dataset.img_suffix=.jpg,否则掩码找不到对应原图,这批数据会被跳过。图像进入网络前会被填充到 8 的倍数(pad_out_to_modulo: 8),不需要你手动对齐尺寸。

掩码可以手绘,也可以用仓库脚本生成。由语义分割生成时,掩码内容大致长这样:

三个关键开关:掩码类型、refine、device

掩码生成配置——决定你测什么场景。configs/data_gen/ 下有 6 个文件,两个维度:细/中/粗(thin/medium/thick)× 256/512 画布。起步用random_medium_512.yaml:输出 512×512 裁剪图加中等大小的洞;thick 适合大面积缺失测试,所有配置都把掩码面积限制在图像 50% 以内(max_tamper_area: 0.5)。用法:

python3 bin/gen_mask_dataset.py $(pwd)/configs/data_gen/random_medium_512.yaml raw_images/ out/ --ext jpg # 批量生成图片和掩码

refine=True——质量与速度的交换。默认关闭。打开后走多尺度细化:每个尺度迭代 15 次(n_iters: 15),最多 3 个下采样层级(max_scales: 3),图像会被自动缩放进 180 万像素预算(px_budget: 1,800,000)。大图的最终版建议打开,边缘和纹理更干净;批量跑测试集时保持关闭。

device——无 GPU 的兜底。默认cuda。加device=cpu用 CPU 推理,512×512 的图像单张从几秒到几分钟不等,验证流程够用;正式跑批再回 GPU。

卡住时怎么办:常见现象对照表

现象原因对策
输入目录里部分数据没被处理扫描规则是*mask*.png,原图由掩码文件名反推掩码命名成name_maskXXX.png,与原图同目录
输出全白或整张图都被重画掩码全白,或原图后缀不匹配导致配错对检查img_suffix是否与原图后缀一致
CUDA 报错或显存不足无 GPU 或大图占显存device=cpu,或换 256 画布的掩码配置
大图边缘发虚、有接缝没走细化阶段追加refine=True
提示找不到模型model.path指向的目录结构不对指向解压后含config.yamlmodels/的顶层目录;自训模型用model.checkpoint=last.ckpt或 epoch 号

另外注意:模型在 256×256 上训练,官方说明可泛化到约 2k;远超 2k 的原图建议先降采样或分块再修,效果才有保障。

深入方向:仓库里值得读的目录

  • 傅里叶卷积核心:saicinpainting/training/modules/ffc.py,FFC 层是论文的主要贡献
  • 训练入口与配置:bin/train.py+ configs/training/ 下的lama-fourierbig-lama等入口
  • 指标评估:bin/evaluate_predicts.py输出 FID/SSIM/LPIPS,对应实现见 saicinpainting/evaluation/losses/
  • 数据准备脚本:fetch_data/,Places 和 CelebA-HQ 的下载、切分、掩码生成
  • 交互教程:根目录 LaMa_inpainting.ipynb,按步骤走一遍完整修复流程

下一步可以直接做一件事:用random_medium_512给你自己的几张图生成掩码,先跑一次bin/predict.py,再对同一批输入追加refine=True跑一次,对比两组输出,基本就能建立对这个项目参数取舍的直观感觉。

【免费下载链接】lama🦙 LaMa Image Inpainting, Resolution-robust Large Mask Inpainting with Fourier Convolutions, WACV 2022项目地址: https://gitcode.com/GitHub_Trending/la/lama

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询