一、前言

现在需要对视频进行自动标注,并为每一帧生成.json文件。由于对单张图像进行手标过于繁琐,现尝试使用X_Anylabeling+SAM2进行自动跟踪标注。本文记录在win11系统下安装X_Anylabeling+SAM2并进行自动跟踪标注的全过程。
参考链接:

  1. X-AnyLabeling 自动数据标注保姆级教程:从安装到格式转换全流程
  2. 记录一次安装x-anylabeling并配置segment anything2进行自动标注任务踩坑的全过程

二、安装 X_Anylabeling+SAM2

环境:CUDA12.4+torch2.5.1+python3.12

2.1 安装

注意,这里我是先安装的 X_Anylabeling 再安装的 SAM2,我试过先安装 SAM2 再安装 X_Anylabeling,失败了,但是这种情况并不适合每个人。并且我的安装指令只适用于 CUDA12.x 的版本

2.1.1 安装 X_Anylabeling

  1. 新建虚拟环境
conda create --name x-anylabeling-cu12 python=3.12 -y
conda activate x-anylabeling-cu12

注意,这里官方文档中说 python 版本大于等于 3.10,低于 3.10 的版本不知道行不行,没试过。
2. 安装 CUDA
安装过程不再赘述了,网上教程很多
3. 安装
下载项目文件保存到合适路径:https://github.com/CVHub520/X-AnyLabeling
依次在终端中执行:

cd X-AnyLabeling
pip install x-anylabeling-cvhub[gpu]
pip install -e .[gpu]
  1. 打开 X_Anylabeling
# 终端直接输入xanylabeling
xanylabeling

在这里插入图片描述
安装成功

2.1.2 安装 SAM2

  1. 准备:首先要确保电脑安装了C++的编译库环境,在visual studio installer 中选择安装【使用C++的桌面开发】确保选中了其中的【Windows sdk】和【mscv】,安装完成后将MSCV工具的路径添加到系统变量中,默认路径应该是C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
    然后在prompt中可以通过:
where cl

检查是否可以找到上面的路径。

  1. 安装 torch
    torch 官网选择与 CUDA 适配的版本,这里我安装的是 2.5.1 :
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia

注意:官方文档中建议说 torch 版本尽量大于等于 2.5.1,低于这个版本不知道行不行,没试过。
输入下列命令查看是否安装完成:

python
import torch
torch.cuda.is_available()
  1. 下载 SAM2
git clone https://github.com/CVHub520/segment-anything-2
cd segment-anything-2
  1. 编译并安装 SAM2
python setup.py build_ext --inplace
pip install -e .

完成。

2.2 问题

为了安装 X_Anylabeling+SAM2 我新建了四次虚拟环境,我个人的踩坑过程可以总结为两点:

  1. CUDA版本过低,安装不成功❌
    本着能不装新版本CUDA就不装的原则,我使用原来自带的CUDA11.8试了几次,这几次我是先安装的X_Anylabeling,X_Anylabeling是可以正常安装并使用的,但是SAM2却死活装不上,总是显示_C 模块无法导入,缺少一大堆DLL文件,SAM2 的 C++ 扩展在 Windows 下编译失败之类的,只能单帧标注,视频分割模型导不进去。一开始我还以为是我安装的VS2022有问题,我还特意去升级了一下VS2022的插件,但还是没用。直到我看到了官方文档中的建议:
    在这里插入图片描述
    难道是CUDA11.8版本太低了?于是我新建了新的虚拟环境,本来想安装CUDA12.1试试,结果装错了装成了12.2,然后后面又报错了,说什么我的VS2022里面的插件支持的最低CUDA版本为12.4,呃,估计是我升级插件的缘故。。。这里只能再重装一个CUDA12.4。
  2. 先安装SAM2再安装X_Anylabeling,安装不成功❌
    这次安装CUDA12.4以后,我是先安装的SAM2,安装过程非常丝滑,没有出现任何错误。然后我又开始安装X_Anylabeling,本来我以为这次没问题了,毕竟X_Anylabeling之前已经安装成功过很多次了,都没出现过问题,结果真正让我发疯的错误出现了:
(x-anylabeling-sam2) E:\AnyLabeling\X-AnyLabeling-main>python anylabeling/app.py
Traceback (most recent call last):
  File "E:\AnyLabeling\X-AnyLabeling-main\anylabeling\app.py", line 24, in <module>
    from PyQt6 import QtCore, QtWidgets
ImportError: DLL load failed while importing QtCore: 找不到指定的程序。

这个问题我在网上搜索的结果大部分都是重装 PyQt6,DeepSeek也说可能是我的库没有安装完整,我试了卸载重装也还是不行。还有说涉及到动态链接库的,那个我就看不懂了。但是我觉得问题应该不会那么复杂,毕竟我之前安装成功过很多次X_Anylabeling,并且是可以正常使用的。 搞了一晚上也没搞出来,心态直接崩溃。然后第二天我准备给自己最后一次机会,重新新建一个虚拟环境再安装一次。这次我是先安装的 X_Anylabeling,结果果然成功了,没有出现任何问题,SAM2也安装成功了,视频分割模型也能顺利导入了,全程不到二十分钟。可能安装顺序也有些影响吧,虽然我不知道为什么。真的讨厌装环境。
综上,我个人得出的经验是大多数错误都是库的版本不匹配造成的,因此在安装库之前一定要仔细看清楚,尽量安装适配版本的,不然后面会爆出很多匪夷所思的错误,耽误大量的时间,很多问题其实换个库版本就解决了。

三、使用 X_Anylabeling+SAM2进行自动标注

3.1 下载视频分割模型

模型权重官网1
模型权重官网2
这里一定要下载视频分割模型,否则无法对视频进行自动跟踪标注
在这里插入图片描述
选择哪种都可以吧,只要是video的就行。

3.2 保存配置文件

以 sam2_hiera_tiny_video 为例,我们可以看到,在 sam2_hiera_tiny_video.yaml 文件中,有一个 “name” 字段:
在这里插入图片描述
我们把这个名字复制下来,对于 Windows 用户,在 “C:\Users\xanylabeling_data\model” 路径下用这个名字新建一个文件夹。如果 C 盘下没有这个路径,那么就自己建。

这里的 pt 文件我是自己下载的,下载链接就是 yaml 文件中“model_path”字段后面的网址。下载好后,将 yaml 文件和 pt 文件都放在刚才新建的文件夹中,并将 yaml 文件中 “model_path” 字段的内容改为现在 pt 文件的路径,我这里就是“C:\Users\xanylabeling_data\models\sam2_hiera_tiny_video-r20240901\sam2_hiera_tiny.pt”

ps:这里我不知道放在其他盘可不可以,我没有试过,我看到参考博主是直接放在 C 盘的,我就直接放在 C 盘下面了。如果能放在其他盘肯定更好了。

3.3 加载分割模型

打开软件,在左侧工具栏点击 “AI”
在这里插入图片描述
点击 “no model”:
在这里插入图片描述
点击加载模型:
在这里插入图片描述
选择刚刚下载模型对应的 yaml 文件,然后模型就加载好了:
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