水印抹除算法总结

news2024/9/20 20:49:27

基本是从图片抹水印和视频抹水印两个方向

  • Video Inpainting:https://paperswithcode.com/task/video-inpainting
  • Image Inpainting:https://paperswithcode.com/task/image-inpainting

请根据目录查看

图片

Partial Conv

部分卷积层

源自于Image Inpainting for Irregular Holes Using Partial Convolutions这篇paper,部分卷积模型使用的是UNET结构,但将其中的卷积层替换为了部分卷积。其基本思想是对于图片被mask掉的区域进行由外而内的,递进式的修补,浅层网络学习孔洞外围,深层层网络学习孔洞内部,用作者的话来说就是 Our main extension is the automatic mask update step, which removes any masking where the partial convolution was able to operate on an unmasked value. Given sufficient layers of successive updates, even the largest masked holes will eventually shrink away, leaving only valid responses in the feature map.
在这里插入图片描述

Partial Conv Loss

在训练时,共使用了6个损失函数:

  • Hole loss:对孔洞区域生成的像素和实际像素间做L1 Loss
  • Valid loss:对非孔洞区域生成的像素和实际像素间做L1 Loss

以上两种都是像素级别的loss,但是当孔洞较大时,中间的像素loss就不够用了,所以补了Perceptual loss和Style loss
在这里插入图片描述

  • Perceptual loss:使用一个预训练好的图片特征抽取网络,对原始图片和生成图片分别进行特征抽取,然后对抽取得到的特征图间做L1 loss
  • Style loss:对于抽取出的特征图,求其格拉姆矩阵,然后对原始图片和生成图片的Gram matrix求L1 loss。格拉姆矩阵即两两向量的内积组成的矩阵,用以衡量一个特征图各channel之间的相关关系,其做法是将特征图各channel拉平为1维向量,然后互相做内积。向量的内积的几何意义是向量的夹角,Gram matrix就代表了图片特征图各channel的互相关程度,这一loss常用在风格迁移上,使图片的风格趋同,也即使图片的特征分布趋同。Style loss根据 I c o m p I_{comp} Icomp I o u t I_{out} Iout填了两种, I c o m p I_{comp} Icomp I o u t I_{out} Iout把 the non-hole pixels directly
    set to ground truth后的结果,用来强调非孔洞的逼真性。

为了使生成的图片孔洞交界部分更平滑,论文中还引入了TV loss来降噪:

  • Total variation loss:将图片分别在x轴、y轴平移1像素,计算平移后的图片和原图片的L1 loss

SLBR

来自于Visible Watermark Removal via Self-calibrated Localization and Background Refinement这篇,Pconv是需要传入孔洞位置的,这篇相当于训练的时候检测修复一起做了,end2end。但这种方法抹视频的时候会出现某些帧识别不好出现幽灵水印的情况,实际视频抹除也不适合这种做法,但本paper思路还是不错的。
SLBR的基本结构也是UNET,两个任务共用encoder和第一层decoder。模型分为两个阶段,Coarse Stage阶段生成mask和粗修复的图像,Refinement Stage阶段以生成的mask和粗修复的图像为输入,使用一个层数较小的UNET对图片进一步优化:
在这里插入图片描述
在这里插入图片描述
其中MBE模块就是将图片修复decoder层的输入特征拼接上mask decoder层的输出,加入mask信息来强化修复效果;CFF层为拼接了不同层的特征;SMR目标是消除mask像素识别的误召和漏召。首先根据当前层的特征图 X m X^m Xm生成一个预测mask,将这个mask乘上 X m X^m Xm,虽然此时的预测mask存在误召和漏召,但其中仍然是mask像素占主要部分,对其pooling后得到的特征向量 x m x^m xm认为是代表了mask区域的主要特征。将 x m x^m xm扩展为和特征图 X m X^m Xm同样大小后,与 X m X^m Xm拼接,生成最终的mask预测。然而实际中,像素级别的误召和漏召很难完全避免,这也是制约这种算法效果的一种主要原因。

