免费开源的图片修复工具Lama Cleaner

news2024/11/29 8:55:19

在这里插入图片描述

什么是 Lama Cleaner ?

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

看看官方提供的视频,应该比较容易理解其功能

Lama Cleaner 0.24.0 示例

其实主要功能就 3 项:

  1. 删除图像上不需要的东西;
  2. 修复旧照片;
  3. 替换图片上的东西;

Lama Cleaner 分为 GPU 版本和 CPU 版本,这两个版本的体积相差巨大,老苏猜测CPU 版本应该是个精简版,没有内置 stable diffusion,因此是不支持替换功能的,能否修复旧照片,老苏没试,因为手上没有

在这里插入图片描述

GPU 版本的要求最起码应该是要有Nvidia 显卡的,具体型号老苏没用过也不懂,反正老苏的小机器上只有集显,也就只能选择 CPU 版随便玩玩

  • cuda11.6
  • pytorch1.12.1
  • minimum nvidia driver 510.39.01+

CPU 版镜像下载后大约是 2G,GPU 版保守估计 10G,大家要留好空间

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 lama-cleaner ,选择第二个 cwq1913/lama-cleaner,版本老苏选的是 cpu-0.26.1

如果你的机器有 Nvidia 显卡,可以试试 gpu的版本

在这里插入图片描述

docker 文件夹中,创建一个新文件夹 lama,并在其中建两个子文件夹,分别是 huggingface_cachetorch_cache

文件夹装载路径说明
docker/lama/huggingface_cache/root/.cache/huggingface存放 sd1.5 模型
docker/lama/torch_cache/root/.cache/torch存放 lama/ldm/zits/mat/fcf 模型

对于 stable-diffusion 1.5 模型,您需要接受访问条款,并获取 access token,具体方法请自行研究官方文档,因为cpu 版本不涉及这个模型的下载和使用;

在这里插入图片描述

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
81848184

默认的容器端口是 8080

可以通过命令行修改,这里老苏用了 8184

环境

没有用到环境变量,但是用了命令行,这个我们之前说过,命令行只有第一次生效,所以别忘记了,因为我们前面改了容器端口

命令 中输入

lama-cleaner --device cpu --port 8184 --host 0.0.0.0

在这里插入图片描述

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 lama 和 子目录
mkdir -p /volume2/docker/lama/{huggingface_cache,torch_cache}

# 进入 lama 目录
cd /volume2/docker/lama

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name lama-cleaner \
   -p 8184:8184 \
   -v $(pwd)/torch_cache:/root/.cache/torch \
   -v $(pwd)/huggingface_cache:/root/.cache/huggingface \
   cwq1913/lama-cleaner:cpu-0.26.1 \
   lama-cleaner --device=cpu --port=8184 --host=0.0.0.0

在这里插入图片描述

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  lamecleaner:
    image: cwq1913/lama-cleaner:cpu-0.26.1
    container_name: lama-cleaner
    restart: unless-stopped
    ports:
      - 8184:8184
    volumes:
      - ./torch_cache:/root/.cache/torch
      - ./huggingface_cache:/root/.cache/huggingface
    command: lama-cleaner --device=cpu --port=8184 --host=0.0.0.0

换一种 command 写法也是可以的

    command:
      - lama-cleaner 
      - --device=cpu 
      - --port=8184 
      - --host=0.0.0.0

还可以写成

    command: ["lama-cleaner", "--device=cpu", "--port=8184", "--host=0.0.0.0"]

老苏之所以跟研究茴香豆的“茴”字到底有几种写法一样研究 command的写法,是因为几种安装方式都存在差异,尤其是图形化安装时,因为写了 = 号导致容器一直起不来,总是隔一段时间就忘记,真是受不了自己;

然后执行下面的命令

# 新建文件夹 lama 和 子目录
mkdir -p /volume2/docker/lama/{huggingface_cache,torch_cache}

# 进入 lama 目录
cd /volume2/docker/lama

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

