引言

水印在日常生活中随处可见,它是一种保护图像图片版权的机制,防止未经许可或授权的使用。为了避免使用带有水印的图像带来的各种影响,最直接的做法就是将带有水印的图像找出来丢弃不用,此外还有一种不推荐的做法就是去掉图像上的水印后再使用。而自动去水印的计算机算法的存在却可使用户轻松获取无水印图像,这是由于当前的水印技术存在一个漏洞。研究水印去除技术一方面可以解决部分场景的水印去除任务,另一方面也可以完善水印添加技术,进一步保护图像版权,维护作品合法权益。本文探索了当前主流的AI领域水印去除技术,并进行代码复现。

正文

(1)前沿技术:Google提出的《On the Effectiveness of Visible Watermarks》

项目网址

论文下载地址

代码复现

CVPR 2017(2017 年国际计算机视觉与模式识别会议)上,Google 已经通过发表《On the Effectiveness of Visible Watermarks》展示过该项技术。此次发表文章,意在更详细地阐述算法工作的原理,并建议人们进一步加强图片版权保护的措施。

我们都知道,通常我们平时看到的水印都比较难除去,即使是 PS 专家,也需要花上一定时间,才能除去单一张图的水印。但依据 Google 的这项算法,却可以将大多数流行图片网站的水印自动地一次性抹去。

(2)构建水印去除深度学习模型

无论是搭建水印检测器或是水印去除器,都需要海量水印图像作为数据基础。然而现实中并没有直接可以使用的水印图像数据集。因此,我们的首要任务是构建一个水印图像数据集。首先我们要收集各式各样的水印,为了保证后续模型良好的泛化性能,水印的种类要尽可能的多,水印样式也要尽可能的丰富。

图片

我们一共收集了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),使输出的无水印图像在细节和纹理上能够更贴近原图。

图片

我们将水印去除器在测试集上的一些去水印效果可视化,左列是输入的水印区域,右列是输出的无水印区域。从可视化的结果可以看出对未知水印的去除效果还是不错的。

 

参考文献:

【1】https://mp.weixin.qq.com/s/hnLssBDY1sHGj9qg9rknaQ

【2】Large-Scale Visible Watermark Detection and Removal with Deep Convolutional Networks.

Cheng D, Li X, Li W H, et al. Large-Scale Visible Watermark Detection and Removal with Deep Convolutional Networks[C]//Chinese Conference on Pattern Recognition and Computer Vision (PRCV). Springer, Cham, 2018: 27-40.

【3】Towards Photo-Realistic Visible Watermark Removal with Conditional Generative Adversarial Networks.

Li X, Lu C, Cheng D, et al. Towards Photo-Realistic Visible Watermark Removal with Conditional Generative Adversarial Networks[J]. arXiv preprint arXiv:1905.12845, 2019.

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