LAMA

来自于Resolution-robust Large Mask Inpainting with Fourier Convolutions,想法是傅立叶卷积来代替通常的卷积层,增强模型的感受野,让模型在浅层就能学习到全局特征。傅里叶卷积听起来很厉害,但实际上用pytorch的卷积操作都可以实现,来自于Fast Fourier Convolution这篇。因为每个点都表示图中包含的一种波,也就是每个点都代表了一定的全局特征,所以进行傅立叶变换后再进行卷积,不管卷积核的大小如何,都是在对全局特征做计算
在这里插入图片描述
LAMA使用了对抗损失,生成器负责生成图片,判别器负责判断这个图片是真实图片还是由生成器生成的图片,生成器和判别器间互相对抗,互相优化,从而最后使生成器能够生成以假乱真的图片,这一框架被广泛应用于各类图片生成任务中。
在图片修复任务中,修复模型是生成器,判别器的任务是判断原始图片和修复图片孰真孰假。本文中使用的是PatchGAN,即将图片切分为若干个patch,然后让判别器对每个patch判断真假,与水印区域有交集的patch标记为假,否则为真。具体实现上则是使用了若干层卷积网络叠加,输出NxN的预测矩阵,每个点即代表了对该点感受野的预测。相比于直接对整张图判断真假,PatchGAN能够对图像的局部做出判断,从而促使生成器生成更好的细节特征。

除了对抗损失,LAMA在训练时使用了High receptive field perceptual loss,最终的loss为:
在这里插入图片描述

视频

上面三个图像工作是三种思路,但是下面三个视频思路是一脉相承的

STTN

来自于Learning Joint Spatial-Temporal Transformations for Video Inpainting,关键点在于视频帧中间如何交互,提出了Spatial-Temporal Transformer模块,通过这一模块在时空上进行帧间信息的交换。其做法是将输入的特征图在宽高维度上切分为若干个patch,然后将patch拉成1维token,再去做attention。文中使用了不同patch size的attention头,大patch size的头关注全局结构,小patch size的头关注局部细节,最后将这些不同patch size头的输出加权相加,恢复为原始特征图的shape:
在这里插入图片描述
STTN模型也使用了对抗损失,其使用了名为T-PatchGAN的判别器,T指的是Temporal,相比于PatchGAN使用2维卷积,T-PatchGAN的判别器使用了3维卷积,来捕获帧间的时序信息,从而促使生成器生成在时序上连续性更强的帧。

FuseFormer

来自于FuseFormer: Fusing Fine-Grained Information in Transformers for Video Inpainting,同样是使用了Transformer模块,但与STTN不同的是,它没有用不同尺度的patch,而是使用了Soft Split来将图片分割为有交叠的patch。用作者自己的话来说就是It aims at tackling the drawbacks of lacking fine-grained information in patch-based Transformer models. The soft split divides feature map into many patches with given overlapping interval while the soft composition stitches them back into a whole feature map where pixels in overlapping regions are summed up.
在这里插入图片描述
过完transformer后,再通过Soft Composite将这些patch拼合,交叠区域相加,通过交叠区域,来完成patch与patch间的特征交互。

E2FGVI

来自于Towards An End-to-End Framework for Flow-Guided Video Inpainting,E2FGVI顾名思义在FuseFormer基础上又引入了光流。
在这里插入图片描述
本文中光流预测使用了SpyNet,结合了传统方法中空间金字塔的思想,大大减少了传统FlowNet的参数量。

参考文献

  1. Image Inpainting for Irregular Holes Using Partial Convolutions
  2. https://zhuanlan.zhihu.com/p/99605178
  3. 其他都在正文中注明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Github Pages

官方教程&#xff1a;https://pages.github.com/ 1 创建仓库 命名为 你的名字.github.io 克隆项目 git clone https://github.com/username/username.github.io加入index.html页面 在克隆的项目中&#xff0c;加入一个index.html html文件简单写几个dom <!DOCTYPE html…

