去水印

时间:2024-02-21 21:09:24
 

泻药,干货来了

传统的图片去水印方法虽然效率高,但是对细节破坏的比较严重。去水印说简单也简单,说难也难。有的水印用修复图章几秒钟搞定,有的水印要一两个钟头还不一定能搞定。

一些细节不是很丰富的图片,可以通过photoshop等图像处理软件进行临近像素填充,掩盖水印部分,可以达到接近完美的效果。

面对一些细节极其复杂的图像,ps已经不能很完美了。

面对细节丰富且复杂的水印,传统的ps去水印方法已经不能满足需求啊。

现在,用AI技术,去除水印,可以达到几乎完美了。

随着人工智障技术的不断发展,深度学习其在图像处理领域的应用越来越广泛在了,ICML2018上,英伟达和MIT等机构的研究人员展示了一项图像降燥技术Noise2Noise,能够自动去除图片中的水印、模糊等噪音,几乎能完美复原,而且渲染时间是毫秒级。
论文 Noise2Noise: Learning Image Restoration without Clean Data

第三方复现项目:yu4u/noise2noise 这个可以用来去字幕和图像噪点,但是作者并没有添加去水印的功能。

我对这个python脚本进行了修改,已经可以去水印了。

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

 

下面教你们怎么用,下面的虽然很长,却很死,只要按照步骤来,一点都不难。

答主在这里声明:本教程仅供参考,不赞成也不鼓励大家用来盗图。

答主在这里声明:本教程仅供参考,不赞成也不鼓励大家用来盗图。

答主在这里声明:本教程仅供参考,不赞成也不鼓励大家用来盗图。

 

1.下载脚本 下载以后把后缀名后面的.bin去掉。后缀改成zip即可解压

n2n-watermark-remove-数据集-阿里云天池​tianchi.aliyun.com图标

首先进去点击下载文件,然后你会得到一个zip格式的压缩包。

把这个压缩包里面的n2n-watermark-remove-master文件解压到桌面

 

2.搭建运行环境。

为了照顾新手,我这里推荐使用Miniconda3-4.5.4,这个不是最新版,你们也不要去官网下载最新版,tensorflow-gpu版本需要与cuda/cudnn版本匹配,否则脚本跑起来报错。

Miniconda3-4.5.4下载地址:

备用下载 代码托管

下载Miniconda3-4.5.4-Windows-x86_64.exe并安装。连续点击next,直到安装完成,安装目录随意

安装好了。可以在开始菜单找到一个Anaconda Prompt的应用。打开

然后复制下面三行,粘贴到Anaconda Prompt中,

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

然后按两次回车

然后再复制这一行

conda install tensorflow-gpu

回车,然后界面上一直有文字滚动。不用管它。

等出现Proceed ([y]/n)?的时候输入y,然后回车,然后又是一阵文字滚动。。。。等它滚完

等到有三行done的时候,可以关闭Anaconda Prompt。

3.准备数据集

下载coco2017数据集,下载地址 

如果下载慢可以从

这个压缩包可以解压出5000张图片,其中4200张用来训练。剩下的800张用于测试

打开我们刚刚解压到桌面的n2n-watermark-remove-master目录,进入里面的dataset,再进入train,使用windows自带的文件管理器随便框选其中800张图片,右键剪切,移动到test目录。

剩下的4200张(ctrl+A)全选选中移动到train目录里。

然后返回桌面

4.获取/制作水印

这一步是非常重要的,想要计算机去水印,就要教计算机分辨水印,只有计算机学会了分辨一张有水印的图像中那些部分是水印,哪些部分不是水印,才能去水印。

这一步最关键的就是找到水印原图。一般LOGO做的水印,一般可以在其网站找到LOGO图像,(如果是白底需要抠图),

当然你也可以用聪明一点都办法,假设某个网站上的图片都有统一样式的水印,你只需要去这个网站上传一张纯色背景的图片(推荐50%中性灰),让系统为这张图片加上水印,然后通过图像减法计算出差值,也就得到了水印图像。

如果网上找不到相关水印就需要自己制作,制作水印可以看这两个教程,

https://www.bilibili.com/video/av58901808​www.bilibili.comhttps://www.bilibili.com/video/av58550738​www.bilibili.com

当然n2n-watermark-remove目录里已经包含了测试用的的模型和水印。

获得水印之后使用photoshop等软件新建一个800X800px图像,将水印密密麻麻的拼到这张图上,保存并命名为1.png。背景需要透明

把1.png替换掉n2n-watermark-remove目录下1.png。

此方法只能去除固定大小不固定位置的水印(训练的水印必须与水印图像上的水印一样大)如果您要去除的水印形状颜色或大小有随机变化,那么需要修改代码。

参考 

修改脚本让水印产生随机变化。

5.训练去水印

打开Anaconda Prompt

输入 cd加一个空格 然后鼠标选中n2n-watermark-remove目录,拉到Anaconda Prompt界面上,这样就能自动添加路径。按回车,具体看视频。

 

然后输入下面命令,按回车,接着屏幕又是一阵文字滚动。等它滚完。

pip install -r requirements.txt

然后执行训练命令

python train.py --image_dir dataset/train --test_dir dataset/test --image_size 128 --batch_size 8 --lr 0.001 --source_noise_model text,0,50 --target_noise_model text,0,50 --val_noise_model text,25,25 --loss mae --output_path text_noise
 

训练时间由显卡决定。一般几十个小时到几百个小时不等,办公电脑就不用试了。

有条件的可以用Kaggle和Google Colab

训练过程中,每迭代一圈就会生成一个weights.xxxxx-xxxx.hdf5模型文件。并不是每次都会生成hdf5文件,有些时候不生成属于正常现象。

 

开头的数字代表圈数。数字越大,去水印效果越好,这个脚本默认跑100圈。,一般跑50圈左右就可以关闭窗口停止了,然后生成的模型去水印。

6.利用水印模型去水印

得到模型以后就可以用用来去水印了

使用这个命令

python test_model.py --weight_file 水印模型文件名.hdf5  --image_dir inputdir --output_dir outputdir

水印模型文件名.hdf5替换成实际的文件名,inputdir里放入有水印的图片,执行命令。去除水印后的图片会静静的躺在 outputdir目录

 

视频里演示的效果可能有些不干净,因为这是短时间内训练的结果,理论上训练 30 小时以上就可以达到基本可用程度。,想要水印去的干净,训练时间不能少。