Segment and Track Anything 是一个开源项目,专注于利用自动和交互式方法对视频中的任何对象进行分割和跟踪。 使用的主要算法包括 SAM (Segment Anything Models) 用于自动/交互式关键帧分割的 DeAOT (将对象与转换器关联的解耦特征) 和用于高效多对象跟踪和传播的 (NeurIPS2022)。 SAM-Track 管道支持 SAM 动态和自动检测和分割新对象,而 DeAOT 负责跟踪所有已识别的对象。
源码位置:https://github.com/z-x-yang/Segment-and-Track-Anything
一、下载代码
pip install git+https://github.com/z-x-yang/Segment-and-Track-Anything.git
二、安装
要求:python>=3.9 , pytorch>=1.10,torchvision>=0.11
1、安装依赖
bash script/install.sh
2、下载模型
新建ckpt文件夹,并把模型文件放入其中
https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth
https://drive.google.com/file/d/1QoChMkTVxdYZ_eBlZhK2acq9KMQZccPJ/view
下载默认权重
bash script/download_ckpt.sh
三、运行Demo
将待处理视频放入./assets文件夹中
用jupyter notebool运行 demo.ipynb
生成文件也在./assets文件夹中
SAM-Track、DeAOT 和 SAM 的参数可以在 model_args.py 中手动修改
或者web打开
python app.py
使用浏览器打开给出的网络链接
点击 input-video 上传视频
调整 SAM-Track 参数
点击 Seg and Track得到结果
参数:
- aot_model :用于选择用于跟踪和传播的 DeAOT/AOT 版本。 sam_gap :用于控制 SAM
以指定帧间隔添加新出现对象的频率。 增加以降低发现新目标的频率,但显着提高推理速度。 - points_per_side :用于通过在图像上采样网格来控制用于生成掩码的每边点数。
增加尺寸可以增强检测小物体的能力,但较大的目标可能会被分割成更细的粒度。 - max_obj_num :用于限制 SAM-Track 可以检测和跟踪的最大对象数。 对象数量越多,内存利用率就越高,大约 16GB
的内存最多可以处理 255 个对象。