X-Anylabeling: 新一代自动标注工具

简介: X-AnyLabeling:具备增强功能的高级自动标注解决方案

Github: https://github.com/CVHub520/X-AnyLabeling

简介

X-AnyLabeling 是一款全新的交互式自动标注工具,其基于AnyLabeling进行构建和二次开发,在此基础上扩展并支持了许多的模型和功能,并借助Segment AnythingYOLO等主流模型提供强大的 AI 支持。无须任何复杂配置,下载即用,支持自定义模型,极大提升用户标注效率!

AnyLabeling = LabelImg + Labelme + Improved UI + Auto-labeling

特性

目前第一版提供以下功能,后期计划加入多模态大模型,满足更广泛的需求:

  • 支持多边形、矩形、圆形、直线和点的图像标注。
  • 支持文本检测、识别和KIE(关键信息提取)标注。
  • 支持检测-分类级联模型进行细粒度分类。
  • 支持一键人脸和关键点检测功能。
  • 支持转换成标准的COCO-JSONVOC-XML以及YOLOv5-TXT文件格式。
  • 支持PaddlePaddle、OpenMMLab、Pytorch-TIMM等主流深度学习框架。
  • 提供先进的检测器,包括YOLOv5YOLOv6YOLOv7YOLOv8YOLOX以及DETR系列模型。

目标检测

检测+分类

人脸+关键点检测

...

安装

下载和运行可执行文件

整个安装及使用教程都很简单,目前已在Windows系统上编译成可执行软件,可直接在release页面直接下载使用。其他平台可根据以下指令自行打包即可:

  1. 安装 PyInstaller
pip install -r requirements-dev.txt
  1. 构建
bash build_executable.sh

请注意,在运行之前,请根据本地conda环境在anylabeling.spec文件中替换'pathex'。

  1. 移步至目录 dist/ 下检查输出。

源码编译

  1. 安装依赖包
pip install -r requirements.txt
  1. 生成资源
pyrcc5 -o anylabeling/resources/resources.py anylabeling/resources/resources.qrc
  1. 运行应用程序
python anylabeling/app.py

框架

添加模型推理是自动化标记任务的关键。AnyLabeling 的早期版本完成对 Segment Anything 模型的支持。模型推理架构如下图所示:

AnyLabeling的架构中,LabelingWidget是任何功能的主要小部件。绘图区域由Canvas类处理。AutoLabelingWidget则作为自动标记功能和ModelManager的主要部件用于管理和运行 AI 模型。

SAM

SAM 是 Meta 的新细分模型。使用 11M 图像和 1B 分割掩码进行训练,它可以在不针对特定对象进行训练的情况下分割图像中的对象。出于这个原因,Segment Anything 是自动标记的一个很好的候选框,即使是从未见过的新对象。

优化点:

  1. 因为Encoder的计算是需要时间的,所以我们可以把结果缓存起来,也可以对Encoder在以后的图片上做预计算。这将减少用户等待编码器运行的时间。

  2. 对于缓存,添加了一个 LRU 缓存来保存编码器的结果。图像保存在缓存中,键是标签路径。当缓存中存在图像嵌入时,不会再次运行编码器,这样可以节省很多时间。缓存大小默认为 10 张图像。

  3. 对于预计算,创建一个线程来为下一个图像运行编码器。当加载新图像时,它将和下一张图像一起发送到工作线程进行编码器计算。之后,image embedding会缓存到上面的LRU缓存中。如果图像已经在缓存中,工作线程将跳过它。

使用步骤

  1. 选择左侧的Brain按钮以激活自动标记。
  2. 从下拉菜单Model中选择Segment Anything Models类型的模型。模型精度和速度因模型而异。其中,Segment Anything Model (ViT-B)是最快的但精度不高。Segment Anything Model (ViT-H)是最慢和最准确的。Quant表示量化过的模型。
  3. 使用自动分割标记工具标记对象。
  • +Point:添加一个属于对象的点。
  • -Point:移除一个你想从对象中排除的点。
  • +Rect:绘制一个包含对象的矩形。Segment Anything 将自动分割对象。
  • 清除:清除所有自动分段标记。
  • 完成对象(f):当完成当前标记后,我们可以及时按下快捷键f,输入标签名称并保存对象。

注意事项

  • X-AnyLabeling 在第一次运行任何模型时,需要从服务器下载模型。因此,可能需要一段时间,这具体取决于本地的网络速度。
  • 第一次 AI 推理也需要时间。请耐心等待。
  • 后台任务正在运行以缓存 Segment Anything 模型的“编码器”。因此,在接下来的图像中自动分割工作需要时间会缩短,无须担心。

集成方式

Segment Anything Model 分为两部分:一个很heavy的编码器和一个lightweight解码器。编码器从输入图像中提取图像嵌入。基于嵌入和输入提示(点、框、掩码),解码器生成输出掩码。解码器可以在单掩码或多掩码模式下运行。

