超简单搭建AI去水印和图像修复算法lama-cleaner(包含网页UI单张操作和代码批量运行)一

一.该方案使用场景

  1. 如果你想去水印、图像修复、P图等工作内容, 可以试试这个方案。
  2. 如果你是从事Ai算法工程师,对于不想要的图像样本,更可以用这种方案去除样本中不想要的类别物体。

二. 我的运行环境

ubuntu16.04的运行环境

以及比较重要的一些库以及对应的版本:torch, huggingface_hub,diffusers,transformers,lama-cleaner
(如果huggingface_hub版本安装太高,会出现以下错误:ImportError: cannot import name 'cached_download' from 'huggingface_hub')

bash 复制代码
- Platform: Linux-5.4.0-150-generic-x86_64-with-glibc2.27
- Python version: 3.9.0 
- torch: 1.11.0
- torchvision: 0.12.0
- Pillow: 9.4.0
- diffusers: 0.16.1
- transformers: 4.27.4
- opencv-python: 4.8.1.78
- xformers: N/A
- accelerate: N/A
- lama-cleaner: 1.2.5
- rembg: N/A
- realesrgan: N/A
- gfpgan: N/A
- huggingface_hub:0.16.4

三. 环境安装

(建议用虚拟环境安装)

1. 安装lama-cleaner

bash 复制代码
pip install lama-cleaner

2. 下载lama模型:

bash 复制代码
wget https://github.com/Sanster/models/releases/download/add_big_lama/big-lama.pt

3. 将下载的pt, 放到自己的路径中:

bash 复制代码
cp lama-big.pt /home/xxx/Downloads/LaMa/weights/torch/hub/checkpoints/big-lama.pt  # 自己的路径
(ubuntu默认路径:/home/xxx/.cache/torch/hub/checkpoints   # 这是torch加载pt的默认路径)

4. 运行lama-cleaner的http协议服务

本机调用:

lama-cleaner --model=lama --device=cuda --port=8080 --model-dir=/home/xxx/Downloads/LaMa/weights
注意:到weights这一路径就可以,剩下路径代码会自动查找

局域网内其他机子调用

lama-cleaner --model=lama --device=cuda --port=8080 --host 0.0.0.0 --model-dir=/home/xxx/Downloads/LaMa/weights
注意:到weights这一路径就可以,剩下路径会代码自动查找

(需要注意路径的问题, 只写到/home/xxx/Downloads/LaMa/weights, 后面剩下的缺的路径/torch/hub/checkpoints/big-lama.pt, 源代码代码会自动将路径拼接好)


四. python代码运行

1.python代码实现调用post请求lama-cleaner服务

参数注释:

1_mask.jpg是单通道的掩膜图(jpg或者png), 要扣除的区域设置为白色, 其他不扣除的区域设置为黑色.

(如果没有1_mask.jpg图, 可以参考下面的"附:生成mask.jpg的图"的代码, 手动生成1_mask.jpg的图)

xxx.jpg是3通道

python 复制代码
import requests
 
 
def removeWatermark(image, mask, save_image):
    url = "http://127.0.0.1:8080/inpaint"       # 本机请求
    #url = "http://192.168.xx.xx:8080/inpaint"  # 局域网内其他机子请求
    # print(img_path)
    response = requests.post(
        url,
        files={"image": image, "mask": mask},
 
        data={
            "ldmSteps": 25,
            "ldmSampler": "plms",
            "hdStrategy": "Crop",
            "zitsWireframe": True,
            "hdStrategyCropMargin": 196,
            "hdStrategyCropTrigerSize": 800,
            "hdStrategyResizeLimit": 2048,
            "prompt": "",
            "negativePrompt": "",
            "useCroper": False,
            "croperX": 64,
            "croperY": -16,
            "croperHeight": 512,
            "croperWidth": 512,
            "sdScale": 1.0,
            "sdMaskBlur": 5,
            "sdStrength": 0.75,
            "sdSteps": 50,
            "sdGuidanceScale": 7.5,
            "sdSampler": "uni_pc",
            "sdSeed": -1,
            "sdMatchHistograms": False,
            "cv2Flag": "INPAINT_NS",
            "cv2Radius": 5,
            "paintByExampleSteps": 50,
            "paintByExampleGuidanceScale": 7.5,
            "paintByExampleMaskBlur": 5,
            "paintByExampleSeed": -1,
            "paintByExampleMatchHistograms": False,
            "paintByExampleExampleImage": None,
            "p2pSteps": 50,
            "p2pImageGuidanceScale": 1.5,
            "p2pGuidanceScale": 7.5,
            "controlnet_conditioning_scale": 0.4,
            "controlnet_method": "control_v11p_sd15_canny",
            "paint_by_example_example_image": None,
        },
    
    )
 
    with open(save_image, "wb") as f:
        f.write(response.content)
    # print(image_name)
 
f_mask = open('1_mask.jpg', "rb").read()
f_image = open( "1.jpg", "rb").read()
save_image = '/home/bcd/Downloads/250217_LaMa/test_ps_ai_imgs/1_out.jpg'
removeWatermark(image=f_image, mask=f_mask, save_image=save_image)

附:生成mask.jpg的图

python 复制代码
import cv2
import numpy as np
 
mask = np.zeros((1026, 2048), dtype=np.uint8)  # 设置为自己的(height, width) 全黑的图
cv2.rectangle(mask, (1132, 193), (1392, 415), 255, -1)  # 绘制要扣除的矩形区域,为白色区域
cv2.imwrite("1_mask.jpg", mask)

五. 网页UI手动操作使用

浏览器输入网址即可使用, 上传一张图, 手动涂抹不想要的区域即可.

(长按ctrl可以进行多处消除涂抹)

python 复制代码
# 网页输入
http://127.0.0.1:8080/    # 本机
http://192.168.xx.xx:8080/  # 局域网

网页上还可以自行下载其他模型使用:


六.其他算法模型调用和使用

(可以自行选择模型, 测试哪个效果更好)
超简单搭建AI去水印和图像修复算法lama-cleaner(包含网页UI操作和代码运行)二


参考网址:
python lama-cleaner批量去水印_lama 批量处理-CSDN博客

相关推荐
IALab-检测行业AI报告生成3 小时前
快速了解IACheck AI技术原理:四大核心模块解析
人工智能
CNRio3 小时前
空间智能:中国数字基建的新引擎与产业变革的深层逻辑
人工智能·科技
泰迪智能科技3 小时前
案例分享|中山三院医学影像报告辅助生成案例分析
人工智能·深度学习·机器学习
viperrrrrrrrrr73 小时前
Prompt Tuning
人工智能·深度学习·prompt
志凌海纳SmartX3 小时前
AI知识科普丨什么是 MaaS?
人工智能
落798.3 小时前
Bright Data AI Scraper Studio:用Prompt秒建企业级爬虫,让数据采集进入AI时代
人工智能·亮数据
德卡先生的信箱3 小时前
深度学习图像处理(3)----二阶段目标检测
图像处理·深度学习·目标检测
AI_56783 小时前
TensorFlow损失函数的“隐形坑”
大数据·人工智能
七宝大爷3 小时前
CUDA与cuDNN:深度学习加速库
人工智能·深度学习·cuda·cudnn