导读
今天主要为咱们具体介绍 X-AnyLabeling v2.3.0 版别近期更新的一些功用和新特性,一起也借此机会共享下这半年多下来的开源心路历程。
首先,说到图画标示软件,或许许多从事核算机视觉相关范畴的研究人员及从业者脑海中第一印象便会想到由MIT开源的干流标示软件:LabelMe
,又或许是LabelImg
和CVAT
等耳熟能详的干流标定软件。或许仔细的读者会像,已然有了这么老练的东西,那花那么多精力重新规划和开发这样一款软件的意义是什么呢?
我的答案最早也是:Yes。在规划X-AnyLabeling
之前,包括笔者本人我也是根本在经过上述几款干流东西来处理日常的事务需求。这最开端也跟笔者从事的岗位性质有关,作为一名算法工程师,或许咱们都或多或少能体会到,其实作业时刻大部分时刻是在与数据打交道;哪怕在ChatGPT
以及AIGC
开展如火如荼的今天,怎么快速构建高质量的数据依然是主旋律。在大多数场景下,数据的质量远比数量要来得重要,信任在一线的从业人员对这点会深有体会。这一点其实跟咱们在校园做研究的方法不同;学术届更多地的是提出一个idea,然后在公认的数据集上刷榜,大多数时候都是在过拟合数据分布,往往也经受不住实际运用的琢磨。
一开端,笔者的作业更多地是环绕在方针检测事务上,这其有用CVAT,乃至是LabelMe便现已能够应付了。后来,随着事务的多元化导致各类需求逐渐增多,但本质上还是环绕一个中心——数据,究竟关于落地的算法其实更讲究的是稳定性,再有便是调配一些上下游去做全体的逻辑运用,简直很少会频频的更换算法模型或许去尝试多如牛毛的SOTA
模型。为此,咱们会面对几个问题:
- 数据的多样性
众所周知,不同的使命其对应的数据输出形式各有不同。举个例子:
- 关于多标签分类使命而言,咱们需求运用到特点辨认的功用,赋予每张图画多个不同的标签形式;
- 关于图画切割使命而言,咱们需求能够供给精细化的掩码标签;
- 关于旋转方针检测而言,咱们需求能供给带旋转角度的方针框;
- 关于文本辨认使命而言,咱们需求先检测出对应的文本框再进行相应地OCR;
- 关于多方针追寻使命而言,咱们需求能够供给追寻特定方针ID的才能;
- …
放在以往,咱们或许更多地会针对特定的场景挑选适宜的东西去完结相应地标定使命,例如:
- 经过
LabelImg
来标示矩形框; - 经过
LabelMe
来进行多边形框的标定; - 经过
PPOCRLabel
来完结文本辨认标示使命; - 经过
roLabelImg
来处理旋转方针检测的功用; - 经过
DarkLabel
来完结视频文件的标示及方针的盯梢功用; - 经过
ELAN
完结对视频序列中人物动作的辨认以及对应字幕的捕捉; - …
可想而知,咱们需求消耗更多地精力去完结这些作业,因为每一款东西的运用都有一定的学习运用本钱;
- 东西的易用性
针对第1点,有同学提过能够运用由 Intel
公司开发的开源东西——CVAT
;当然,不得不承认,CVAT东西是一款极端优异的大型标定软件,毫不夸张地说,市面上简直全部的标示职业相关公司开发的所谓内部或许云渠道标示东西,都是依据此原型进行二次规划和开(包)发(装)的。但是,关于绝大多数用户而言,面对这样一款“庞然大物”,会遇到几个问题:
- 首先,上手本钱相对较高,CVAT运用前需求经过繁琐的配置流程,一起对跨渠道运用兼容性较差;
- 其次, 许多人其实面对的需求都是即时性的需求,更亟需的是一款绿色开源,开箱即用的东西;
- 最后,船大便意味着难调头,关于一些有特定事务需求的从业人员来说,改动源码进行高度定制化的难度可想而知;
因而,咱们更多地是需求一款细巧便利,最好是能开箱即用,一起也支撑高度定制化的标定东西;
- 功用的多样性
除了上述两点,我先前说到的最为要害的一点是,咱们需求考虑怎么更高效、更快速地建立整个数据标定流程。咱们有幸身处于这个人工智能大爆发的时代,当今出现出了许多新技能,其间一些值得一提:
例如,Meta公司开源的SAM
是一项令人振奋的技能,用户只需简略点击感兴趣的方针,即可快速、精确地获取精细的掩膜。另外,OpenAI公司也为咱们带来了ChatGPT
等立异技能,除了能够用人类自然对话的方法来取得传神拟人化的互动,还能够用于甚为杂乱的东西,如主动摘要提取、文本创作、代码编写等。最后,还有开展迅猛的多模态技能,能够协助人们完结比如文生成图、图生成文、图文-语音交互以及以文本或图画驱动(prompt-based)等立异运用。这些多模态技能的崛起不仅为各个范畴的人工智能运用带来了更广泛的或许性,也推动了不同模态之间更深层次的交融。
为此,咱们是不是能够考虑结合以上技能来构建愈加强壮、高效、快捷的标定流程呢?何乐而不为!以上便是笔者规划此款软件的初衷和动机,期望能与咱们共勉。现在该东西已完全开源,遵循 GPL 协议,感兴趣的小伙伴能够经过下方链接访问,顺手点一个Star
给予支撑:
X-AnyLabeling
总的来说,X-AnyLabeling
从规划和开发之初便有了明确的方针和动机,即要创立一个既能满意多样性需求,又具备易用性,一起包括多样功用且支撑高度定制化的图画标示软件。值得一提的是,为了最大程度地减轻咱们的运用本钱,X-AnyLabeling 现在在规划交互的时候会尽或许地与干流标示东西(如LabelImg
、Labelme
、roLabelImg
、Anylabeling
以及CVAT
等)保持对齐,最大限度提高用户的标示功率和运用体会。一起,现在该东西已根本涵盖了市面上全部干流东西的大部分功用,做到真正的 All in one
!
下面简略介绍最新 v2.3.0 版别相较于 v2.0.0 版别引进的一些新特性:
- 增加标签布景高亮,提高辨识度的一起美化UI规划;
- 新增数据核算预览功用,可经过快捷键
Ctrl+G
快速查看当时使命的核算数据; - SAM 标示形式下新增一键清除当时prompt的快捷键(c)以及快速创立正样本点(q)和负样本点(e);
- Rectangle方针制作形式从原先的对角极点形式扩展到四点标示形式,提高微调功率;
- 新增主动切换修正形式,无需每次制作完方针后进行手动切换,削减操作次数;
- 删去方针时无需按确认键,可加速标示流程;
- 支撑一键导出灰度和彩色掩码图;
- 新增一键导入和导出标签选项;
- 支撑躲藏/显示当时选中方针,可用于图层重叠无法调整底下方针的状况;
- 支撑底部状态栏实时显示当时标示使命进度以及当时选中方针的宽高和鼠标点信息;
- 标签修正栏新增
Difficult
复选框以及Description
预览和修正框,极大提高交互体会; - 新增YOLOv8旋转方针检测、EdgeSAM、RTMDet、RTMO、车牌检测与辨认等算法;
亮点功用
支撑图画和视频导入功用
除了支撑图画级的标示功用外,X-AnyLabeling
还引进了对视频的全面支撑,完结了一键解析和主动标示。为了更好地满意用户对视频文件标示的需求,当时集成了经典的ByteTrack
和最新的OC-Sort
(CVPR 2023)等先进的盯梢算法。因而,不管是处理图画还是视频,X-AnyLabeling
致力于供给全面而高效的标示处理方案,以满意不同场景下的标示需求。
支撑一键导入/导出功用
当时,X-AnyLabeling
东西箱中还供给了一键导入/导出的快捷功用,支撑多种干流数据标示格局,包括:
-
MOT-CSV
:多方针追寻MOT使命标示 -
VOC-XML
:Pascal VOC,仅支撑Rectangle
方针; -
DOTA-TXT
:旋转方针检测; -
YOLO-TXT
:支撑Rectangle
(检测)和Polygon
(切割)方针; -
COCO-JSON
:支撑Rectangle
(检测)和Polygon
(切割)方针; -
MASK
:支撑语义切割和实例切割掩码一键导出;
因而,不管您是与其它东西协同作业,还是运用到不同的深度学习结构中进行练习,X-AnyLabeling
都旨在供给广泛的输出选项,保证用户能够灵敏地集成标示成果到其作业流程中。
经过直接加载上述导出的标签,咱们能够快速导入到 YOLO 结构进行练习:
支撑多硬件环境和跨渠道运用
X-AnyLabeling
支撑在不同硬件环境下运转。除了常规的 CPU
推理外,还引进了 GPU
加速推理支撑,当时推理后端仅支撑OnnxRunTime
,后续会逐渐考虑增加TensorRT
和OpenVINO
等后端支撑。
此外,该东西具备多渠道兼容性,能够在 Windows
、Linux
和 MacOS
等不同操作体系环境下流通运转。
不仅如此,X-AnyLabeling
还供给了一键编译脚本,赋予用户依据其具体需求自行编译体系的才能,运用户能够随时随地轻松地分发运用,为其供给愈加灵敏的定制和布置体会,进一步简化东西的装置过程。
支撑单帧和批量猜测
X-AnyLabeling
中供给了灵敏的标示方法,支撑单帧猜测和一键处理全部图画。用户能够挑选逐帧标示,以愈加精细地处理每一张图画,也能够经过一键处理全部图画来快速完结整个数据集的标示。
支撑多种标示形式
为最大限度满意用户的各式需求,X-AnyLabeling
中供给了多样化的图画标示功用,包括多边形、矩形、旋转框、圆形、线条、要害点等根本标示形状。此外,东西还支撑文本检测和辨认,运用户能够便利地标示图画中的文字信息。更进一步,X-AnyLabeling
还引进了 KIE(Key Information Extraction)标示,协助用户标示并提取要害信息,以满意更杂乱场景下的标示需求。
Tip: 旋转框还支撑实时显示旋转角哦!
支撑多种SOTA深度学习算法
更进一步地,X-AnyLabeling
中内置了多种先进的深度学习算法,包括但不仅限于经典的方针检测算法如 YOLO
系列以及最抢手的 SAM
系列等算法,现在仍在不断扩大中。
不仅如此,X-AnyLabeling
还支撑导入用户自定义的模型,这一特性使其真正成为一个具备广泛适用性和高度可定制性的标示东西,满意用户的不同需求。
供给具体的协助文档和完善的社区支撑
为了保证用户能够充分利用 X-AnyLabeling
的功用,供给了全面而具体的协助文档。这些文档包括具体的运用说明、标示过程、功用解释以及常见问题回答,旨在为用户供给清晰、易懂的指导,使其能够顺畅地运用东西完结标示使命。
除此之外,仍活跃维护和支撑开发者社区,致力于建立一个互助互学的渠道。在这个社区中,用户能够共享经验、提出问题、沟通主意,得到来自开发人员的支撑和回答(初步估量,现在X-AnyLabeling
的bug修复率以及功用支撑率高达95%+,根本做到有问必答,有bug必解!)。经过建立活跃的开发者社区,小编一直期望能为用户供给愈加全面、实时的支撑,以保证咱们在运用 X-AnyLabeling
时能够取得最佳的体会和协助,一起也欢迎咱们活跃提PR。
SOTA 算法库
概况可参阅[模型列表] (github.com/CVHub520/X-…
Visual-Language LLM
作为 v2.0.0 版别的主打功用,X-AnyLabeling
正式完结了从闭集到开集的重大突破。初次推出的功用依据 Grounding-DINO
、Grounding-SAM
等模型。其间,Grounding-DINO 是 IDEA 最新开源的零样本方针检测模型,经过恣意文本驱动,能够依据用户供给的文字描绘来检测图画中指定的方针。
以检测大熊猫为例,检测成果显示模型简直完美地定位了图画中的每个方针(panda
),当然,成果也遭到用户给定的文本提示词(prompt
)的影响,例如将提示词从 pandas
更改为 panda
或许导致检测成果的变化。
为了完结真正的全主动标示,推荐咱们体会最新布置的 Grounding-SAM
。经过结合 X-AnyLabeling
东西中独家供给的一键运转组件和导出功用设置,用户能够高效地进行零样本检测和切割,轻松获取适用于各大干流练习结构的标签文件。
此外,尽管关于一些非通用方针定义依然存在一些局限性,但经过亲身上手体会,能够更好地了解和把握体系的运作方法。X-AnyLabeling
的持续优化和立异为用户供给了更广泛、更灵敏的标示处理方案。
Image Captioning
图画字幕生成是一项交融了核算机视觉(CV)和自然语言处理(NLP)的杂乱使命,其方针是使核算机能够以自然语言主动生成对图画内容的详尽描绘。具体而言,体系接收一张图画作为输入,经过 RAM 模型的强势植入,完结了主动生成生动而详实的文本描绘。该描绘旨在生动展现图画中的主要场景、方针及它们之间的联系,然后协助人们更深化了解图画。
Recognize Anything, RAM 是专用于图画符号的辨认全部模型,与 SAM 相似,作为基础模型,它具备卓越的辨认才能,在精确性和辨认种类方面均超越了 BLIP 等当时抢先的模型。最新版别的 X-AnyLabeling 引进了 RAM 模型,并成功集成了该项图画字幕生成功用。
除了图画级别的描绘之外,X-AnyLabeling 还引进了Object-level的图画描绘功用,然后大幅丰富了体系的功用。这意味着体系不仅能够在全体上描绘图画,还能够深化到图画中的各个方针层面,为用户供给更为细致和全面的信息。
Image Classification
当时最新版别支撑ResNet50
、YOLOv5-cls
、YOLOv8-cls
以及最新的InternImage
模型。
Multi-Label Classification
为满意广大粉丝的需求,X-AnyLabeling v2 版别引进了全新的多标签特点标示功用。初次推出的功用包括依据百度飞浆开源的 PULC 中的车辆特点(Vehicle Attribute)和行人特点(Person Attribute)模型。全体的用户界面(UI)规划以及标示范式遵循 CVAT 开源东西箱的标准,为用户供给愈加一致和友爱的体会。现在,您能够尽情体会这一全新的标示功用!
Object Detection
X-AnyLabeling 现在供给依据Horizontal Bounding Box,HBB
即水平方针框(如yolov5/yolov6/yolov7/yolov8/yolox/yolo_nas/rtdeter/damo_yolo/gold_yolo等YOLO
全系列产品)以及依据Oriented Bounding Box,OBB
即有向方针框(如DOTAv1.0/1.5/2.0以及VisDrone数据集练习的yolov5_obb
和yolov8_obb
)的检测模型。
当然,你也能够替换为自定义模型。此外,为了提高小方针检出才能,X-AnyLabeling
中还集成了 SAHI
东西,支撑切片推理,一键提高小方针检测功用:
不仅如此,Classify-by-detection
相同也供给,支撑对检测后的成果进行二次分类,供给更细粒度的辨认成果!例如这里能够将原本是 bird
的类别进一步更正为 chickadee
,即山雀:
Multi-Object-Tracking
现在,X-AnyLabeling 现已内置了两种先进的多方针盯梢(MOT)算法,分别是经典的 ByteTrack 和最新的 OC-Sort(CVPR 2023)。默许状况下,检测器运用 yolov5,当然,用户也能够依据个人偏好将其设置为其他先进的检测和盯梢模型。
Keypoint Detection
要害点检测部分主要包括人脸要害点回归(Facial Landmark Detection)和全身人体姿势估量(Pose Estimation)两个要害范畴。在这方面,FLD 的一期规划现已植入了美团的 YOLOv6lite-face 模型。
此外,姿势估量方面当时适配了面向产业界运用的 YOLOv8-Pose
模型和高精度的 DW-Pose
两阶段检测模型:
Lane Detection
依据Line
形式,X-AnyLabeling 中集成了 CLRNet-Tusimple (CVPR 2022) 模型供咱们快速体会:
Optical Character Recognition
OCR(光学字符辨认)是一种经过运用机器学习和形式辨认等方法主动辨认图画中的文字并提取为可修正的文本,便利后续处理、查找和修正。文本标签是许多标示项目中的一项常见使命,但惋惜的是在 Labelme
和 LabelImg
等东西中依然没有得到很好的支撑,X-AnyLabeling
中完美支撑了这一项新功用。考虑到功率问题,现在东西内供给了依据 PaddlePaddle 最新开源的 PP-OCRv4
轻量化模型,支撑中英文、多语种文本:
- 图画文本标签:用户能够切换到修正形式并更新图画的文本——能够是图画称号或图画描绘。
- 文本检测标签:当用户创立新方针并切换到修正形式时,能够更新方针的文本。
- 文本分组:幻想一下,当运用 KIE(键信息提取)时,需求将文本分组到不同的字段中,包括标题和值。在这种状况下,你能够运用文本分组功用。当创立一个新方针时,咱们相同能够经过挑选它们并按
G
将其与其他方针组合在一起。分组的方针将用相同的色彩符号。当然,也能够按快捷键U
取消组合。
注:标示的文本和分组信息将与其他标示保存在同一个
JSON
文件中。文本将保存在text
方针的字段中,组信息将保存在字段中group_id
。
Instance Segmentation
现在 X-AnyLabeling
东西中供给的实例切割模型主要有两种范式,一种是常规的切割模型,如yolov5-seg
和yolov8-seg
:
另外一种是依据Segment-Anything
范式,如SAM
/EdgeSAM
/Mobile-SAM
/HQ-SAM
/Efficientvit-SAM
等:
- Segment Anything Model(SAM)是 Facebook Research 近来开源的一种新的图画切割使命、模型,能够从输入提示(如点或框)生成高质量的方针掩模,并可用于生成图画中全部方针的掩模;
- Mobile-SAM 经过解耦蒸馏方案可同步获取到轻量级的 SAM 编码器和解码器,有效提高了推理功用;
- HQ-SAM 是第一个经过对原始 SAM 引进可忽略开销而完结高质量零样本切割的模型,发表于 NeurIPS 2023;
- Efficientvit-SAM 则是由 MIT 韩松团队发表于 ICCV 2023 上的最新轻量化网络架构 Efficientvit 扩展而成的 SAM-like 模型,一起兼顾精度和速度!
- Edge-SAM:支撑移动端或CPU设备的高效推理,根本能够做到低延迟,一起又能满意一定的精度需求。
更进一步地,针对医学图画场景,X-AnyLabeling
中相同供给了多种依据 SAM 微调的高精度模型,包括:
- SAM-Med2D: 通用医疗图画切割全部模型;
- LVM-Med ISIC SAM:皮肤病灶切割全部模型;
- LVM-Med BUID SAM:超声乳腺癌切割全部模型;
- LVM-Med Kvasir SAM:结直肠息肉切割全部模型;
最后,东西内还内置了 yolov5-SAM
及 YOLOv8-EfficientvitSAM
模型,能够为原始的切割模型供给愈加精细化的切割成果!
推理架构
X-AnyLabeling
中的模型推理架构如下图所示:
其间,LabelingWidget
是推理 SAM
系列模型推理功用所需的中心部件。绘图区域是由Canvas
类处理,而AutoLabelingWidget
则作为主动符号功用和ModelManager
的主要部件用于办理和运转 AI 模型。
优化点:
- 因为
Encoder
的核算是需求时刻的,所以咱们能够把成果缓存起来,也能够对Encoder
在以后的图片上做预核算。这将削减用户等待编码器运转的时刻。 - 关于缓存,增加了一个
LRU
缓存来保存编码器的成果。图画保存在缓存中,键是标签途径。当缓存中存在图画嵌入时,不会再次运转编码器,这样能够节省许多时刻。缓存巨细默许为 10 张图画。 - 关于预核算,创立一个线程来为下一个图画运转编码器。当加载新图画时,它将和下一张图画一起发送到作业线程进行编码器核算。之后,
image embedding
会缓存到上面的LRU
缓存中。假如图画现已在缓存中,作业线程将越过它。
SAM 模型运用过程
- 挑选左边的
Brain
按钮以激活主动符号。 - 从下拉菜单
Model
中挑选Segment Anything Models
类型的模型。模型精度和速度因模型而异。其间,Segment Anything Model (ViT-B)是最快的但精度不高。Segment Anything Model (ViT-H)是最慢和最精确的。Quant
表示量化过的模型。 - 运用主动切割符号东西符号方针。
- +Point:增加一个归于方针的点。
- -Point:移除一个你想从方针中扫除的点。
- +Rect:制作一个包括方针的矩形。Segment Anything 将主动切割方针。
- 清除:清除全部主动分段符号。
- 完结方针(f):当完结当时符号后,咱们能够及时按下快捷键f,输入标签称号并保存方针。
注意事项:
- 因为 SAM 布置时采用了编解码分离的范式并运用了 LRU 机制,因而第一次进行推理时后天会缓存多张(可自行设置)图片的
image_embedding
,具体见下述”集成方法”章节。 -
X-AnyLabeling
在第一次运转任何模型时,需求从远程服务器下载模型,或许需求一段时刻,这具体取决于本地的网络速度和服务运营商。此外,因为当时模型存放在 github 保管,因而假如没有开启科学上网的化,大概率会因为下载失利而中断,能够参阅后续实操过程处理。
集成方法
Segment Anything Model 分为两部分:一个很heavy
的编码器和一个lightweight
解码器。编码器从输入图画中提取图画嵌入。依据嵌入和输入提示(点、框、掩码),解码器生成输出掩码。解码器能够在单掩码或多掩码形式下运转。
在演示中,Meta 在服务器中运转编码器,而解码器能够在用户的浏览器中实时运转,如此一来用户便能够在其间输入点和框并立即接收输出。在本项目中,咱们还为每个图画只运转一次编码器。之后,依据用户提示的变化(点、框),运转解码器以生成输出掩码。项目增加了后处理过程来查找轮廓并生成用于符号的形状(多边形、矩形等)。
运用手册
怎么快速开端?
X-AnyLabeling
现在供给两种方法供咱们运转。第一种是倾向小白用户,咱们能够直接再 release 或许直接经过百度网盘链接下载编译好的 GUI 版别,翻开即用,具体可参阅以下链接:
第二种方法是经过下载源码运转,也是笔者比较主张的构建方法。具体的能够依据自己的机器和个人需求直接 pip 装置相关的依靠库即可。假如遇到某个包如(lap库)装置失利,能够自行上网查找下处理方案。此外,假如是想体会GPU加速功用,需求装置对应的 requirements*-gpu.txt 文件,一起修正文件中的 onnxruntime-gpu 版别号,要与 CUDA 匹配,具体适配对照表可参阅官方文档 [onnxruntime.ai/docs/execut…
怎么修正自定义快捷键?
X-AnyLalbeing 中相同供给了丰富的快捷键,极大提高标示功率。咱们可依据自己的习气经过修正当时设备的用户根目录下的 .anylabelingrc
文件进行修正:
#Linux
cd ~/.anylabelingrc
#Windows
cd C:\Users\xxx\.anylabelingrc
默许的快捷键设置能够参阅 github 主页示意图。
怎么支撑自定义模型?
怎么导入/导出自定义标签?
怎么编译打包成可执行文件?
可参阅以下打包指令:
#Windows-CPU
bash scripts/build_executable.sh win-cpu
#Windows-GPU
bash scripts/build_executable.sh win-gpu
#Linux-CPU
bash scripts/build_executable.sh linux-cpu
#Linux-GPU
bash scripts/build_executable.sh linux-gpu
注意事项:
- 编译前请针对相应的 GPU/CPU 版别修正
anylabeling/app_info.py
文件中的__preferred_device__
参数,一起依据对应参数激活对应的 GPU/CPU 虚拟环境;
- 假如需求编译
GPU
版别,请经过pip install -r requirements-gpu-dev.txt
装置对应的环境;特别的,关于GPU
版别的编译,请自行修正anylabeling-win-gpu.spec
的datas
列表参数,将您本地的onnxruntime-gpu
的相关动态库*.dll
or*.so
增加进列表中;此外,下载onnxruntime-gpu
包是需求依据CUDA
版别进行适配,具体匹配表可参阅官方文档说明。
- 关于
macos
版别可自行参阅anylabeling-win-*.spec
脚本进行修正。
写在最后
本文具体为咱们介绍了 X-AnyLabeling 的规划初衷及完好的功用特性介绍。作为一款支撑高度定制化的开源东西,其实咱们完全能够依据该项目进行二次开发;例如咱们能够联合方针追寻、检测及OCR辨认等做视频人物和字幕的解析;能够编写TensortRT后端完结更高效的推理;还能够引进AI Agent构建更高效和强壮的数据标定流程;
开源不易,希各位小伙伴给个 Star
鼓励支撑下吧!最后,假如你有新的主意想要讨论或许碰到难以处理的问题,欢迎增加小编vx:ww10874,备注X-AnyLabeling
,与我一同讨论和沟通。