前言
本文不介绍SAM2的原理,只介绍如何在X-AnyLabeling中如何使用SAM2进行检测、分割关键点的自动标注。
X-AnyLabeling 是一款基于 AI 推理引擎和丰富功能特性于一体的强大辅助标注工具,其专注于实际应用,致力于为图像数据工程师提供工业级的一站式解决方案,可自动快速进行各种复杂任务的标定。
1、X-AnyLabeling安装:
推荐源码安装 ,
步骤 1. 创建一个 Python 版本为 3.8 或更高版本的 conda 环境
conda create --name x-anylabeling python=3.9 -y
conda activate x-anylabeling
步骤 2. 安装 ONNX Runtime。
# Install ONNX Runtime CPU
pip install onnxruntime
# Install ONNX Runtime GPU (CUDA 11.x)
# ONNX Runtime 版本需大于等于 1.16.0.
pip install onnxruntime-gpu==x.x.x
# Install ONNX Runtime GPU (CUDA 12.x)
pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
步骤 3. 克隆代码仓库并安装
git clone https://github.com/CVHub520/X-AnyLabeling.git
安装 requirements.txt
文件:
对于不同的配置,X-AnyLabeling 提供了以下依赖文件:
2、结合SAM2使用
2.1 打开界面
进入虚拟环境后,cd到X-AnyLabeling文件夹下,运行如下命令:
python anylabeling/app.py
若要使用cuda,则修改anylabeling/app_info.py中的CPU为GPU即可。
进入如下界面:
2.2 下载并使用SAM2模型文件
也可以选择YOLOv8-seg或其他YOLO检测、分割、关键点的模型,具体根据自己需求选择。
anylabeling/configs/auto_labeling路径下,为所要加载的onnx模型对应的yaml配置文件,本文选择sam2_hiera_large.yaml并修改:
type: segment_anything_2
name: sam2_hiera_large-r20240801
display_name: Segment Anything 2 (Large)
# 下载模型并修改路径
encoder_model_path: sam2_hiera_large.encoder.onnx
decoder_model_path: sam2_hiera_large.decoder.onnx
# yaml文件原路径,若不修改,在X_Anylabeling中选中后,会自动在线下载,速度太慢
# encoder_model_path: https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/sam2_hiera_large.encoder.onnx
# decoder_model_path: https://github.com/CVHub520/X-AnyLabeling/releases/download/v2.4.0/sam2_hiera_large.decoder.onnx
可在如下界面下载对应模型,拷贝到auto_labeling目录下即可:
https://github.com/CVHub520/X-AnyLabeling/blob/main/docs/zh_cn/model_zoo.md
如下图所示,选择自动标注后,然后选择加载自定义模型,选择刚才修改的sam2_hiera_large.yaml,加载模型后,选择输出类型(多边形、矩形或旋转框),点击加点即可自动标注。
2.3 添加自己的模型
可借鉴如下链接,我自己添加成功了deeplabv3+的分割模型,但预测没有效果,未查出原因:
X-AnyLabeling/docs/zh_cn/custom_model.md at main · CVHub520/X-AnyLabeling (github.com)