图片视频抹除算法总结Inpaint

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

  • 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 = Optical + FuseFormer

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

Optical flow其实代表了空间上的变化

图里 E b t ^ \hat{E_b^t} Ebt^表示 the backward propagation feature at the t-th time step, E t E^t Et表示 the local temporal neighboring features extracted from the context encoder, F ^ t − > t + 1 \hat{F}_{t->t+1} F^t>t+1表示optical flow。值得注意的是,由于光流预测后本身有些噪声,所以作者并没有直接和 E t E^t Et融合,而是把光流信息经过一系列 deformable convolutional layer同时结合 E b t + 1 ^ \hat{E_b^{t+1}} Ebt+1^来得到图中的 D b \mathcal{D}_b Db,再和 E t E^t Et融合

FuseFormer其实代表了时间上的融合

we stack multiple temporal focal transformer blocks to effectively combine the information from local and non-local temporal neighbors for performing content hallucination. 这里Transformer和STTN里还有些区别,如图,这种方式可以结合Coarse-grained和 fine-grained ,图里的 Z ^ n − 1 \hat{Z}^{n-1} Z^n1表示经过SS后得到的embedding token
在这里插入图片描述

评估指标

PSNR

PSNR全称是Peak Signal-to-Noise Ratio,峰值信噪比,表示信号最大可能功率和影响它的表示精度的噪音功率的比值,对于原始图像和添加了噪音的图像,PSNR越大,代表和原图像越接近

SSIM

SSIM全程是Structural SIMilarity,结构相似性,衡量两张图片亮度、对比度和结构的相似度

参考文献

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人工智能时代如何加强网络安全

人工智能正在为软件开发人员赋予以前被认为难以想象的新能力。新的生成式人工智能可以提供复杂、功能齐全的应用程序、调试代码或使用简单的自然语言提示添加内嵌注释。 它已准备好以指数方式推进低代码自动化。但与此同时,新一代人工智能可能会为不良行为者提供帮…

vue中控制element表格列的显示与隐藏

背景 根据‘执行进度计算方式’的单选框里面的选项不同&#xff0c;展示不同的column 按最小制剂单位统计: 按含量统计: 实现方式 就是拿到选项框里面的值&#xff0c;再根据里面的值来判断哪些column显示和隐藏&#xff1b;关于显示和隐藏可以设置变量&#xff1b; <…

比对Excel数据

以a个为准绳比对b表数据&#xff0c;添加比对结果列输出。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么…

训练自己的ChatGPT 语言模型(一).md

0x00 Background 为什么研究这个&#xff1f; ChatGPT在国内外都受到了广泛关注&#xff0c;很多高校、研究机构和企业都计划推出类似的模型。然而&#xff0c;ChatGPT并没有开源&#xff0c;且复现难度非常大&#xff0c;即使到现在&#xff0c;没有任何单位或企业能够完全复…

【内控版】BLM 战略方法论:战略意图篇

目录 介绍 战略意图 专栏列表 详细内容 配图 介绍 欢迎大家继续来到华为战略方法论的系列内容。 今天就来讲讲 BLM 模型中的战略意图篇。 战略意图在 BLM 模型中的位置,大家可以看这张图。 战略意图</

Redis 主从复制 哨兵 集群

Redis 主从复制 哨兵 集群 一、Redis 主从复制1.1 Redis 主从复制介绍1.2 主从复制的作用1.3 主从复制的流程 二、搭建Redis 主从复制2.1 安装 Redis2.2 创建redis工作目录2.3 环境变量2.4 定义systemd服务管理脚本2.5 修改 Redis 配置文件&#xff08;Master节点操作&#xff…

基于TF-IDF+Tensorflow+PyQt+孪生神经网络的智能聊天机器人(深度学习)含全部Python工程源码及模型+训练数据集

目录 前言总体设计系统整体结构图系统流程图孪生神经网络结构图 运行环境Python 环境TensorFlow 环境 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 模型应用 系统测试1. 训练准确率2. 测试效果3. 模型生成 工程源代码下载其它资料下载 前言 本项目利用TF-IDF&…

Microsoft Remote Desktop for mac安装教程

适用于Mac的Microsoft远程桌面测试版&#xff01;Microsoft Remote Desktop Beta for Mac是一种远程工具&#xff0c;允许用户从Mac远程访问基于Windows的计算机。使用此工具&#xff0c;用户可以随时随地使用Mac连接到远程桌面、应用程序和资源。 Microsoft Remote Desktop B…

