zoukankan      html  css  js  c++  java
  • 去水印

     

    泻药,干货来了

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

    一些细节不是很丰富的图片,可以通过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 小时以上就可以达到基本可用程度。,想要水印去的干净,训练时间不能少。

  • 相关阅读:
    java字符串实现正序和倒序输出
    暑假前挑战赛1—— A,B题解
    深搜
    poj 1200 Crazy Search
    poj 1840 Eqs (hash)
    Choose the best route
    一个人的旅行
    畅通工程续
    最短路基础算法
    完全背包问题
  • 原文地址:https://www.cnblogs.com/chargeworld/p/12771422.html
Copyright © 2011-2022 走看看