视频可见水印检测与去除关键技术研究 ①

2021-01-12 12:56马汉杰杨小利
高技术通讯 2020年12期
关键词:掩膜像素图像

董 慧 冯 杰 马汉杰 杨小利 王 健

(浙江理工大学信息学院 杭州 310018)

0 引 言

近年来,计算机视觉技术不断发展,很多学者研究视频标注[1-2]算法用于训练模型、研究水印嵌入算法用于所有权声明。但在一些特殊情况下,需要一定的技术将水印去除。比如水印版权已过期,而水印的设计公司不再提供技术支持[3]。在去除视频水印之前,需要检测出视频水印的图案和位置信息。在现有的视频内容检测、识别[4-5]和修复算法中,用于视频水印检测和去除的方法可以分为基于单图像和基于图像集两类。基于单图像的方法有:Pinjarkar和Tuptewar[6]把基于Graph区域分割和样本块填充修复图像的方法应用到视频修复中,单帧修复较好但分割不够精确,需要一定的人工交互。Cheng等人[7]针对图片水印提出了一种基于RetinaNet和Unet架构的水印检测和去除方法,此方法对有一定透明度且结构单一的水印修复效果较好。基于图像集的方法有,Xu等人[8]提出了累加灰度图和基于样本的源区域块稀疏线性组合填充的方法检测和去除图像水印。这种已知区域填充的方法对于小区域修复效果较好,区域较大时往往过于平滑。Dekel等人[9]提出了一种广义的多图像Matting算法,该算法通过计算图像集的梯度自动估计“前景”(水印)、α值和“背景”。该算法对透明水印的去除有一定效果,对彩色水印修复效果较差。Dashti等人[10]连续使用下一帧的最佳匹配块填充当前帧的水印部分进行水印去除,帧间过渡较自然但单帧修复痕迹较明显。以上方法在某些情况可以去除水印,但由于水印技术的发展,水印位置和形态都有可能改变,甚至一个视频帧有多个水印,传统的水印检测和去除方法已经不再适用。因此,针对上述问题,本文提出了一种基于目标检测、图像分割和图像修复融合的水印检测和去除技术。

本文的主要贡献如下。

(1) 提出了一种基于目标检测与图像分割算法的可见水印检测方法。能够有效节省人力、改善动态水印提取困难的问题。

(2) 提出了一种基于深度图像先验的可见水印去除方法。在损失函数中引入结构相似度,能够有效去除水印、改善图像先验网络生成图像结构不够清晰的问题。

(3) 通过实验分析对比不同方法对图片可见水印去除的效果,实验结果表明所提方法优于其他方法。

1 本文方法概述

本文提出的视频可见水印检测和去除技术主要分为水印检测和水印去除。在水印检测前首先根据视频长短选择间隔帧数保存视频帧。水印检测部分首先使用目标检测算法进行水印区域检测。根据检测得到的水印区域坐标,生成二进制水印框图,与视频帧一起作为图像分割的输入。图像分割算法对水印框内的图像进行前景分割,提取出准确的水印图案。水印去除部分首先对水印图案进行掩膜预处理,根据水印在原图的坐标,生成与原图大小一样的二进制掩膜。把视频帧和掩膜输入图像修复网络进行水印去除,深度网络从视频帧水印外的区域中学习图片特征以生成没有水印的新图片。最后,把修复后的视频帧转为视频。本文方法整体流程图如图1所示。

图1 本文算法流程

2 水印检测

水印检测是为了准确地自动获取动态或者静态水印的位置信息和图案信息,节省大量的人力资源。常见的方法有基于视频水印一致性的方法,如计算中值梯度和累加灰度图[8]等。基于水印结构的方法,如根据结构分解图像的方法[11]等。

在现有的网站中,许多视频的可见水印是动态的。动态水印主要分为两种情况:水印位置不变、形态变化的情况,如西瓜视频和人人视频;水印形态不变、位置变化的情况,如韩剧TV。如图2所示,图2从上到下依次为西瓜视频、人人视频和韩剧TV同一个视频不同时刻的视频帧。针对上述2种情况,利用中值梯度和累加灰度图的方法对视频进行水印提取会出现水印不完整和提取不到的问题。且对于十几秒的短视频,视频内容变化较小,往往有把视频帧内容当作水印提取出来的问题。基于结构的方法往往出现把字幕错认为水印的现象。本文使用目标检测算法先检测出水印区域减小水印切割范围,再使用图像分割算法切割出准确的水印图案。

图2 视频动态水印示例图

2.1 水印区域检测