Redis - 附近商铺、用户签到、UV统计

文章目录 附近商铺、用户签到、UV统计一、附近商铺1.1 GEO数据结构1.2 导入店铺数据到GEO1.3 实现附近商户功能 二、用户签到2.1 BitMap2.2 签到功能2.3 统计连续签到2.3.1 分析2.3.2 代码实现 三、UV统计3.1 HyperLogLog用法3.2 测试百万数据的统计 附近商铺、用户签到、UV统计…

康复锻炼改善帕金森病人的功能障碍,你知道多少?快来学习!

帕金森病是一种神经系统退行性疾病&#xff0c;主要特征是肌肉僵硬、震颤和运动障碍等症状。虽然这个病无法彻底治愈&#xff0c;但通过康复锻炼可以显著改善患者的功能障碍。 首先&#xff0c;康复锻炼可以改善帕金森病人的肌肉僵硬。这种运动障碍是由于黑斑核和大脑皮层之间的…

RV1126笔记三十八:PaddleOCR部署到RV1126

若该文为原创文章&#xff0c;转载请注明原文出处。 一、环境 1、硬件&#xff1a;正点原子RV1126开发板 2、环境&#xff1a;ubuntu16.04 二、模型转换 训练后的模型不能直接使用在RV1126,需要转换一下模型 1、PaddlePaddle的模型转成推理模型 在前面有提过了&#xf…

三次样条曲线的偏移计算方法比较

最近&#xff0c;我不得不想出一种方法&#xff0c;从三次 Hermite 样条曲线创建平行曲线&#xff0c;例如铁路车道。 首先&#xff0c;我只是沿着法线方向移动它们的开始/结束控制点&#xff0c;同时保持相同的开始/结束切线。 它在大多数情况下工作得很好&#xff0c;因为我的…

Qt画图框架,实现自己的画图框架

前面也讲到Qt提供画图框架&#xff0c;经典MVC模型&#xff0c;也没有什么问题。但Qt仅提供框架性东西&#xff0c;很难落地&#xff0c;很难应用在实际项目当中&#xff0c;一般需要自己捋一遍&#xff0c;这样才能理解好 什么view&#xff0c;canvas都好理解&#xff0c;只要…

Elasticsearch【文档操作、搜索操作、入门案例】(五)-全面详解(学习总结---从入门到深化)

目录 原生JAVA操作ES_文档操作 原生JAVA操作ES_搜索操作 SpringDataES_入门案例 原生JAVA操作ES_文档操作 新增&修改文档 Test public void addDocument() throws IOException {// 1.创建客户端对象&#xff0c;连接ESRestHighLevelClient client new RestHighLevelC…

API安全基础理论

1.什么是API API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节。通过淘宝API&#xff0c;就…

测试完OLED屏对比LCD屏后:液晶面板拥趸们无话可说了

关于笔记本的屏幕&#xff0c;从大的技术上来分类可以分成两类&#xff0c;一种是OLED材质&#xff0c;另外一种是LCD材质。前些年的笔记本基本都采用的是LCD材质&#xff0c;但近几年随着OLED屏幕的崛起&#xff0c;大多数笔记本都采用了OLED材质。 那么&#xff0c;你知道LCD…

ChatGPT能为留学生做什么?错误使用有何后果?

随着AI人工智能行业的迅速发展&#xff0c;越来越多的学生开始利用ChatGPT等软件来获得更高效便利的论文和作业辅助。 然而&#xff0c;我们需要认识到一个严肃的问题&#xff1a;学生是否过度依赖AI助手来完成毕业论文。 近期出现的Turnitin AI Detector是一个用于帮助教师确…

Xamarin.Android | 界面跳转到手机自带的自启动管理界面,引导用户将APP加入自启动

Xamarin.Android | 界面跳转到手机自带的自启动管理界面&#xff0c;引导用户将APP加入自启动 文章目录 Xamarin.Android | 界面跳转到手机自带的自启动管理界面&#xff0c;引导用户将APP加入自启动前言示例代码自启动界面URI字典打开自启动管理界面 结束语 前言 很多 Androi…

【算法 -- LeetCode】(14) 最长公共前缀

1、题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 1&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”] 输出&#xff1a;“fl” 示例 2&#xff1a; 输入&#xff1a;strs [“dog”,“…

