YOLO11实例分割教程:快速掌握数据标注、格式转换与模型训练
YOLO11实例分割教程快速掌握数据标注、格式转换与模型训练1. 准备工作与环境搭建1.1 获取YOLO11镜像YOLO11镜像提供了完整的计算机视觉开发环境包含预装好的所有依赖项。您可以通过以下两种方式使用Jupyter Notebook方式启动后访问提供的URL支持交互式开发和代码调试SSH连接方式通过终端连接适合习惯命令行操作的用户1.2 项目目录结构进入项目目录是第一步cd ultralytics-8.3.9/建议创建以下目录结构ultralytics-main/ datasets/ # 存放训练数据 weights/ # 存放预训练模型 train.py # 训练脚本 infer.py # 推理脚本2. 数据标注与格式转换2.1 使用Labelme进行标注推荐使用Labelme工具进行实例分割标注安装Labelmepip install labelme标注步骤点击Open Dir加载图像文件夹选择Create Polygon工具绘制物体轮廓保存后生成与图片同名的JSON文件2.2 转换为YOLO格式YOLO11实例分割需要特定格式的标签文件格式如下class-index x1 y1 x2 y2 ... xn yn使用以下Python代码将Labelme的JSON转换为YOLO格式import json import os def convert_labelme_to_yolo(json_file, output_dir, img_size(640,640)): with open(json_file) as f: data json.load(f) txt_path os.path.join(output_dir, f{os.path.splitext(os.path.basename(json_file))[0]}.txt) with open(txt_path, w) as txt_file: for shape in data[shapes]: points [(x/img_size[0], y/img_size[1]) for x,y in shape[points]] line f{class_mapping[shape[label]]} .join(f{p[0]:.6f} {p[1]:.6f} for p in points) txt_file.write(line \n) # 示例使用 class_mapping {person:0, car:1} # 根据实际类别修改 convert_labelme_to_yolo(example.json, labels)3. 配置训练环境3.1 数据集YAML配置在ultralytics/cfg/datasets/下创建数据集配置文件例如custom-seg.yamlpath: ./datasets/custom_seg train: images/train val: images/val names: 0: person 1: car 2: bicycle3.2 模型配置文件YOLO11提供了多种预定义的模型配置位于ultralytics/cfg/models/11/目录下。对于实例分割任务我们使用yolo11-seg.yaml# YOLO11n backbone backbone: - [-1, 1, Conv, [64, 3, 2]] # 0-P1/2 - [-1, 1, Conv, [128, 3, 2]] # 1-P2/4 # ... 其他层配置 # YOLO11n head head: - [[16, 19, 22], 1, Segment, [nc, 32, 256]] # 分割头4. 模型训练4.1 编写训练脚本创建train.py文件from ultralytics import YOLO # 加载模型 model YOLO(yolo11m-seg.yaml).load(weights/yolo11m-seg.pt) # 训练参数 train_args { data: custom-seg.yaml, epochs: 50, imgsz: 640, batch: 8, device: 0, # 使用GPU workers: 4, optimizer: AdamW, lr0: 0.001, name: custom_seg_train } # 开始训练 results model.train(**train_args)4.2 启动训练运行训练脚本python train.py训练过程中会输出如下信息Epoch GPU_mem box_loss seg_loss cls_loss dfl_loss Instances 1/50 5.23G 1.423 2.876 1.195 1.21 12 ... 50/50 5.25G 0.4153 0.5265 0.2487 0.6369 85. 模型推理与效果验证5.1 编写推理脚本创建infer.py文件from ultralytics import YOLO import cv2 # 加载训练好的模型 model YOLO(runs/segment/custom_seg_train/weights/best.pt) # 单张图片推理 results model.predict( sourcetest.jpg, conf0.5, saveTrue, showTrue ) # 视频流推理 cap cv2.VideoCapture(0) while cap.isOpened(): ret, frame cap.read() if not ret: break results model(frame) annotated_frame results[0].plot() cv2.imshow(YOLO11 Segmentation, annotated_frame) if cv2.waitKey(1) ord(q): break cap.release() cv2.destroyAllWindows()5.2 评估指标解读训练完成后主要关注以下指标mAP50: 在IoU0.5时的平均精度mAP50-95: IoU从0.5到0.95的平均精度Mask mAP: 分割掩码的精度Box/Pixel Accuracy: 检测框/像素级精度6. 常见问题解决6.1 训练问题排查Loss不下降检查学习率是否合适验证数据标注是否正确尝试减小batch size内存不足train_args { batch: 4, # 减小batch size imgsz: 512 # 减小图像尺寸 }6.2 推理效果优化调整置信度阈值results model.predict(sourceimage.jpg, conf0.3) # 降低阈值检测更多对象使用测试时增强results model.predict(sourceimage.jpg, augmentTrue)7. 总结与进阶建议通过本教程您已经掌握了YOLO11实例分割的完整流程。以下是进一步优化的建议数据增强在配置文件中增加更多数据增强选项hsv_h: 0.015 # 色相增强 hsv_s: 0.7 # 饱和度增强 flipud: 0.5 # 上下翻转概率模型微调尝试不同的预训练权重model YOLO(yolo11x-seg.pt) # 使用更大的预训练模型部署优化将模型导出为ONNX或TensorRT格式提升推理速度model.export(formatonnx) # 导出为ONNX格式获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2510588.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!