针对现有水印检测算法在水印动态变化和视频内容变化较小的情况下检测不到水印的问题,本文把每类水印当作一种目标,使用目标检测算法进行检测。目前,常见的目标检测算法有SSD(single shot multibox detector)[12],Faster R-CNN (faster regions with convolutional neural networks features)[13],YOLO(you only look once)[14]算法等。Faster R-CNN检测效果较好,但存在着检测速度慢的缺点。传统的YOLO算法检测速度较快,但小目标检测效果不佳、定位不准。SSD在一定程度上取得了速度与准确率之间的平衡,而YOLOv3与 SSD 的准确率相当,但是速度快 3 倍,因此本文使用YOLOv3目标检测算法检测水印区域。

在水印区域检测部分,本文将数据集中5164张视频帧作为训练集,其余的1290张视频帧作为测试集。YOLOv3在测试集中检测的准确率为98%。检测结果如图3所示。

图3 水印区域检测结果示意图

2.2 水印区域分割

水印区域检测到的是个矩形区域,但整个矩形区域除了实际的水印图案,还包含一些视频内容,这种方法修复得到的视频帧语义效果较差,边缘处修复痕迹较明显。因此本文在检测出水印区域之后再进行水印区域分割,以提取出准确的水印图案。图像分割主要有基于像素的方法、基于边界的方法和基于区域的方法。前2种方法需要大量的人工交互,本文选择简单快速的基于区域的方法。基于区域的方法常用的有GraphCut和GrabCut[15],Cheng等人[16]在GrabCut的基础上提出的DenseCut算法,用紧密连接的条件随机场(conditional random field,CRF)代替传统GrabCut公式中耗时的全局颜色模型迭代细化,能获得较好的分割效果。水印通常由图案和文字构成,文字往往较细小且与视频内容差距较大,对分割的精确度要求比较高,因此本文采用DenseCut进行水印区域分割。

CRF定义在随机变量X={X1,X2, …,Xn}上,每个随机变量对应于一个像素,其中Xi表示像素i的二进制标记,值为0或1。值为0表示像素i为背景,否则表示为前景,i∈N={1,2,…,n}。x表示这些随机变量的联合结构,I表示视频帧的图像数据。全连接的二进制CRF定义如式(1)所示。

(1)

其中,i和j表示图像中像素的位置。一元项ψi(xi)代表像素i标记为xi的损失,定义如式(2)所示。可以通过对标签xi产生分布的分类器对每个像素单独计算。

ψi(xi)=- logP(xi)

(2)

式(2)中的前景项或背景项P(xi)为

(3)

