照片修复源码(免费开源的图片修复工具Lama Cleaner)
什么是 Lama Cleaner ?
Lama Cleaner 是由 SOTA AI 模型提供支持的图像修复工具 。可以从图片中移除任何不需要的物体 、缺陷和人 ,或者擦除并替换(powered by stable diffusion)图片上的任何东西 。
看看官方提供的视频 ,应该比较容易理解其功能
其实主要功能就 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创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!