瀉葯,干貨來了
傳統的圖片去水印方法雖然效率高,但是對細節破壞的比較嚴重。去水印說簡單也簡單,說難也難。有的水印用修復圖章幾秒鍾搞定,有的水印要一兩個鍾頭還不一定能搞定。
一些細節不是很豐富的圖片,可以通過photoshop等圖像處理軟件進行臨近像素填充,掩蓋水印部分,可以達到接近完美的效果。

面對一些細節極其復雜的圖像,ps已經不能很完美了。
面對細節豐富且復雜的水印,傳統的ps去水印方法已經不能滿足需求啊。
現在,用AI技術,去除水印,可以達到幾乎完美了。
隨着人工智障技術的不斷發展,深度學習其在圖像處理領域的應用越來越廣泛在了,ICML2018上, 英偉達和MIT等機構的研究人員展示了一項圖像降燥技術Noise2Noise,能夠自動 去除圖片中的 水印、模糊等噪音,幾乎能完美復原,而且渲染時間是毫秒級。
論文 Noise2Noise: Learning Image Restoration without Clean Data
第三方復現項目:yu4u/noise2noise 這個可以用來去字幕和圖像噪點,但是作者並沒有添加去水印的功能。
我對這個python腳本進行了修改,已經可以去水印了。
下面教你們怎么用,下面的雖然很長,卻很死,只要按照步驟來,一點都不難。
答主在這里聲明:本教程僅供參考,不贊成也不鼓勵大家用來盜圖。
答主在這里聲明:本教程僅供參考,不贊成也不鼓勵大家用來盜圖。
答主在這里聲明:本教程僅供參考,不贊成也不鼓勵大家用來盜圖。
1.下載腳本 下載以后把后綴名后面的.bin去掉。后綴改成zip即可解壓
n2n-watermark-remove-數據集-阿里雲天池首先進去點擊下載文件,然后你會得到一個zip格式的壓縮包。
把這個壓縮包里面的n2n-watermark-remove-master文件解壓到桌面

2.搭建運行環境。
為了照顧新手,我這里推薦使用Miniconda3-4.5.4,這個不是最新版,你們也不要去官網下載最新版,tensorflow-gpu版本需要與cuda/cudnn版本匹配,否則腳本跑起來報錯。
Miniconda3-4.5.4下載地址:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.5.4-Windows-x86_64.exe
備用下載 代碼托管
下載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數據集,下載地址 http://images.cocodataset.org/zips/val2017.zip
如果下載慢可以從
這個壓縮包可以解壓出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/av58901808https://www.bilibili.com/video/av58550738當然n2n-watermark-remove目錄里已經包含了測試用的的模型和水印。
獲得水印之后使用photoshop等軟件新建一個800X800px圖像,將水印密密麻麻的拼到這張圖上,保存並命名為1.png。背景需要透明

把1.png替換掉n2n-watermark-remove目錄下1.png。
此方法只能去除固定大小不固定位置的水印(訓練的水印必須與水印圖像上的水印一樣大)如果您要去除的水印形狀顏色或大小有隨機變化,那么需要修改代碼。
參考 https://github.com/yu4u/noise2noise/blob/master/noise_model.py#L29
修改腳本讓水印產生隨機變化。
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 小時以上就可以達到基本可用程度。,想要水印去的干凈,訓練時間不能少。