【玩转Linux操作】一文带你明白Shell的判断,循环语句

&#x1f38a;专栏【玩转Linux操作】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;判断语句⭐单层if&#x1f388;示例 ⭐…

【python】制作一个串口工具(下)!

上一章节我们说了UI界面的设计&#xff0c;这一节来说下怎样实现其功能。 一.实例演示 1.创建一个.py文件&#xff0c;以下代码用来实现获取所有的串口信息&#xff1a; import serial import serial.tools.list_portsfrom PyQt5.QtWidgets import QComboBoxclass My_ComBoBo…

signed char 与 unsigned char 的取值范围

&#x1f517; 《C语言趣味教程》&#x1f448; 猛戳订阅&#xff01;&#xff01;&#xff01; 【C语言趣味教程】(2) 整数类型 | 数据类型的概念 | 原码反码与补码 | 有符号型和无符类型 | 研究 signed char 与 unsigned char 的取值范围 ​—— 热门专栏《维生素C语言》的重…

小程序页面顶部标题栏、导航栏navigationBar如何隐藏、变透明?

在app.json中的 "window"下面追加一行 "navigationStyle": "custom" 小程序顶部的白色背景条就不见了&#xff0c;直接变透明&#xff0c;只剩下右上角的胶囊按钮 警告&#xff1a; 如果页面有 <web-view src"{{src}}" /> …

【网络原理】TCP连接管理机制(三次握手四次挥手)

&#x1f94a;作者&#xff1a;一只爱打拳的程序猿&#xff0c;Java领域新星创作者&#xff0c;CSDN、阿里云社区优质创作者。 &#x1f93c;专栏收录于&#xff1a;计算机网络原理 在使用TCP协议进行网络交互时&#xff0c;TCP会进行三次握手即建立连接&#xff0c;TCP四次挥手…

密码学学习笔记(八):Public-Key Encryption - 公钥加密1

简介 公钥加密也被称为非对称加密。下面是一个例子&#xff1a; Bob生成一个密钥对&#xff0c;发布他的公钥&#x1d443;&#x1d43e;&#x1d435;, 保管密钥&#x1d446;&#x1d43e;&#x1d435; 私有的Alice使用&#x1d443;&#x1d43e;&#x1d435; 加密明文M…

TypeScript - 函数(下)

目录 1、在函数中声明this 2、其他需要知道的类型 2.1 void 2.2 object 2.3 unknow 2.4 never 2.5 Function 3、其余参数&#xff08;rest&#xff09;和参数 4、参数解构 5、函数的可分配性 1、在函数中声明this TypeScript 将通过代码流分析推断函数中应该是什么&…

安卓JNI从0到1入门教程(二)

经过上一篇《安卓JNI从0到1入门教程&#xff08;一&#xff09;》介绍&#xff0c;我们对JNI有了初步认识&#xff0c;接下来我会从ndk-build方式和cmake方式分别来介绍怎么构建native库&#xff1a; 一、ndk-build ndk-build依赖配置文件Android.mk&#xff0c;存放代码的位…

AI PPT 一句话搞定PPT讲演搞

相信大家在职场中&#xff0c;一定会接触过写PPT&#xff0c;经常会把你搞得焦头烂额。在大部分的公司里&#xff0c;写PPT汇报又是不可能逃避的事情。但随着AI时代的到来&#xff0c;有很多AI帮你写PPT的工具也逐渐崭露头角&#xff0c;可以自动帮助你制作出华丽的PPT&#xf…

docker部署rabbitmq 后访问管理首页常见问题

1.项目启动后 管理首页无法访问 1&#xff09;检查15672端口是否可以访问 2&#xff09;docker exec -it your_container_name /bin/bash 进入docker容器执行如下命令&#xff1a; 3) rabbitmq-plugins enable rabbitmq_management 2.访问首页时提示不是私密连接&#xff1a;…

自动化测试 selenium 篇

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 什么是自动化测试&#xff1f;Selenium 介绍Selenium 是什么Selenium 特点工作原理 seleniumJava环境搭建ChromeJava1.下载ch…

抖音seo源码--矩阵系统开发者日志

这是矩阵系统源码开发者的日志分享&#xff0c;我们致力于为开发者们提供优质的SEO源码。我们研究用户行为、数据分析和搜索引擎算法&#xff0c;以提高内容的搜索排名和曝光度。通过不断优化关键词、元数据和链接策略&#xff0c;我们帮助抖音用户更好地被发现和分享。这个日志…