【unity实战】使用shader和shader Graph实现2d图片描边效果(附源码)

文章目录 前言Shader1. 内描边2. 外描边 Shader Graph1. 2d图片描边2. 带炫光的2d图片描边 最终演示效果源码参考完结 前言 最近在学习shader Graph相关内容&#xff0c;其实关于实现2d图片描边效果&#xff0c;网上可以看到很多教程&#xff0c;但是我发现大多数都是基于比较…

2023最新整理的 Elasticsearch 21道面试题

1、为什么要使用 Elasticsearch? 系统中的数据&#xff0c; 随着业务的发展&#xff0c; 时间的推移&#xff0c; 将会非常多&#xff0c;而业务中往往采用模糊查询进行数据的 搜索&#xff0c;而模糊查询会导致查询引擎放弃索引&#xff0c; 导致系统查询数据时都是全表扫描&…

Unity3D 场景添加obj模型

有一个立方体的obj模型&#xff1b;将其拖到Assets文件夹节点上&#xff0c;在此节点放手&#xff0c;资源被加入项目&#xff1b; 在右侧显示出对象概览&#xff1b; 点击箭头&#xff0c;显示此模型下的子对象&#xff1b; 然后按住Assets面板中的cube1对象&#xff0c;拖动…

3分钟阿里云轻量应用服务器和云服务器的区别对比

阿里云服务器ECS和轻量应用服务器有什么区别&#xff1f;云服务器ECS是明星级云服务器&#xff0c;轻量应用服务器可以理解为简化版的云服务器ECS&#xff0c;轻量适用于单机应用&#xff0c;云服务器ECS适用于集群类高可用高容灾应用&#xff0c;阿里云百科来详细说下阿里云轻…

科研论文中SCI,SSCI ,CSSCI是什么

目录 1 SCI 2 SSCI 3 CSSCI 什么是SCI&#xff0c;SSCI &#xff0c;CSSCI 目前&#xff0c;在国际科学界&#xff0c;如何正确评价基础科学研究成果已引起越来越广泛的关注。而被SCI、SSCI收录的科技论文的多寡则被看作衡量一个国家的基础科学研究水平、科技实力和科技论文水平…

以太网之IP协议(七)

目录 一、IP协议的功能 1.1 IP地址 1.2 IP路由 1.2.1 路由原理 1.2.2 路由控制表 1.3 IP分包与组包 二、IP地址 2.1 IP地址分类 2.2 多播地址 2.2.1 广播地址 2.2.2 组播地址 2.3 子网掩码 三、IP帧格式 一、IP协议的功能 数据链路层提供直连两个设备之间的通信功…

【Linux系统编程】Linux编辑器——vim

文章目录 1. 什么是vim2. vim的常用模式3. vim的基本操作4. vim命令集4.1 命令模式命令集复制粘贴依次撤销上一次操作对撤销进行撤销&#xff08;恢复&#xff09;剪切&删除移动光标&#xff08;上下&#xff09;移动光标&#xff08;左右&#xff09;文本内容大小写切换替…

javaTCP数据报套接字编程

TCP套接字编程 1.ServerSocket API1.1ServerSocket 的构造方法1.2ServerSocket 方法&#xff1a; 2.Socket API2.1Socket构造方法2.2Socket方法 3.TCP回显服务器4.TCP中的长短连接5.C10M问题 TCP提供的API主要有两个类&#xff1a;一个是专门给服务器用的SeverSocket对象&#…