當前位置:
首頁 > 科技 > 如何利用深度學習技術處理圖像水印?

如何利用深度學習技術處理圖像水印?

作者 | 李翔

作者簡介:李翔,國內某互聯網大廠AI民工,前攜程酒店圖像技術負責人,主導並參與一系列圖像智能化演算法的研發與落地工作。在ICCV和CVPR等學術會議及國際期刊上發表論文十餘篇。

寫在前面

水印作為一種保護版權的有效方式被廣泛地應用于海量的互聯網圖像,針對水印的各種處理顯得越來越重要,比如水印的檢測和水印的去除與反去除。在這裡我們和大家分享一下業餘期間在水印智能化處理上的一些實踐和探索,希望可以幫助大家在更好地做到對他人圖像版權保護的同時,也能更好地防止自己的圖像被他人濫用。

我們大家在日常生活中如果下載和使用了帶有水印的互聯網圖像,往往既不美觀也可能會構成侵權。為了避免使用帶有水印的圖像帶來的各種影響,最直接的做法就是將帶有水印的圖像找出來丟棄不用,此外還有一種不推薦的做法就是去掉圖像上的水印後再使用。

接下來我們將會圍繞上述兩種大家常見的做法展開,首先介紹如何利用深度學習技術快速搭建一個水印檢測器,實現水印的自動檢測,同時我們還會進一步展示在水印檢測的基礎上如何利用深度學習技術設計一個水印去除器,自動將圖像上的水印去除。

一個包羅萬象的水印數據集

無論是搭建水印檢測器或是水印去除器,都需要海量水印圖像作為數據基礎。然而現實中並沒有直接可以使用的水印圖像數據集。因此,我們的首要任務是構建一個水印圖像數據集。首先我們要收集各式各樣的水印,為了保證後續模型良好的泛化性能,水印的種類要儘可能的多,水印樣式也要儘可能的豐富。

我們一共收集了80種來自於公司、組織和個人的水印,包括了中文、英文和logo等不同樣式。接下來就是製作帶水印的圖像,為了保證圖像數據的一般性,我們將公開的PASCAL VOC 2012數據集的圖像作為原始的無水印圖像,然後利用圖像處理工具將收集的80種水印以隨機的大小、位置和透明度打在原始圖像上,同時記錄下水印的位置信息,從而得到第一個大規模的水印圖像數據集。

水印數據集的80%被劃分為訓練集,剩餘的20%被劃分為測試集,為了適應現實場景中需要機器自動檢測和去除從未見過的水印的需求,我們確保訓練集中的水印不會出現在測試集中,這樣可以很好地模擬現實生活中的使用場景。現在水印圖像數據集已經準備就緒,接下來就是如何去搭建水印檢測器和去除器。

能夠一眼看穿各類水印的檢測器

水印在圖像中的視覺顯著性很低,具有面積小,顏色淺,透明度高等特點,帶水印圖像與未帶水印圖像之間的差異往往很小,區分度較低。為了構建一個有效的水印檢測器,我們將圖像水印檢測問題轉化為一種特殊的單目標檢測任務,即判斷圖像中是否有水印這一單目標存在。

當前基於深度學習的目標檢測模型有很多,可以分為以Faster R-CNN為代表的兩階段目標檢測演算法和以YOLO和RetinaNet等為代表的單階段目標檢測演算法。前者是先由演算法生成一系列待檢測目標的候選框,再通過卷積神經網路進行候選框的分類;後者則不用產生候選框,直接將目標邊框定位的問題轉化為回歸問題處理。一般來說單階段的演算法在檢測速度上會更快,但檢測精度上會有所下降。我們在這裡分別基於Faster R-CNN、YOLOv2和RetinaNet這三種目標檢測演算法來搭建水印檢測器,從對比的結果來看,三種方法都展現了令人滿意的檢測效果,其中以RetinaNet最優。

為了更加直觀地展示我們搭建的基於RetinaNet的水印檢測器的效果,我們將測試集上的水印檢測結果可視化,藍色的框是實際的水印區域,紅色的框是檢測器定位的水印區域,從可視化結果可以看出,對於未出現在訓練集中的水印,我們的水印檢測器依然可以一眼就看穿。有了這樣一款水印檢測器,我們就可以在海量圖像中快速又準確地檢測出帶水印的圖像。

往前走一步:從檢測到去除

如果只是利用AI來自動檢測水印,是不是總感覺少了點什麼?接下來我們在水印檢測的基礎上往前再走一步,利用AI實現水印的自動去除。因為水印在圖像上的面積較小,所以直接對整幅圖像進行水印去除顯得過於粗暴,也會嚴重拖慢去除速度。針對這種情況我們結合水印檢測設計了更貼合實際操作的水印處理流程,我們先通過水印檢測器檢測出水印區域,然後對水印區域進行水印去除操作。

水印去除問題可以看作是一個從圖像到圖像的轉換問題,即將帶水印的圖像轉換為無水印的圖像。這裡我們使用全卷積網路來搭建水印去除器,實現這種圖像到圖像的轉換。全卷積網路的輸入是帶水印的圖像區域,經過多層卷積處理後輸出無水印的圖像區域,我們希望網路輸出的無水印圖像能夠和原始的無水印圖像儘可能的接近。

為了儘可能提升網路輸出無水印圖像的質量,我們採用U-net結構替換了傳統的編解碼器結構,將輸入信息添加到輸出中,從而儘可能保留了圖像的背景信息。同時我們採用感知損失(Perceptual Loss)和一範數損失(L1 Loss)相結合的方式替換傳統的均方誤差損失(MSE Loss),使輸出的無水印圖像在細節和紋理上能夠更貼近原圖。

我們將水印去除器在測試集上的一些去水印效果可視化,左列是輸入的水印區域,右列是輸出的無水印區域。從可視化的結果可以看出對未知水印的去除效果還是不錯的。

寫在最後

針對水印的各種處理一直是研究的熱點,也吸引了越來越多的關注。本文介紹了如何通過當前流行的深度學習技術來搭建水印的檢測器和去除器,實現對水印的智能處理。

在後續的文章中,我們會進一步介紹一種更強大的水印去除器,也會提出一些對水印反去除的思考。值得注意的是,版權保護是大家一直要堅持的事情,水印去除的研究目的更多是為了通過攻擊水印來驗證其是否有效,從而促進水印反去除能力的提升。保護版權,AI有責

參考資料:

[1] Large-scale visible watermark detection and removal with deep convolutional networks

[2]Focal loss for dense object detection

[3] U-net: Convolutional networks for biomedical image segmentation

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI科技大本營 的精彩文章:

美亞Kindle排名第一的Python 3入門書,火遍了整個編程圈

TAG:AI科技大本營 |