第一次启动失败了,从日志看,需要下载 Downloading: "https://github.com/Sanster/models/releases/download/add_big_lama/big-lama.pt" to /root/.cache/torch/hub/checkpoints/big-lama.pt

所以第一种方法是将 github.com 加入科学上网的白名单,再次启动容器就开始下载了

在这里插入图片描述

看到 * Running on http://0.0.0.0:8184/ (Press CTRL+C to quit) ,就可以开始使用了

在这里插入图片描述

下载的 big-lama.pt/docker/lama/torch_cache/hub/checkpoints 目录中

在这里插入图片描述

所以第二种方式是,如果你的群晖不能科学上网的话,你可以借助 ghproxy,直接下载这个模型文件丢到上面的目录中

# 通过代理下载模型文件的地址
https://ghproxy.com/github.com/Sanster/models/releases/download/add_big_lama/big-lama.pt

当然这是 CPU 版,需要的模型比较少,如果是GPU 版的话,估计模型会更多,注意看日志吧

使用

在浏览器中输入 http://群晖IP:8184 就能看到主界面

老苏随便选了一张,准备把中间的小刺猬抹掉

在这里插入图片描述

这个效果怎么样?

在这里插入图片描述

对比原始图看看,灯是被遮挡了的缘故,所以是无法还原的,远处的云和山不放大看细节,还原度还是可以的,起码不会一眼穿帮吧

在这里插入图片描述

参考文档

Sanster/lama-cleaner: Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on your pictures.
地址:https://github.com/Sanster/lama-cleaner

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图片怎么转换成PDF格式?这两种方法都可以实现转换

怎么把图片转换成PDF格式呢?大家在日常中也会经常使用到图片,不管是出门游玩还是办公学习,图片都会给我们带来极大的便利。但是一旦图片的数量多了起来,我们又不能删除,那么这些图片的存放就是一个关键的问题&#xff…

[附源码]计算机毕业设计的小说阅读系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

“数据湖存储”冠军杯足球赛开幕,腾讯云存储出征!

“数据湖存储”冠军杯是数据湖领域内的世界级赛事,随着云上“数据湖存储”产品理念的逐步普及,今年的比赛也获得了国内外众多球迷的关注。腾讯云以COS、GooseFS、GooseFSx、元数据加速器、COS加速器等球员组成的球队一路披荆斩棘,成为最闪耀的…

化工集团公司安全风险智能化管控平台

加快数字化发展,大力推进信息化、工业化融合,是国家新时代、新阶段作出的重要决策部署,是化工集团公司打造世界领先企业的必由之路。要充分认识加快数字化发展的重要性紧迫性。要锚定集团公司数字化转型升级的总目标,坚持顶层设计…

Java 开发如何通过 IoT 边缘 ModuleSDK 进行协议转换

操作场景 使用 ModuleSDK 开发插件应用,接入其他协议设备(如 HTTP 请求数据),将其他协议的数据转化为 MQTT 协议 JSON 数据上报到 IoTDA。 代码解析 项目结构如下 ModbusDriver 代码解析 片段一 通过 DriverClient.createFromEnv…

[附源码]Nodejs计算机毕业设计基于Web课堂签到管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

web开发框可以为提升办公效率赋能吗?

提升办公效率可以引用专业的web开发框架,值得一提的是,随着数字化时代的到来,要想做好数据管理,低代码开发平台功不可没,在做好数据管理的过程中发挥了重要的应用价值。研发低代码开发平台,流辰信息一直都以…

从BI到ABI,守正创新的思迈特软件持续推进国产BI产业创新

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业近年来,国内外数字化转型加速渗透,企业客户已不再满足“用上”数据,能否“用好”数据、提升管理效率成为企业数字化转型的核心诉求。在提升企业管理效率的工具中,商业智能&…

Linux C编程一站式学习笔记1

Linux C编程一站式学习笔记 chap1程序的基本概念 打算重学计算机,重学C语言 这本书的前言写的真好 实在是惭愧… 文章目录Linux C编程一站式学习笔记 chap1程序的基本概念一.程序和编程语言1.什么是程序2.程序由指令组成3.编程语言编译执行过程解释执行过程本节总结…

