YOLO26镜像实战案例分享:基于自定义数据集的训练与评估

news2026/4/10 4:56:13
YOLO26镜像实战案例分享基于自定义数据集的训练与评估在计算机视觉领域目标检测一直是核心且应用广泛的任务。从安防监控到自动驾驶从工业质检到医疗影像快速准确地识别图像中的物体是许多智能系统的基石。YOLO系列模型以其卓越的速度与精度平衡成为了该领域的标杆。随着YOLO26的发布其在保持YOLO家族高效特性的基础上进一步提升了检测精度和模型鲁棒性。然而官方发布的预训练模型虽然强大但往往是在通用数据集如COCO上训练的。要让模型真正解决你的实际问题——比如识别生产线上的特定瑕疵、分析医学影像中的病灶、或者检测交通场景中的特殊车辆——就必须使用你自己的数据进行训练。这个过程听起来复杂但有了合适的工具和环境完全可以高效完成。本文将以“最新 YOLO26 官方版训练与推理镜像”为基础手把手带你完成一次完整的自定义数据集训练与评估实战。我们将从数据准备开始一步步完成环境配置、模型训练、效果评估最终得到一个专属于你业务场景的高性能检测模型。无论你是刚接触目标检测的新手还是希望将YOLO26应用于新场景的开发者这篇指南都将提供清晰的路径和可复现的代码。1. 环境准备与数据盘迁移工欲善其事必先利其器。我们首先需要确保工作环境正确无误并将代码迁移到合适的位置为后续操作打好基础。1.1 激活预置环境启动“最新 YOLO26 官方版训练与推理镜像”后系统已经为我们安装好了所有必要的依赖包括PyTorch 1.10.0、CUDA 12.1以及一系列计算机视觉库。为了使用这个专门为YOLO26配置的环境我们需要先激活它。打开终端输入以下命令conda activate yolo执行成功后命令行提示符通常会发生变化显示当前已处于(yolo)环境中。这一步至关重要它确保了后续所有Python命令都能调用到正确版本的库。1.2 迁移代码至数据盘镜像启动后默认的YOLO26代码存放在系统盘如/root/ultralytics-8.4.2。为了便于我们持久化保存修改后的代码、训练产生的模型以及日志文件建议将代码目录复制到数据盘/root/workspace。数据盘的空间通常更大且内容在实例重启后得以保留。执行复制命令cp -r /root/ultralytics-8.4.2 /root/workspace/复制完成后进入新的工作目录cd /root/workspace/ultralytics-8.4.2现在我们所有后续的操作都将在/root/workspace/ultralytics-8.4.2目录下进行。你可以通过ls命令查看目录内容确认包含了ultralytics核心代码文件夹、requirements.txt等文件。2. 准备你的自定义数据集训练自己的模型数据是灵魂。YOLO格式的数据集组织清晰理解其结构是成功的第一步。2.1 YOLO数据集格式详解一个标准的YOLO格式数据集目录结构如下your_custom_dataset/ ├── images/ │ ├── train/ │ │ ├── image1.jpg │ │ ├── image2.jpg │ │ └── ... │ └── val/ │ ├── image100.jpg │ ├── image101.jpg │ └── ... └── labels/ ├── train/ │ ├── image1.txt │ ├── image2.txt │ └── ... └── val/ ├── image100.txt ├── image101.txt └── ...images/存放所有图片文件通常按train训练集和val验证集子文件夹分开。labels/存放与图片一一对应的标注文件。每个.txt文件代表一张图片的标注其名称与图片文件相同仅扩展名不同。标注文件.txt的内容格式为每行一个物体每行包含5个数值class_id x_center y_center width heightclass_id物体的类别索引整数从0开始。x_center,y_center物体边界框中心的归一化坐标除以图片宽度和高度后的值范围0-1。width,height物体边界框的归一化宽高范围0-1。例如一张640x480图片中有一个类别为“狗”假设class_id0的物体其边界框左上角为(100, 120)右下角为(300, 360)那么标注内容为0 0.3125 0.5 0.3125 0.5计算过程中心点 x(100300)/2/6400.3125中心点 y(120360)/2/4800.5宽度 w(300-100)/6400.3125高度 h(360-120)/4800.5。2.2 创建数据集配置文件数据集准备好后我们需要创建一个YAML配置文件例如data_custom.yaml告诉YOLO去哪里找数据和有哪些类别。在代码根目录下创建这个文件# data_custom.yaml path: /root/workspace/ultralytics-8.4.2/datasets/your_custom_dataset # 数据集根目录 train: images/train # 训练集图片路径相对于path val: images/val # 验证集图片路径相对于path # 类别名称列表 names: 0: cat 1: dog 2: person # ... 添加你的所有类别关键点path必须是绝对路径。train和val是相对于path的路径。names字典的键0,1,2...必须与标注文件中的class_id严格对应。3. 模型训练实战环境就绪数据备好现在可以开始最核心的训练环节了。我们将编写一个训练脚本并理解其中每个参数的意义。3.1 编写训练脚本在代码根目录下创建一个名为train_custom.py的文件内容如下# train_custom.py import warnings warnings.filterwarnings(ignore) # 忽略一些不影响运行的警告信息 from ultralytics import YOLO if __name__ __main__: # 1. 加载模型结构 # 这里使用YOLO26的Nano版本配置文件你也可以选择 yolo26s.yaml, yolo26m.yaml 等 model YOLO(model/root/workspace/ultralytics-8.4.2/ultralytics/cfg/models/26/yolo26n.yaml) # 2. 可选加载预训练权重 # 使用官方在COCO上预训练的权重进行初始化可以加速收敛通常效果更好。 # 对于全新的类别你也可以选择不加载从头开始训练。 model.load(yolo26n.pt) # 3. 开始训练 model.train( datadata_custom.yaml, # 上一步创建的数据集配置文件路径 imgsz640, # 输入图片尺寸YOLO26常用640 epochs100, # 训练总轮数根据数据集大小调整 batch16, # 批次大小根据GPU内存调整 workers4, # 数据加载的进程数 device0, # 使用GPU 0如果是CPU则填 cpu optimizerSGD, # 优化器SGD或AdamW lr00.01, # 初始学习率 lrf0.01, # 最终学习率因子 (lr0 * lrf) momentum0.937, # SGD动量 weight_decay0.0005, # 权重衰减防止过拟合 warmup_epochs3.0, # 学习率热身轮数 warmup_momentum0.8, # 热身阶段初始动量 box7.5, # 边界框损失权重 cls0.5, # 分类损失权重 dfl1.5, # DFL损失权重 pose0.0, # 姿态估计损失权重非姿态模型保持0 kobj1.0, # 关键点对象性损失权重 label_smoothing0.0, # 标签平滑 nbs64, # 名义批次大小 hsv_h0.015, # 色调增强幅度 hsv_s0.7, # 饱和度增强幅度 hsv_v0.4, # 明度增强幅度 degrees0.0, # 旋转角度增强 translate0.1, # 平移增强 scale0.5, # 缩放增强 shear0.0, # 剪切增强 perspective0.0, # 透视增强 flipud0.0, # 上下翻转概率 fliplr0.5, # 左右翻转概率 mosaic1.0, # Mosaic数据增强概率 mixup0.0, # MixUp数据增强概率 copy_paste0.0, # 复制粘贴增强概率 auto_augmentrandaugment,# 自动增强策略 erasing0.4, # 随机擦除概率 crop_fraction1.0, # 裁剪比例 close_mosaic10, # 最后N个epoch关闭Mosaic增强 resumeFalse, # 是否从上次检查点恢复训练 ampTrue, # 自动混合精度训练节省显存并加速 fraction1.0, # 训练数据集使用比例 profileFalse, # 是否在训练时进行性能分析 freezeNone, # 冻结前N层 backbone用于迁移学习 # 输出设置 projectruns/train, # 训练结果保存的根目录 nameexp_custom, # 实验名称会生成子目录如 runs/train/exp_custom exist_okFalse, # 如果实验目录已存在是否覆盖 pretrainedTrue, # 是否使用预训练权重如果未通过load指定 seed0, # 随机种子 deterministicTrue, # 是否启用确定性模式保证可复现性 single_clsFalse, # 是否将所有类别视为单一类别训练 rectFalse, # 是否使用矩形训练 cos_lrFalse, # 是否使用余弦退火学习率调度 patience100, # 早停耐心值 saveTrue, # 是否保存训练检查点和最终模型 save_period-1, # 每N个epoch保存一次检查点-1为仅保存最后 cacheFalse, # 是否缓存数据集到内存或磁盘ram/disk image_weightsFalse, # 是否使用图片权重进行采样 overlap_maskTrue, # 训练时分割掩码是否重叠 mask_ratio4, # 下采样掩码比率 dropout0.0, # 使用分类器Dropout valTrue, # 训练中是否进行验证 plotsTrue, # 是否保存训练结果图表 )这个脚本包含了丰富的参数但对于初次训练你主要需要关注以下几个data: 确保指向你创建的data_custom.yaml。epochs: 训练轮数小数据集可能需要更多轮大数据集可能较少轮就收敛。batch: 根据你的GPU内存调整。如果训练时出现“CUDA out of memory”错误就减小这个值。device: 指定使用的GPU编号。imgsz: 图片输入尺寸保持640即可除非你有特殊需求。projectname: 决定了训练日志和模型保存的位置。3.2 启动训练在终端中确保位于代码根目录然后运行训练脚本python train_custom.py训练开始后终端会输出类似以下的信息模型结构显示加载的模型参数数量。数据集信息显示找到的训练集和验证集图片数量、类别数量。训练进度一个进度条显示当前epoch、损失值box_loss, cls_loss等、学习率等。验证结果每个epoch结束后如果valTrue会输出在验证集上的精度指标如mAP50、mAP50-95等。所有训练过程日志、模型权重、评估图表都会自动保存到runs/train/exp_custom以你的name参数为准目录下。4. 模型评估与结果分析训练完成后我们需要客观地评估模型的性能理解其优劣。4.1 使用验证集进行评估训练脚本在训练过程中已经进行了验证。但我们也可以在训练结束后使用最好的模型权重进行更全面的评估。在代码根目录创建val_custom.py# val_custom.py from ultralytics import YOLO # 加载训练得到的最佳模型 # 权重文件通常保存在 runs/train/exp_custom/weights/best.pt model YOLO(runs/train/exp_custom/weights/best.pt) # 在验证集上进行评估 metrics model.val( datadata_custom.yaml, imgsz640, batch16, workers4, device0, splitval, # 评估验证集 conf0.001, # 评估时使用的置信度阈值 iou0.6, # 评估时使用的IoU阈值 max_det300, # 每张图片最大检测数 halfFalse, # 是否使用半精度评估 dnnFalse, # 是否使用OpenCV DNN进行推理 plotsTrue, # 生成评估图表如混淆矩阵、PR曲线等 save_jsonFalse, # 是否保存结果为JSON文件 save_hybridFalse, # 是否保存混合标签 ) # 打印关键指标 print(fmAP50: {metrics.box.map50:.4f}) print(fmAP50-95: {metrics.box.map:.4f}) print(fPrecision: {metrics.box.p:.4f}) print(fRecall: {metrics.box.r:.4f})运行评估脚本python val_custom.py4.2 理解评估指标评估结果会生成一系列图表和数值主要关注以下几个混淆矩阵 (confusion_matrix.png)直观展示模型在各个类别上的分类情况对角线越亮说明分类越准。PR曲线 (PR_curve.png) Precision-Recall曲线曲线下的面积越大模型性能越好。通常会为每个类别和整体所有类别平均绘制曲线。F1-置信度曲线 (F1_curve.png) F1分数随置信度阈值变化的曲线可以帮助你选择一个最优的置信度阈值用于推理。关键指标mAP50: 在IoU阈值为0.5时的平均精度均值是目标检测最常用的核心指标。mAP50-95: 在IoU阈值从0.5到0.95步长0.05区间内的平均mAP更能综合反映模型定位精度。Precision (精确率): 模型预测为正的样本中真正为正的比例。TP / (TP FP)Recall (召回率): 所有真实为正的样本中被模型正确预测出来的比例。TP / (TP FN)分析这些结果如果发现某个类别精度很低可能需要检查该类的标注质量或增加训练样本。5. 模型推理与部署模型评估满意后就可以用它来对新图片或视频进行推理了。5.1 编写推理脚本创建detect_custom.py# detect_custom.py from ultralytics import YOLO import cv2 def main(): # 加载我们训练好的最佳模型 model YOLO(runs/train/exp_custom/weights/best.pt) # 推理单张图片 results model.predict( sourcepath/to/your/test_image.jpg, # 图片/视频路径或摄像头ID如0 conf0.25, # 置信度阈值高于此值的检测框才会保留 iou0.7, # 非极大值抑制的IoU阈值 imgsz640, # 推理尺寸应与训练时一致 saveTrue, # 保存带标注的结果图片 save_txtFalse, # 是否保存检测框的txt文件YOLO格式 save_confFalse, # 保存txt文件时是否包含置信度 save_cropFalse, # 是否将检测到的目标裁剪保存 showTrue, # 是否显示结果在GUI环境下 projectruns/detect, # 结果保存目录 nameexp, # 实验名称 exist_okTrue, # 是否覆盖已存在的实验目录 line_width3, # 标注框的线宽 visualizeFalse, # 是否可视化模型特征图 augmentFalse, # 是否使用测试时数据增强 agnostic_nmsFalse, # 是否使用类别无关的NMS retina_masksFalse, # 是否使用高分辨率分割掩码 boxesTrue, # 是否显示边界框 ) # 处理并打印结果 for result in results: boxes result.boxes # 边界框信息 masks result.masks # 分割掩码信息如果模型支持 keypoints result.keypoints # 关键点信息如果模型支持 probs result.probs # 分类概率如果任务是分类 # 打印检测到的物体数量 print(fDetected {len(boxes)} objects.) # 遍历每个检测框 if boxes is not None: for box in boxes: # 获取坐标、置信度、类别ID xyxy box.xyxy[0].cpu().numpy() # 左上右下坐标 [x1, y1, x2, y2] conf box.conf[0].cpu().numpy() # 置信度 cls int(box.cls[0].cpu().numpy()) # 类别ID cls_name model.names[cls] # 类别名称 print(f Class: {cls_name} ({cls}), Conf: {conf:.2f}, Box: {xyxy}) if __name__ __main__: main()运行这个脚本它会在runs/detect/exp目录下生成一张带有检测框的新图片。5.2 模型导出为部署格式为了在边缘设备或其他推理框架中使用我们通常需要将PyTorch模型导出为通用格式。# export_model.py from ultralytics import YOLO model YOLO(runs/train/exp_custom/weights/best.pt) # 导出为 ONNX 格式广泛支持的中间格式 model.export(formatonnx, imgsz640, simplifyTrue) # 导出为 TensorRT 引擎NVIDIA GPU上极速推理 # 需要先安装 tensorrt # pip install tensorrt model.export(formatengine, imgsz640, halfTrue) # halfTrue 使用FP16加速 # 导出为 CoreML 格式苹果设备 # model.export(formatcoreml, imgsz640) # 导出为 OpenVINO 格式Intel硬件 # model.export(formatopenvino, imgsz640)导出的模型文件如best.onnx,best.engine可以集成到C、Java等应用程序或部署到TensorRT、OpenVINO等推理服务器中实现高性能生产级推理。6. 总结通过本文的实战演练我们完成了一次完整的YOLO26自定义模型训练与评估流程。我们从激活环境、准备数据开始详细讲解了如何配置数据集、编写训练脚本并理解关键参数接着对训练好的模型进行了系统评估最后实现了模型推理并探讨了部署选项。整个过程的核心要点可以总结为以下几点数据为王高质量、标注准确的数据集是模型成功的基石。务必仔细检查你的YOLO格式数据和配置文件。参数调优首次训练可以使用默认参数但根据你的数据集大小、类别数和硬件条件适当调整epochs、batch、lr0等参数能获得更好效果。监控与评估密切关注训练过程中的损失曲线和验证集指标mAP。它们是判断模型是否收敛、是否过拟合的关键。迭代改进如果模型效果不佳不要气馁。检查数据质量、尝试数据增强、调整模型结构如换用更大的yolo26s.yaml、或者尝试不同的超参数这是一个迭代优化的过程。从训练到部署YOLO26镜像不仅提供了训练环境其便捷的导出功能也打通了从实验到生产的路径。利用“最新 YOLO26 官方版训练与推理镜像”你将复杂的深度学习环境配置、依赖管理等问题交给了平台可以更专注于数据、模型和业务逻辑本身。现在你可以开始用你自己的数据训练出解决特定问题的“火眼金睛”了。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2501762.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…