综合介绍
DragAnything 是一个开源项目,旨在通过实体表示实现任意对象的运动控制。该项目由 Showlab 团队开发,并已被 ECCV 2024 接收。DragAnything 提供了一种用户友好的交互方式,用户只需绘制一条轨迹线即可控制对象的运动。该项目支持多种对象的同时运动控制,包括前景、背景和摄像机运动。DragAnything 在多项指标上表现优异,特别是在对象运动控制方面,超越了现有的最先进方法。
功能列表
- 实体表示:使用开放域嵌入表示任何对象。
- 轨迹控制:通过绘制轨迹线实现对象运动控制。
- 多对象控制:支持前景、背景和摄像机的同时运动控制。
- 交互式演示:支持使用 Gradio 进行交互式演示。
- 数据集支持:支持 VIPSeg 和 Youtube-VOS 数据集。
- 高性能:在 FVD、FID 和用户研究中表现优异。
使用帮助
安装流程
- 克隆项目代码:
git clone https://github.com/showlab/DragAnything.git
cd DragAnything
- 创建并激活 Conda 环境:
conda create -n DragAnything python=3.8
conda activate DragAnything
- 安装依赖:
pip install -r requirements.txt
- 准备数据集:
- 下载 VIPSeg 和 Youtube-VOS 数据集到
./data
目录。
- 下载 VIPSeg 和 Youtube-VOS 数据集到
使用方法
- 运行交互式演示:
python gradio_run.py
打开浏览器访问提供的本地地址,即可开始使用交互式演示。
- 控制对象运动:
- 在输入图像上绘制轨迹线,选择要控制的对象。
- 运行脚本生成视频:
python demo.py --input_image <path_to_image> --trajectory <path_to_trajectory>
- 生成的视频将保存在指定目录中。
- 自定义运动轨迹:
- 使用 Co-Track 工具处理自己的运动轨迹注释文件。
- 将处理后的文件放置在指定目录中,运行脚本生成视频。
主要功能操作流程
- 实体表示:通过开放域嵌入表示任何对象,用户无需手动标注对象。
- 轨迹控制:用户只需在输入图像上绘制轨迹线,即可控制对象的运动。
- 多对象控制:支持同时控制多个对象的运动,包括前景、背景和摄像机。
- 交互式演示:通过 Gradio 提供的交互界面,用户可以实时查看运动控制效果。
- 高性能:在 FVD、FID 和用户研究中表现优异,特别是在对象运动控制方面。