首页 > 编程语言 >在Python中使用SWCNN去除水印

在Python中使用SWCNN去除水印

时间:2024-07-17 23:29:53浏览次数:8  
标签:Img Python pic 水印 SWCNN https np

在Python中使用SWCNN去除水印

说明

准备

运行环境

首先创建一个conda环境,安装SWCNN官方建议的库:

conda create -n py39torch python=3.9
conda activate py39torch

conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

pip install tensorboard==2.9.1 scikit-image==0.19.3 pyyaml==5.1 h5py==3.7.0 opencv-python==4.6.0.66 matplotlib==3.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

Clone仓库、下载权重,准备图片

Clone下Github仓库:

git clone https://github.com/hellloxiaotian/SWCNN

然后从百度网盘 https://pan.baidu.com/s/1UbnK2F1FuIMKvqESNk5SvA (passwd: jlbv) 或者 Google Drive 中下载权重文件,只需要下载其中的models_SWCNN文件夹即可

新建data文件夹,并将下载的models_SWCNN文件夹放入其中。

mkdir -p data
# download models_SWCNN from https://drive.google.com/drive/folders/1-f7tVsytSXNjeqFkpEUMPbzkb4ZsDngQ or https://pan.baidu.com/s/1UbnK2F1FuIMKvqESNk5SvA (passwd: jlbv) 
# unzip and move folder into data

准备想要去除水印的图片:我使用PixWeaver随意生成了一张图片,通过一个网站随便加了点水印;然后在data文件夹下新建了一个名为my_images的目录,将水印图片放入其中。

运行推理

作者有提供一个test.py文件,见 https://github.com/hellloxiaotian/SWCNN/blob/main/test.py 。 这个文件说明了如何对模型进行测试,以下的代码基本上是从里面提取的。

首先,导入依赖:

import torch.nn as nn
import torch
import matplotlib.image as matImage
import os

from models import HN
from utils import *

然后,加载模型文件:

net = HN()
device_ids = [0]
model = nn.DataParallel(net, device_ids=device_ids).cuda()
model.load_state_dict(torch.load(os.path.join('data/models_SWCNN', "HNperL1n2nalpha1.0.pth")))
model.eval()

此处加载的是HNperL1n2nalpha1.0.pth这个模型文件,其中1.0代表的是alpha。

读取图片并进行预处理:

Img = cv2.imread("data/my_images/穿越到一个玄幻世界的文科生-watermarked.png")
Img = normalize(np.float32(Img[:, :, :]))
Img = np.expand_dims(Img, 0)
Img = np.transpose(Img, (0, 3, 1, 2))
_, _, w, h = Img.shape
w = int(int(w / 32) * 32)
h = int(int(h / 32) * 32)
Img = Img[:, :, 0:w, 0:h]
ISource = torch.Tensor(Img)

运行推理并保存图片:

with torch.no_grad():
    Out = torch.clamp(model(ISource), 0., 1.)
Out_np = Out.cpu().numpy()
pic = Out_np[0]

r, g, b = pic[0], pic[1], pic[2]
b = b[None, :, :]
r = r[None, :, :]
g = g[None, :, :]
pic = np.concatenate((b, g, r), axis=0)
pic = np.transpose(pic, (1, 2, 0))
matImage.imsave("data/my_images/out.jpg", pic)

效果

去除水印前:

去除水印后:

可以看出,大部分水印都去除了,但是还残留了一些。

另外,我有测试一张非AI生成的图片,效果相对比较好。

在实际应用中,我们可以准备一些素材进行训练(作者已开源训练脚本),相信会有不错的效果。

幕后花絮

运行作者提供的测试脚本时,发现了一些小问题,修改之后可以正常运行了,见我克隆的仓库: https://github.com/shizidushu/SWCNN

标签:Img,Python,pic,水印,SWCNN,https,np
From: https://www.cnblogs.com/shizidushu/p/18308515

相关文章

  • python的tkinter、socket库开发tcp的客户端和服务端
    一、tcp通讯流程和开发步骤1、tcp客户端和服务端通讯流程图套接字是通讯的利器,连接时要经过三次握手建立连接,断开连接要经过四次挥手断开连接。2、客户端开发流程1)创建客户端套接字2)和服务端器端套接字建立连接3)发送数据4)接收数据5)关闭客户端套接字3、服务端开发......
  • 请问如何将带有斜纹水印pdf的转成Excel呢?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【wen】问了一个Python自动化办公的问题,问题如下:请问如何将带有斜纹水印pdf的转成Excel呢?目前我把pdf转成图片,根据水印的颜色进行清除,但是在脱网环境下无法将图片转成Excel。二、实现过程后来【隔壁......
  • Python爬虫(5-10)-编解码、ajax的get请求、ajax的post请求、URLError/HTTPError、微博
    五、编解码(Unicode编码)(1)GET请求所提方法都在urllib.parse.路径下get请求的quote()方法(适用于只提交一两个参数值)url='http://www.baidu.com/baidu?ie=utf-8&wd='#对汉字进行unicode编码name=urllib.parse.quote('白敬亭')url+=nameget请求的urlencode()方法(适用于......
  • Python包管理入门
    包管理器,是现代项目管理的重要组成部分,许多现代编程语言也会推出统一的包管理器以提升开发者体验,如rust的cargo,nodejs的npm,arkts的ohpm等等。Python作为一门很“新”的语言,自然也提供包管理功能。Python包管理的前世今生如果要提到Python的包管理,那么必定绕不开PYPI(Pytho......
  • Python入门基础 2--变量与基本数据类型
    1、程序员必备修养---注释注释=说明文档,说明代码的作用,让别人或者自己看代码的时候可以更好理解相关含义因为注释是给开发人员看的,不会参与程序运行python有两种注释方式:   1.单行注释-->用#符号表示,在#后面的内容都是注释print('第二篇文章')#这是输出语句 ......
  • 我从 Python 潮流周刊提取了 800 个链接,精选文章、开源项目、播客视频集锦
    你好,我是豌豆花下猫。前几天,我重新整理了Python潮流周刊的往期分享,推出了第1季的图文版电子书,受到了很多读者的一致好评。但是,合集和电子书的篇幅很长,阅读起来要花不少时间。所以,为了方便大家阅读,我打算将合集进一步整理,分门别类将原始内容的标题罗列出来。本文总计约800......
  • Python读Excel数据,创建Word文档上下文字典列表,元素为字典(新)
    #读Excel数据,创建Word文档上下文字典列表,元素为每个培训人员的上下文字典defcreate_docx_context_dict_list(_excel_path):"""输入参数::param_excel_path:Excel全路径功能:创建Word文档上下文字典列表,元素为每个培训人员的上下文字典字典的键为......
  • ROS服务通信机制实操Python
    ROS服务通信机制实操Python步骤流程vscode配置服务端客户端编辑配置文件编译并执行优化实现参数的动态提交优化先启动客户端后启动服务端ROS服务通信的理论查阅:ROS服务通信流程理论ROS服务通信的自定义srv数据的准备可以查阅:ROS服务通信自定义srv在模型实现中,ROSm......
  • Python实现基于http通信的protobuf数据传输的案例,包括请求者和接收者
    个人名片......
  • Python回归、聚类、相关分析上海公租房租金满意度影响因素数据可视化
    全文链接:https://tecdat.cn/?p=37013原文出处:拓端数据部落公众号随着城市化进程的加速,住房问题日益成为城市居民关注的焦点。公租房作为政府为解决中低收入家庭住房困难而推出的一种重要住房保障形式,其租金水平、居住条件及租住体验直接关系到广大租户的切身利益和生活质量......