董 慧 馮 杰 馬漢杰 楊小利 王 健
(浙江理工大學信息學院 杭州 310018)
近年來,計算機視覺技術不斷發(fā)展,很多學者研究視頻標注[1-2]算法用于訓練模型、研究水印嵌入算法用于所有權聲明。但在一些特殊情況下,需要一定的技術將水印去除。比如水印版權已過期,而水印的設計公司不再提供技術支持[3]。在去除視頻水印之前,需要檢測出視頻水印的圖案和位置信息。在現(xiàn)有的視頻內容檢測、識別[4-5]和修復算法中,用于視頻水印檢測和去除的方法可以分為基于單圖像和基于圖像集兩類?;趩螆D像的方法有:Pinjarkar和Tuptewar[6]把基于Graph區(qū)域分割和樣本塊填充修復圖像的方法應用到視頻修復中,單幀修復較好但分割不夠精確,需要一定的人工交互。Cheng等人[7]針對圖片水印提出了一種基于RetinaNet和Unet架構的水印檢測和去除方法,此方法對有一定透明度且結構單一的水印修復效果較好?;趫D像集的方法有,Xu等人[8]提出了累加灰度圖和基于樣本的源區(qū)域塊稀疏線性組合填充的方法檢測和去除圖像水印。這種已知區(qū)域填充的方法對于小區(qū)域修復效果較好,區(qū)域較大時往往過于平滑。Dekel等人[9]提出了一種廣義的多圖像Matting算法,該算法通過計算圖像集的梯度自動估計“前景”(水印)、α值和“背景”。該算法對透明水印的去除有一定效果,對彩色水印修復效果較差。Dashti等人[10]連續(xù)使用下一幀的最佳匹配塊填充當前幀的水印部分進行水印去除,幀間過渡較自然但單幀修復痕跡較明顯。以上方法在某些情況可以去除水印,但由于水印技術的發(fā)展,水印位置和形態(tài)都有可能改變,甚至一個視頻幀有多個水印,傳統(tǒng)的水印檢測和去除方法已經(jīng)不再適用。因此,針對上述問題,本文提出了一種基于目標檢測、圖像分割和圖像修復融合的水印檢測和去除技術。
本文的主要貢獻如下。
(1) 提出了一種基于目標檢測與圖像分割算法的可見水印檢測方法。能夠有效節(jié)省人力、改善動態(tài)水印提取困難的問題。
(2) 提出了一種基于深度圖像先驗的可見水印去除方法。在損失函數(shù)中引入結構相似度,能夠有效去除水印、改善圖像先驗網(wǎng)絡生成圖像結構不夠清晰的問題。
(3) 通過實驗分析對比不同方法對圖片可見水印去除的效果,實驗結果表明所提方法優(yōu)于其他方法。
本文提出的視頻可見水印檢測和去除技術主要分為水印檢測和水印去除。在水印檢測前首先根據(jù)視頻長短選擇間隔幀數(shù)保存視頻幀。水印檢測部分首先使用目標檢測算法進行水印區(qū)域檢測。根據(jù)檢測得到的水印區(qū)域坐標,生成二進制水印框圖,與視頻幀一起作為圖像分割的輸入。圖像分割算法對水印框內的圖像進行前景分割,提取出準確的水印圖案。水印去除部分首先對水印圖案進行掩膜預處理,根據(jù)水印在原圖的坐標,生成與原圖大小一樣的二進制掩膜。把視頻幀和掩膜輸入圖像修復網(wǎng)絡進行水印去除,深度網(wǎng)絡從視頻幀水印外的區(qū)域中學習圖片特征以生成沒有水印的新圖片。最后,把修復后的視頻幀轉為視頻。本文方法整體流程圖如圖1所示。
圖1 本文算法流程
水印檢測是為了準確地自動獲取動態(tài)或者靜態(tài)水印的位置信息和圖案信息,節(jié)省大量的人力資源。常見的方法有基于視頻水印一致性的方法,如計算中值梯度和累加灰度圖[8]等?;谒〗Y構的方法,如根據(jù)結構分解圖像的方法[11]等。
在現(xiàn)有的網(wǎng)站中,許多視頻的可見水印是動態(tài)的。動態(tài)水印主要分為兩種情況:水印位置不變、形態(tài)變化的情況,如西瓜視頻和人人視頻;水印形態(tài)不變、位置變化的情況,如韓劇TV。如圖2所示,圖2從上到下依次為西瓜視頻、人人視頻和韓劇TV同一個視頻不同時刻的視頻幀。針對上述2種情況,利用中值梯度和累加灰度圖的方法對視頻進行水印提取會出現(xiàn)水印不完整和提取不到的問題。且對于十幾秒的短視頻,視頻內容變化較小,往往有把視頻幀內容當作水印提取出來的問題?;诮Y構的方法往往出現(xiàn)把字幕錯認為水印的現(xiàn)象。本文使用目標檢測算法先檢測出水印區(qū)域減小水印切割范圍,再使用圖像分割算法切割出準確的水印圖案。
圖2 視頻動態(tài)水印示例圖
針對現(xiàn)有水印檢測算法在水印動態(tài)變化和視頻內容變化較小的情況下檢測不到水印的問題,本文把每類水印當作一種目標,使用目標檢測算法進行檢測。目前,常見的目標檢測算法有SSD(single shot multibox detector)[12],F(xiàn)aster R-CNN (faster regions with convolutional neural networks features)[13],YOLO(you only look once)[14]算法等。Faster R-CNN檢測效果較好,但存在著檢測速度慢的缺點。傳統(tǒng)的YOLO算法檢測速度較快,但小目標檢測效果不佳、定位不準。SSD在一定程度上取得了速度與準確率之間的平衡,而YOLOv3與 SSD 的準確率相當,但是速度快 3 倍,因此本文使用YOLOv3目標檢測算法檢測水印區(qū)域。
在水印區(qū)域檢測部分,本文將數(shù)據(jù)集中5164張視頻幀作為訓練集,其余的1290張視頻幀作為測試集。YOLOv3在測試集中檢測的準確率為98%。檢測結果如圖3所示。
圖3 水印區(qū)域檢測結果示意圖
水印區(qū)域檢測到的是個矩形區(qū)域,但整個矩形區(qū)域除了實際的水印圖案,還包含一些視頻內容,這種方法修復得到的視頻幀語義效果較差,邊緣處修復痕跡較明顯。因此本文在檢測出水印區(qū)域之后再進行水印區(qū)域分割,以提取出準確的水印圖案。圖像分割主要有基于像素的方法、基于邊界的方法和基于區(qū)域的方法。前2種方法需要大量的人工交互,本文選擇簡單快速的基于區(qū)域的方法?;趨^(qū)域的方法常用的有GraphCut和GrabCut[15],Cheng等人[16]在GrabCut的基礎上提出的DenseCut算法,用緊密連接的條件隨機場(conditional random field,CRF)代替?zhèn)鹘y(tǒng)GrabCut公式中耗時的全局顏色模型迭代細化,能獲得較好的分割效果。水印通常由圖案和文字構成,文字往往較細小且與視頻內容差距較大,對分割的精確度要求比較高,因此本文采用DenseCut進行水印區(qū)域分割。
CRF定義在隨機變量X={X1,X2, …,Xn}上,每個隨機變量對應于一個像素,其中Xi表示像素i的二進制標記,值為0或1。值為0表示像素i為背景,否則表示為前景,i∈N={1,2,…,n}。x表示這些隨機變量的聯(lián)合結構,I表示視頻幀的圖像數(shù)據(jù)。全連接的二進制CRF定義如式(1)所示。
(1)
其中,i和j表示圖像中像素的位置。一元項ψi(xi)代表像素i標記為xi的損失,定義如式(2)所示。可以通過對標簽xi產(chǎn)生分布的分類器對每個像素單獨計算。
ψi(xi)=- logP(xi)
(2)
式(2)中的前景項或背景項P(xi)為
(3)
式(3)中P(Θ0,Ii)和P(Θ1,Ii)分別代表像素顏色Ii屬于背景模型Θ0和前景模型Θ1的概率密度。根據(jù)水印框圖使用混合高斯模型(Gaussian mixture model,GMM)來估計概率密度值P(xi)。矩形框對應位置以外的部分作為背景,框內圖像為可能的前景。考慮到自然圖像中的顏色通常只覆蓋整個顏色空間的一小部分,本文選擇最頻繁的顏色,確保這些顏色覆蓋超過95%的圖像像素的顏色,其余像素的顏色(占圖像像素5%以下)被直方圖中最接近的顏色替換。本文選擇5個高斯前景模型和5個高斯背景模型。
全連接二元項ψij(xi,xj)鼓勵相似像素和相鄰像素分為同樣的標簽。使用對比比較明顯的三核勢能,如式(4)、(5)所示。
ψij=g(i,j)[xi≠xj]
(4)
g(i,j)=w1g1(i,j)+w2g2(i,j)+w3g3(i,j)
(5)
其中,[·]為Iverson括號,如果條件為真值,其值為1,否則為0;w1、w2、w3為比例系數(shù);相似度函數(shù)g(i,j)根據(jù)顏色向量Ii、Ij和位置pi、pj來定義,具體如式(6)~(8)所示。
(6)
(7)
(8)
式(6)代表外觀相似度,并鼓勵具有相似顏色的附近像素具有相同的二進制標簽。式(7)代表局部平滑度,輔助去除小的孤立區(qū)域。鄰近度、相似度和平滑度由θα、θβ、θγ和θμ控制,具體值與文獻[12]相同,分別為w1= 6、w2= 10、w3= 2、θα=20、θβ=33、θγ=3、θμ= 43。
數(shù)據(jù)集中水印提取結果如圖4所示。其中,圖4(a)為視頻幀原圖,圖4(b)為根據(jù)坐標位置生成的水印位置框圖,圖4(c)為DenseCut輸出的水印圖案。
在圖像修復之前,需要對檢測到的水印圖案做一些預處理以獲得修復網(wǎng)絡需要的掩膜。因為掩膜大小應該與原視頻幀大小一致,所以需要根據(jù)水印在原圖的坐標,把水印圖案對應位置的像素值賦給與原圖大小一樣的二進制掩膜,二進制掩膜水印坐標以外的區(qū)域全為0。再對二進制掩膜進行膨脹反轉處理,反轉后的圖像為掩膜m,如圖5所示。其中圖5(a)為水印檢測得到的水印圖案,圖5(b)為由圖5(a)經(jīng)過賦值操作得到的掩膜,圖5(c)為圖5(b)膨脹反轉后的掩膜,即網(wǎng)絡里用到的m。
圖4 水印提取示例圖
圖5 掩膜示意圖
水印去除最常用的方法就是圖像修復。圖像修復算法主要包括兩個方向:基于結構和紋理的圖像修復和基于深度學習的圖像修復?;诮Y構和紋理的圖像修復算法可以修復細小區(qū)域的缺失,隨著缺失區(qū)域增大,修復效果逐漸惡化,修復后的圖片存在語義信息不完整、圖像模糊等問題。而深度學習相對于傳統(tǒng)的基于結構和紋理的修復算法能夠捕捉更多圖像的高級特征[17]。
因此本文水印去除部分基于Ulyanov等人[18]提出的圖像修復算法,該方法利用深度卷積網(wǎng)絡獲得圖像先驗修復水印區(qū)域,不需要訓練大量的數(shù)據(jù)集來獲得圖像的特征,而是通過深度學習捕獲當前輸入的圖片信息,能夠得到更合理的圖像結構。本文在文獻[18]的基礎上改進了損失函數(shù),引入了結構相似度。
圖像生成器通過學習生成器(編碼器)網(wǎng)絡把隨機編碼向量z映射為圖像x,如式(9)所示。其中,θ為參數(shù),其初始化值使用標準正態(tài)分布,x∈R3×H×W為網(wǎng)絡的輸出,z與x空間大小一樣,為隨機初始化的張量。
x=fθ(z)
(9)
網(wǎng)絡修復任務的目標函數(shù)表示為能量最小化問題,如式(10)所示。
(10)
其中,x*為解空間里的最優(yōu)解,x0為要修復的圖片即原視頻幀,E(fθ(z);x0)為數(shù)據(jù)項,具體如式(11)所示。R(x)為神經(jīng)網(wǎng)絡捕獲到的隱式先驗,是一種指示函數(shù)。
E(x;x0)=‖(fθ(z)-x0)⊙m‖2
(11)
(12)
式(11)中m為預處理得到的二進制掩膜,⊙為Hadamard乘積,表示對應像素相乘,最小化的θ*使用優(yōu)化器從初始化參數(shù)訓練得到。
當圖片先驗信息是由z通過深度卷積網(wǎng)絡的某種架構獲得時,R(x) = 0,其他情況R(x)=∞。該算法在輸入網(wǎng)絡之前并沒有任何圖片先驗知識,而是通過網(wǎng)絡學習獲得,因此本文中R(x)=0,根據(jù)式(9),可以將式(10)表示為式(12)。
該算法計算有水印的視頻幀與修復后的視頻幀之間的損失。本文在文獻[15]損失函數(shù)的基礎上添加了L2損失項,如式(13)~(16)所示。式(14)代表網(wǎng)絡找到一個最優(yōu)的θ使得網(wǎng)絡輸出的圖片fθ(z)與原視頻幀x0在掩膜m以外的地方像素值差距最小,具體如式(14)所示。式(15)是計算網(wǎng)絡輸出圖片與原視頻幀在掩膜以外區(qū)域的結構相似度(structural similarity index,SSIM),因為SSIM越高代表生成圖片與原圖片結構越接近,所以使用式(15)的形式。式(16)中的μx和μy分別代表x,y的平均值,σx和σy分別代表x,y的標準差,σxy代表x和y的協(xié)方差。c1、c2為經(jīng)驗值,具體設置為c1=0.0001,c2= 0.0009。
Loss=L1+L2
(13)
L1=‖x-y‖2
(14)
L2=1-SSIM(x,y)
(15)
(16)
由于視頻中同一個鏡頭的視頻幀內容變化較小,因此可以使用同一鏡頭內前一幀修復時保存的網(wǎng)絡參數(shù)作為下一幀圖像修復的初始參數(shù),來減少迭代次數(shù)。
網(wǎng)絡結構由卷積層(Conv)、批量歸一化(batch normalization,BN)、帶泄露修正線性單元(rectified linear unit,LeakyReLU)、上采樣(Upsample)和下采樣(Downsample)組成,如圖6所示。其中,di、ui分別為深度為i時的下采樣和上采樣操作,具體如圖6右半部分所示。
圖6 修復網(wǎng)絡結構圖
本文采用pytorch作為主要框架,網(wǎng)絡超參數(shù)設置如表1所示。其中,n代表上采樣操作和下采樣操作在深度i處的濾波器數(shù)量,k代表上采樣操作和下采樣操作在深度i處的核的大小。num iter為迭代次數(shù)、LR為學習率(learning rate)。其他參數(shù)設置具體為upsampling = nearest,padding = reflection,optimizer = Adam。
表1 網(wǎng)絡超參數(shù)設置
為了評估算法的性能,本文從15個常見視頻網(wǎng)站上收集了450個視頻進行實驗驗證。其中包括時長為十幾秒左右的短視頻(如抖音短視頻),和其他時長為幾十分鐘以內的視頻。這450個視頻分辨率各不相同,同一個網(wǎng)站的水印也會有所不同。本文在視頻幀中選擇場景不同或水印形態(tài)、位置不同的6 454幀作為本文的數(shù)據(jù)集,并且把屬于同一個網(wǎng)站的水印分為同一類,共15類。圖7為數(shù)據(jù)集中15類水印的視頻幀示例圖。
本節(jié)分別從主觀評價和客觀評價兩個方面對本文方法與另外4種算法進行修復對比。這4種算法為深度圖像先驗算法[18]、經(jīng)典的Criminisi修復算法[19]、全局局部一致的修復算法[20]以及EdgeConnect算法[21]。其中客觀評價指標為峰值信噪比(peak signal to noise ratio,PSNR)和結構相似度。PSNR基于原視頻幀與修復后視頻幀的對應位置的像素差,值越大代表圖像質量越好。SSIM是一種衡量兩幅圖像相似度的指標,分別從亮度、對比度、結構3方面度量圖像相似性。其值可以較好地反映人眼主觀感受,一般取值范圍是0~1。
圖7 數(shù)據(jù)集示例圖
為了使修復效果對比更準確,本文對所有算法使用同樣的水印檢測方法,即本文提出的YOLOv3和DenseCut結合的水印檢測方法。檢測到水印以后,把比水印略大的二進制圖片轉化為與原視頻幀同樣大小的二進制掩膜。對同樣的視頻幀和二進制掩膜分別使用文獻[18-21]和本文的方法進行修復。
本文在數(shù)據(jù)集中挑選幾種比較典型的視頻幀作為視覺對比的示例,如圖8所示。西瓜視頻為多水印且水印背景與水印差距較大的示例,愛奇藝為水印區(qū)域細小結構單一、背景較復雜的示例???為水印結構與背景都較復雜的示例。其中,每一張圖片中實線框代表水印區(qū)域,虛線框為對應區(qū)域的局部放大效果圖。
圖8 修復效果主觀對比圖
從圖8可以看出,文獻[19]修復后的水印區(qū)域結構和紋理較清晰,但有把補丁填充到錯誤區(qū)域的現(xiàn)象且有明顯的塊效應。如西瓜視頻中左邊矩形框內的水印修復把黑色區(qū)域填充到了本該是頭發(fā)紋理的區(qū)域,右邊矩形框內的水印修復把水和翅膀的結構填充到了本該是黑色像素的區(qū)域。而對于愛奇藝水印這種結構紋理單一、較細小的水印修復后的結構和紋理較合理。文獻[20]修復后的結果較為細膩,但依然有填充錯誤且邊緣效果不理想的問題。如酷6視頻幀修復后的衣服褶皺邊緣有不自然的突起,門上有不合理的黑色條形結構,把錯誤的像素擴散到了水印區(qū)域。對于西瓜視頻和騰訊視頻,文獻[21]修復結果邊緣不夠合理。對于愛奇藝視頻,文獻[21]的修復結果丟失了紋理和結構信息,較為模糊。對于西瓜視頻、騰訊視頻和酷6視頻,文獻[18]與本文方法修復后的水印部分邊緣過渡較自然。對于邊緣處理,本文修復效果比文獻[18]視覺效果更好,人眼幾乎看不出修復痕跡。而對于愛奇藝視頻,本文修復結果與文獻[19,20]相比結構和紋理不夠清晰。
由于資源的限制,本文只在公開視頻網(wǎng)站上獲得了2類未添加水印的視頻,即愛奇藝和優(yōu)酷,如圖9所示。優(yōu)酷水印大小為140×50像素,視頻幀大小為1 280×720像素。愛奇藝水印大小為140×51像素,視頻幀大小為896×504像素。
圖9 真實水印圖
本文獲取這兩類水印添加到視頻中作為待修復視頻,未添加水印的視頻作為真實視頻,客觀評價使用這兩類視頻幀。本文對每一類視頻選擇50個視頻鏡頭,每個鏡頭選取10幀,總共100個鏡頭1000張視頻幀。計算每張修復后的視頻幀與未添加水印的視頻幀之間的SSIM和PSNR,對同類的500張視頻幀取平均值,結果如表2~3所示。
由于文獻[19-21]僅僅改變了掩膜位置區(qū)域,而深度圖像先驗是重新生成整張圖片,因此本文在使用改進損失函數(shù)的基礎上還保留原視頻幀掩膜以外的像素值。
表2 SSIM對比表
表3 PSNR對比表
對這兩種水印進行修復后的SSIM值如表2所示,從中可以看出,利用本文方法所得結果比另外4種方法所得結果高,這在一定程度上表示本文修復的視頻幀在結構紋理各方面與原視頻幀更接近。從表3可以看出,對于愛奇藝視頻和優(yōu)酷視頻,本文修復結果的PSNR均高于另外4種方法。對于優(yōu)酷視頻,與文獻[20]相比沒有明顯的優(yōu)勢,這是因為優(yōu)酷水印與視頻幀的占比較小,且本文使用的修復方法是通過網(wǎng)絡學習重新生成的圖片,清晰度有一定程度的下降。
綜上所述,從主觀和客觀兩方面來看,本文方法在水印區(qū)域較大或水印結構相對復雜的情況下,修復效果明顯優(yōu)于另外4種算法。在水印較為細小時,本文修復結果沒有明顯優(yōu)勢。這是由于本文方法使用隱式先驗的方法訓練卷積網(wǎng)絡生成圖像,并且在損失函數(shù)中引入結構相似度,使得卷積網(wǎng)絡在圖像空間中選擇自然且與輸入圖像結構更接近的圖片作為輸出,因此本文修復結果優(yōu)于另外4種方法??傮w來說,本文修復結果視覺上更符合現(xiàn)實場景,且SSIM值和PSNR值都有一定程度的提高。
本文提出了一種目標檢測、圖像分割融合的水印檢測與深度網(wǎng)絡圖像修復的水印去除結合的視頻可見水印檢測和去除方法。無需人力干預就能夠有效檢測和去除視頻中可見動態(tài)水印和較復雜水印,且不限制視頻的分辨率大小,是一種通用的視頻可見水印自動檢測和去除方法。實驗對比表明,本文方法能有效去除可見水印,邊緣修復效果較好,且對于大區(qū)域水印經(jīng)本文修復方法修復后的視頻幀更接近自然圖像。但修復視頻所需時間較長,因此,提升視頻修復速度是下一步的研究方向。