力扣(LeetCode)1697. 检查边长度限制的路径是否存在(C++)

并查集离线查询 由于评测系统对 vectorvectorvector 的排序可能较慢&#xff0c;使用结构体保存 vectorvectorvector &#xff0c;接下来的查询和边集就对结构体操作。 结构体的属性 aaa 点 、 bbb 点 、ccc 长度、 ddd 顺序。重载 <<< &#xff0c;排序时按照 ccc …

ssm+Vue计算机毕业设计校园图书漂流系统(程序+LW文档)

ssmVue计算机毕业设计校园图书漂流系统&#xff08;程序LW文档&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

C++基础篇之什么是 数据结构

&#x1f4d2;博客主页&#xff1a; ​​开心档博客主页​​ &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐留言&#x1f4dd; &#x1f4cc;本文由开心档原创&#xff01; &#x1f4c6;51CTO首发时间&#xff1a;&#x1f334;2022年12月12日&#x1f334; ✉…

12.1、后渗透测试--提权

meterpreter提权方式&#xff1a; getsystem自动提权bypassuac提权migrate1、getsystem自动提权 meterpreter > getsystemgetsystem工作原理&#xff1a;getsystem创建一个新的Windows服务&#xff0c;设置为SYSTEM运行&#xff0c;当它启动时连接到一个命名管道。getsystem…

Java 线程池详解

线程池&#xff08;thread pool&#xff09;&#xff1a;一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;对线程统一管理。 使用线程池的优势 提高效率&#xff0c;创建好一定数量的线程放在池中&am…

技术分享 | 被测系统架构与数据流分析

深入了解测试过程中被测系统的架构与数据流&#xff0c;有助于理解业务逻辑&#xff0c;梳理业务用例以及促进部门协同。 更深的理解业务逻辑是指要分析公司是做什么的&#xff0c;公司的重要的商务决策是什么&#xff0c;公司内部数据流是怎么运行的&#xff0c;有哪些常见的…

数字孪生重点商业实践展示

数字孪生是一个系统或一组对象的虚拟表示。数字孪生背后的技术旨在准确反映系统的生命周期和应用程序&#xff0c;并使用机器学习、模拟和人工智能的组合来帮助在现实生活中运行之前对使用、问题或效率进行建模。如今&#xff0c;数字孪生技术的爆火离不开人们对其商业价值的看…

[C语言]指针进阶

[C语言]指针进阶 文章目录[C语言]指针进阶1.字符指针&#xff1a;2.指针数组&#xff1a;3.数组指针&#xff1a;4.&数组名VS数组名:5.数组指针的使用:6.数组参数、指针参数:6.1一维数组传参:6.2二维数组传参:6.3一级指针传参:6.4二级指针传参:7.函数指针:7.1如何保存函数的…

Ubuntu20.04下notify-send和cron结合使用

问题背景 今天学到一个Linux下一个很有趣的弹窗通知组件&#xff0c;名字叫notify-send&#xff0c;可以用如下方式简单调用。 notify-send hello-world可以立马看到效果。 不仅如此&#xff0c;他的图标、文字的样式等都可以定制&#xff0c;如&#xff1a; notify-send -u…

Python 编程的入门不二之选——Python编程:从入门到实践

最好的Python入门教材 你好&#xff0c;我是小雨青年&#xff0c;一名程序员。 今天我为你推荐一本Python入门级书籍——《Python编程&#xff1a;从入门到实践》&#xff08;第二版&#xff09;。 Python 是一种流行的、适用于各种领域的编程语言。对于初学者来说&#xff…

新来了个同事,设计模式用的是真优雅呀,代码如诗

之前有小伙伴私信我说看源码的时候感觉源码很难&#xff0c;不知道该怎么看&#xff0c;其实这有部分原因是因为没有弄懂一些源码实现的套路&#xff0c;也就是设计模式&#xff0c;所以本文我就总结了9种在源码中非常常见的设计模式&#xff0c;并列举了很多源码的实现例子&am…