Maksym Bekuzarov$^\dagger$, Ariana Michelle Bermudez Venegas$^\dagger$, Joon-Young Lee, Hao Li
元宇宙实验室 @ MBZUAI (穆罕默德·本·扎耶德人工智能大学)
$^\dagger$ 这些作者对本工作贡献相同。
受电影行业用例启发,XMem++ 是一个交互式视频分割工具,只需用户提供少量分割掩码,就能以最少的人工监督对非常具有挑战性的用例进行分割,例如:
https://github.com/max810/XMem2/assets/29955120/3d3761e2-2e73-484a-a1ed-ec717d8fed05
https://github.com/max810/XMem2/assets/29955120/ba746a2a-6333-4654-b39c-b93b9eb1ae0c
https://github.com/max810/XMem2/assets/29955120/3a8750e0-44ca-4cce-9b16-8f7154dbb217
https://github.com/max810/XMem2/assets/29955120/689512a6-f60a-4258-b282-4b799f12b0c9
![]() |
---|
XMem++ 更新后的GUI |
XMem++ 是基于 Ho Kei Cheng 和 Alexander Schwing 的 XMem 构建的,并通过添加以下内容进行了改进:
此外还有以下特点:
首先,安装所需的Python包:
torchvision
pip install opencv-python
)pip install -r requirements.txt
pip install -r requirements_demo.txt
使用 ./scripts/download_models.sh
下载预训练模型,或手动下载并将它们放在 ./saves
目录中(如果目录不存在则创建)。您可以从 [XMem GitHub] 或 [XMem Google Drive] 下载。对于推理,您只需要 XMem.pth
,但对于GUI,还需要下载 fbrs.pth
和 s2m.pth
。
要在新视频上运行图形界面:
python interactive_demo.py --video example_videos/chair/chair.mp4
要在一系列图像上运行:
python interactive_demo.py --images example_videos/chair/JPEGImages
这两个命令都会在工作区文件夹(默认为.workspace
)中为当前视频创建一个文件夹,并将所有遮罩和预测结果保存在那里。
要继续编辑工作区中的现有项目,运行以下命 令:
python interactive_demo.py --workspace ./workspace/<video_name>
如果您有多个对象,请确保在首次创建项目时在上述命令中添加--num-objects <num_objects>
。之后它会为了方便起见保存在项目文件中 =)
例如:
python interactive_demo.py --images example_videos/caps/JPEGImages --num-objects 2
欲了解更多信息,请访问DEMO.md
我们在process_video.py中提供了一个简单的命令行接口,您可以这样使用:
python process_video.py \ --video <视频文件/提取的.jpg帧路径> \ --masks <现有.png遮罩的目录路径> \ --output <保存结果的路径>
该脚本将直接使用现有的视频和真实遮罩(将使用给定目录中的所有遮罩),并运行一次分割。
也支持简写参数-v -m -o
。
查看Python API或main.py以了解更复杂的用例和解释。
如果您已经有来自其他工具的现有帧和/或遮罩,可以使用以下命令将它们导入到工作区:
python import_existing.py --name <要创建的项目名称> [--images <帧文件夹路径>] [--mask <遮罩文件夹路径>]
必须指定--images
、--masks
中的一个(或两个)。
您还可以指定--size <整数>
来动态调整帧的大小(调整较短边,保持比例)
这将执行以下操作:
--name
参数中的名称。--size
参数指定,则调整帧的大小。我们在DockerHub上提供了2个镜像:
max810/xmem2:base-inference
- 更小更轻量 - 用于从命令行运行推理,如命令行部分所示。max810/xmem2:gui
- 用于交互式运行图形界面。要使用它们,只需运行./run_inference_in_docker.sh
或./run_gui_in_docker.sh
,并附带相应的cmd/gui参数(参见相应部分[推理] [GUI])。它们会为docker run
命令提供适当的参数,并自动为输入/输出目录创建相应的卷。
示例:
# 推理 ./run_inference_in_docker.sh -v example_videos/caps/JPEGImages -m example_videos/caps/Annotations -o directory/that/does/not/exist/yet # 交互式GUI ./run_gui_in_docker.sh --video example_videos/chair/chair.mp4 --num_objects 2
对于GUI,如有必要,您可以在run_gui_in_docker.sh中更改变量$LOCAL_WORKSPACE_DIR
和$DISPLAY_TO_USE
。
请注意,交互式导入按钮将不起作用(它们将打开容器文件系统内的路径,而不是主机的路径)。
对于命令行推理:
docker build . -t <your-repo/your-image-name[:your-tag]> --target xmem2-base-inference
对于GUI:
docker build . -t <your-repo/your-image-name[:your-tag]> --target xmem2-gui
Image.convert('P')
)。如果您的遮罩不遵循这种调色板,只需运行python import_existing.py
来自动转换它们(参见导入现有项目)。run_on_video.py
处理视频文件时,遮罩应命名为frame_%06d.<ext>
,从0
开始:frame_000000.jpg, frame_0000001.jpg, ...
这是任何用例的首选文件名。更多信息和便利命令请参见数据格式帮助
关于训练,请参考原始XMem仓库。 我们使用XMem提供的原始权重,模型未经过任何重新训练或微调。
欢迎微调XMem并替换本项目中的权重。
![]() |
---|
带注释的XMem++架构概览 |
XMem++是一个基于内存的交互式分割模型 - 这意味着它使用一组参考帧/特征图及其对应的掩码(预测的或可用的真实标注)来预测新帧的掩码,预测基于新帧与已处理帧的相似度。
与XMem一样,我们使用了受Atkinson-Shiffrin人类记忆模型启发的两种内存类型 - 工作记忆和长期记忆。前者存储近期的具有丰富细节的卷积特征图,后者存储经过高度压缩的特征,用于视频中相距较远帧之间的长期依赖关系。
然而,现有的使用内存机制来预测当前帧分割掩码的分割方法(如XMem、TBD、AoT、DeAOT、STCN等)通常逐帧处理,因此存在一个共同问题 - 当视频中遇到新的真实标注时,视觉质量会出现"跳跃"。
![]() |
---|
为什么永久记忆有帮助 - 在永久记忆中保存来自视频不同部分的多个标注,使模型能够在目标对象的不同场景/外观之间平滑插值 |
为了解决这个问题,我们提出了一个新的永久记忆模块 - 实现方式与XMem的工作记忆相同 - 我们将用户提供的所有标注进行处理并放入永久记忆模块。这样,用户提供的每个真实标注都可以影响视频中的任何帧,无论其位置如何。这提高了整体分割准确性,并使模型能够在对象的不同外观之间平滑插值(见上图)。
更多详细信息请参考我们的arxiv页面[Arxiv] [PDF],第3.2节。
我们提出了一个简单的算法来选择用户下一步应该标注哪些帧,以最大化性能并节省时间。它基于多样性的概念 - 选择能捕捉目标对象最多样外观的帧 - 以最大化网络从这些标注中获得的信息。
它具有以下特点:
更多详细信息请参考我们的arxiv页面[Arxiv] [PDF],第3.3节和附录D。
我们使用XMem++收集和标注了一个数据集,其中包含受电影制作行业启发的具有挑战性和实用性的用例。
<table width="100%"> <tr> <td width="25%"> <div> <p align="center"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/88b4644f-b483-403d-b653-b890ee8afb7b.gif" alt="Billie Shoes"></p> <p align="center">鞋子 <br/> (<i>"billie_shoes" 视频</i>)</p> </div> </td> <td width="25%"> <div> <p align="center"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/daade137-52f5-44ee-8b79-88af4c0b640c.gif" alt="Short Chair"></p> <p align="center">反射 <br/> <i>("chair" 视频)</p> </div> </td> <td width="25%"> <div> <p align="center"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/37149b27-92a9-409e-a75f-639276d2f68e.gif" alt="Dog Tail"></p> <p align="center">身体部位 <br/> (<i>"dog_tail" 视频</i>)</p> </div> </td> <td width="25%"> <div> <p align="center"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/d288c1e8-ce27-4b15-b712-7f1d5b046003.gif" alt="Workout Pants"></p> <p align="center">可变形物体 <br/> (<i>"pants_workout" 视频</i>)</p> </div> </td> </tr> <tr> <td width="25%"> <div> <p align="center"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/d2f71f14-3ba2-48ee-847e-8116656f1e08.gif" alt="SKZ"></p> <p align="center">相似物体,遮挡 <br/> (<i>"skz" 视频</i>) </p> </div> </td> <td width="25%"> <div> <p align="center"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/233dcaf0-1f4c-4706-84a8-86d233191d04.gif" alt="Tattoo"></p> <p align="center">纹身/图案 <br/> (<i>"tattoo" 视频</i>) </p> </div> </td> <td width="25%"> <div> <p align="center"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/3214b687-e23d-498e-92ad-6f1b36f7efe0.gif" alt="Ice Cream"></p> <p align="center">快速运动 <br/> (<i>"ice_cream" 视频</i>)</p> </div> </td> <td width="25%"> <div> <p align="center"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/d542f0cf-f31d-4d9c-af8c-86af42cb7dc7.gif" alt="Vlog"> </p> <p align="center">多物体部位 <br/> (<i>"vlog" 视频</i>) </p> </div> </td> </tr> </table>**部分和非常规遮罩视频对象分割(PUMaVOS)**数据集具有以下特点:
单独的序列和遮罩可在此处获取:[Google Drive] [备用Google Drive]
PUMaVOS .zip
下载链接:[Google Drive]
[备用Google Drive]
PUMaVOS 根据 CC BY 4.0 许可证 发布 - 您可以将其用于任何目的(包括商业用途),只需在使用时注明作者(我们),并指出您是否做了任何修改。完整的许可证文本请参见 LICENSE_PUMaVOS
如果您在工作中使用了此代码或PUMaVOS数据集,请引用我们:
@misc{bekuzarov2023xmem,
标题:{XMem++:基于少量标注帧的生产级视频分割},
作者:{Maksym Bekuzarov 和 Ariana Bermudez 和 Joon-Young Lee 和 Hao Li},
年份:{2023},
电子预印本:{2307.15958},
预印本存档:{arXiv},
主要类别:{cs.CV}
}
联系方式:maksym.bekuzarov@gmail.com, bermudezarii@gmail.com, jolee@adobe.com, hao@hao-li.com
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南 ,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理 、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地