使用X-AnyLabeling进行ai模型标注遇到的问题

这篇具有很好参考价值的文章主要介绍了使用X-AnyLabeling进行ai模型标注遇到的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

X-AnyLabeling是一款基于AI推理引擎和丰富功能特性于一体的强大辅助标注工具,其专注于实际应用,致力于为图像数据工程师提供工业级的一站式解决方案,可自动快速进行各种复杂任务的标定。

1. 模型文件转换

首先需要将.pt的模型文件转化为.onnx。我采用的是yolov8-seg模型,在yolo框架下就可以直接转换。

yolo mode=export model=best.pt format=onnx simplify=True

Ultralytics 提供了足够详细的文档对export进行介绍,转换完成后可以在netron网站上可视化查看模型详细信息。

然后是配置文件,X-AnyLabeling导入自己模型的时候不能够直接读取.onnx文件,需要加载.yaml文件,格式如下:

type: yolov8_seg
name: 
display_name: my_segmentation
model_path: best.onnx
input_width: 256
input_height: 256
stride: 32
nms_threshold: 0.45
confidence_threshold: 0.25
classes:
  - ...

-  `type`: 用于定义网络类型的标识符,以唯一标识每个模型。该标识符用户不可更改。
- `name`: 用于定义当前内置模型对应的配置文件索引标记,如果是加载用户自定义模型,此字段可不用设置。更多详情可参见 [models.yaml](../../anylabeling/configs/auto_labeling/models.yaml) 文件。
- `display_name`: 用于在界面上展示的名称,可根据自定义任务进行命名,例如 `Fruits (YOLOv5s)`。
`model_path`: 用于指定加载模型权重的路径。请注意,该路径是相对于当前配置文件的相对路径。如果需要,也可以直接填写绝对路径。同时,确保文件格式为 `*.onnx`。
- `nms_threshold`、`confidence_threshold`、`classes`字段可根据实际情况自行设置。

/../docs/zh_cn/custom_model.md 有详细教程

2. 安装X-AnyLabeling

一开始我直接下载X-AnyLabeling-GPU.exe,但是加载模型时总是闪退,又找不到原因,于是还是选择拉源码,直接win+r,打开cmd,用conda新建一个环境,切换当前目录为向想要保存的地址,拉取项目源码

git clone https://github.com/CVHub520/X-AnyLabeling.git

安装依赖。

pip install -r requirements-gpu.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

项目提供了多个版本的依赖,可以根据需要选择,我这里选择的是gpu版。一定要使用清华源,否则会下载特别慢。同时,将../../anylabeling/app_info.py配置文件中的`__preferred_device__`字段设置为`GPU`。

运行。

python ./anylabeling/app.py

这时候加载模型的时候才发现,是我的yaml文件格式出了问题,修改之后能够正常加载模型。

3. onnxruntime与cuda、cudnn兼容问题

加载完模型之后,尝试使用ai标注,但是命令行报错