在演示中,Meta 在服务器中运行编码器,而解码器可以在用户的浏览器中实时运行,如此一来用户便可以在其中输入点和框并立即接收输出。在本项目中,我们还为每个图像只运行一次编码器。之后,根据用户提示的变化(点、框),运行解码器以生成输出掩码。项目添加了后处理步骤来查找轮廓并生成用于标记的形状(多边形、矩形等)。

文本 OCR 标签

文本 OCR 标签是许多标注项目中的一项常见任务,但遗憾的是在 LabelmeLabelImg 中仍然没有得到很好的支持。AnyLabeling 中完美支持了这一项新功能。

第一个版本支持以下标签工具:

图像文本标签

用户可以切换到编辑模式并更新图像的文本——可以是图像名称或图像描述。

文本检测标签

当用户创建新对象并切换到编辑模式时,可以更新对象的文本。

文本分组

想象一下,当使用 KIE(键信息提取)时,需要将文本分组到不同的字段中,包含标题和值。在这种情况下,你可以使用文本分组功能。当创建一个新对象时,我们同样可以通过选择它们并按G将其与其他对象组合在一起。分组的对象将用相同的颜色标记。当然,也可以按快捷键U取消组合。

注:标注的文本和分组信息将与其他标注保存在同一个 JSON 文件中。文本将保存在text对象的字段中,组信息将保存在字段中group_id

检测分类模型

这一块相比比较简单。我们主要讲解下如何加载自定义模型,这将使你能够使用自己的模型进行自动标记。如果你有一个已根据自己的数据训练过的自定义模型并希望将其用于自动标记,这将非常有用。此外,还可以创建一个标签 - 训练循环来逐步改进私有模型。通常来说,笔者建议在项目初期阶段可以基于 SAM 利用点或矩阵提示快速完成数据标注,等后期达到一定数据量训练完一个初版模型后再基于检测或检测+分类模型进行一键自动标注。

准备模型文件

通常来说,我们首先需要将训练好的模型统一转换成onnx文件格式,以下是第一版支持的版本分支:

yolov5-v6.0+
yolov6-v0.4.0
yolov6Face-v0.4.0
yolov7-main
yolov8-main
yolox-main

如果你是基于以上分支训练并转换得到的onnx文件,可以直接进行后续步骤,否则可能需要修改源码以进行相应的适配。

创建配置文件

config.yaml在与模型相同的文件夹中创建 YAML 格式的模型配置文件。配置文件需要遵循以下格式:

  • rtdetr_r50.yaml(目标检测)
type: rtdetr
name: rtdetr_r50-r20230520
display_name: RT-DETR (ResNet50) PaddleDetection
model_path: https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/rtdetr_r50vd_6x_coco.onnx
input_width: 640
input_height: 640
score_threshold: 0.45
classes:
  - person
  - bicycle
  - car
  ...
  • yolov6lite_s_face.yaml(人脸及关键点检测)
type: yolov6_face
name: yolov6lite_s_face-r20230520
display_name: YOLOv6Lite_s-Face MeiTuan
model_path: https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov6lite_s_face.onnx
input_width: 320
input_height: 320
stride: 64
nms_threshold: 0.45
confidence_threshold: 0.4
classes:
  - face
five_key_points_classes:
  - left_eye
  - right_eye
  - nost_tip
  - left_mouth_corner
  - right_mouth_corner
  • yolov5s_resnet50.yaml(检测+分类级联)
type: yolov5_cls
name: yolov5s_resnet50-r20230520
display_name: YOLOv5s-ResNet50
det_model_path: https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/yolov5s.onnx
cls_model_path: https://github.com/CVHub520/X-AnyLabeling/releases/download/v0.1.0/resnet50.onnx
det_input_width: 640
det_input_height: 640
cls_input_width: 224
cls_input_height: 224
cls_score_threshold: 0.5
stride: 32
nms_threshold: 0.45
confidence_threshold: 0.45
det_classes:
  - person
  - bicycle
  - car
  ...
cls_classes:
  0: tench
  1: goldfish
  2: great white shark
  3: tiger shark

需要注意的是,这里检测+分类仅提供样例模板给大家,模型yolov5resnet中涉及到的类别分别是cocoimagenet上预训练得到的权重,大家需要根据自身任务重新训练新的模型进行替换。

开启自动标注

  1. 新建一个文件夹,将上述转换好的onnx权重和对应的配置文件存放到同一目录下。(非必须,但方便管理)

  2. 将 yaml 文件中 model_path 字段设置为 onnx 模型所在的绝对路径。

  3. 在自动标记模式下,从自动下拉列表中选择加载自定义模型,如图所示:

  1. 选择相应的配置文件。

  2. 点击“运行”或按下快捷键i是实现一键标注功能。

