文章目录
工作任务概述
训练YOLOv12使用自定义数据集的过程通常涉及以下几个步骤:
1. 准备环境
确保你已经安装了YOLOv12所依赖的所有软件包。这可能包括Python、PyTorch以及其他必要的库。
2. 准备数据集
- 标注数据:使用合适的工具对图像进行标注,为每个目标框指定类别和边界框坐标。
- 组织数据结构:创建符合YOLO格式的数据文件夹结构,通常包括
images/
和labels/
两个文件夹,分别存放图片和对应的标签文件(通常是.txt
文件,每行表示一个目标框及其类别)。 - 划分数据集:将数据集划分为训练集、验证集(有时还包括测试集),并生成相应的
.yaml
配置文件来指定路径。
3. 定义数据集配置
编写一个.yaml
文件来描述你的数据集。这个文件应该包含以下信息:
train: path/to/train/images/
val: path/to/val/images/
nc: number_of_classes # 类别数量
names: [ 'class1', 'class2', ... ] # 类别名称列表
4. 调整模型配置
根据需要调整超参数。这些可以是在命令行中指定的,也可以在配置文件中定义。例如,你可以修改默认配置文件中的超参数,或者通过命令行传递它们。常见的超参数包括但不限于:
imgsz
: 输入图像尺寸batch
: 批次大小epochs
: 训练周期数data
: 数据集配置文件路径weights
: 预训练权重路径(用于迁移学习)device
: 使用哪个GPU设备(如0
表示第一个GPU)
5. 开始训练
运行训练命令,例如(以CLI为例):
yolo train data=path/to/data.yaml model=yolov11.yaml epochs=100 batch=16
6. 监控与评估
- 在训练过程中监控损失和其他指标。
- 使用验证集评估模型性能,并根据结果调整超参数或继续训练。
7. 模型优化与导出
- 训练完成后,可以选择性地进行模型剪枝、量化等操作来优化推理速度。
- 将最终模型导出为适合部署的格式。
车辆测试结果
训练过程
训练参数
参数 默认值 说明
model None 用于训练的模型文件的路径。
data None 数据集配置文件的路径(例如 coco8.yaml).
epochs 100 训练历元总数。
batch 16 批量大小,可调整为整数或自动模式。
imgsz 640 用于训练的目标图像大小。
device None 用于训练的计算设备,如 cpu, 0, 0,1或 mps.
save True 可保存训练检查点和最终模型权重。
————————————————
loss曲线
训练参数
参数 默认值 说明
model None 用于训练的模型文件的路径。
data None 数据集配置文件的路径(例如 coco8.yaml).
epochs 100 训练历元总数。
batch 16 批量大小,可调整为整数或自动模式。
imgsz 640 用于训练的目标图像大小。
device None 用于训练的计算设备,如 cpu, 0, 0,1或 mps.
save True 可保存训练检查点和最终模型权重。
————————————————
PR曲线
在目标检测任务中,PR曲线(Precision-Recall Curve)、mAP(mean Average Precision)和损失函数图是评估模型性能的重要工具。下面将分别介绍它们的原理、公式以及如何理解这些曲线。
PR 曲线 (Precision-Recall Curve)
原理:
PR曲线用于描述不同阈值下模型的精度(Precision)与召回率(Recall)之间的关系。它对于不平衡的数据集尤其有用,因为在这种情况下准确率(Accuracy)可能不是最好的评价指标。
公式:
- Precision (精度): ( \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} )
- Recall (召回率): ( \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} )
其中:
- TP (True Positives) 是正确预测为正类的数量;
- FP (False Positives) 是错误预测为正类的数量;
- FN (False Negatives) 是应该被预测为正类但被错误分类为负类的数量。
mAP (mean Average Precision)
原理:
mAP是对所有类别计算AP(Average Precision)后取平均的结果,它综合考虑了不同IoU(Intersection over Union)阈值下的Precision和Recall,是目标检测任务中常用的评价标准。
公式:
- 对于每个类别,首先根据置信度排序预测框,然后计算不同置信度阈值下的Precision和Recall。
- AP是通过计算PR曲线下面积得到的,通常使用11个点插值法或最大回忆率方法。
- mAP是所有类别AP的平均值:( \text{mAP} = \frac{1}{N}\sum_{i=1}^{N} \text{AP}_i ),其中N是类别的数量。
损失函数图
原理:
损失函数图展示了训练过程中模型损失的变化趋势。损失函数衡量的是模型输出与真实标签之间的差异。随着训练进行,理想情况下,损失应逐渐减小,表明模型学习到了数据中的模式。
常见的损失函数:
- 交叉熵损失 (Cross Entropy Loss): 用于分类问题。
- Smooth L1 Loss 或 IoU Loss: 常用于目标检测中的边界框回归。
公式:
- 交叉熵损失: ( L = -\frac{1}{N}\sum_{i=1}^{N} [y_i \log(p_i) + (1-y_i)\log(1-p_i)] )
- Smooth L1 Loss: ( L_{\text{smooth}}(x) =
\begin{cases}
0.5 x^2, & \text{if } |x| < 1 \
|x| - 0.5, & \text{otherwise}
\end{cases} )
在目标检测中,总损失通常是分类损失和边界框回归损失的加权和。
理解曲线
- PR曲线: 越靠近右上角的PR曲线表示模型性能越好。高Recall意味着模型能找出更多的正样本,而高Precision意味着这些找到的样本中有很大比例是正确的。
- mAP: 更高的mAP值代表更好的检测性能。mAP接近1表示几乎所有的正样本都被正确识别且很少有误报。
- 损失函数图: 随着训练次数增加,如果损失稳定下降,则说明模型正在有效学习;但如果损失停滞不降或开始上升,这可能是过拟合或者学习率设置不当的信号。
这些曲线和数值不仅帮助我们了解模型当前的表现,还为我们提供了调整超参数、改进模型架构的方向。