当前位置: 首页 > news >正文

【AI好好玩02】利用Lama Cleaner本地实现AIGC试玩:擦除对象、替换对象、更换风格等等

目录

  • 一、安装
  • 二、擦除功能
    • 1. LaMa模型
      • 实操实例一:去除路人
      • 实操实例二:去水印
      • 实操实例三:老照片修复
    • 2. LDM模型
    • 3. ZITS模型
    • 4. MAT模型
    • 5. FcF模型
    • 6. Manga模型
  • 三、替换对象功能
    • 1. sd1.5
    • 2. sd2
    • 3. anything4
    • 4. realisticVision1.4
    • 5. 四个模型的对比
  • 四、进阶版功能
    • 1. Paint By Example
    • 2. Stable Diffusion with ControlNet
    • 3. Instruct Pix2pix

Lama Cleaner是一个免费的、开源的、完全自托管的修复工具,里面提供了很多最前沿的AIGC模型。可以使用它从图片中删除任何不需要的物体、缺陷、人物,或删除和替换图片上的任何内容。本文章详细介绍了该工具的所有功能,并体验了下每个功能的实际效果

github:https://github.com/Sanster/lama-cleaner

官方使用文档:https://lama-cleaner-docs.vercel.app/

一、安装

# 如果电脑带GPU,为了使用GPU首先安装与cuda版本相对应的pytorch,比如cuda11.7的
pip install torch==1.13.1+cu117 torchvision==0.14.1 --extra-index-url https://download.pytorch.org/whl/cu117# pip直接安装
pip install lama-cleaner

本文安装时版本更新到1.2.4

二、擦除功能

