• python抠图(去水印)开源库lama-cleaner入门应用实践


    1. 关于 Lama Cleaner

    Lama Cleaner 是由 SOTA AI 模型提供支持的免费开源图像修复工具。可以从图片中移除任何不需要的物体、缺陷和人,或者擦除并替换(powered by stable diffusion)图片上的任何东西。

    特征:

    • 完全免费开源,完全自托管,支持CPU & GPU & M1/2
    • Windows 一键安装程序
    • 本机 macOS 应用程序
    • 多种SOTA AI模型
      • 擦除模型:LaMa/LDM/ZITS/MAT/FcF/Manga
      • 擦除和替换模型:稳定扩散/绘制示例
    • 后期处理插件:
      • RemoveBG:删除图像背景
      • RealESRGAN:超分辨率
      • GFPGAN:面部恢复
      • RestoreFormer:面部修复
      • 分割任何东西:准确快速的交互式对象分割
    • 文件管理器:方便地浏览您的图片并将它们直接保存到输出目录。

    插件
    在图像清洗的后处理中,除了擦除之外,还经常使用面部修复或超分辨率等算法。现在您可以直接在 Lama Cleaner 中使用它们。启动Lama Cleaner服务时,您可以通过命令行参数启用插件。启用的插件将在左上角显示。

    开源地址:https://github.com/Sanster/lama-cleaner

    2. 擦除模型

    Lama Cleaner默认擦除模型为LaMa,开源地址为:https://github.com/advimman/lama 。

    LaMa 图像修复,采用傅立叶卷积的分辨率鲁棒大型掩模修复,WACV 2022

    现代图像修复系统尽管取得了显着的进步,但常常难以应对大面积缺失区域、复杂的几何结构和高分辨率图像。我们发现造成这种情况的主要原因之一是修复网络和损失函数都缺乏有效的感受野。为了缓解这个问题,我们提出了一种称为大掩模修复(LaMa)的新方法。 LaMa 基于:

    • 一种新的修复网络架构,使用快速傅立叶卷积,具有图像范围的感受野
    • 高感受野感知损失;
    • 大型训练掩码(masks),释放前两个组件的潜力。

    我们的修复网络提高了一系列数据集的最新技术,即使在具有挑战性的场景(例如完成周期性结构)中也能实现出色的性能。我们的模型出人意料地很好地概括了比训练时所见的分辨率更高的分辨率,并且以比竞争基准更低的参数和计算成本实现了这一点。

    在这里插入图片描述
    其中,模型中FFC结构如下:
    在这里插入图片描述

    3. 安装 Lama Cleaner

    很遗憾,我的电脑没有GPU,具体环境如下:

    • Windows 10专业版
    • 处理器:Intel® Core™ i5-9400 CPU @ 2.90GHz 2.90 GHz
    • 内存(RAM):32.0 GB(31.8 GB可用)
    • 显卡:Intel® UHD Graphics 630

    安装Lama Cleaner最简单的方法是通过pip安装(支持python 3.7 ~ 3.10)。

    关于GPU安装,官方说明如下:

    	# 为了使用GPU,请先安装cuda版本的pytorch。
    	# pip install torch==1.13.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117
    
    • 1
    • 2

    我的电脑没有GPU,直接使用CPU。

    	pip install -i https://pypi.tuna.tsinghua.edu.cn/simple lama-cleaner
    
    • 1

    另外还有基于Docker安装,在此略过,感兴趣自己看官方文档实践。

    下面附上安装包列表,供参考:

     Werkzeug-2.3.7
     aiofiles-23.2.1 
     annotated-types-0.5.0 
     antlr4-python3-runtime-4.9.3 
     anyio-3.7.1 
     bidict-0.22.1 
     controlnet-aux-0.0.3 
     diffusers-0.16.1 
     einops-0.6.1 
     fastapi-0.103.1 
     ffmpy-0.3.1 
     filelock-3.12.4 
     flask-2.2.3 
     flask-cors-4.0.0 
     flask-socketio-5.3.6 
     flaskwebgui-0.3.5 
     fsspec-2023.9.1 
     gradio-3.44.3 
     gradio-client-0.5.0 
     httpcore-0.18.0 
     httpx-0.25.0 
     huggingface-hub-0.17.1 
     itsdangerous-2.1.2 
     lama-cleaner-1.2.3 
     mpmath-1.3.0 
     omegaconf-2.3.0 
     orjson-3.9.7 
     piexif-1.1.3 
     pydantic-2.3.0 
     pydantic-core-2.6.3 
     pydub-0.25.1 
     python-engineio-4.7.1 
     python-multipart-0.0.6 
     python-socketio-5.9.0 
     regex-2023.8.8 
     safetensors-0.3.3 
     semantic-version-2.10.0 
     simple-websocket-0.10.1 
     starlette-0.27.0 
     sympy-1.12 
     timm-0.9.7 
     tokenizers-0.13.3 
     torch-2.0.1 
     torchvision-0.15.2 
     transformers-4.27.4 
     uvicorn-0.23.2 
     websockets-11.0.3 
     whichcraft-0.6.1 
     yacs-0.1.8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    安装完成后,可以通过lama-cleaner命令启动服务器,第一次使用时会下载模型文件(建议确保网络畅通)。

    GPU启动命令如下:lama-cleaner --model=lama --device=cuda --port=8080

    4. 启动

    启动命令如下:

    	lama-cleaner --model=lama --device=cpu --port=8080
    	
    	- Platform: Windows-10-10.0.17763-SP0
    	- Python version: 3.8.10
    	- torch: 2.0.1
    	- torchvision: 0.15.2
    	- Pillow: 8.4.0
    	- diffusers: 0.16.1
    	- transformers: 4.27.4
    	- opencv-python: 4.7.0.72
    	- xformers: N/A
    	- accelerate: N/A
    	- lama-cleaner: 1.2.3
    	- rembg: N/A
    	- realesrgan: N/A
    	- gfpgan: N/A
    	
    	The cache for model files in Transformers v4.22.0 has been updated. Migrating your old cache. This is a one-time only operation. You can interrupt this and resume the migration later on by calling `transformers.utils.move_cache()`.
    	0it [00:00, ?it/s]
    	Downloading: "https://github.com/Sanster/models/releases/download/add_big_lama/big-lama.pt" to C:\Users\xiaoyw\.cache\torch\hub\checkpoints\big-lama.pt
    	
    	2023-09-18 14:10:06.177 | INFO     | lama_cleaner.helper:download_model:52 - Download model success, md5: e3aa4aaa15225a33ec84f9f4bc47e500
    	2023-09-18 14:10:06.179 | INFO     | lama_cleaner.helper:load_jit_model:102 - Loading model from: C:\Users\xiaoyw\.cache\torch\hub\checkpoints\big-lama.pt
    	Running on http://127.0.0.1:8080
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    工具的使用是基于浏览器的,我安装在本机,使用默认端口8080,打开浏览器使用如下地址:http://127.0.0.1:8080。
    在这里插入图片描述

    5. 去水印抠图操作

    如下图所示,从左到右操作,中间图分两块涂抹需要清除的标记,最后按下方的橡皮檫,形成最右边的图像。

    声明:感谢哈马的摄影者,就这样把你的水印删除了,感谢哈马组委会,同时也给删除了。本文只是讲抠图处理AI技术,未涉及到商业活动。
    在这里插入图片描述
    其中,标记多块需要清除点时,需要使用手动修复模式。默认情况下,Lama Cleaner 将在绘制笔划后运行修复。您可以在设置中启用手动修复模式。
    在这里插入图片描述

    6. 其他擦除模型对比举例

    LDM 与 LaMa 模型擦除效果对比:
    在这里插入图片描述

    👍 可能得到比 LaMa 更好、更详细的结果
    👍 通过调整步骤可以达到时间和质量的平衡
    😐 比 LaMa 模型慢得多(3080 12it/s)
    😐 需要更多GPU内存(512x512 5.8G)

    7. 最后

    如果要取得好的图像效果,是需要GPU的。

  • 相关阅读:
    Virtualenvwrapper 的安装教程
    C语言中 continue,goto, void(空类型),你不知道的事情 ???
    map合并数据
    MySQL环境变量配置的教程
    【功能安全】基础了解
    实施MES管理系统前,这三个问题要考虑好
    最少拦截系统 (贪心算法)
    c++ char*\char[]\字符串操作
    react-严格模式
    Selenium 与(Firefox、GeckoDriver)和(Chrome、ChromeDriver)版本对应关系
  • 原文地址:https://blog.csdn.net/xiaoyw/article/details/132980614