lama
基于傅里叶卷积的大面积图像智能修复模型,支持2K+分辨率泛化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于傅里叶卷积的大面积图像智能修复模型,支持2K+分辨率泛化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你一定遇到过这样的场景:翻出一张珍贵的旧照片,却发现画面中央有一道划痕;或是在拍摄时不小心把路人拍了进去。无论是专业设计师还是普通用户,如何快速"抹掉"图片中不需要的部分,一直是个令人头疼的问题。LaMa(Large Mask Inpainting)正是为解决这个痛点而生——它能智能填补图片中的大片缺失区域,效果自然到几乎看不出修补痕迹。
传统的图像修复算法在面对大面积缺失时,往往会出现模糊、纹理错位、色彩不自然等问题。尤其是当缺失区域超过图像的50%时,大多数算法会"力不从心"——因为它们只能利用局部像素信息,缺乏对图像整体语义的理解。
LaMa 由俄罗斯 Skolkovo 科学与技术研究院的团队于2021年提出,2022年在 WACV(Winter Conference on Applications of Computer Vision)发表。它的核心创新在于引入了**傅里叶卷积(Fourier Convolutions)**机制,能够同时捕获图像的局部细节和全局结构信息,从而在处理大面积遮罩时依然保持高真实度。论文发表后迅速被引用超过1200次,成为图像修复领域的基础模型之一。

图1:Feature Refinement 模块在高清图像修复中的效果对比,左侧为修复前,右侧为修复后(来源:Gegeomagical Labs)
理解傅里叶卷积的关键在于"频率域"这个概念。简单来说,一张图片不仅包含我们肉眼可见的像素信息(空间域),还包含各种频率的纹理和结构模式(频率域)。传统卷积核只在局部像素上操作,而傅里叶卷积通过数学变换,在频率域直接处理信息,好处是能一次性"看到"整张图的结构规律。
打个比方:如果把图片修复比作修补一件毛衣上的破洞,传统方法只能看到洞周围的针脚(一小块区域),而傅里叶卷积能同时感知整件毛衣的纹理走向和颜色分布,自然就知道该用什么针法、什么颜色的线来补了。
LaMa 的模型架构包含:
LaMa 的应用场景非常广泛:
特别值得一提的是,LaMa 在仅有 256×256 分辨率上训练,却能泛化到 2K 乃至更高分辨率的图像。这种"分辨率鲁棒性"在实际应用中极为重要——用户不会因为原图太大而无法使用。
LaMa 本身是纯命令行工具,没有 Web 界面。典型的使用流程:
# 克隆仓库
git clone https://github.com/advimman/lama.git
cd lama
# 安装依赖
pip install -r requirements.txt
# 下载预训练模型(来自 Google Drive)
# 然后运行修复
python bin/predict.py model.path=<模型路径> indir=<输入图片目录> outdir=<输出目录>
作者也提供了 Docker 镜像,基于 NVIDIA CUDA 10.2,包含完整的 Python 环境。对于没有 CUDA 环境的用户,可以直接使用 Docker 运行。
如果想要更友好的界面,社区开发的 lama-cleaner 和 cleanup.pictures 都基于 LaMa,提供了一键式 Web UI。
LaMa 也有一些局限性:
此外,由于 LaMa 是 2021 年的工作,后续出现了大量基于它的改进模型(如 LaMa Cleaner、Inpaint Anything 等),技术更新迭代较快。
LaMa 在 GitHub 上已收获近 1 万 Star,衍生项目数十个,其中 Inpaint Anything 将其与 SAM(Segment Anything)结合,实现"点哪里删哪里"的交互体验;lama-cleaner 则提供了完整的本地 Web UI,让非技术用户也能轻松上手。
LaMa 的成功也推动了"傅里叶变换在视觉模型中应用"的研究热潮,后续的 SwinTransformer、ConvNeXt 等架构都借鉴了其全局感受野的设计思路。