下方擦除功能所需要的模型全部上传至夸克网盘(链接:https://pan.quark.cn/s/370b455924ab,提取码:SNrE),在github下载失败时可手动网盘下载至规定路径。

找到lama-cleaner.exe的路径:C:\Users\zhouying\AppData\Roaming\Python\Python39\Scripts(不同电脑路径不同)

cd C:\Users\zhouying\AppData\Roaming\Python\Python39\Scriptslama-cleaner --model=lama --device=cuda --port=8080

device如果没有gpu:--device=cpu

该命令会自动下载AI模型到本地(也可手动下载big-lama.pt到下图红框中的路径),然后浏览器打开http://localhost:8080/就可以使用了。
在这里插入图片描述

1. LaMa模型

  • github:https://github.com/saic-mdal/lama

  • paper:Resolution-robust Large Mask Inpainting with Fourier Convolutions

lama是默认模型,模型196MB,性能已经挺不错了。

实操实例一:去除路人

在这里插入图片描述

实操实例二:去水印

涂抹过程中可以长按Ctrl键进行多处涂抹
在这里插入图片描述
在这里插入图片描述

实操实例三:老照片修复

在这里插入图片描述


可以在网页中选择不同的AI模型或在命令行中选择不同模型(下方章节),这样都会自动下载相应的模型到本地。

在这里插入图片描述


2. LDM模型

  • github:https://github.com/CompVis/latent-diffusion

  • paper:High-Resolution Image Synthesis with Latent Diffusion Models

lama-cleaner --model=ldm --device=cuda --port=8080

LDM模型手动下载链接:diffusion.pt、cond_stage_model_decode.pt、cond_stage_model_encode.pt

在这里插入图片描述

LDM vs LaMa

  • 可能比LaMa有更好、更多的细节
  • 可以通过调整Steps来平衡时间和质量
  • 比LaMa慢很多(3080 12it/s)
  • 需要更多的GPU内存(512x512 5.8G)

在这里插入图片描述

3. ZITS模型

  • github:https://github.com/DQiaole/ZITS_inpainting

  • paper:Incremental Transformer Structure Enhanced Image Inpainting with Masking Positional Encoding

lama-cleaner --model=zits --device=cuda --port=8080

ZITS模型手动下载链接:zits-wireframe-0717.pt、zits-edge-line-0717.pt、zits-structure-upsample-0717.pt、zits-inpaint-0717.pt

ZITS vs LaMa

  • 擅长在高分辨弱纹理场景中恢复关键的边缘和线框
  • ZITS的Wireframe模块在CPU上会非常慢

在这里插入图片描述

4. MAT模型

  • github:https://github.com/fenglinglwb/MAT

  • paper:Mask-Aware Transformer for Large Hole Image Inpainting

lama-cleaner --model=mat --device=cuda --port=8080

MAT模型手动下载链接:Places_512_FullData_G.pth

特点:MAT可实现大面积像素缺失的补全和提供多样性生成

在这里插入图片描述

5. FcF模型

  • github:https://github.com/SHI-Labs/FcF-Inpainting

  • paper:Keys to Better Image Inpainting: Structure and Texture Go Hand in Hand

lama-cleaner --model=fcf --device=cuda --port=8080

FcF模型手动下载链接:places_512_G.pth

FcF vs LaMa

  • 能生成更好的结构和纹理
  • 仅支持固定大小(512x512)的输入

在这里插入图片描述

6. Manga模型

  • github:https://github.com/msxie92/MangaInpainting

  • paper:Seamless Manga Inpainting with Semantics Awareness

lama-cleaner --model=manga --device=cuda --port=8080

Manga模型手动下载链接:erika.jit、manga_inpaintor.jit

特点:在漫画图像上表现的比LaMa模型效果更好

在这里插入图片描述

三、替换对象功能

1. sd1.5

github:https://github.com/runwayml/stable-diffusion

hugging face:https://huggingface.co/runwayml/stable-diffusion-inpainting

因为需要访问hugging face,所以需要魔法

  • 运行方式一:
lama-cleaner --model=sd1.5 --device=cuda --port=8080

自动下载的文件保存路径为C:\Users\zhouying\.cache\huggingface\hub\models--runwayml--stable-diffusion-inpainting

在这里插入图片描述

  • 运行方式二:

可以先下载sd-v1-5-inpainting.ckpt到本地,然后下面的命令运行

lama-cleaner --model=sd1.5 --device=cuda --port=8080 --sd-local-model-path ./sd-v1-5-inpainting.ckpt --local-files-only

2. sd2

github:https://github.com/Stability-AI/stablediffusion

hugging face:https://huggingface.co/stabilityai/stable-diffusion-2-inpainting

lama-cleaner --model=sd2 --device=cuda --port=8080

下载的文件保存在C:\Users\zhouying\.cache\huggingface\hub\models--stabilityai--stable-diffusion-2-inpainting

3. anything4

hugging face: https://huggingface.co/andite/anything-v4.0

lama-cleaner --model=anything4 --device=cuda --port=8080

下载的文件保存在C:\Users\zhouying\.cache\huggingface\hub\models--Sanster--anything-4.0-inpainting

4. realisticVision1.4

hugging face:https://huggingface.co/SG161222/Realistic_Vision_V1.4

lama-cleaner --model=realisticVision1.4 --device=cuda --port=8080

下载的文件保存在C:\Users\zhouying\.cache\huggingface\hub\models--Sanster--Realistic_Vision_V1.4-inpainting

5. 四个模型的对比

原图:

在这里插入图片描述

涂抹图中小狗,然后prompt输入“a fox sitting on a bench”的输出如下:

在这里插入图片描述

同时,这些模型同样能提供擦除功能,只需将prompt填写为“background”

四、进阶版功能

1. Paint By Example

这个模型的输入是一张图片,模型会由这个示例图指导生成类似的内容。

github:https://github.com/Fantasy-Studio/Paint-by-Example

paper:Paint by Example: Exemplar-based Image Editing with Diffusion Models

lama-cleaner --model=paint_by_example --device=cuda --port=8080

下载的文件保存在C:\Users\zhouying\.cache\huggingface\hub\models--Fantasy-Studio--Paint-by-Example

在这里插入图片描述

2. Stable Diffusion with ControlNet

使用ControlNet可以获得更好的修复效果,命令如下:

lama-cleaner --model=sd1.5 --sd-controlnet --sd-controlnet-method control_v11p_sd15_inpaint --device=cuda --port=8080

--model支持的参数有:

  • sd1.5
  • anything4
  • realisticVision1.4

--sd-controlnet-method支持的参数有:

  • control_v11p_sd15_canny
  • control_v11p_sd15_openpose
  • control_v11p_sd15_inpaint
  • control_v11f1p_sd15_depth

官方提示,这四种方法在应用时都需要适当地调整ControlNet Weight的数值,建议canny和openpose从0.4开始调整,inpaint和depth从1.0开始调整。

尝试了一下,加了个ControlNet也没好多少,可能weight值还没调好。

在这里插入图片描述

3. Instruct Pix2pix

这个模型可以不用mask,而是直接输入prompt

github:https://github.com/timothybrooks/instruct-pix2pix

paper:InstructPix2Pix: Learning to Follow Image Editing Instructions

lama-cleaner --model=instruct_pix2pix --device=cuda --port=8080

在这里插入图片描述

拿张图试玩一下,效果挺不错的。

在这里插入图片描述

在这里插入图片描述

相关文章:

【AI好好玩02】利用Lama Cleaner本地实现AIGC试玩:擦除对象、替换对象、更换风格等等

目录 一、安装二、擦除功能1. LaMa模型实操实例一:去除路人实操实例二:去水印实操实例三:老照片修复 2. LDM模型3. ZITS模型4. MAT模型5. FcF模型6. Manga模型 三、替换对象功能1. sd1.52. sd23. anything44. realisticVision1.45. 四个模型的…...

SQL FULL OUTER JOIN 关键字(完整外部连接)||SQL自连接 Self JOIN

SQL FULL OUTER JOIN 关键字 当左(表1)或右(表2)表记录匹配时,FULL OUTER JOIN关键字将返回所有记录。 注意: FULL OUTER JOIN可能会返回非常大的结果集! SQL FULL OUTER JOIN 语法 SELECT …...

专科医院污水处理设备构造解析及工艺流程

诸城市鑫淼环保小编带大家了解一下专科医院污水处理设备构造解析及工艺流程 主要组成部分: 1.预处理单元 处理流程的起点是预处理单元,用于去除废水中的大颗粒物质和固体废物。这一阶段通常包括隔栅和筛网,以确保进一步处理的污水清洁。 2.生…...

【RabbitMQ】RabbitMQ 消息的可靠性 —— 生产者和消费者消息的确认,消息的持久化以及消费失败的重试机制

文章目录 前言:消息的可靠性问题一、生产者消息的确认1.1 生产者确认机制1.2 实现生产者消息的确认1.3 验证生产者消息的确认 二、消息的持久化2.1 演示消息的丢失2.2 声明持久化的交换机和队列2.3 发送持久化的消息 三、消费者消息的确认3.1 配置消费者消息确认3.2…...

百万套行泊一体量产定点,中国市场「开启」智驾高低速集成

进入2023年,席卷中国市场的行泊一体概念方案进入定点、量产交付的第一波高峰期。这套方案,以高性价比、硬件复用、高低速智驾集成的模式,备受市场青睐。 本周,纵目科技宣布,Amphiman3000行泊一体产品获得长安汽车旗下…...

Gopro hero5运动相机格式化后恢复案例

Gopro运动相机以稳定著称,旗下的Hero系列销售全球。下面我们来看一个Hero5格式化后拍了少量素材的恢复案例。 故障存储:64G MicroSD卡 Exfat文件系统 故障现象: 64G的卡没备份数据时做了格式化操作又拍了一条,发现数据没有备份,客户自行使…...

Microsoft Dynamics 365 CE 扩展定制 - 6. 增强代码

在本章中,我们将介绍以下内容: 使用三层模式重构插件用QueryExpressions替换LINQ数据访问层记录自定义项中的错误将插件转换为自定义工作流活动单元测试插件业务逻辑使用内存上下文对插件进行单元测试端到端集成测试插件分析插件构建通用读取审核插件利用CRM Online实现跨来源…...

基于libopenh264 codec的svc分层流实现方案

OpenH264 http://www.openh264.org/ 是标准的H.264 encoder/decoder. ffmpeg已经集成libopenh264,但不支持svc特性。 openh264 encoder支持svc特性: 1. 时域4层:Temporal scalability up to 4 layers in a dyadic hierarchy 2. 空域4层&#…...

为机器学习算法准备数据(Machine Learning 研习之八)

本文还是同样建立在前两篇的基础之上的! 属性组合实验 希望前面的部分能让您了解探索数据并获得洞察力的几种方法。您发现了一些数据怪癖,您可能希望在将数据提供给机器学习算法之前对其进行清理,并且发现了属性之间有趣的相关性&#xff0c…...

基于Python OpenCV的金铲铲自动进游戏、D牌...

基于Python OpenCV的金铲铲自动进游戏、D牌... 1. 自动点击进入游戏1.1 环境准备1.2 功能实现2. 自动D牌3. 游戏结束自动退1. 自动点击进入游戏 PS: 本测试只用于交流学习OpenCV的相关知识,不能用于商业用途,后果自负。 1.1 环境准备 需要金铲铲在win10的模拟器,我们这里选…...

c++中httplib使用

httplib文件链接:百度网盘 请输入提取码 提取码:kgnq json解析库:百度网盘 请输入提取码 提取码:oug0 一、获取token 打开postman, 在body这个参数中点击raw,输入用户名和密码 然后需要获取到域名和地址。 c++代码如下: #include "httplib.h" #in…...

Vite 的基本原理,和 webpack 在开发阶段的比较

目录 1,webpack 的流程2,Vite 的流程简单编译 3,总结 主要对比开发阶段。 1,webpack 的流程 开发阶段大致流程:指定一个入口文件,对相关的模块(js css img 等)先进行打包&#xff0…...

[开源]免费开源MES系统/可视化数字大屏/自动排班系统

开源系统概述: 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、免费MES、免费智能制造系统、免费排产系统、免费排班系统、免费质检系统、免费生产计划系统。 万界星空开源MES制造执行系统的Java开源版本。开源mes系统包括系统管理…...

python如何使用gspread读取google在线excel数据?

一、背景 公司使用google在线excel管理测试用例,为了方便把手工测试用到的测试数据用来做自动化用例测试数据,所以就想使用python读取在线excel数据,通过数据驱动方式,完成自动化回归测试,提升手动复制,粘…...

线程同步——互斥量解锁、解锁

类似与进程间通信信号量的加锁解锁。 对互斥量进行加锁后,任何其他试图在此对互斥量加锁的线程都会被阻塞,直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程被阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变…...

数据结构(c语言版) 顺序表

代码 #include <stdio.h> #include <stdlib.h>typedef int E; //这里我们的元素类型就用int为例吧&#xff0c;先起个别名//定义结构体 struct List{E * array;int capacity; //数组的容量int size; };//给结构体指针起别名 typedef struct List * ArrayLis…...

Springboot 集成 RocketMq(入门)

1.RocketMq安装部署 Linux 安装 RocketMq-CSDN博客 2.添加依赖包 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.3</version> </dependency> 3.配…...

Elasticsearch:ES|QL 中的数据丰富

在之前的文章 “Elasticsearch&#xff1a;ES|QL 查询语言简介”&#xff0c;我有介绍 ES|QL 的 ENRICH 处理命令。ES|QL ENRICH 处理命令在查询时将来自一个或多个源索引的数据与 Elasticsearch 丰富索引中找到的字段值组合相结合。这个有点类似于关系数据库查询中所使用的 jo…...

【linux编程】linux文件IO高级I/O函数介绍和代码示例

Linux文件IO高级I/O函数用法是指如何使用这些函数来实现高效和灵活的文件读写操作,它们包括以下几类: 分散读和集中写:readv和writev函数可以一次性地从一个文件描述符读取或写入多个缓冲区,而不需要多次调用read或write函数。这样可以减少系统调用的开销,提高I/O效率。存…...

jQuery获取地址栏GET参数值

jQuery获取地址栏GET参数值 封装方法&#xff1a; window.location 是获取当前页面地址 // 获取地址栏参数 function GetUrlString(name){var reg new RegExp("(^|&)" name "([^&]*)(&|$)");var r window.location.search.substr(1).match…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...