什么是 Lama Cleaner ?
Lama Cleaner
是由SOTA AI
模型提供支持的图像修复工具。可以从图片中移除任何不需要的物体、缺陷和人,或者擦除并替换(powered by stable diffusion
)图片上的任何东西。
看看官方提供的视频,应该比较容易理解其功能
Lama Cleaner 0.24.0 示例
其实主要功能就 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_cache
和 torch_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 端口号
本地端口 | 容器端口 |
---|---|
8184 | 8184 |
默认的容器端口是 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