[E:onnxruntime:Default, provider_bridge_ort.cc:1480 onnxruntime::TryGetProviderInfo_CUDA] D:\a\_work\1\s\onnxruntime\core\session\provider_bridge_ort.cc:1193 onnxruntime::ProviderLibrary::Get [ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126 "" when trying to load "D:\Anaconda\envs\x-labeling\lib\site-packages\onnxruntime\capi\onnxruntime_providers_cuda.dll"

应该是cuda版本问题,项目使用的onnxruntime是1.16.3,对应的cuda版本是11.8.0,cuDNN为8.5.0.96。下载对应版本的cuda与cuDNN即可解决。

4. 提示Error in predict_shapes: axes don't match array

运行模型一直无法给出结果,命令行提示Error in predict_shapes: axes don't match array。到处找解决方案无果,于是选择看源码,不断debug,终于发现是在yolo.py的postprocess函数中process_mask将mask重新upsample到原图大小的操作,cv2.resize函数遇到输入矩阵最后一个维度是1的会将这个维度去掉,也就是说如果输入是[h,w,1],resize之后就变成了[nh, nw],以致矩阵维度不匹配,遂在判断后加上一句np.expand_dims升维即可。

x-anylabeling error in predict_shapes:,人工智能,python,YOLO

图中红框部分为添加代码,至此可以正常使用,一键ai生成所有label。

这个问题应该比较普遍,因为我在测试中发现最后一个维度表示的是最后生成的mask个数,如果只有一个mask就会被cv2.resize函数吞掉,多个就可以正常生成。

PS:定位这个问题花了我超长时间,源码只会提示矩阵不匹配,但是不知道是哪一步代码出问题,我是从异常捕获代码块一步一步追溯,再慢慢打断点测试才找到,最终解决。文章来源地址https://www.toymoban.com/news/detail-847472.html

到了这里,关于使用X-AnyLabeling进行ai模型标注遇到的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI工具】 一款多SOTA模型集成的高精度自动标注工具(直接安装使用,附源码)

    高精度自动标注工具简介及其特性 标注工具的安装 开启自动标注 X-AnyLabeling 是一款全新的交互式自动标注工具,其基于AnyLabeling进行构建和二次开发,在此基础上扩展并支持了许多的模型和功能,并借助Segment Anything和YOLO等主流模型提供强大的 AI 支持。无须任何复杂配置,下

    2024年02月08日
    浏览(34)
  • AI数据标注独角兽Scale AI:大模型背后的”卖铲人”去年劲赚7.5亿美元

    🦝【Ai-321.com】超多实用AI工具集,助你快速写作、绘画、视频创作,赶紧免费体验!🦝 在AI大潮汹涌而至的今天,我们常常关注那些引领技术前沿的大模型企业,如OpenAI、DeepMind等。但在这背后,有一个不可或缺的角色正在为AI的发展提供强大的支撑——那就是AI数据标注服

    2024年02月21日
    浏览(30)
  • Stable Diffusion使用civitai的模型进行AI绘图

    准备工作 1.安装Stable Diffusion(B站秋叶大佬有完整包,开箱即用) 2.启动之后找到图中位置下载civitai助手 下载完成之后,点击页面下方“重载客户端”。 下载模型 1.进入C站,随便找一个点进去,复制浏览器的网址 2.找到图中的tab,如果没有,说明civitai没有安装成功  按照图

    2024年02月11日
    浏览(32)
  • 【AMD GPU】使用A卡进行ai模型训练

    rocm都更新这么多版本了怎么还没有windows的 ~~##RX580用户看过来 rocm4.0版本后就不支持RX580了,垃圾AMD linux:Ubuntu20.04.1 CPU:R9-5900hx GPU:RX6800M 12G python:3.10.6 2022-10-24 23:21:50一键部署工具发布 顺序:1-8-2-3-4-5-7-6 加个源:deb https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy main 下载链接ht

    2024年02月03日
    浏览(29)
  • rk3588使用npu进行模型转换和推理,加速AI应用落地

    本文完成于2022-07-02 20:21:55 。博主在瑞芯微RK3588的开发板上跑了deepsort跟踪算法,从IP相机中的server拉取rtsp视频流,但是fps只有1.2,和放PPT一样卡顿,无法投入实际应用。本来想使用tensorrt进行加速推理,但是前提需要cuda,rk的板子上都是Arm的手机gpu,没有Nvidia的cuda,所以这条

    2023年04月12日
    浏览(34)
  • 当 AI 遇到流计算:如何在 RisingWave 的数据上训练 AI 模型

    想象一下,一个数据工程团队在多年的投入下,构建了一套实时流计算链路,数据仓库体系,以及数不清的报表。但随着业务的增长,他们开始不局限于传统的指标,而是希望用 AI/ML 来提供更加深入的数据分析。 MindsDB 就是填补这个需求的桥梁,它将数据库与模型训练串联起

    2024年02月19日
    浏览(32)
  • 【AI实战】大语言模型(LLM)有多强?还需要做传统NLP任务吗(分词、词性标注、NER、情感分类、知识图谱、多伦对话管理等)

    大语言模型(LLM)是指使用大量文本数据训练的深度学习模型,可以生成自然语言文本或理解语言文本的含义。大语言模型可以处理多种自然语言任务,如文本分类、问答、对话等,是通向人工智能的一条重要途径。来自百度百科 发展历史 2020年9月,OpenAI授权微软使用GPT-3模

    2024年02月10日
    浏览(29)
  • 使用训练好的YOLOV5模型在已有XML标注文件中添加新类别

            训练完一个YOLOV5模型后,可以使用模型快速在已有XML标注文件中添加新类别,下面是在已有XML标注文件中添加新类别的具体脚本:  以上代码需要修改run函数中的:weights为yolov5模型路径,source为图片数据和xml标注文件所在文件夹,修改的xml也在source路径下。亲测

    2024年02月15日
    浏览(26)
  • Postman传递@requestbody标注的List集合的传参遇到的问题

    我们想测试如下接口 这里对应了三个传入参数,因为deviceList是必须的,Device作为我们自己封装的JavaBean,我们想要直接传参的话,前端传递一个List过来,这个是被@Requestbody修饰的,同时还存在两个由@RequestParam修饰的包装类,因此, @RequestBody主要用来接收前端传递给后端的

    2024年02月16日
    浏览(28)
  • 【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

    云服务器训练YOLOv8-新手教程-哔哩哔哩 🍀2023.11.20 更新了划分数据集的脚本 在自定义数据上训练 YOLOv8 目标检测模型的步骤可以总结如下 6 步: 🌟收集数据集 🌟标注数据集 🌟划分数据集 🌟配置训练环境 🌟训练模型 🌟评估模型 随着深度学习技术在计算机视觉领域的广泛

    2023年04月15日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包