Xmem 用于视频抠像,优点是消耗的内存和 GPU 资源少,且对象识别效果非常出色
- Nvidia GTX 或 RTX 显卡(GeForce GTX 1070)
- 高性能 CPU(AMD Ryzen™ 5 5600X)
- 16GB 以上的内存(20GB)
- 高性能固态硬盘(可选)
https://www.bilibili.com/video/BV1kW4y1h7N3
- Python3.8(官方说 3.8 以上都行,但实测会有些问题,建议直接 3.8 版本)
- pythorch(包括 torchvision,https://pytorch.org/)
- OpenCV(pip install opencv-python)
- 其他(pip install -r requirements.txt)
- GUI 相关(pip install -r requirements_demo.txt)
scripts/download_models_demo.sh
也可自行去 github 相关页面下载
新建 source 文件夹,将视频放入 source 文件夹
建议 GUI,命令行看不到 mask,不能实时调整。
-
方式一:修改
tools/config.ini
,执行以下命令打开 GUIpython interactive_demo.py
需要对第一帧手动打标记,利用自带的Click
(fbrs)和Scribble
(s2m)、Free
,为第一帧打上物体标记,点击Forward Propagate
自动生成后续标记
如果发现标记错误,先点击Clear memory
,为错误的帧重新打标记,然后重新点Forward Propagate
自动生成后续标记或Backward Propagate
自动生成之前的标记
生成的 mask 放在 workspace 目录,重新打开 GUI 会自动加载之前的标记
使用数字键0-9
切换对象,默认是 1 号对象,每个对象的标记颜色不同,可以用于区分
放在 tools 文件夹,用工具处理后方便 PR、剪映等视频剪辑软件导入
用于生成绿幕视频
前置要求:
- FFmpeg(获取源视频信息,生成目标视频)
Git Bash(用到了 grep 命令,Linux 一般自带)(当前版本不需要)- CUDA(加速 numpy 矩阵计算)
- python3
- cupy(可选,注意和 CUDA 的版本匹配,否则会安装失败)
PS H:\XMem> python tools/greenback.py
生成的视频在 workspace/{视频文件名}/greenback.mp4
更新:已添加自动读取源文件信息并生成绿底视频功能,需要先修改 tools/config.ini
优化边缘锯齿(对于性能较弱的显卡不得不降低素材分辨率,导致 mask 图片边缘会有锯齿)(已完成,使用 opencv 提供的中值滤波功能消除锯齿,效果不错,缺点是吃 CPU)非固定速率视频的 mask 匹配(目前可以使用生成绿幕视频功能解决该问题,但有可能导致音画不匹配)(已完成,使用生成绿幕视频功能,经过优化速度已可接受)- windows 下的 GUI 工具
用 numpy 库做视频的绿幕替换太慢了,尝试用 ffmpeg 解决(已完成,使用 cupy 和多线程处理充分利用 CPU 和 GPU,目前速度可接受)