
基于yolo-world模型的标注工具代码链接:https://gitee.com/dou-mengshen/annotation_custom.git注该代码已经完整封装成docker镜像可以直接pull docker镜像运行就可以1、基础介绍目录介绍├── annotation_docker# docker操作│ ├── docker_build │ ├── docker-pull-run.sh │ └── README.md ├── annotation_tool# 源码内容└── README.md目录作用docker_build根据源码和本地环境我的本地环境是conda env yolo-world创建源码和环境的docker镜像并在容器中运行docker-pull-run.sh我已经创建并上传docker容器到docker仓库可以直接使用该脚本拉取本人的docker镜像注本人的docker镜像是cuda11.8环境使用时根据自己情况重新构建docker镜像2、部署说明1、本地显卡驱动支持cuda11.8的话可以直接使用我的docker镜像直接使用下列命令运行# 第一步编辑 docker-pull-run.sh 中的标注数据目录DATA_IMAGES${DATA_IMAGES:-/media/vision-dou/测试硬盘/test}DATA_PROJECTS${DATA_PROJECTS:-/media/vision-dou/测试硬盘/projects}# 第二步执行一键拉取运行bashannotation_docker/docker-pull-run.sh2、如果本地环境的显卡驱动不支持cuda11.7的话建议直接在本地环境和源码目录annotation_tool安装相对应的环境直接在本地根据源码运行在本地跑通后如果自己需要docker工程迁移可以根据docker_readme构建属于自己的docker镜像。注意你在构建docker镜像前一定先看docker_readme文档的二、前置条件内容否则会返工3、使用说明见使用说明文大家可以多多使用并提供使用意见希望能做一个真正能高效使用到量产中的自动标注工具4、导出格式4.1、项目保存格式.yawproj通过 CtrlS 或 文件 → 保存项目 保存是一个 JSON 文件。文件结构{version:1.0,# 项目文件版本号config:{project_name:my_project,# 项目名称project_dir:/home/user/annotations,images_dir:/data/images,# 数据集路径model_type:yolox_attr,# 模型类型目前yolo_world / yolox_attrconfig_path:configs/yolox/xs_attr_960.py,#checkpoint_path:configs/yolox/latest_ckpt.pth,#device:cuda:0,use_amp:false,input_scale:[480,960],score_threshold:0.10,# 推理置信度阈值 (0~1)nms_threshold:0.50,# NMS IoU 阈值 (0~1)max_dets:100,# 一张图片最多框数roi_expand_ratio:0.10,image_extensions:[.jpg,.jpeg,.png,.bmp],attribute_defs:[# 属性定义列表{name:state,values:[red,green,yellow,...]},{name:direction,values:[front,back,left,right]},...]},classes:[# 类别列表{display:traffic_light,prompt:traffic_light}],images:[/data/images/img001.jpg,/data/images/img002.jpg],# 图片绝对路径列表annotations:{# key图片路径, value该图标注数据/data/images/img001.jpg:{image_width:1920,image_height:1080,boxes:[# 标注框列表{class_id:0,# 类别索引对应 classes 数组索引class_name:traffic_light,# 类别显示名x:520,y:300,w:60,h:80,# 框左上角 xy 坐标w、h宽高。 (像素坐标)confidence:0.92,# 检测置信度 (0~1)source:yolox_attr,# 来源auto / manual / roi_auto / yolox_attrconfirmed:false,# 是否已人工确认box_id:a1b2c3d4,# 8位唯一标识 (UUID8)attributes:{# 属性字典 {属性名: 属性值}无属性时为空 {}state:red,direction:front}}]}}}4.2、导出标签1、Yolo-detection 格式输出目录导出目录/yolo/导出目录/yolo/ ├── labels/# 标准 5 列 YOLO 格式│ ├── img001.txt │ └── img002.txt ├── classes.txt# 类别 属性定义└── labels_format.txt# 格式说明文档labels/*.txt5N 列有属性时00.5260420.3148150.0312500.07407401010000列参数说明1class_id类别索引 (0-based)2x_center边界框中心 x 坐标除以图片宽度归一化 0~13y_center边界框中心 y 坐标除以图片高度归一化 0~14width边界框宽度除以图片宽度归一化 0~15height边界框高度除以图片高度归一化 0~16attr_N属性索引值列数 UI 中 attribute_defs 的属性数-1该属性未被标注有定义但无值2、COCO JSON格式输出导出目录/coco/annotations.json labels_format.txt{images:[{id:1,# 图片唯一 ID (从 1 开始)file_name:img001.jpg,# 图片路径width:1920,# 图片宽度 (像素)height:1080# 图片高度 (像素)}],annotations:[{id:1,# 标注唯一 IDimage_id:1,# 关联的图片 IDcategory_id:1,# 关联的类别 IDbbox:[520,300,60,80],# COCO 格式边界框 [左上x, 左上y, 宽, 高]像素area:4800,# 框面积 (w × h)iscrowd:0,# 框面积 (w × h)score:0.92# 检测置信度}],categories:[{id:1,name:traffic_light,supercategory:none}]}3、Pascal VOC XML格式输出导出目录/voc/Annotations/*.xml labels_format.txt?xml version1.0 encodingutf-8?annotationfilenameimg001.jpg/filename# 图片文件名size# 图片尺寸像素通道数3width1920/widthheight1080/heightdepth3/depth/sizeobjectnametraffic_light/name# 类别名bndboxxmin520/xmin# 框左上角 (像素)ymin300/yminxmax580/xmax# 框右下角 (像素)ymax380/ymax/bndbox/object/annotation4、Labelme JSON格式输出导出目录/labelme/labelme_json/*.json labels_format.txt{version:5.5.0,shapes:[{label:traffic_light,// 类别名points:[[520,300],[580,380]],// [[[左上x, 左上y], [右下x, 右下y]]](http://vscodecontentref/51)像素shape_type:rectangle// 固定为 rectangle}],imagePath:img001.jpg,imageHeight:1080,imageWidth:1920}5、后续工作添加yolo多属性预测已完整添加Ultralytics系列模型加载自动标注功能目的线使用yolo-world标注然后微调自己的yolo模型再实现更精准的自动标注添加LocateAnything-3B模型VLM