基本是从图片抹水印和视频抹水印两个方向
- 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.

注意上面公式里面的W、X、M的shape都是和卷积weight的shape是一样的(尽管X和M的尺寸都要大于W的尺寸,但这个公式只是记录输出一个位置上的值),x’表示的是输出特征图某个位置上的结果,m’表示的是输出特征图某个位置上对应mask的值。简单来说就是这个mask范围内存在不为0的值,输出特征图对应位置就不为0;否则就为0。
来看一下pconv代码的实现,上面的X对应input,M对应self.mask,注意代码里的X和M都不再是kernel的shape,而是原始图片的shape。代码的思路是先过一遍卷积,然后再用update_mask把该干掉的部分给干掉,update_mask是和输出特征图一样尺寸的!
###############################################################################
# BSD 3-Clause License
#
# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
#
# Author & Contact: Guilin Liu (guilinl@nvidia.com)
###############################################################################
import torch
import torch.nn.functional as F
from torch import nn, cuda
from torch.autograd import Variable
class PartialConv2d(nn.Conv2d):
def __init__(self, *args, **kwargs):
# whether the mask is multi-channel or not
if 'multi_channel' in kwargs:
self.multi_channel = kwargs['multi_channel']
kwargs.pop('multi_channel')
else:
self.multi_channel = False
if 'return_mask' in kwargs:
self.return_mask = kwargs['return_mask']
kwargs.pop('return_mask')
else:
self.return_mask = False
super(PartialConv2d, self).__init__(*args, **kwargs)
if self.multi_channel:
self.weight_maskUpdater = torch.ones(self.out_channels, self.in_channels, self.kernel_size[0], self.kernel_size[1])
else:
self.weight_maskUpdater = torch.ones(1, 1, self.kernel_size[0], self.kernel_size[1])
self.slide_winsize = self.weight_maskUpdater.shape[1] * self.weight_maskUpdater.shape[2] * self.weight_maskUpdater.shape[3]
self.last_size = (None, None, None, None)
self.update_mask = None
self.mask_ratio =</

文章介绍了几种基于深度学习的图像和视频水印去除技术,包括使用部分卷积进行图像修复,通过对抗损失和傅立叶卷积提升修复质量。在视频修复方面,提出了时空变换网络和FuseFormer等方法,利用时空注意力机制和光流信息增强帧间交互和细节恢复。评估指标包括PSNR和SSIM,用于量化修复结果的质量。
最低0.47元/天 解锁文章
2644

被折叠的 条评论
为什么被折叠?



