使用目标检测yolo11去训练微藻细胞检测数据集YOLO格式703张6类别步骤和流程

发布于:2025-07-23 ⋅ 阅读:(18) ⋅ 点赞:(0)

【数据集介绍】
数据集格式:YOLO格式(仅仅包含jpg图片以及对应的yolo格式txt文件)
图片数量(jpg文件个数):703
标注数量(xml文件个数):703
标注数量(txt文件个数):703
标注类别数:6
所在仓库:firc-dataset
标注类别名称(注意yolo格式类别顺序不和这个对应,而以labels文件夹classes.txt为准):[“Platymonas”,“Chlorella”,“Dunaliella salina”,“Effrenium”,“Porphyridium”,“Haematococcus”]
每个类别标注的框数:
Platymonas 框数 = 184
Chlorella 框数 = 722
Dunaliella salina 框数 = 234
Effrenium 框数 = 227
Porphyridium 框数 = 272
Haematococcus 框数 = 119
总框数:1758
使用标注工具:labelImg
标注规则:对类别进行画矩形框
重要说明:暂无
特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注
图片预览:
在这里插入图片描述

标注例子:
在这里插入图片描述
数据集中图片分辨率分布情况统计(含测试集):

序号 分辨率 图片数量 占比
1 1920x1200 300 30.00%
2 1904x608 200 20.00%
3 800x600 400 40.00%
4 960x600 100 10.00%
总计 4 1000 -
【训练步骤】 首先我们得到数据集后解压到一个非中文和空格路径下面,这里比如我解压的到C:\Users\Administrator\Downloads

在这里插入图片描述
由于数据集已经划分好,所以我们无需划分,打开data.yaml文件修改下路径
原来数据为:

train: ../train/images
val: ../train/images
test: ../test

nc: 6

names:
  - Platymonas
  - Chlorella
  - Dunaliella salina
  - Effrenium
  - Porphyridium
  - Haematococcus

这里只需要改下train和val路径即可,test可以不管,当然你也修改,训练时候用不上。

train: C:\Users\Administrator\Downloads\data\images\train
val: C:\Users\Administrator\Downloads\data\images\val
test: ../test

nc: 6

names:
  - Platymonas
  - Chlorella
  - Dunaliella salina
  - Effrenium
  - Porphyridium
  - Haematococcus


之后就是开始训练了,注意训练yolov11模型需要自己提前安装好环境。

使用预训练模型开始训练

yolo task=detect mode=train model=yolo11n.pt data=data.yaml epochs=100 imgsz=640 batch=8 workers=2

参数说明:

model: 使用的模型类型,如 yolo11s.pt(小模型)、yolo11m.pt(中)、yolo11l.pt(大)
data: 指定数据配置文件
epochs: 训练轮数
imgsz: 输入图像尺寸
batch: 批量大小(根据显存调整)

workers:指定进程数(windows最好设置0或者1或2,linux可以设置8)
训练完成后,最佳权重保存路径为:runs/detect/train/weights/best.pt,如果多次运行命令runs/detect/train2,runs/detect/train3文件夹生成只需要到数字最大文件夹查看就可以找到模型

图片预测:

from ultralytics import YOLO
model = YOLO(‘runs/detect/train/weights/best.pt’)
results = model(‘path_to_your_image.jpg’)

视频或摄像头预测

results = model(‘path_to_video.mp4’) # 视频
#results = model(0) # 摄像头
验证集评估

yolo task=detect mode=val model=runs/detect/train/weights/best.pt data=data.yaml
输出指标图像,一般在模型训练后生成,文件位置在runs/detect/train/results.png:

上面训练结果图片常用评估参数介绍

【常用评估参数介绍】

在目标检测任务中,评估模型的性能是至关重要的。你提到的几个术语是评估模型性能的常用指标。下面是对这些术语的详细解释:

Class:
这通常指的是模型被设计用来检测的目标类别。例如,一个模型可能被训练来检测车辆、行人或动物等不同类别的对象。
Images:
表示验证集中的图片数量。验证集是用来评估模型性能的数据集,与训练集分开,以确保评估结果的公正性。
Instances:
在所有图片中目标对象的总数。这包括了所有类别对象的总和,例如,如果验证集包含100张图片,每张图片平均有5个目标对象,则Instances为500。
P(精确度Precision)
精确度是模型预测为正样本的实例中,真正为正样本的比例。计算公式为:Precision = TP / (TP + FP),其中TP表示真正例(True Positives),FP表示假正例(False Positives)。
R(召回率Recall):
召回率是所有真正的正样本中被模型正确预测为正样本的比例。计算公式为:Recall = TP / (TP + FN),其中FN表示假负例(False Negatives)。
mAP50:
表示在IoU(交并比)阈值为0.5时的平均精度(mean Average Precision)。IoU是衡量预测框和真实框重叠程度的指标。mAP是一个综合指标,考虑了精确度和召回率,用于评估模型在不同召回率水平上的性能。在IoU=0.5时,如果预测框与真实框的重叠程度达到或超过50%,则认为该预测是正确的。
mAP50-95:
表示在IoU从0.5到0.95(间隔0.05)的范围内,模型的平均精度。这是一个更严格的评估标准,要求预测框与真实框的重叠程度更高。在目标检测任务中,更高的IoU阈值意味着模型需要更准确地定位目标对象。mAP50-95的计算考虑了从宽松到严格的多个IoU阈值,因此能够更全面地评估模型的性能。
这些指标共同构成了评估目标检测模型性能的重要框架。通过比较不同模型在这些指标上的表现,可以判断哪个模型在实际应用中可能更有效。

将模型导出为ONNX、TensorRT等格式以用于部署:

yolo export model=runs/detect/train/weights/best.pt format=onnx
支持格式包括:onnx, engine, tflite, pb, torchscript 等。

经过上面训练可以使用模型做一步部署,比如使用Onnx模型在嵌入式部署,使用engine模型在jetson上deepstream部署,使用torchscript模型可以在C++上部署等等。


网站公告

今日签到

点亮在社区的每一天
去签到