视频补全抠像去水印|ProPainter

ProPainter该项目用于将视频中的人物或水印移除,效果还是不错的,美中不足的是需要自己对视频需要处理的主体进行抠像。

视频补全抠像去水印|ProPainter

开源免费AI视频自动补全抠像去水印工具ProPainter

今天本站交流群里有人咨询关于ProPainter的部署,其实这个项目的部署过程非常简单,所以站长之前没打算写,既然有人问,那就在这里补充一下吧。

该项目用于将视频中的人物或水印移除,总的来说效果还是不错的,但美中不足的是,需要自己对视频需要处理的主体进行抠像,如果将视频转换成序列帧,然后在Photoshop中逐帧来处理显示是不现实的,工程量极大。所以这里可以使用本站之前给出的一些关于视频AI自动抠像的教程啦。

项目仓库

GitHub:sczhou/ProPainter

关于项目

更新日志

  • 2023.09.24: 我们正式移除了去水印演示,以防止我们的工作被用于不道德的目的。
  • 2023.09.21: 添加了内存高效推断的功能。请查看我们的 GPU 内存要求。
  • 2023.09.07: 我们的代码和模型现已公开。
  • 2023.09.01: 创建了此仓库。

更新计划

  • 创建一个交互式的 Gradio 演示。
  • 创建一个 Colab 演示。
  • 更新内存高效推断的功能。

前置条件

在执行项目安装之前,我们还需要安装GitConda,如果您的电脑还未安装这两款软件,请先根据本站所给出的教程安装。

Windows系统安装Git请参阅此文章:

Windows系统安装Conda请参阅此文章:

网络问题

在安装过程中,你可能即便开启了魔法上网也无法下载一些编程依赖库,关于魔法上网的相关配置问题不方便在站内讲解,请自行查看【魔法上网】的教程内容。

安装教程

如果您是初学者,对于命令行不太理解,那么请按下键盘上的Win键+R键后,在弹出的新窗口内输入CMD并按下回车键,在CMD窗口中按顺序执行如下的每一条命令

首先我们需要确认一个工作目录,用来存放该项目的相关环境依赖文件。本站所选择的目录为D盘的根目录下openai.wiki文件夹,完整路径为:D:\openai.wiki

在CMD中执行如下命令,这将会自动检测D盘是否在openai.wiki文件夹,没有则自动创建文件夹

if not exist D:\openai.wiki mkdir D:\openai.wiki

继续执行如下命令,在CMD中强制切换当前工作路径为D盘openai.wiki文件夹。

cd /d D:\openai.wiki

拉取该项目的Github仓库文件,将其下载至openai.wiki文件夹内。

git clone https://github.com/sczhou/ProPainter.git

环境部署

在CMD中执行如下命令,强制切换至ProPainter的项目目录。

cd /d D:\openai.wiki\ProPainter

在CMD中执行下面的命令行,创建Conda虚拟环境至该项目的目录中,方便日后重装系统也能够正常使用,无需重新部署环境。

conda create -y -p D:\openai.wiki\ProPainter\ENV python=3.8

初始化Conda环境,防止后续操作可能存在报错等问题。

conda init cmd.exe

激活已创建的Conda环境,这样可以将我们后续所需要的所有环境依赖都安装至此环境下。

conda activate D:\openai.wiki\ProPainter\ENV

执行如下命令,安装该项目的相关模块依赖库。

pip install -r requirements.txt

模型下载

模型存放结构如下:

weights
   |- ProPainter.pth
   |- recurrent_flow_completion.pth
   |- raft-things.pth
   |- i3d_rgb_imagenet.pt (用于评估VFID指标)
   |- README.md

官方下载

Releases · sczhou/ProPainter (github.com)

网盘下载

关于此项目的模型,本站已为您下载并整理好。如果你不方便通过官网下载,可以使用本站所提供的网盘下载地址。

weights

提取密码 解压密码 文件大小 222.15MB 文件格式 RAR 资源价格 免费 下载次数 4

模型安装

在您下载完成模型之后,将该模型解压移动至项目根目录下的weights文件夹即可。

运行方式

在以后每次运行该项目时,只需要先激活我们刚刚所创建的Conda虚拟Python环境,然后通过命令行运行。

在CMD中执行如下命令,强制切换至项目目录文件夹。

cd /d D:\openai.wiki\ProPainter

