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

本文主要是介绍【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试玩:擦除对象、替换对象、更换风格等等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Python实现文件批量重命名器

《Python实现文件批量重命名器》在日常工作和学习中,我们经常需要对大量文件进行重命名操作,本文将介绍一个使用Python开发的文件批量重命名工具,提供了多种重命名模式,有需要的小伙伴可以了解下... 目录前言功能特点模块化设计1.目录路径获取模块2.文件列表获取模块3.重命名模式选择模块4.序列号参数配

golang实现延迟队列(delay queue)的两种实现

《golang实现延迟队列(delayqueue)的两种实现》本文主要介绍了golang实现延迟队列(delayqueue)的两种实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录1 延迟队列:邮件提醒、订单自动取消2 实现2.1 simplChina编程e简单版:go自带的time

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

SpringBoot实现多环境配置文件切换

《SpringBoot实现多环境配置文件切换》这篇文章主要为大家详细介绍了如何使用SpringBoot实现多环境配置文件切换功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 示例代码结构2. pom文件3. application文件4. application-dev文

Python FastAPI实现JWT校验的完整指南

《PythonFastAPI实现JWT校验的完整指南》在现代Web开发中,构建安全的API接口是开发者必须面对的核心挑战之一,本文将深入探讨如何基于FastAPI实现JWT(JSONWebToken... 目录一、JWT认证的核心原理二、项目初始化与环境配置三、安全密码处理机制四、JWT令牌的生成与验证五、

Python使用Turtle实现精确计时工具

《Python使用Turtle实现精确计时工具》这篇文章主要为大家详细介绍了Python如何使用Turtle实现精确计时工具,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录功能特点使用方法程序架构设计代码详解窗口和画笔创建时间和状态显示更新计时器控制逻辑计时器重置功能事件

Linux给磁盘扩容(LVM方式)的方法实现

《Linux给磁盘扩容(LVM方式)的方法实现》本文主要介绍了Linux给磁盘扩容(LVM方式)的方法实现,涵盖PV/VG/LV概念及操作步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录1 概念2 实战2.1 相关基础命令2.2 开始给LVM扩容2.3 总结最近测试性能,在本地打数据时,发现磁盘空

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

golang 对象池sync.Pool的实现

《golang对象池sync.Pool的实现》:本文主要介绍golang对象池sync.Pool的实现,用于缓存和复用临时对象,以减少内存分配和垃圾回收的压力,下面就来介绍一下,感兴趣的可以了解... 目录sync.Pool的用法原理sync.Pool 的使用示例sync.Pool 的使用场景注意sync.

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到