简介
X-AnyLabeling 是一款基于AI推理引擎和丰富功能特性于一体的强大辅助标注工具,其专注于实际应用,致力于为图像数据工程师提供工业级的一站式解决方案,可自动快速进行各种复杂任务的标定。
亮点
- 支持GPU推理加速;
- 支持图像和视频处理;
- 支持单帧和批量预测所有任务;
- 支持自定义模型和二次开发设计;
- 支持一键导入和导出主流的标签格式,如COCO\VOC\YOLO\DOTA\MOT\MASK;
- 支持多种图像标注样式,包括 多边形、矩形、旋转框、圆形、线条、点,以及 文本检测、识别 和 KIE 标注;
- 支持各类视觉任务,如图像分类、目标检测、实例分割、姿态估计、旋转检测、多目标跟踪、光学字符识别、图像文本描述、车道线检测、分割一切系列等。
快速入门指南
运行模式
目前 X-AnyLabeling
支持两种运行方式,一种是下载源码直接运行,另一种是直接下载编译好的 GUI
版本运行。需要注意的时,为了保证用户能使用到最新的功能特性和最稳定的性能体验,强烈建议从源码运行。
源码运行
- 下载源码
git clone https://github.com/CVHub520/X-AnyLabeling.git
- 安装依赖
目前,X-AnyLabeling
针对不同的运行环境提供了多份依赖文件:
依赖文件 | 系统环境 | 运行环境 | 是否支持打包 |
---|---|---|---|
requirements.txt | Windows/Linux | CPU | 否 |
requirements-dev.txt | Windows/Linux | CPU | 是 |
requirements-gpu.txt | Windows/Linux | GPU | 否 |
requirements-gpu-dev.txt | Windows/Linux | GPU | 是 |
requirements-macos.txt | MacOS | CPU | 否 |
requirements-macos-dev.txt | MacOS | CPU | 是 |
由于当前工具内置的模型推理后端为 OnnxRuntime
,因此,如果您希望利用 GPU 进行模型推理加速,请务必确保本地 CUDA 版本与 onnxruntime-gpu
版本兼容,以确保顺利调用显卡。有关详细信息,请参考官方文档。同时,请务必将app_info.py配置文件中的__preferred_device__
字段设置为GPU
。
- 启动工具
在 X-AnyLabeling
工程目录下执行以下命令进行启动:
python anylabeling/app.py
设置当前工作环境变量可参考以下步骤:
- Linux/MasOS
- export PYTHONPATH=/path/to/X-AnyLabeling
- Windows
- set PYTHONPATH=C:\path\to\X-AnyLabeling
GUI 环境运行
在使用 X-AnyLabeling
自身提供的 GUI
环境运行时,相较于源码运行,最大的优势在于其方便快捷,用户无需深入关注底层实现细节,只需下载完成即可立即使用,省去了繁琐的环境配置和依赖安装步骤。然而,这种便捷方式也存在一些明显的弊端,主要包括:
-
不易排查问题: 当出现闪退或报错问题时,由于用户无法直接查看源码,难以快速定位具体原因,使问题排查变得相对困难。
-
GPU加速限制: 对于希望通过调用GPU进行加速推理的用户,存在较大限制。当前提供的编译版本基于CUDA 11.6和onnxruntime 1.16.0版本进行打包编译,可能无法满足某些用户对于最新硬件或库版本的需求。
-
功能特性滞后: 由于无法及时更新编译版本,GUI环境运行可能无法享受到最新的功能特性,并且一些潜在的bug可能未能及时修复,影响了用户的整体体验。
为了在选择运行方式时能够更好地权衡利弊,建议用户根据具体需求和偏好,灵活选择源码运行或GUI环境运行,以达到最佳的使用体验。
文件导入
X-AnyLabeling
目前提供了三种便捷的导入方式,如下所示:
导入方式 | 快捷键 |
---|---|
图像文件 | Ctrl+I |
图像目录 | Ctrl+U |
视频文件 | Ctrl+O |
需要注意的是,默认的标注文件保存路径为导入文件路径,如果需要存放到其它目录,可点击左上角 文件
-> 另存为
,选择保存目录即可。
快速绘制
当前 X-AnyLabeling
中支持多边形、矩形框、旋转框、圆形、线段、多线段和点等多种标注样式,可供用户灵活地选取。部分绘制模式的快捷键设置如下:
标注样式 | 快捷键 | 应用场景 |
---|---|---|
多边形 | P | 图像分割 |
矩形框 | R | 水平目标检测 |
旋转框 | O | 旋转目标检测 |
圆形 | - | 特定场景 |
线段 | - | 车道线检测 |
多线段 | - | 血管分割 |
点 | - | 关键点检测 |
X-AnyLabeling
交互模式目前主要有两种:
- 编辑模式:此状态下用户可移动、复制、黏贴、修改对象等;
- 绘制模式:此状态下仅支持绘制相应地标注样式;
目前在 矩形框、旋转框、圆形、线段、点五种标注样式下,当图案绘制完成后,会自动切换到编辑模式。对于其它两种样式,用户可通过快捷键 Ctrl+J
完成快速切换。
辅助推理
对于想要使用 X-AnyLabeling
工具提供的 AI 算法功能库,可点击左侧菜单栏带 AI
字样的图标或直接按下快捷键 Ctrl+A
调出模型列表,点击下拉框选择自己需要的模型即可。如遇下载失败情况,请参考custom_model.md文档。
一键运行
X-AnyLabeling
工具中提供了实用的 一键运行
功能给予用户快速完成对当前批次任务的标注工作,用户可直接点击左侧菜单栏带 播放
图案的图标或直接按下快捷键 Ctrl+M
唤醒该功能,自动完成从当前图片到最后一张图片的标注。
需要注意的是,此项功能需要在给定模型被激活的状态下使用。此外一经开启便需要跑完整个任务,因此在启动之前笔者强烈建议先在小批量图片上进行测试,确保无误后再调用此功能。
打包编译
请注意,以下步骤是非必要的,本小节内容仅为可能需要自定义和编译软件以在特定环境中分发的用户提供的。如果您只是单纯使用本软件,请跳过这一步骤。
展开/折叠
为了方便用户在不同平台上运行 X-AnyLabeling
,工具提供了打包编译的指令和相关注意事项。在执行以下打包指令之前,请根据您的环境和需求,修改 app_info.py 文件中的 __preferred_device__
参数,以选择相应的 GPU 或 CPU 版本进行构建。
注意事项:
-
在编译前,请确保已经根据所需的 GPU/CPU 版本修改了
anylabeling/app_info.py
文件中的__preferred_device__
参数。 -
如果需要编译 GPU 版本,请先激活相应地
GPU
运行环境,执行pip install | grep onnxruntime-gpu
确保被正确安装。 -
对于 Windows-GPU 版本的编译,需要手动修改
anylabeling-win-gpu.spec
文件中的datas
列表参数,将本地的onnxruntime-gpu
相关动态库*.dll
添加进列表中。 -
对于 Linux-GPU 版本的编译,需要手动修改
anylabeling-linux-gpu.spec
文件中的datas
列表参数,将本地的onnxruntime-gpu
相关动态库*.so
添加进列表中。此外,请注意根据您的 CUDA 版本下载匹配的onnxruntime-gpu
包,详细匹配表可参考官方文档。
参考指令:
# 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
注:如果您在 Windows 环境下执行以上指令出现权限问题的话,可在确保上述准备工作完成之后,直接根据需要执行以下指令:
pyinstaller --noconfirm anylabeling-win-cpu.spec
pyinstaller --noconfirm anylabeling-win-gpu.spec