激活已创建的Conda环境,这样才可以正常使用该项目,否则将会自动调用系统中的默认Python。

conda activate D:\openai.wiki\ProPainter\ENV

使用教程

自定义素材

ProPainter不支持自动对视频抠像,如果你想使用自己上传的素材,那么需要对视频进行抠像,下面是一些本站之前写的关于AI视频抠像的教程,大家可以根据自身情况选择性使用。

关于人物视频抠像可以查看如下这篇文章,安装部署以及使用都比较简单。

如果你对抠像要求比较高,可以参数如下这篇教程,虽然是对图片抠像,但可以通过批量功能对序列帧进行抠像处理,上手难度较大。

对象移除

在我们想要移除视频中某个对象之前,我们需要先将这个视频转换为序列帧,也就是一张张图像。然后将这些图像进行抠像,得到主体遮罩(Mask)。

官方案例中给了一些示例文件,左侧是.\ProPainter\inputs\object_removal\bmx-trees文件夹的视频序列帧文件,右侧是.\ProPainter\inputs\object_removal\bmx-trees_mask文件夹的视频遮罩序列帧文件。

我们通过在CMD中执行如下命令就可以得到想要的内容啦。

python inference_propainter.py --video inputs/object_removal/bmx-trees --mask inputs/object_removal/bmx-trees_mask

这个命令行的内容非常简单,下面做一下解释。

python inference_propainter.py --video 视频序列帧文件夹路径 --mask 视频遮罩序列帧文件夹路径

处理完成后的视频将保存在results文件夹中,如果你要测试自己上传的视频,请准备mp4格式的视频(或拆分帧)和逐帧Mask遮罩。

注意:不用理会绿色,那只是抠象的示意,如果你想使用自己的视频素材,只需要黑白图像就可以了。

视频补全

这个功能就是将已有被遮挡的部分进行二创补全,大家可以用这个来处理马赛克水印。

假如视频中的水印位置是固定的,那么我们在给出遮罩时,可以给一张黑白图像,该项目将会自动补全白色部分。

如果你的视频过大,硬件内存不足等问题,可以在通过使用--width--height来指定视频宽高,这样可以达到节省内在的目的。

python inference_propainter.py --video inputs/video_completion/running_car.mp4 --mask inputs/video_completion/mask_square.png --height 240 --width 432

半精度推理

处理一个576x320的视频;设置--fp16在推断期间使用fp16(半精度)。

python inference_propainter.py --video inputs/video_completion/running_car.mp4 --mask inputs/video_completion/mask_square.png --height 320 --width 576 --fp16

内存高效推断

视频修复通常需要大量的GPU内存。在这里,我们提供了各种功能,以便进行内存高效推断,有效避免了内存不足(OOM)错误。您可以使用以下选项进一步减少内存使用:

  • 通过减少--neighbor_length(默认值为 10)来减少本地邻居的数量。
  • 通过增加--ref_stride(默认值为 10)来减少全局引用的数量。
  • 设置--resize_ratio(默认值为 1.0)以调整处理视频的大小。
  • 通过指定--width--height来设置较小的视频大小。
  • 设置--fp16在推断期间使用 fp16(半精度)。
  • 减少子视频的帧数--subvideo_length(默认值为 80),这有效地解耦了 GPU 内存成本和视频长度。

下面显示了不同子视频长度的 fp32/fp16 精度的预估 GPU 内存要求:

分辨率50 帧80 帧
1280 x 72028G / 19GOOM / 25G
720 x 48011G / 7G13G / 8G
640 x 48010G / 6G12G / 7G
320 x 2403G / 2G4G / 3G

数据集准备

以下内容用于训练,如果你只是简单的使用,可以忽略下面的内容。


数据集YouTube-VOSDAVIS
描述用于训练(3,471)和评估(508)用于评估(90中的50)
图像[官方链接](下载训练和测试所有帧)[官方链接](2017,480p,TrainVal)
遮罩[谷歌云盘] [百度网盘](为了复现论文结果而提供;在 ProPainter 论文中提供)

训练和测试分割文件提供在 datasets/<dataset_name> 中。对于每个数据集,您应将 JPEGImages 放置到 datasets/<dataset_name>。

将所有视频帧的大小调整为 432×240 以进行训练。将下载的掩码文件解压缩到 datasets。

数据集目录结构将被安排如下:(注意:请仔细检查)

