图像标注是构建高质量训练数据集的关键步骤,在目标检测、图像分割、姿态估计、
OCR
等任务中具有决定性作用。然而,传统标注工具存在功能单一、自动化程度低、不支持复杂任务等问题,限制了其在实际应用中的效能。为此,X-AnyLabeling
应运而生,结合最新研究成果与工程实践经验,打造了一个具备高度灵活性与智能化的标注平台。
1. 核心功能与技术架构
代码地址
:https://github.com/CVHub520/X-AnyLabeling/tree/main
1.1 多样化标注样式支持
X-AnyLabeling支持包括矩形框(HBB)、旋转框(OBB)、多边形、点、线段、折线段、圆形等七种标注形式,全面适配目标检测、实例分割、关键点定位等多种视觉任务。此外,软件还提供视频自动解析功能,实现对时序数据的高效标注。
标注样式 | 描述 | 适用场景 |
---|---|---|
矩形框 | 快速框选目标对象,简单高效 | 目标检测、物体跟踪等基础任务 |
多边形 | 绘制不规则形状,实现精确标注 | 图像分割、显著性检测等复杂任务 |
旋转框 | 描述物体的方向和姿态,更加灵活 | 旋转目标检测 |
点 | 标记图像中的特定关键点 | 姿态估计、关键点检测等任务 |
线段 | 用于直线关系的标注需求 | 道路标线、简单图形边界等 |
折线段 | 绘制连续折线,适配弯曲线条标注 | 车道线检测等任务 |
圆形 | 提供便捷的圆形目标标注方式 | 车辆轮胎、瞳孔等圆形目标标注场景 |
此外,X-AnyLabeling 还提供其他支持,广泛适用于以下子任务:
- 图像级与对象级标签分类和描述: 图像分类;图像描述;图像标签
- KIE 场景的 SER 和 RE 标注功能:为结构化信息抽取任务提供高效解决方案
1.2 多格式数据转换与互操作性
平台内置 YOLO、OpenMMLab、PaddlePaddle 等主流框架的数据格式转换模块,用户可轻松导入/导出 COCO、VOC、YOLOv5/v8 格式等标准数据集,提升数据处理流程的兼容性与效率。
1.3 高性能跨平台推理引擎与多模态交互标注系统
引入基于 Open Vision 和 Florence 2 的交互式视觉-文本提示机制,实现了自然语言引导的目标检测与分割。该机制打破了传统闭集模型的类别限制,支持开集识别与细粒度语义理解,极大增强了人机交互体验。
后端采用 OnnxRuntime 为核心推理引擎,同时支持 PyTorch、TensorRT、OpenVINO 等多种加速方案,兼顾推理速度与精度。软件可在 Windows、Linux、macOS 系统上运行,并提供一键编译脚本,便于定制化部署。
1.4 小目标筛查功能
X-AnyLabeling 针对小目标场景提供了循环遍历子图的筛查功能,可以帮助用户在完成初始标注后,更加高效地复核和修正小目标标注。用户在标注完成后,可以通过快捷键快速调用该功能,系统会循环切换到每一个已标注目标所在的区域,并自动局部放大该目标对象所处的子图。GUI 界面也提供了统计总览和保存子图功能,帮助用户快速了解当前标注目标数量等信息和根据目标框将对应子图截取并保存下来,方便用户后续的分析和复盘,进一步提升了标注工作的可追溯性。
2. 先进算法与模型支持
2.1 基于文本/视觉提示或免提示的检测和分割统一模型
在 X-AnyLabeling 版本中,我们隆重推出全新算法 Open Vision ,它巧妙融合了 Visual-Text Grounding 和 Segment-Anything 的优势,实现了基于多提示融合的交互式检测与分割。 Open Vision 有效地克服了 YOLO 等主流传统闭集检测模型类别受限的缺点,也解决了 GroundingDINO 在处理复杂、模糊或具有歧义的文本提示时的局限性,为您带来前所未有的标注体验!
-
核心优势:
- 文本-视觉提示融合: 该功能将自然语言提示与视觉输入无缝结合,实现更智能、更直观的任务处理,显著提升交互性和效率。
- 通用视觉任务支持: 从目标检测到实例分割,该功能展现出卓越的多功能性和鲁棒性,可广泛应用于多种视觉任务。
-
潜在局限:
- 训练数据依赖: 该模型基于 FSC-147 数据集训练,在分布外的对象上可能表现不佳,需注意其泛化能力。
- 资源密集型推理: 为确保识别精度,采用了两阶段推理管道,导致模型推理需要较多的计算资源和时间,更适用于密集场景标注。
- 相似物体区分挑战: 当前模型在区分相似物体方面仍存在一定挑战,可能会导致个别误检情况。
📚教程:https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/detection/hbb/README.md
2.2 基于 Florence 2 算法的多模态智能标注
Florence 2 是微软研究院推出的多模态基础模型,旨在实现更强大的视觉和语言理解能力,并为各种多模态任务提供统一的解决方案。Florence 2 采用统一的架构来处理多种多模态任务,例如图像分类、图像描述、视觉问答、文本到图像生成、视觉文本推理等。这种统一的架构简化了模型训练和部署过程。
📚 教程:https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/vision_language/florence2/README.md
- 目标检测
- 候选区域
- 密集区域说明
-
视觉提示
基于视觉提示的任务包含以下三个子任务:
- 区域分类(Region to category): 为指定区域分配一个类别标签。
- 区域描述(Region to description): 为指定区域生成一段描述性文本。
- 区域分割(Region to segmentation): 为指定区域生成一个分割掩码。
-
文本提示
基于文本提示的任务包含以下三个子任务:
Caption to Parse Grounding
Referring Expression Segmentation
Open Vocabulary Detection
-
光学字符识别
基于光学字符识别的任务包含以下两个子任务:
1. OCR
2. OCR with Region
2.3 基于 Segment Anything 2 的交互式视频检测与分割标注
3. 多样化的任务支持
除了上述新算法功能,X-AnyLabeling 还支持多样化的算法模型,以满足各项任务需求并扩展应用场景。
📚 教程:https://github.com/CVHub520/X-AnyLabeling/tree/main/examples/classification
3.1 图像分类
图像分类是计算机视觉领域的基础任务之一,X-AnyLabeling 内置了主流分类模型,其核心目标是将整幅图像准确地归类至预定义的标签或类别。此任务通常细分为以下两个关键子类别:
- lmage Classification
多类别分类(Multiclass Classification):此任务中,每张图像被严格限定归属于一个且仅一个预先设定的类别。这些类别之间彼此互斥,例如,图像的内容可能被限定为“猫”、“狗”、“汽车”等互不重叠的选项。模型在此类任务中的目标是找出图像最可能对应的单一类别。举例来说,在动物识别任务中,一张图片仅能被分类为“猫”、“狗”或“鸟”中的一种。
多标签分类(Multilabel Classification):与多类别分类不同,多标签分类允许一张图像同时关联多个类别。这意味着图像内容可能涉及多种元素,而这些元素之间并不相互排斥。例如,一张图片中同时出现猫和狗,那么这张图片就应该同时被标记为“猫”和“狗”。多标签分类模型需要辨识图像中所有相关的元素,并为每个元素分配其对应的标签。
- Multi-class Classification
在 X-AnyLabeling 中内置了以下图像分类模型用于预打标:
- ResNet
- InternImage
- YOLOv5-cls
- YOLOv8-cls
除了图像级的分类任务外,也支持实例级的分类任务
- Multi-label Classification
此外,X-AnyLabeling 还支持更为复杂的 多任务分类(Multitask classification),这意味着你可以基于 X-AnyLabeling 为不同的对象轻松构建多种属性
- Multi-task Classification
目前,X-AnyLabeling 中适配了 PaddlePaddle 开源的 PULC 车辆属性(Vehicle Attribute)和行人属性(Person Attribute)模型。整体的用户界面(UI)设计也参照 CVAT 的标注范式,为用户提供更加一致和友好的体验。
3.2 目标检测
📚 教程:
水平目标检测:https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/detection/hbb/README.md
旋转目标检测:https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/detection/obb/README.md
📚YOLO 的起源https://blog.roboflow.com/guide-to-yolo-models/
目标检测是计算机视觉领域的核心技术之一,其目标是在图像或视频中识别并精确定位各种物体,同时为每个被检测到的物体绘制边界框并给出其所属的类别。
目前,X-AnyLabeling 集成了多种主流的目标检测器,包括:
- RT-DETR 系列:RTDETR、RTDETRv2、DEIM
- YOLO 系列: DAMO-YOLO、Gold-YOLO、YOLOX、YOLO-NAS、YOLO-World、YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLO11、Hyper-YOLO
同时也支持旋转框的标定,并包括 YOLOv5-OBB 和 YOLOv8-OBB 等旋转目标检测模型,以更好的适配旋转目标检测任务。
此外,针对小目标检测的挑战,X-AnyLabeling 整合了 SAHI工具,提供了 YOLOv5-SAHI 和 YOLOv8-SAHI并支持切片推理,有效提升了小目标场景下的检测召回率。
除了闭集目标检测,X-AnyLabeling 中还适配了基于开集的目标检测算法 Grounding-DINO,该模型允许用户通过文本提示的方式进行交互,从而实现零样本检测能力。
值得一提的是,X-AnyLabeling v2.5.0+ 版本中还引入了全新的 UPN算法,该模型采用双粒度提示调优策略,在实例和部件级别生成全面的对象提议。
具体而言,UPN模型包含两种提示模式:
- 细粒度提示(fine_grained_prompt):
用于检测详细的对象部件以及相似对象之间的细微差别。此模式擅长识别面部特征等特定细节,或区分相似物种。 - 粗粒度提示(coarse_grained_prompt): 用于检测广泛的对象类别和主要场景元素。此模式侧重于识别诸如人、车辆或建筑物等通用对象,而无需进行详细的子分类。
3.3 图像分割
📚 教程: https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/segmentation/README.md
图像分割是计算机视觉领域三大经典任务之一,其目标是为图像中的每个像素分配标签,确保具有相同标签的像素展现出共同的特征。该领域主要分为以下三种类型:
- 语义分割(Semantic Segmentation):在这种分割方式中,每个像素都被分配一个类别标签,但不区分不同的实例。例如,在一张街道图片中,所有的人像素可能都被标记为“人”,而不区分个体。
- 实例分割(Instance Segmentation):实例分割不仅对每个像素进行分类,还区分同一类别中的不同实例。在同样的街道图片中,不同的行人会被分配不同的颜色或标签,以区分彼此。
- 全景分割(Panoptic Segmentation):全景分割结合了语义分割和实例分割的特点,旨在为图像中的每个像素分配一个标签,同时区分不同的实例和背景。这种方法能够提供全面的场景理解,包括对单个物体的识别和整个场景的描述。
在 X-AnyLabeling 中,你可以使用内置的 YOLOv5-Seg、YOLOv8-Seg或是自定义的语义分割模型(如 U-Net)轻松完成以上任务的标注。
此外,我们还额外提供了:
- SAM
- EdgeSAM
- MobileSAM
- HQ-SAM
- Efficifientvit-SAM
在内的基于 Segment-Anything 系列的模型支持,并配备了多种不同的型号,以便用户能够根据自己的具体需求、设备性能和场景应用来选择最合适的模型。值得一提的是,已全面适配了 SAM2.1 模型
- SAM-Med2D
更进一步地,针对医学图像场景,X-AnyLabeling 中同样提供了多种基于 SAM 微调的高精度模型,包括:
- SAM-Med2D:通用医疗图像分割一切模型;
- LVM-Med SAM:
- ISIC: 皮肤病灶分割一切模型;
- BUID SAM:超声乳腺癌分割一切模型;
- Kvasir SAM:结直肠息肉分割一切模型;
3.4 姿态估计
姿态估计,又称关键点检测,旨在识别图像中特定点的位置,这些点被称为关键点。这些关键点通常代表了对象的特定部分,如人体的关节、物体的地标或其它显著的特征点。通过检测这些关键点,可以更好地理解图像中对象的姿态、形状和结构。
关键点检测部分主要包括两个关键领域:
- 人脸关键点回归(Facial Landmark Detection)
- 全身人体姿态估计(Pose Estimation)。在这方面,FLD 的一期规划已经植入了美团的 YOLOv6lite-face模型。
此外,对于全身人体姿态估计任务,X-AnyLabeling 中内置了包括 YOLOv8-Pose、YOLOX-DWPose 以及 RTMO-DWPose 在内的三款主流姿态估计模型供用户选择。
📚 教程:https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/estimation/pose_estimation/README.md
3.5 多目标跟踪
多目标跟踪 (MOT)技术用于在视频序列中同时识别和跟踪多个目标,涉及在不同帧之间关联目标。在 X-AnyLabeling 中,我们提供了基于 ByteTrack 和 BotSort 的目标跟踪器,同时支持以下四大任务的跟踪。
📚 教程:https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/multiple_object_tracking/README.md
- 通过检测进行跟踪
- OBB跟踪
- 分割追踪
- HPE跟踪
3.6 深度估计
深度估计是一项关键技术,其目的是预测图像中每个像素的深度信息,即确定从相机到场景中每个点的距离。这项技术的应用至关重要,它有助于我们理解场景的三维结构,并且在增强现实(AR)、机器人导航以及自动驾驶汽车等众多领域中发挥着重要作用。通过准确的深度估计,系统能够更好地与三维世界互动,从而提高任务的执行效率和安全性。
📚 教程:https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/estimation/depth_estimation/README.md
- Depth-Anything
在 X-AnyLabeling 平台中,包含了深度估计功能,目前提供了以下两大模型:
- Depth-Anything V1 是一种实用的解决方案,用于稳健的单目深度估计,它通过在 150 万张带标签的图像和 6200 万张以上无标签的图像上进行训练而实现。
- Depth-Anything V2 在细粒度细节和鲁棒性方面显著优于其前身V1。与基于 Stable Diffusion(指 StyleGAN 或类似架构)的模型相比,V2具有更快的推理速度、更少的参数数量以及更高的深度估计精度。
3.7 图像标记
图像分析可以返回图像中出现的数千个可识别物体、生物、风景和动作的内容标签。标记不仅限于主要主题(例如前景中的人),还包括设置(室内或室外)、家具、工具、植物、动物、配件、小工具等。标签不是按分类组织起来的,也没有继承层次结构。
📚 教程:https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/description/tagging/README.md
- Recognize Anything
其中,以 Recognize Anything为代表,这是一个专用于图像标记的识别一切模型。与 SAM 类似,作为基础模型,它具备卓越的识别能力,在准确性和识别种类方面均超越了 BLIP 等当前领先的模型。特别地,在最新版本的 X-AnyLabeling 中,我们还额外引入了 RAM++ 模型,相比于 RAM 模型,它能够提供更加出色的图标标记能力。
3.8 光学字符识别
光学字符识别(Optical Character Recognition, OCR)是一种技术,它通过运用机器学习和模式识别等手段,自动识别图像中的文字并将其转换为可编辑的文本,从而便于后续的处理、搜索和编辑工作。
其中,文本标注是众多标注任务中一个非常频繁出现的任务,对于当前的多模态大型语言模型来说,这也是一个极其重要的子任务。然而,遗憾的是,目前市场上主流的标注工具要么不支持这一功能,要么提供的服务不够完善。即便是相对较为接近的 PPOCRLabel,也因为长时间缺乏维护而存在诸多问题。
- PPOCR-v4
针对这一痛点,X-AnyLabeling 工具完美地支持了这一新功能。为了提高标注效率,工具内置了基于 PaddlePaddle 最新开源的 PP-OCRv4 轻量化模型,支持中日英等多种语言的文本检测和识别。
- Key Information Extraction
此外,还额外支持了关键信息提取(Key Information Extraction, KIE),用于从文本或者图像中抽取出关键信息。具体地,其包含两个子任务:
- 语义实体识别(Semantic Entity Recognition, SER):在图像中识别并分类文本。
- 关系抽取(Relation Extraction, RE):对检测到的文本进行分类(例如,区分问题与答案)并识别它们之间的关系,比如将问题与其对应的答案进行匹配。
DocLayout-YOLO
📚 教程:
OCR
: https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/optical_character_recognition/text_recognition/README.md
KIE
: https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/optical_character_recognition/key_information_extraction/README.md
DocLayout
:https://github.com/CVHub520/X-AnyLabeling/blob/main/examples/optical_character_recognition/document_layout_analysis/README.md
3.9 车道线检测
基于 Line 模式,X-AnyLabeling 中集成了 CLRNet-Tusimple (CVPR 2022) 模型,方便用户对车道线进行快速的预标定。
3.10 联合视觉任务
X-AnyLabeling 中集成了多个领域不同方向的主流算法模型。通过这些内置的深度学习模型,搭配 X-AnyLabeling 应用中提供的丰富功能组件,我们可以构建出更为强大和有趣的工作流,以解决更为复杂的任务。简单介绍一些案例:
- Grounding-DINO + SAM
给定一个文本提示和一张图片,Grounding-DINO 可以返回与给定提示最相关的边界框。同时,给定一个边界框提示和一张图片,SAM 可以返回边界框内的分割掩码。现在,在 X-AnyLabeling 中,你可以轻松地将这两部分组合在一起,从而实现给定一个基于图像和文本提示来自动完成基于文本提示的分割结果!
- SAM + CLIP
众所周知,CLIP模型能够很好地理解图像和文本之间的关联,而 SAM 则能够根据提示生成精确的分割掩码。通过将两者结合,我们便可以轻松地进行万物检测!如下所示,用户只需提前在配置文件中添加你需要识别的任意类别名称(支持中英文):
type: sam
name: segment_anything
display_name: Segment Anything
# SAM
encoder_model_path: sam_encoder.onnx
decoder_model_path: sam_decoder.onnx
# Clip
model_type: clip
model_arch: ViT-B-16
...
classes: ["猫", "狗"]
便可以在 X-AnyLabeling 中通过类似于 SAM 的交互方式轻松高效地完成任意类别的检测与识别!
- YOLO + X
这里,我们可以借助 YOLO 等目标检测器构建二阶段的级联任务,实现对象级别的分类和标记功能,从而提供更细粒度的识别结果!以检测+分类的级联模型为例,可以将原本是鸟的大类别进一步判断为山雀的细粒度类别:这意味着整个系统不仅能够在整体上描述图像,还能够深入到图像中的各个对象层面,为用户提供更为细致和全面的信息。
4. 总结展望
随着人工智能技术的飞速发展,数据标注作为构建高质量训练数据集的核心环节,在计算机视觉任务中扮演着至关重要的角色。然而,传统图像标注工具往往功能单一、自动化程度低,难以满足目标检测、图像分割、姿态估计、OCR等复杂任务的需求。为此,X-AnyLabeling 应运而生,致力于打造一个高度智能化、多功能集成、可扩展的开源图像标注平台,为研究人员和工业界开发者提供高效、灵活且易于定制的标注解决方案。
面向未来,我将继续关注前沿研究成果,不断整合最新算法模型,完善标注流程,优化用户体验,并探索更多跨模态、跨任务的智能标注范式。我坚信,凭借强大的技术支撑与活跃的社区生态,X-AnyLabeling必将成为图像标注领域的标杆工具,为计算机视觉与人工智能的发展注入持续动力。