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的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/135757.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qiankun 乾坤主应用访问微应用css静态图片资源报404

发现static前没有加我指定的前缀 只有加了后才会出来 解决方案: env定义前缀 .env.development文件中 # static前缀 VUE_APP_PUBLIC_PREFIX"" .env.production文件中 # static前缀 VUE_APP_PUBLIC_PREFIX"/szgl" settings文件是封了一下src\settings…

Android平台下奔溃Crash和无响应ANR日志抓取分析

一、使用AndroidStudio 在logcat中查看实时日志,需要选择连接的手机和应用包名 AS下载链接 二、使用adb shell dumpsys dropbox命令获取 #!/bin/bash # path"/data/system/dropbox" # 在手机这个目录下存储了崩溃日志 newest_time$(adb shell dumps…

C++day3

1> 自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量 成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 头文件 #ifndef STACK_H #define STACK_H #include &…

二叉树的概念及存储结构

目录 1.树的概念 1.1树的相关概念 1.2树的表示与应用 2.二叉树的概念及结构 2.1二叉树的概念 2.1.1特殊的二叉树 2.2.2二叉树的性质 2.2二叉树的结构 2.2.1顺序存储 2.2.2链式存储 这是一篇纯理论的博客,会对数据结构中的二叉树进行详细的讲解,让你对树的能有个清晰的…

vue Router路由

编程式导航 | Vue Router 看官方文档 vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。功能包括: 嵌套路由映射动态路由选择模块化、基于组件的路由配置路由参数、查询、通配符展示由 Vue.js 的过…

线性代数的本质(三)——线性方程组

文章目录 线性方程组高斯消元法初等行变换线性方程组的解向量方程齐次线性方程组的解非齐次线性方程组的解 线性方程组 高斯消元法 客观世界最简单的数量关系是均匀变化的关系。在均匀变化问题中,列出的方程组是一次方程组,我们称之为线性方程组(Linea…

【去除若依首页】有些小项目不需要首页,去除方法

第一步 // // // // // // // // // // // // // // // // // // 修改登录页 Login.vue 中 大概144行 ,注释掉原有跳转。替换为自己的跳转路径 // // // // // // // // // // // // // this.$router.push({ path: this.redirect || …

Observability:使用 OpenTelemetry 手动检测 Go 应用程序

作者:Luca Wintergerst DevOps 和 SRE 团队正在改变软件开发的流程。 DevOps 工程师专注于高效的软件应用程序和服务交付,而 SRE 团队是确保可靠性、可扩展性和性能的关键。 这些团队必须依赖全栈可观察性解决方案,使他们能够管理和监控系统&…

系统IO和标准IO

一.系统IO 系统 I/O(Input/Output)是计算机操作系统提供给应用程序的一种输入和输出方式。它通过系统调用(系统内核提供的函数)来实现数据的读取和写入。系统 I/O 可以用于与文件、设备(例如磁盘驱动器、网络接口、串…

使用vite创建vue3项目及项目的配置 | 环境准备 ESLint配置 prettier配置 husky配置 项目继承

文章目录 使用vite创建vue3项目及项目的配置1.环境准备2.项目配置ESLint校验代码工具配置 - js代码检测工具1.安装ESLint到开发环境 devDependencies2.生成配置文件:.eslint.cjs**3.安装vue3环境代码校验插件**4. 修改.eslintrc.cjs配置文件5.生成ESLint忽略文件6.在package.js…

[BJDCTF2020]Mark loves cat foreach导致变量覆盖

这里我们着重了解一下变量覆盖 首先我们要知道函数是什么 foreach foreach (iterable_expression as $value)statement foreach (iterable_expression as $key > $value)statement第一种格式遍历给定的 iterable_expression 迭代器。每次循环中,当前单元的值被…

使用 Nginx 实现企业微信域名配置中的校验文件跳转

背景 在企业微信中配置业务域名时,通常需要在该域名的根路径下放置一个校验文件,以验证域名的所有权。然而,如果该域名是第三方的,你可能无法直接在根路径下放置文件。在这种情况下,你可以使用 Nginx 来实现校验文件的…

OPC DCOM快速配置

目录 1 老系统配置 1.1 移除Windows 安全 1.2 建立相互能识别的用户账号 1.3 配置系统宽泛的DCOM设置 1.4 配置Server的特殊DCOM设置 1.5 恢复Windows安全 1 老系统配置 远程OPC访问必须在服务器和客户端两端配置DCOM。本文讲述如何正确配置 DCOM 的步骤并保证安全。 新…

Git(6)——GitHub

目录 一、简介 二、概要 三、注册 ​四、创建仓库 五、推送本地代码 六、拉取远端代码 一、简介 在Git(5)中,我们已经对Git分支的概念和用法有了一定了解,对于在本地进行代码版本管理,其实当前所学的东西基本已经…

CocosCreator3.8研究笔记(十八)CocosCreator UI组件(二)

前面的文章已经介绍了Canvas 组件、UITransform 组件、Widget 组件 。 想了解的朋友,请查看 CocosCreator3.8研究笔记(十七)CocosCreator UI组件(一)。 今天我们主要介绍CocosCreator 常用容器组件:Layout …

【深度学习实验】线性模型(四):使用Pytorch实现线性模型:使用随机梯度下降优化器训练模型

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入库 1. 线性模型linear_model 2. 损失函数loss_function 3. 定义数据 4. 初始化权重和偏置 5. 模型训练 6. 迭代 7. 实验结果 8. 完整代码 一、实验介绍 使用随机梯度下降优化…

解决Permission is not allowed后基于Ubuntu23.04安装配置docker与docker-compose

参考:Docker官网-Install Docker Engine on Ubuntu 一、 Install using the Apt repository 1.1 Set up Docker’s Apt repository 1.1.1 Add Docker’s official GPG key # Add Dockers official GPG key: sudo apt-get updatesudo apt-get install ca-certifi…

Java文字描边效果实现

效果: FontUtil工具类的完整代码如下: 其中实现描边效果的函数为:generateAdaptiveStrokeFontImage() package com.ncarzone.data.contentcenter.biz.img.util;import org.springframework.core.io.ClassPathResource; import org.springfr…

ApplicationContext版本的快速入门

ApplicationContext快速入门 ApplicationContext称为Spring容器,内部封装了BeanFactory,比BeanFactory功能更加丰富和强大,使用ApplicationContext进行开发时,xml配置文件的名称习惯写成applicationContext.xml。 BeanFactory和…

Python语言学习实战-内置函数sorted()的使用(附源码和实现效果)

实现功能 sorted()函数是Python的内置函数之一,用于对可迭代对象进行排序操作。它可以对列表、元组、字符串等可迭代对象进行排序,并返回一个新的已排序的列表。 sorted()函数的语法如下: sorted(iterable, keyNone, reverseFalse)其中&am…