datasets
   |- davis
      |- JPEGImages_432_240
         |- <video_name>
            |- 00000.jpg
            |- 00001.jpg
      |- test_masks
         |- <video_name>
            |- 00000.png
            |- 00001.png   
      |- train.json
      |- test.json
   |- youtube-vos
      |- JPEGImages_432_240
         |- <video_name>
            |- 00000.jpg
            |- 00001.jpg
      |- test_masks
         |- <video_name>
            |- 00000.png
            |- 00001.png
      |- train.json
      |- test.json

训练

我们在train_flowcomp.json(用于 Recurrent Flow Completion Network)和train_propainter.json(用于 ProPainter)中提供了训练配置。

运行以下命令之一以进行训练:

用于训练 Recurrent Flow Completion Network

python train.py -c configs/train_flowcomp.json

用于训练 ProPainter

python train.py -c configs/train_propainter.json

您可以运行相同的命令以恢复训练。

为了加速训练过程,您可以使用以下命令为训练数据集预计算光流:

为训练数据集计算光流

python scripts/compute_flow.py --root_path <dataset_root> --save_path <save_flow_root> --height 240 --width 432

评估

运行以下命令之一以进行评估:

用于评估流完成模型

python scripts/evaluate_flow_completion.py --dataset <dataset_name> --video_root <video_root> --mask_root <mask_root> --save_results

用于评估 ProPainter 模型

python scripts/evaluate_propainter.py --dataset <dataset_name> --video_root <video_root> --mask_root <mask_root> --save_results

分数和结果也将保存在 results_eval 文件夹中。请使用 –save_results 以进一步评估时间扭曲错误。

引用

如果您发现我们的存储库对您的研究有用,请考虑引用我们的论文:

@inproceedings{zhou2023propainter,
   title={{ProPainter}: Improving Propagation and Transformer for Video Inpainting},
   author={Zhou, Shangchen and Li, Chongyi and Chan, Kelvin C.K and Loy, Chen Change},
   booktitle={Proceedings of IEEE International Conference on Computer Vision (ICCV)},
   year={2023}
}

许可

该项目根据 NTU S-Lab License 1.0 获得许可。重分配和使用应遵循此许可证。

致谢

此代码基于 E2FGVI STTN。一些代码来自 BasicVSR++。感谢他们出色的工作。

总结

真的越来越智能了,其实只要不用来训练,使用起来还是非常简单的。

训练这一块,站长电脑硬件跑不动,暂时不讲了。

此文章由OpenAI开源维基百科原创发布,如若转载请注明出处:https://openai.wiki/propainter.html

(0)
上一篇 2023-09-28 18:46
下一篇 2025-02-22 00:51

相关推荐

  • FaceSwap

    使用深度学习和AI实现人脸交换,学习如何使用图像处理技术,实现高质量的人脸交换。FaceSwap是Github上的一个开源换脸技术项目,换脸技术是指将视频中人物的脸换为其他人的脸。

    AI换脸 2022-12-13
    013.9K
  • text-to-video-synthesis|通义-文本生成视频

    文本生成视频大模型-英文-通用领域:本模型基于多阶段文本到视频生成扩散模型,输入描述文本,返回符合文本描述的视频。仅支持英文输入。模型参数约17亿,采用Unet3D结构。

    2023-05-15
    001.8K
  • VToonify|图片视频动漫化

    VToonify是一个较为新颖且免费开源可生成高质量艺术肖像视频的框架,使用StyleGAN的中分辨率和高分辨率层来渲染艺术肖像,并使用编码器提取的多尺度内容特征来更好地保留帧细节。

    2023-04-03
    0287.1K
  • CoDeF|无闪烁视频AI风格转换

    开源免费CoDeF视频风格转换项目最新非常火爆,但是国内并没有相关的技术教程,国外也没有!该项目可以让你快速将一个视频风格转换为另一个视频,配置过程又臭又长,如嫌麻烦,建议直接下载虚拟镜像,一键启动。

    2023-08-30
    062.3K
  • FaceFusion|AI快速换脸|Roop升级版

    Roop升级版AI换脸软件免费开源FaceFusion下载安装使用教程,使用FaceFusion您可以将一段视频中的人脸替换成您选择的人脸,只需要一个所需人脸的图像,无需数据集和训练。速度快,体积小。

    2023-08-28
    0146.4K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(2条)

微信