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
我的电脑没有GPU,直接使用CPU。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple lama-cleaner
另外还有基于Docker安装,在此略过,感兴趣自己看官方文档实践。
下面附上安装包列表,供参考:
Werkzeug-2.3.7aiofiles-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
安装完成后,可以通过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/AThe 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.pt2023-09-18 14:10:06.177 | INFO | lama_cleaner.helper:download_model:52 - Download model success, md5: e3aa4aaa15225a33ec84f9f4bc47e5002023-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.ptRunning on http://127.0.0.1:8080
工具的使用是基于浏览器的,我安装在本机,使用默认端口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的。
相关文章:
python抠图(去水印)开源库lama-cleaner入门应用实践
1. 关于 Lama Cleaner Lama Cleaner 是由 SOTA AI 模型提供支持的免费开源图像修复工具。可以从图片中移除任何不需要的物体、缺陷和人,或者擦除并替换(powered by stable diffusion)图片上的任何东西。 特征: 完全免费开源&am…...
Nginx可视化管理工具结合cpolar实现远程访问内网服务
前言 Nginx Proxy Manager 是一个开源的反向代理工具,不需要了解太多 Nginx 或 Letsencrypt 的相关知识,即可快速将你的服务暴露到外部环境,并且支持 SSL 配置。基于 Tabler 的美观且安全的管理界面,无需了解 Nginx 即可轻松创建转发域、重定…...
CCC数字钥匙设计【BLE】 --建立安全测距
1、建立安全测距Establish Secure Ranging 车端总共有三种建立安全测距的方式,具体如下: 1) Optimal Flow 2) Sub-Optimal Flow 3) Ranging Recovery Flow 为了确定建立安全测距需要执行哪条流程,车辆需要进行以下流程选择。当车辆和设备…...
Ubuntu22.04 Opencv4.5.1 CPU和GPU编译攻略,Opencv CPU和GPU编译保姆教程 亲自测试。
1、安装opencv依赖 安装时最好更换一下源。 sudo apt-get -y update sudo apt-get -y install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get -y install libgtk-3-dev gfortran openexr libatlas-base-dev python3-dev pyt…...
常识判断 --- 党史
目录 中共1~3大 例题 国民党 例题 中共4~5大 例题 中共起义~会议 例题 中共六届六中全会(1938年9月) 中共七大(1945年4月) 例题 中共七届二中全会 例题 中共8~10大 中共11~12届全会 例题 中共13~14大 …...
Rust 基础再理解
Rust堆栈 Rust中各种类型的值默认都存储在栈中,除非显式地使用Box::new()将它们存放在堆上,但数据要存放在栈中,要求其数据类型的大小已知。对于静态大小的类型,可直接存储在栈上,如裸指针、布尔、字符、整数浮点数&a…...
Opencv cuda版本在ubuntu22.04中安装办法,解决Could NOT find CUDNN的办法
文章目录 概要下载cuda的runfile版本配置环境变量官网下载cudann安装Opencv依赖包下载opencv和opencv_contrib并解压准备编译安装anaconda环境执行编译命令安装OpenCV并检查是否安装成功 概要 解决以下安装问题: -- Could NOT find CUDNN: Found unsuitable versi…...
全网首发YOLOv8暴力涨点:Gold-YOLO,遥遥领先,超越所有YOLO | 华为诺亚NeurIPS23
💡💡💡本文独家改进:提出了全新的信息聚集-分发(Gather-and-Distribute Mechanism)GD机制,Gold-YOLO,替换yolov8 head部分 实现暴力涨点 Gold-YOLO | 亲测在多个数据集能够实现大幅涨点 💡💡💡Yolov8魔术师,独家首发创新(原创),适用于Yolov5、Yolov7、…...
BD就业复习第四天
1. 布隆过滤器怎么实现去重 布隆过滤器是一种用于快速检查一个元素是否可能存在于一个大集合中的数据结构,但它并不适用于精确去重。因为布隆过滤器具有一定的误判率(可能会将不存在的元素误判为存在),所以不能确保完全的去重。但…...
数据结构 | 树
树 树是n(n>0)个结点的有限集。当n 0时,称为空树。在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点。当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm&#…...
Android11 适配
一、修改targetSdkVersion为30 将build.gradle的目标版本targetSdkVersion修改为30(Android 11) targetSdkVersion 30Android11的改变改变主要影响以Adnroid11 为目标版本的应用(targetSdkVersion>30才有影响),和所…...
UML基础与应用之对象图
什么是对象图? 对象图表示一组对象及它们之间的关系,是某一时刻系统详细信息的快照,描述系统交互的静态图形,它由协作的对象组成,但不包含在对象之间传递的任何消息。因为对象是类的实例化,所以说某一时刻…...
英码科技精彩亮相火爆的IOTE 2023,多面赋能AIoT产业发展!
9月20日至22日,在这金秋飒爽的季节,为期三天的IOTE 2023第二十届国际物联网展深圳站在深圳国际会展中心盛大举行。英码科技精彩亮相本届展会,并在同期举办的AIoT视觉物联产业生态大会发表了主题演讲,与生态伙伴们共同探讨AIoT产业…...
400G QSFP-DD FR4 与 400G QSFP-DD FR8光模块:哪个更适合您的网络需求?
QSFP-DD 光模块随着光通信市场规模的不断增长已成为400G市场中客户需求量最高的产品。其中400G QSFP-DD FR4和400G QSFP-DD FR8光模块都是针对波分中距离传输(2km)的解决方案,它们之间有什么不同?应该如何选择应用?飞速…...
【Android】Kotlin 中的 apply、let、with、also、run 到底有啥区别?
一、图示 二、apply apply 函数接收一个对象并返回该对象本身。它允许您在对象上执行一些操作,同时仍然返回原始对象。 这个函数的语法为: fun <T> T.apply(block: T.() -> Unit): T 其中,T 是对象的类型,block 是一…...
设计模式——职责链模式
职责链模式 职责链模式职责链模式解决什么问题?职责链模式实现 职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止 …...
小程序自定义tabbar,中间凸起
微信小程序自带tabbar,但无法实现中间按钮凸起样式和功能,因此按照设计重新自定义一个tabbar 1、创建tabbar文件,与pages同级创建一个文件夹,custom-tab-bar,里面按照设计图将底部tabbar样式编写 <view class"tab-bar&q…...
数据结构-顺序栈C++示例
栈(stack)是限定仅在表尾进行插入或删除操作的线性表。 对栈来说,表尾端称为栈顶(top), 表头端称为栈底(bottom),不含元素的空表称为空栈。 假设栈 S ( a 1 , a 2 , a 3 , ⋯ , a n ) S(a_1,a_2,a_3,\cdots,a_n) S(a1,a2,a3,⋯,an…...
若依cloud -【 100 ~ 103 】
100 分布式日志介绍 | RuoYi 分布式日志就相当于把日志存储在不同的设备上面。比如若依项目中有ruoyi-modules-file、ruoyi-modules-gen、ruoyi-modules-job、ruoyi-modules-system四个应用,每个应用都部署在单独的一台机器里边,应用对应的日志的也单独存…...
可转债实战与案例分析——成功的和失败的可转债投资案例、教训与经验分享
实战与案例分析——投资案例研究 股票量化程序化自动交易接口 一、成功的可转债投资案例 成功的可转债投资案例提供了有价值的经验教训,以下是一个典型的成功案例: 案例:投资者B的成功可转债投资 投资者B是一位懂得风险管理的投资者&#…...
桥式电路(三)开尔文电桥在功率半导体中的实战解析
1. 从测量误差到功率革命:开尔文电桥的前世今生 1862年的实验室里,威廉汤姆森(后来的开尔文勋爵)正为小电阻测量中的诡异误差头疼不已。他发现当被测电阻低于1Ω时,连接点的接触电阻和引线电阻会彻底扭曲测量结果——这…...
三相三电平维也纳Vienna整流器DPWM调制仿真之旅
三相三电平维也纳Vienna整流器 DPWM调制仿真 Matlab2020a 双PI控制 锁相环控制 电容电压平衡控制 最大相钳位 过零畸变 零序分量注入实现最大相钳位消除过零畸变 基于载波调制实现 谐波畸变率对比分析 电压利用率对比分析 交流侧电压有效值 220V/50Hz 额定输出功率10kw 直…...
机械键盘连击终结者:三分钟搞定键盘“鬼键“问题
机械键盘连击终结者:三分钟搞定键盘"鬼键"问题 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 还在为机械键盘的&…...
实战应用指南:基于快马平台开发养龙虾产销一体化管理平台
今天想和大家分享一个最近用InsCode(快马)平台做的养龙虾产销管理系统的开发经历。作为一个养殖户出身的技术爱好者,我深知传统养殖业在数字化管理上的痛点,这次尝试用低代码方式解决实际问题,效果出乎意料的好。 系统设计思路 整个平台围绕四…...
多模态情报分析awesome-osint:文本图像视频融合处理终极指南
多模态情报分析awesome-osint:文本图像视频融合处理终极指南 开源情报(OSINT)正在经历一场革命性的变革,而awesome-osint项目正是这场变革的引领者。这个精心策划的资源集合汇集了最先进的多模态情报分析工具,让你能够…...
终极指南:如何使用Rust构建企业级数据脱敏系统
终极指南:如何使用Rust构建企业级数据脱敏系统 在当今数据驱动的时代,企业面临着日益严格的隐私保护法规和数据安全挑战。数据脱敏作为保护敏感信息的关键技术,正成为企业数据治理的核心环节。本文将详细介绍如何利用Rust这一安全高效的系统编…...
美胸-年美-造相Z-Turbo部署避坑指南:Xinference日志解读与常见启动失败排查
美胸-年美-造相Z-Turbo部署避坑指南:Xinference日志解读与常见启动失败排查 1. 项目简介与部署价值 美胸-年美-造相Z-Turbo是基于Z-Image-Turbo LoRA版本的专业文生图模型,专注于高质量的美胸年美风格图像生成。通过Xinference框架部署,结合…...
3个突破性方法让你永久掌控数字阅读自由
3个突破性方法让你永久掌控数字阅读自由 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾经历过这样的窘境:在通勤途中想继续阅读昨晚未看完的小说,却发现网…...
Linux grep 命令的使用指南
Linux grep 命令全面使用指南一、基础搜索语法1. 基本文本搜索1234# 在文件中搜索指定字符串grep "search_pattern" file.txt# 示例:搜索包含"error"的行grep "error" /var/log/syslog2. 多文件搜索1234# 在多个文件中搜索grep "…...
ImageToSTL:让图片秒变3D模型的开源工具
ImageToSTL:让图片秒变3D模型的开源工具 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. 项目地址: h…...