式(3)中P(Θ0,Ii)和P(Θ1,Ii)分别代表像素颜色Ii属于背景模型Θ0和前景模型Θ1的概率密度。根据水印框图使用混合高斯模型(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为比例系数;相似度函数g(i,j)根据颜色向量Ii、Ij和位置pi、pj来定义,具体如式(6)~(8)所示。

(6)

(7)

(8)

式(6)代表外观相似度,并鼓励具有相似颜色的附近像素具有相同的二进制标签。式(7)代表局部平滑度,辅助去除小的孤立区域。邻近度、相似度和平滑度由θα、θβ、θγ和θμ控制,具体值与文献[12]相同,分别为w1= 6、w2= 10、w3= 2、θα=20、θβ=33、θγ=3、θμ= 43。

数据集中水印提取结果如图4所示。其中,图4(a)为视频帧原图,图4(b)为根据坐标位置生成的水印位置框图,图4(c)为DenseCut输出的水印图案。

3 水印去除

3.1 掩膜预处理

在图像修复之前,需要对检测到的水印图案做一些预处理以获得修复网络需要的掩膜。因为掩膜大小应该与原视频帧大小一致,所以需要根据水印在原图的坐标,把水印图案对应位置的像素值赋给与原图大小一样的二进制掩膜,二进制掩膜水印坐标以外的区域全为0。再对二进制掩膜进行膨胀反转处理,反转后的图像为掩膜m,如图5所示。其中图5(a)为水印检测得到的水印图案,图5(b)为由图5(a)经过赋值操作得到的掩膜,图5(c)为图5(b)膨胀反转后的掩膜,即网络里用到的m。

图4 水印提取示例图

图5 掩膜示意图

3.2 水印区域修复

水印去除最常用的方法就是图像修复。图像修复算法主要包括两个方向:基于结构和纹理的图像修复和基于深度学习的图像修复。基于结构和纹理的图像修复算法可以修复细小区域的缺失,随着缺失区域增大,修复效果逐渐恶化,修复后的图片存在语义信息不完整、图像模糊等问题。而深度学习相对于传统的基于结构和纹理的修复算法能够捕捉更多图像的高级特征[17]。

因此本文水印去除部分基于Ulyanov等人[18]提出的图像修复算法,该方法利用深度卷积网络获得图像先验修复水印区域,不需要训练大量的数据集来获得图像的特征,而是通过深度学习捕获当前输入的图片信息,能够得到更合理的图像结构。本文在文献[18]的基础上改进了损失函数,引入了结构相似度。

图像生成器通过学习生成器(编码器)网络把随机编码向量z映射为图像x,如式(9)所示。其中,θ为参数,其初始化值使用标准正态分布,x∈R3×H×W为网络的输出,z与x空间大小一样,为随机初始化的张量。

x=fθ(z)

(9)

网络修复任务的目标函数表示为能量最小化问题,如式(10)所示。

(10)

其中,x*为解空间里的最优解,x0为要修复的图片即原视频帧,E(fθ(z);x0)为数据项,具体如式(11)所示。R(x)为神经网络捕获到的隐式先验,是一种指示函数。

E(x;x0)=‖(fθ(z)-x0)⊙m‖2

(11)

(12)

式(11)中m为预处理得到的二进制掩膜,⊙为Hadamard乘积,表示对应像素相乘,最小化的θ*使用优化器从初始化参数训练得到。

当图片先验信息是由z通过深度卷积网络的某种架构获得时,R(x) = 0,其他情况R(x)=∞。该算法在输入网络之前并没有任何图片先验知识,而是通过网络学习获得,因此本文中R(x)=0,根据式(9),可以将式(10)表示为式(12)。

该算法计算有水印的视频帧与修复后的视频帧之间的损失。本文在文献[15]损失函数的基础上添加了L2损失项,如式(13)~(16)所示。式(14)代表网络找到一个最优的θ使得网络输出的图片fθ(z)与原视频帧x0在掩膜m以外的地方像素值差距最小,具体如式(14)所示。式(15)是计算网络输出图片与原视频帧在掩膜以外区域的结构相似度(structural similarity index,SSIM),因为SSIM越高代表生成图片与原图片结构越接近,所以使用式(15)的形式。式(16)中的μx和μy分别代表x,y的平均值,σx和σy分别代表x,y的标准差,σxy代表x和y的协方差。c1、c2为经验值,具体设置为c1=0.0001,c2= 0.0009。

Loss=L1+L2

(13)

L1=‖x-y‖2

(14)

L2=1-SSIM(x,y)

(15)

(16)

由于视频中同一个镜头的视频帧内容变化较小,因此可以使用同一镜头内前一帧修复时保存的网络参数作为下一帧图像修复的初始参数,来减少迭代次数。

网络结构由卷积层(Conv)、批量归一化(batch normalization,BN)、带泄露修正线性单元(rectified linear unit,LeakyReLU)、上采样(Upsample)和下采样(Downsample)组成,如图6所示。其中,di、ui分别为深度为i时的下采样和上采样操作,具体如图6右半部分所示。

图6 修复网络结构图

本文采用pytorch作为主要框架,网络超参数设置如表1所示。其中,n代表上采样操作和下采样操作在深度i处的滤波器数量,k代表上采样操作和下采样操作在深度i处的核的大小。num iter为迭代次数、LR为学习率(learning rate)。其他参数设置具体为upsampling = nearest,padding = reflection,optimizer = Adam。

表1 网络超参数设置

4 实验分析

为了评估算法的性能,本文从15个常见视频网站上收集了450个视频进行实验验证。其中包括时长为十几秒左右的短视频(如抖音短视频),和其他时长为几十分钟以内的视频。这450个视频分辨率各不相同,同一个网站的水印也会有所不同。本文在视频帧中选择场景不同或水印形态、位置不同的6 454帧作为本文的数据集,并且把属于同一个网站的水印分为同一类,共15类。图7为数据集中15类水印的视频帧示例图。

本节分别从主观评价和客观评价两个方面对本文方法与另外4种算法进行修复对比。这4种算法为深度图像先验算法[18]、经典的Criminisi修复算法[19]、全局局部一致的修复算法[20]以及EdgeConnect算法[21]。其中客观评价指标为峰值信噪比(peak signal to noise ratio,PSNR)和结构相似度。PSNR基于原视频帧与修复后视频帧的对应位置的像素差,值越大代表图像质量越好。SSIM是一种衡量两幅图像相似度的指标,分别从亮度、对比度、结构3方面度量图像相似性。其值可以较好地反映人眼主观感受,一般取值范围是0~1。

图7 数据集示例图

为了使修复效果对比更准确,本文对所有算法使用同样的水印检测方法,即本文提出的YOLOv3和DenseCut结合的水印检测方法。检测到水印以后,把比水印略大的二进制图片转化为与原视频帧同样大小的二进制掩膜。对同样的视频帧和二进制掩膜分别使用文献[18-21]和本文的方法进行修复。

4.1 主观评价

本文在数据集中挑选几种比较典型的视频帧作为视觉对比的示例,如图8所示。西瓜视频为多水印且水印背景与水印差距较大的示例,爱奇艺为水印区域细小结构单一、背景较复杂的示例。酷6为水印结构与背景都较复杂的示例。其中,每一张图片中实线框代表水印区域,虚线框为对应区域的局部放大效果图。

图8 修复效果主观对比图

从图8可以看出,文献[19]修复后的水印区域结构和纹理较清晰,但有把补丁填充到错误区域的现象且有明显的块效应。如西瓜视频中左边矩形框内的水印修复把黑色区域填充到了本该是头发纹理的区域,右边矩形框内的水印修复把水和翅膀的结构填充到了本该是黑色像素的区域。而对于爱奇艺水印这种结构纹理单一、较细小的水印修复后的结构和纹理较合理。文献[20]修复后的结果较为细腻,但依然有填充错误且边缘效果不理想的问题。如酷6视频帧修复后的衣服褶皱边缘有不自然的突起,门上有不合理的黑色条形结构,把错误的像素扩散到了水印区域。对于西瓜视频和腾讯视频,文献[21]修复结果边缘不够合理。对于爱奇艺视频,文献[21]的修复结果丢失了纹理和结构信息,较为模糊。对于西瓜视频、腾讯视频和酷6视频,文献[18]与本文方法修复后的水印部分边缘过渡较自然。对于边缘处理,本文修复效果比文献[18]视觉效果更好,人眼几乎看不出修复痕迹。而对于爱奇艺视频,本文修复结果与文献[19,20]相比结构和纹理不够清晰。

4.2 客观评价

由于资源的限制,本文只在公开视频网站上获得了2类未添加水印的视频,即爱奇艺和优酷,如图9所示。优酷水印大小为140×50像素,视频帧大小为1 280×720像素。爱奇艺水印大小为140×51像素,视频帧大小为896×504像素。

图9 真实水印图

本文获取这两类水印添加到视频中作为待修复视频,未添加水印的视频作为真实视频,客观评价使用这两类视频帧。本文对每一类视频选择50个视频镜头,每个镜头选取10帧,总共100个镜头1000张视频帧。计算每张修复后的视频帧与未添加水印的视频帧之间的SSIM和PSNR,对同类的500张视频帧取平均值,结果如表2~3所示。

由于文献[19-21]仅仅改变了掩膜位置区域,而深度图像先验是重新生成整张图片,因此本文在使用改进损失函数的基础上还保留原视频帧掩膜以外的像素值。

表2 SSIM对比表

表3 PSNR对比表

对这两种水印进行修复后的SSIM值如表2所示,从中可以看出,利用本文方法所得结果比另外4种方法所得结果高,这在一定程度上表示本文修复的视频帧在结构纹理各方面与原视频帧更接近。从表3可以看出,对于爱奇艺视频和优酷视频,本文修复结果的PSNR均高于另外4种方法。对于优酷视频,与文献[20]相比没有明显的优势,这是因为优酷水印与视频帧的占比较小,且本文使用的修复方法是通过网络学习重新生成的图片,清晰度有一定程度的下降。

综上所述,从主观和客观两方面来看,本文方法在水印区域较大或水印结构相对复杂的情况下,修复效果明显优于另外4种算法。在水印较为细小时,本文修复结果没有明显优势。这是由于本文方法使用隐式先验的方法训练卷积网络生成图像,并且在损失函数中引入结构相似度,使得卷积网络在图像空间中选择自然且与输入图像结构更接近的图片作为输出,因此本文修复结果优于另外4种方法。总体来说,本文修复结果视觉上更符合现实场景,且SSIM值和PSNR值都有一定程度的提高。

5 结 论

本文提出了一种目标检测、图像分割融合的水印检测与深度网络图像修复的水印去除结合的视频可见水印检测和去除方法。无需人力干预就能够有效检测和去除视频中可见动态水印和较复杂水印,且不限制视频的分辨率大小,是一种通用的视频可见水印自动检测和去除方法。实验对比表明,本文方法能有效去除可见水印,边缘修复效果较好,且对于大区域水印经本文修复方法修复后的视频帧更接近自然图像。但修复视频所需时间较长,因此,提升视频修复速度是下一步的研究方向。

猜你喜欢
掩膜像素图像
利用掩膜和单应矩阵提高LK光流追踪效果
像素前线之“幻影”2000
宽周期掩膜法HVPE侧向外延自支撑GaN的研究
巧用图像中的点、线、面解题
有趣的图像诗
“像素”仙人掌
国内首条G11光掩膜版项目在成都高新区启动
光纤激光掩膜微细电解复合加工装置研发
ÉVOLUTIONDIGAE Style de vie tactile
高像素不是全部