总结

本文主要为大家介绍一款新颖实用的基于交互式的全自动标注工具——X-AnyLabeling,更多功能和特性可直接下载体验!

源码链接:https://github.com/CVHub520/X-AnyLabeling

视频教程:https://www.bilibili.com/video/BV1AV4y1U7h3/?spm_id_from=333.999.0.0&vd_source=938654fc70710bf1d11daa4b779d2418

目录
相关文章
|
7月前
|
并行计算 Linux 计算机视觉
还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)
还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)
|
12天前
|
机器学习/深度学习 人工智能 UED
OOTDiffusion:开源AI虚拟试衣工具,智能适配性别和体型自动调整衣物
OOTDiffusion是一款开源的AI虚拟试衣工具,能够智能适配不同性别和体型,自动调整衣物尺寸和形状,生成自然贴合的试穿效果。该工具支持半身和全身试穿模式,操作简单,适合服装电商、时尚行业从业者及AI试穿技术爱好者使用。
99 27
OOTDiffusion:开源AI虚拟试衣工具,智能适配性别和体型自动调整衣物
|
2月前
|
数据采集 人工智能 自然语言处理
表格增强生成TAG登场:解锁AI自然语言与数据库的完美结合
【10月更文挑战第4天】表格增强生成(TAG)范式解锁了AI自然语言处理与数据库的深度融合,旨在让用户通过自然语言便捷地查询和管理数据。TAG结合了语言模型的强大推理能力和数据库系统的高效计算能力,通过查询合成、执行及答案生成三步完成复杂查询。相较于传统Text2SQL和RAG方法,TAG在准确性上显著提升,但其应用仍面临技术门槛和数据质量等挑战。[论文地址:](https://arxiv.org/pdf/2408.14717)
70 4
|
4月前
|
人工智能 文字识别 算法
打造全场景、跨领域、多模态的AI工作流 | 开源图像标注工具 X-AnyLabeling v2.4.0 正式发布!
X-AnyLabeling是一款强大的辅助标注工具,集成了AI推理引擎和丰富功能,为图像数据工程师提供一站式解决方案。它支持图像和视频文件的自动标注,提供了包括矩形框、多边形在内的七种标注样式,适应多样化的训练场景需求。X-AnyLabeling内置了多种SOTA级AI模型,如YOLO、SAM系列等,并支持GPU加速和多种数据集格式的导入导出,确保高效的数据处理。此外,它还具备良好的跨平台兼容性,可在多种操作系统上运行,并提供详尽的帮助文档和社区支持,帮助用户轻松上手并解决使用过程中遇到的问题。
379 2
打造全场景、跨领域、多模态的AI工作流 | 开源图像标注工具 X-AnyLabeling v2.4.0 正式发布!
|
4月前
|
人工智能 数据可视化 数据处理
推荐2款免费开源的标注工具,支持大模型对话标注
【LabelLLM】一款开源免费的大模型对话标注平台,专为优化大型语言模型的数据标注过程设计。支持灵活配置与多模态数据(音频、图像、视频),具备全面任务管理和AI辅助标注功能,大幅提升标注效率与准确性。了解更多请前往https://github.com/opendatalab/LabelLLM 【LabelU】一款轻量级开源标注工具,支持图像、视频、音频的高效标注。特色功能包括多功能图像处理、视频和音频分析等,简易灵活,支持多种数据格式输出。了解更多请前往https://github.com/opendatalab/labelU
677 11
|
6月前
|
机器学习/深度学习 人工智能 JSON
人工智能平台PAI产品使用合集之创建特征视图时遇到报错,该如何排查
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
6月前
|
机器学习/深度学习 人工智能 前端开发
人工智能平台PAI产品使用合集之创建了实时特征视图,里面的数据是通过什么传入的
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
7月前
|
机器学习/深度学习 人工智能 算法
在对齐 AI 时,为什么在线方法总是优于离线方法?
【5月更文挑战第28天】在线AI对齐优于离线方法的原因在于其能更好地捕捉人类反馈的细微差别,通过多样化和相关的数据生成。尽管离线方法效率高、可利用大规模数据,但其数据集可能无法全面反映实际应用场景。研究强调在线采样的关键作用,但也指出离线对齐的效率和泛化优势。[查看论文](https://arxiv.org/abs/2405.08448)以获取详细信息。
76 2
|
7月前
|
监控 JavaScript 数据库
OpenLLMetry:完美支持 LLM 应用的开源监测工具
【2月更文挑战第16天】OpenLLMetry:完美支持 LLM 应用的开源监测工具
495 1
OpenLLMetry:完美支持 LLM 应用的开源监测工具
|
7月前
|
机器学习/深度学习 JSON 自然语言处理
python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)
python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)