# RobustVideoMattingGUI **Repository Path**: xiaohaiGit/RobustVideoMatting ## Basic Information - **Project Name**: RobustVideoMattingGUI - **Description**: RobustVideoMatting的GUI版本,利用pyqt6搭建了简单的RobustVideoMatting的GUI界面,在此分享,分享依据GPL V3,希望能对各位有所帮助 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: RVMGUI.SCTOOL - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 25 - **Created**: 2023-09-14 - **Last Updated**: 2023-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RVM的GUI版本 以[Robust Video Matting](https://github.com/PeterL1n/RobustVideoMatting) 源码为基础,使用pyqt6以及qdarkstyle样式制作的RVM的GUI版本,并集成了其它工具,为二创作者和影视剪辑爱好者,提供一个集成工具库。
目前已经集成了[Segmengt Anything](https://github.com/facebookresearch/segment-anything)、[ROOP](https://github.com/s0md3v/roop)、[Buzz](https://github.com/chidiwilliams/buzz)源代码,非常感谢RVM、SAM和ROOP的作者团队,以及所有开源依赖库、字体的制作团队。
python环境:使用RVM_GUI建议3.10版本。
使用方法:python gui.py
## RVM GUI SCTOOL v1.0.7自动/手动抠像效果 感谢B站@流云蕊,这里使用她的视频作为抠像素材。
~~~ 源视频 自动抠像视频 手动抠像视频 ~~~
## RVM GUI SCTOOL v107界面 ![GUI_MAIN](/documentation/image/gui.png)![GUI_RUNRVM](/documentation/image/gui_runRVM.png)![GUI_EDIT](/documentation/image/gui_edit.png)![GUI_EDIT_SAM](/documentation/image/gui_edit_sam.png)![GUI_CAPTURE](/documentation/image/gui_capture.png)![GUI_TRAIN](/documentation/image/gui_train.png)![GUI_ROOP](/documentation/image/gui_roop.png) ![GUI_BUZZ](/documentation/image/gui_buzz.png) ## Robust Video Matting GUI 下载地址 RVM GUI V1.0.6 整合包文件打包地址(百度云):https://pan.baidu.com/s/1OP52r2NMFtSbs3ugvkpTzg?pwd=n3ww
RVM GUI V1.0.6 整合包文件打包地址(阿里云):https://www.aliyundrive.com/s/iDNz2jDrxuk
## Robust Video Matting GUI 各版本视频 RVM GUI V1.0.6及新增功能说明:https://www.bilibili.com/video/BV1tX4y177vK
RVM GUI V1.0.5及新增功能说明:https://www.bilibili.com/video/BV14X4y117AS
RVM GUI V1.0.4及新增功能说明:https://www.bilibili.com/video/BV18M4y1y7Wo
RVM GUI V1.0.3及新增功能说明:https://www.bilibili.com/video/BV1L84y1g7Pn
RVM GUI V1.0.2及采样比参数说明:https://www.bilibili.com/video/BV1pN411c7b1
RVM GUI V1.0.1介绍:https://www.bilibili.com/video/BV1EY411B7V5
RVM GUI V1.0.0及操作说明:https://www.bilibili.com/video/BV1W24y127MU
## Robust Video Matting GUI 旧版本下载地址 RVM GUI V1.0.5 EXE文件打包地址:https://pan.baidu.com/s/1erm3eTz00_OH6sv5Nr7scA?pwd=o93f
RVM GUI V1.0.5 整合包文件打包地址:https://pan.baidu.com/s/1cDju2lBlMrSF6jhOKVkkDQ?pwd=opbj
RVM GUI V1.0.4 EXE文件打包地址:https://pan.baidu.com/s/1lB2J1BcduDP2AZJpe3cuFA?pwd=9adc
RVM GUI V1.0.3 EXE文件打包地址:https://pan.baidu.com/s/11rtTs2NtFRlwzeokXjw1sA?pwd=kw53
RVM GUI V1.0.2 EXE文件打包地址:https://pan.baidu.com/s/16bNi5iSdipSq3b331_np9w?pwd=bwhy
RVM GUI V1.0.1 EXE文件打包地址:https://pan.baidu.com/s/1VbYTpZDt61U7KBoF7nWMeQ?pwd=5hhl
RVM GUI V1.0.0 EXE文件打包地址:https://pan.baidu.com/s/1vxBR0qOib6zX_b5XSJXbFg?pwd=s5jd
## Robust Video Matting GUI 更新 * [2023年08月22日] 最近工作累的够呛,干了两天通宵,好几天了都没缓过劲来,所以这两天主要是在休养,外加修正了手动编辑界面的界面,输出图片序列功能里增加了源视频图片,以便于后期编辑。另外PS一下,作为一个单身狗,讨厌七夕节,o( ̄ヘ ̄o#)。 * [2023年08月15日] 补充了buzz工具并再次整理了软件框架,将RVM_GUI进一步补充ROOP和BUZZ后,作为二次创作的工具库使用。 * [2023年08月12日] 应小伙伴的要求,补充了roop的功能。 * [2023年08月11日] 开始更新至v1.0.7版本,为手动编辑模式增加了SAM功能,可以通过多点标记更快的补全人像区域,进一步减少手动编辑的工作量。 * [2023年08月08日] 应小伙伴的要求,补充了一个简单的实时摄像头抠像功能。 * [2023年08月01日] 前一段时间各种出差,缓了好一段时间才缓过劲来,最近几天自己利用手动编辑功能修正了几段视频,根据自己的体验改善了手动编辑界面的一些别扭操作,同时也修正了一些RVMGUI和手动编辑界面的BUG,希望后面几天可以顺利的把视频给剪辑好,能发到B站上,自己给自己加油ヾ(◍°∇°◍)ノ゙。 * [2023年07月20日] 修正了rvm算法界面中读取ini文件中中文路径会导致界面崩溃的bug。 * [2023年07月19日] 补充requirements_rvmgui.txt使用pipreqs生成的依赖文件,但未经过测试,希望有人使用的话可以反馈一下,我可以及时处理。 同时,建议使用python版本为3.10版本。 * [2023年06月21日] 修正1.0.6版本功能BUG * [2023年06月20日] 距离上次大更新有一个多月了,这次应该就是1.0.6版本了,修改了软件整体架构,增加了启动界面,并切分了RVM抠像以及RVM训练两个模块,制作了RVM训练GUI,可以通过该GUI实现4个阶段的训练。同时在RVM抠像GUI中增加了简单的抠像后alpha通道编辑功能,可以对逐帧对抠像进行再编辑和调整,实现更好的抠像效果,不过该功能纯手动操作,目前主要目的是为后期有针对性的对RVM抠像模型训练提供素材,每次编辑完一帧要点击保存,可以把连续多帧保存成为ptz文件,后面可以通过编辑ptz功能读取后再进行编辑,由于ptz就是把保存的tensor的pt文件压缩一下,所以文件极大,1920x1080的大概一帧100多MB,建议一次保存不超过100帧。 PS:训练对硬件要求极高,我的4080LAPTOP,12G显存,16GB内存+200GB虚拟内存,跑stage1差不多十几个小时跑完了epoch1,然后我缩减了训练集,差不多4个小时一个epoch,跑到了epoch6,就实在跑不下去了;stage2我的12GB显存不够,验证不了;stage3初步跑了一下应该可以;stage4我没有找到imagemate的数据集,验证不了,如果谁的硬件够,可以验证一下,遇到问题可以一起交流一下。 * [2023年05月13日] 更新了gui界面提示,进一步优化了抠像流程,稍微提高了抠像速度(只输出合成抠像,不开启抠像过程显示),修正了ONNX框架下缩放出错导致的bug,改进了抠像过程的print内容和信息。 * [2023年05月01日] 终于结束出差回家了,这段时间根据小伙伴的要求,我废寝忘食、呕心沥血,终于增加了抠像视频fgr、pha和com输出时缩小并移动位置的功能,应该可以适应纯色背景、图片背景和视频背景(后两个还没有详细试验,时间比较紧张,可能存在bug,后续会根据反馈修正)。 * [2023年04月30日] 完善GUI,再次统一整理了框架,补充模型框架参数,在pytorch的基础上,增加了ONNX_FP32和ONNX_FP16参数的选择和设置,简单测试下,CPU计算模式下,ONNX_FP32比pytorch明显更快,ONNX_FP16无运行,CUDA模式下,三种模型框架的速度都差不多。 * [2023年04月29日] 整理了inference.py的调用接口,将模型调用、读取都统一放到了inference.py里。出差近十天,期间尝试使用ONNX模型框架进行加速,发现onnxruntime使用CUDA模式加速不明显,使用TENSORRT模式由于downsample_ratio类型和动态轴输入的原因,一直无法成功使onnxruntime得tensorrt模式加速,后续准备直接用python调用tensorrt模型动态shape看看能不能提高速度。 * [2023年04月19日] 增加了对ONNX框架模型的支持,增加了ONNX-FP32和ONNX-FP16两个模型框架,但GUI界面还未修改,后面准备增加GUI相关设置项。 * [2023年04月16日] 增加了开始抠像判断,如果没有勾选com输出图像并且选择抠像过程显示,则会进行提示。 * [2023年03月30日] 增加了抠像过程中,显示源视频图像和com输出图像的功能,对界面启动进行了改进,使窗口可以居中显示了。 * [2023年03月25日] 修正了中断抠像后,再次抠像一帧就中断的BUG。 * [2023年03月18日] 向源文件中补充了部分注释,在GUI中增加输出抠像内容的选择,可以在com合成抠像、fgr前景抠像、alpha透明度抠像三者中任意组合。 * [2023年03月15日] 修正已发现的BUG,增加停止抠像按钮和中途停止抠像功能,修改inference.py并在GUI中增加任意背景颜色设置功能。 * [2023年02月24日] 增加下采样比设置功能及说明,增加了窗口图标显示,使用的是ByteDance IconPark的资源,补充了一部分控件的tooltips。 * [2023年02月23日] 增加抠像模型选择功能,可以在官方给出的mobilenetv3或resnet50两个模型之间进行选择,同时增加了NVIDIA CUDA设备是否存在的判断,补充了一部分注释,并重新整理一下代码,改进了调用方式,通过import之后运行run函数,应该可以调用了。 * [2023年02月06日] 在关于窗口中增加了使用开源模块的说明,修复了图片序列输出类型下,抠像完毕弹出输出目录不正确的bug。 * [2023年02月05日] 增加了图片序列输出功能,输出的图片序列将分别放在输出目录的com、fgr和pha子目录中,并修改了读取默认参数文件时,如果参数不存在会跳出的bug。 * [2023年01月30日] RVM GUI代码以 GPL-3.0 许可发布。 ## 后续更新计划 最近没少出差,我抽空根据小伙伴们的想法进行了一些更新,也在构思一些新的功能想法,至于训练模型的想法,目前还是没办法排上日程,主要是电脑硬件不行,只能等再攒攒预算,看看啥时候能弄个好点的显卡,在试试了,不过放弃是不会放弃的,继续当做梦想吧。 * ~~鉴于RVM抠像对于汉服等细节还不够好,想在后续增加手动调节和校正的功能,这个也放到计划里面吧。~~ * ~~至今为止已经有好几个小伙伴提议增加视频流和摄像头输入的抠像,我不知道能否成功,先放到计划里面吧。~~ * ~~最近出了SAM,了解了之后,准备把SAM和RVM结合一下,想使用SAM分割人像之后和RVM的抠像结合一下,取个并集,看看是否可以得到更好的抠像结果。~~ * 后续想把tensorrt的模型给弄出来,看看到底能不能实现提高速度的目的,前段时间,出差的时候抽时间尝试了一下,使用onnxruntime通过TENSORRT模式加速,遇到了各种问题,各种困难,关键是在bing和baidu上都没有解决方案,直到最后,好不容易通过去掉downsample_ratio输入和动态轴输入,初步实现了onnxruntime的tensorrt推理,但是在运行时又卡住了,感觉一步一坎,太痛苦了,不过后续想用pth->onnx->tensorrt模型,通过python的tensorrt模块直接利用动态shape调用rvm的tensorrt模型,看看能不能实现rvm的tensorrt加速。(再努力试试吧,感觉难度好大) * ~~如果时间允许,会增加一个简单的将源视频缩小为原始大小1/N,并放置在任意位置的功能(这个功能已经兑现了,就准备去掉了)。~~ * 如果时间和条件允许,会尝试进行训练,如果可行,后续会建立汉服人像的抠像训练集,并最终实现汉服人像的稳定抠像,但是这个目标过于远大,而且感觉如果没有稳定的支持和支撑,大概率会凉凉,不过不耽误现在想一想嘛。 * 就先写这么多吧,flag不能立的太多,否则太容易翻车了。 ## 项目成员 * [天涯1986]https://gitee.com/ymfjly)
## 第三方资源 * [Robust Video Matting](https://github.com/PeterL1n/RobustVideoMatting) ([@PeterL1n](https://github.com/PeterL1n)) * [SAM](https://github.com/xinntao/Real-ESRGAN) ([@xinntao](https://github.com/xinntao)) * [ROOP](https://github.com/s0md3v/roop)([@s0md3v](https://github.com/s0md3v)) * [Buzz](https://github.com/chidiwilliams/buzz)([@chidiwilliams](https://github.com/chidiwilliams)) * [PyQtDarkTheme](https://github.com/5yutan5/PyQtDarkTheme)([@5yutan5](https://github.com/5yutan5)) * [抠像视频素材@流云蕊](https://space.bilibili.com/21488480)