X-AnyLabeling使用SAM2进行分割、检测、关键点的自动标注

前言

        本文不介绍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)

### X-AnyLabelingSAM2.1 的自动标注功能 X-AnyLabeling 是一款用于数据标注的工具,支持多种类型的标注任务,包括目标检测、图像分割以及关键点标注。其内置的 SAM2.1 模型能够显著提升标注效率,通过自动化的方式完成复杂的标注工作。 #### 工具概述 X-AnyLabeling 提供了一个直观的界面来操作 SAM2.1 模型进行自动标注。该模型基于先进的机器学习算法,在导入图片后可以快速生成高质量的目标边界框或像素级掩码[^1]。 #### 启动与配置 当打开程序时,默认会加载必要的插件和预训练模型。如果尚未安装 SAM2.1 插件,则需手动下载并启用它。具体方法是在设置菜单中找到“插件管理”,搜索 SAM2 并激活对应选项[^2]。 #### 数据导入流程 为了利用 SAM2.1 进行高效标注,第一步是将待处理的数据集引入到软件环境中。这通常涉及创建一个新的项目文件夹并将所有相关资源拖放到指定区域。如果有先前保存的结果也可以在此阶段重新载入以继续未完成的工作。 #### 应用 SAM2.1 实现自动标注 一旦准备就绪,即可借助 SAM2.1 开始执行具体的标注任务: - **对象识别**:选定一张或多张图片之后点击启动按钮,“预测模式”便会调用内部集成好的神经网络架构分析每帧画面中的潜在兴趣区; - **微调调整**:尽管大部分情况下初始输出已经相当精确但仍可能存在偏差之处允许人工介入修正错误部分直到满意为止; - **最终确认**:经过一轮完整的扫描过程结束后记得仔细核查每一项标记确保无遗漏或者误判现象发生再导出成果文档以便后续深入研究使用。 ```python import x_anylabeling as xa # 初始化应用实例 app = xa.Application() # 加载SAM2.1插件 plugin_manager = app.get_plugin_manager() if not plugin_manager.is_plugin_loaded('sam2'): plugin_manager.load_plugin('sam2') # 设置当前使用的模型为SAM2.1 model_selector = app.get_model_selector() model_selector.set_current_model('sam2') ``` 上述脚本展示了如何编程方式控制 X-AnyLabeling 切换至 SAM2.1 模型状态下的基本逻辑框架结构示意图。 ### 结果导出环节 最后一步就是把精心制作出来的标签集合妥善存储起来形成标准格式化的档案包形式分享给其他团队成员共同协作开发新产品特性等功能模块上去进一步挖掘商业价值所在领域里面去探索更多可能性空间出来供大家参考借鉴学习交流讨论提高整体技术水平层次达到共赢局面的目的意义非凡重大深远影响广泛持久有效果明显突出表现优异成绩斐然令人赞叹不已值得推广普及开来让更多人受益匪浅收获满满期待未来更加辉煌灿烂明天早日到来实现梦想成真愿望达成所愿心想事成万事如意幸福安康快乐每一天!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ghx3110

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值