1.手动标注软件(labeling)
pip3 install labelImg
labelImg
2.自动标注软件(x-anylabeling)
安装教程
#创建和激活 Conda 环境:
conda create --name x-anylabeling python=3.9 -y
conda activate x-anylabeling
#安装 ONNX 运行时(根据需要选择 CPU 或 GPU 版本):
(这个都装也无所谓,如果需要 GPU 加速,请在 app_info.py 中设置 __preferred_device__ = 'GPU')
# CPU版本
pip install onnxruntime
# GPU版本(CUDA 11.x)
pip install onnxruntime-gpu==1.16.0(cuda11.8)
重要:确保本地 CUDA 和 cuDNN 版本与 ONNX 运行时兼容。
#克隆代码库并安装依赖项:
git clone https://github.com/CVHub520/X-AnyLabeling.git
cd X-AnyLabeling
pip install -r requirements-gpu.txt
#生成资源文件:
pyrcc5 -o anylabeling/resources/resources.py anylabeling/resources/resources.qrc
#设置环境变量:
export PYTHONPATH=/path/to/X-AnyLabeling(改自己的地址)
python anylabeling/app.py
有这个报错加指令
sudo update
sudo apt install -y libxcb-xinerama0 libxkbcommon-x11-0 libxcb1 libxcb-util1
python anylabeling/app.py
我还出现了这个报错,打开 auto_labeling.py
文件,找到第 195 行附近的代码。
能打开可视化界面就说明安装成功了,需要先训练一个一两千张的模型,然后配置ai模型,这里需要文件夹内包含一个.onnx(模型)和.yaml文件,然后跟着在跟着教程走,处理数据集,最后处理后的标注文件还需要一个文件配置,文件夹内除了需要你自动标注完成的.json外还需要classes.txt和coco.yaml,具体配置看xanylabeling_data(我的文件夹)
使用 tools/label_converter.py
脚本将 X-AnyLabeling 生成的 JSON 文件 转换为 YOLO 格式的 *.txt
文件。以下是详细步骤:
转换指令
假设你的 JSON 文件位于 custom_folder
,需要将其转换为 YOLO 格式并存放在 yolo_folder
:
针对矩形标注任务(rectangle)
python tools/label_converter.py --task rectangle --src_path custom_folder --dst_path yolo_folder --classes classes.txt --mode custom2yolo
针对多边形标注任务(polygon)
python tools/label_converter.py --task polygon --src_path custom_folder --dst_path yolo_folder --classes classes.txt --mode custom2yolo
参数说明
-
--task
-
rectangle
:矩形标注任务。 -
polygon
:多边形标注任务。
-
-
--src_path
JSON 文件所在的文件夹路径。 -
--dst_path
YOLO 格式输出的目标文件夹路径。 -
--classes
类别定义文件,每行一个类别名称,顺序决定类别编号。例如:plaintextperson car dog
-
--mode
转换模式,custom2yolo
表示从自定义 JSON 格式转换为 YOLO 格式。
执行完成后
-
在目标文件夹
yolo_folder
中,你将获得以下内容:-
每张图像对应的 YOLO 格式
*.txt
文件。 -
文本格式:
<class_id> <x_center> <y_center> <width> <height>
-
-
验证是否正确:
-
检查输出文件的内容是否符合 YOLO 格式。
-
确保类别定义文件(
classes.txt
)的顺序和模型训练时的一致。
-
注意事项
-
如果
tools/label_converter.py
脚本无法直接运行,请确认 Python 环境是否正确,并在项目目录下执行脚本。 -
对于多边形标注任务,只支持 YOLO 格式的检测和分割。
我的指令
python /home/dhx/X-AnyLabeling/tools/label_converter.py --task rectangle --src_path /home/dhx/xanylabeling_data/标签转换 --dst_path /home/dhx/xanylabeling_data/转换完成 --classes /home/dhx/xanylabeling_data/标签转换/classes.txt --mode custom2yolo
语义分割任务如何将输出的标签文件转换为 *.png 格式输出? A: 针对工具本身自定义(custom
)的格式,我们可以使用工程目录下的 tools/polygon_mask_conversion.py
脚本轻松转换,以下是参考的转换指令:
python tools/polygon_mask_conversion.py --img_path xxx_folder --mask_path xxx_folder --mode poly2mask
# [option] 如果标签和图像不在同一目录下,请使用以下命令:
python tools/polygon_mask_conversion.py --img_path xxx_folder --mask_path xxx_folder --json_path xxx_folder --mode poly2mask
我的
python tools/polygon_mask_conversion.py --img_path /home/dhx/dhxyolov5/yolov5-7.0/mydata/images/train --mask_path /home/dhx/dhxyolov5/yolov5-7.0/mydata/make_post --json_path /home/dhx/dhxyolov5/yolov5-7.0/mydata/mask_pre --mode poly2mask
同样地,也支持将掩码图一键转换为自定义格式导入 X-AnyLabeling
中进行修正,输出的 *.json
文件默认保存至 'img_path' 目录:
python tools/polygon_mask_conversion.py --img_path xxx_folder --mask_path xxx_folder --mode mask2poly