文章目录
- 1. 训练日志
- 1. Epoch 和 Iteration
- 2. Learning Rate(学习率)
- 3. ETA(预计剩余时间)
- 4. Time 和 Data Time
- 5. Memory
- 6. Gradient Norm(梯度范数)
- 7. Loss(损失)
- 8. Individual Losses
- 9. Losses for Different Detectors (d0, d1, d2, d3, d4)
- 10. Encoder Losses (enc_loss_cls, enc_loss_bbox, enc_loss_iou)
- 11. DN (Dynamic Network) Losses
- 12. DN Losses for Different Detectors (d0.dn_loss_cls, d1.dn_loss_cls, etc.)
- 总结
- 2. 模型在验证集上的评估结果
1. 训练日志
12/09 03:54:02 - mmengine - INFO - Epoch(train) [3][190/794] base_lr: 1.0000e-04 lr: 1.0000e-04 eta: 15:15:19 time: 1.8053 data_time: 0.0080 memory: 8415 grad_norm: 49.9182 loss: 4.0043 loss_cls: 0.0733 loss_bbox: 0.1035 loss_iou: 0.1393 d0.loss_cls: 0.0847 d0.loss_bbox: 0.1103 d0.loss_iou: 0.1460 d1.loss_cls: 0.0822 d1.loss_bbox: 0.1027 d1.loss_iou: 0.1421 d2.loss_cls: 0.0785 d2.loss_bbox: 0.1031 d2.loss_iou: 0.1392 d3.loss_cls: 0.0774 d3.loss_bbox: 0.1007 d3.loss_iou: 0.1376 d4.loss_cls: 0.0736 d4.loss_bbox: 0.1034 d4.loss_iou: 0.1392 enc_loss_cls: 0.1123 enc_loss_bbox: 0.1300 enc_loss_iou: 0.1698 dn_loss_cls: 0.0012 dn_loss_bbox: 0.1218 dn_loss_iou: 0.1251 d0.dn_loss_cls: 0.0132 d0.dn_loss_bbox: 0.1820 d0.dn_loss_iou: 0.1937 d1.dn_loss_cls: 0.0025 d1.dn_loss_bbox: 0.1306 d1.dn_loss_iou: 0.1352 d2.dn_loss_cls: 0.0016 d2.dn_loss_bbox: 0.1240 d2.dn_loss_iou: 0.1278 d3.dn_loss_cls: 0.0015 d3.dn_loss_bbox: 0.1220 d3.dn_loss_iou: 0.1252 d4.dn_loss_cls: 0.0012 d4.dn_loss_bbox: 0.1217 d4.dn_loss_iou: 0.1250
12/09 03:54:11 - mmengine - INFO - Epoch(train) [3][195/794] base_lr: 1.0000e-04 lr: 1.0000e-04 eta: 15:15:18 time: 1.8176 data_time: 0.0080 memory: 9694 grad_norm: 50.3365 loss: 4.0305 loss_cls: 0.0829 loss_bbox: 0.1019 loss_iou: 0.1496 d0.loss_cls: 0.0977 d0.loss_bbox: 0.1050 d0.loss_iou: 0.1537 d1.loss_cls: 0.0886 d1.loss_bbox: 0.1026 d1.loss_iou: 0.1524 d2.loss_cls: 0.0862 d2.loss_bbox: 0.1014 d2.loss_iou: 0.1492 d3.loss_cls: 0.0871 d3.loss_bbox: 0.0994 d3.loss_iou: 0.1476 d4.loss_cls: 0.0839 d4.loss_bbox: 0.1020 d4.loss_iou: 0.1493 enc_loss_cls: 0.1203 enc_loss_bbox: 0.1227 enc_loss_iou: 0.1762 dn_loss_cls: 0.0012 dn_loss_bbox: 0.1099 dn_loss_iou: 0.1237 d0.dn_loss_cls: 0.0130 d0.dn_loss_bbox: 0.1664 d0.dn_loss_iou: 0.1918 d1.dn_loss_cls: 0.0026 d1.dn_loss_bbox: 0.1182 d1.dn_loss_iou: 0.1338 d2.dn_loss_cls: 0.0015 d2.dn_loss_bbox: 0.1119 d2.dn_loss_iou: 0.1264 d3.dn_loss_cls: 0.0015 d3.dn_loss_bbox: 0.1103 d3.dn_loss_iou: 0.1238 d4.dn_loss_cls: 0.0012 d4.dn_loss_bbox: 0.1098 d4.dn_loss_iou: 0.1236
在训练日志中,包含了很多与模型训练相关的参数。这些参数帮助我们理解训练过程中模型的状态、损失以及优化情况。下面是对日志中每一部分的详细解释:
1. Epoch 和 Iteration
Epoch(train) [3][190/794]
- Epoch: 当前是第 3 轮训练。
- 190/794: 这意味着当前训练的第 190 个 batch,在总共有 794 个 batch 的训练集里。
2. Learning Rate(学习率)
base_lr: 1.0000e-04 lr: 1.0000e-04
- base_lr: 初始学习率。
- lr: 当前学习率。在这个例子中,base_lr 和当前学习率是相同的,表示没有动态变化或调整。
3. ETA(预计剩余时间)
eta: 15:15:19
- eta: 预计剩余训练时间,格式为时:分:秒。根据当前的训练进度,预计整个训练还需要 15 小时 15 分 19 秒完成。
4. Time 和 Data Time
time: 1.8053 data_time: 0.0080
- time: 当前迭代的总时间,1.8053 秒,即每个 batch 的训练时间。
- data_time: 数据加载时间,0.0080 秒,表示加载每个 batch 数据的时间。
5. Memory
memory: 8415
- memory: 当前训练所使用的 GPU 显存量(单位为 MB)。在这个例子中,使用了 8415 MB 的 GPU 显存。
6. Gradient Norm(梯度范数)
grad_norm: 49.9182
- grad_norm: 当前梯度的范数(L2 范数),表示梯度的大小。梯度范数过大或过小可能表明梯度爆炸或消失,影响模型的训练效果。
7. Loss(损失)
loss: 4.0043
- loss: 当前 batch 的总损失值。它是所有损失项(分类损失、回归损失等)的加和。
8. Individual Losses
loss_cls: 0.0733 loss_bbox: 0.1035 loss_iou: 0.1393
这些是不同类型的损失:
- loss_cls: 分类损失,衡量模型预测的类别与真实标签之间的差距。
- loss_bbox: 边框损失,衡量模型预测的边框与真实边框之间的差距。
- loss_iou: IoU(交并比)损失,衡量预测框与真实框之间的重叠程度。
9. Losses for Different Detectors (d0, d1, d2, d3, d4)
d0.loss_cls: 0.0847 d0.loss_bbox: 0.1103 d0.loss_iou: 0.1460
这些是针对不同级别的检测器(d0 到 d4)计算的损失:
- d0, d1, d2, d3, d4: 表示不同检测器(可能代表不同分辨率或不同尺度的预测头)。
- 对每个检测器,损失包括分类损失、边框损失和 IoU 损失。
10. Encoder Losses (enc_loss_cls, enc_loss_bbox, enc_loss_iou)
enc_loss_cls: 0.1123 enc_loss_bbox: 0.1300 enc_loss_iou: 0.1698
- enc_loss_cls: 编码器中的分类损失。
- enc_loss_bbox: 编码器中的边框损失。
- enc_loss_iou: 编码器中的 IoU 损失。
11. DN (Dynamic Network) Losses
dn_loss_cls: 0.0012 dn_loss_bbox: 0.1218 dn_loss_iou: 0.1251
- dn_loss_cls, dn_loss_bbox, dn_loss_iou: 动态网络的损失,可能涉及模型处理的动态对象或自适应模块的损失。
12. DN Losses for Different Detectors (d0.dn_loss_cls, d1.dn_loss_cls, etc.)
d0.dn_loss_cls: 0.0132 d0.dn_loss_bbox: 0.1820 d0.dn_loss_iou: 0.1937
- d0.dn_loss_cls, d0.dn_loss_bbox, d0.dn_loss_iou 等表示对于不同检测器(d0 到 d4)中的动态网络损失。它们在不同检测器中针对分类、边框和 IoU 进行的损失计算。
总结
- 这些日志输出帮助我们追踪训练过程中的模型表现,包括学习率、损失、梯度、内存使用等。
- 训练损失由多个部分组成,每个部分表示不同任务的损失,例如分类、边框回归和 IoU。
- 如果损失变化较大,可能需要调整模型结构、学习率、数据预处理等因素。
如果你需要进一步优化训练或分析训练过程,可以使用这些信息来判断哪些方面的损失较大,从而调整模型或训练参数。
2. 模型在验证集上的评估结果
12/09 07:33:42 - mmengine - INFO - Epoch(val) [11][345/352] eta: 0:00:01 time: 0.1365 data_time: 0.0019 memory: 3155
12/09 07:33:42 - mmengine - INFO - Epoch(val) [11][350/352] eta: 0:00:00 time: 0.1361 data_time: 0.0019 memory: 3155
12/09 07:33:45 - mmengine - INFO - Evaluating bbox...
Loading and preparing results...
DONE (t=0.46s)
creating index...
index created!
Running per image evaluation...
Evaluate annotation type *bbox*
DONE (t=2.59s).
Accumulating evaluation results...
DONE (t=1.88s).
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.533
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=1000 ] = 0.652
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=1000 ] = 0.562
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=1000 ] = 0.368
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=1000 ] = 0.497
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=1000 ] = 0.597
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.859
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=300 ] = 0.860
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=1000 ] = 0.860
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=1000 ] = 0.606
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=1000 ] = 0.833
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=1000 ] = 0.883
12/09 07:33:50 - mmengine - INFO - bbox_mAP_copypaste: 0.533 0.652 0.562 0.368 0.497 0.597
12/09 07:33:50 - mmengine - INFO - Epoch(val) [11][352/352] coco/bbox_mAP: 0.5330 coco/bbox_mAP_50: 0.6520 coco/bbox_mAP_75: 0.5620 coco/bbox_mAP_s: 0.3680 coco/bbox_mAP_m: 0.4970 coco/bbox_mAP_l: 0.5970 data_time: 0.0057 time: 0.1436
这些内容显示了模型在验证集上的评估结果,基于 COCO 数据集的评估标准,以下是详细解析:
1. 评估流程
-
Evaluating bbox
- 表明模型正在验证集上评估目标检测的边界框(bounding box, bbox)性能。
-
Loading and preparing results…
- 模型生成的预测结果被加载并准备好进行评估。
-
Running per image evaluation…
- 针对验证集中每一张图片,计算各项指标,如平均精度(AP)和平均召回率(AR)。
-
Evaluate annotation type bbox
- 说明评估的是边界框任务。
-
Accumulating evaluation results…
- 将单张图片的评估结果汇总,以计算整体性能指标。
2. COCO评估标准
主要指标
-
AP (Average Precision)
AP 是目标检测中的核心指标,表示模型在不同的阈值(IoU)下的平均精度:AP @[ IoU=0.50:0.95 | area=all | maxDets=100 ]
综合了多个 IoU 阈值(从 0.50 到 0.95,步长为 0.05),计算所有目标的平均精度。这是 COCO 的主要指标,当前值为 0.533。AP @[ IoU=0.50 | area=all | maxDets=1000 ]
在 IoU=0.50 时计算 AP,当前值为 0.652,表示较宽松条件下的精度。AP @[ IoU=0.75 | area=all | maxDets=1000 ]
在 IoU=0.75 时计算 AP,当前值为 0.562,表示较严格条件下的精度。
-
AP by Area
按物体大小划分 AP:- small(小目标,
area < 32^2
):当前值为 0.368。说明模型对小目标的检测效果较差。 - medium(中等目标,
32^2 ≤ area < 96^2
):当前值为 0.497。 - large(大目标,
area ≥ 96^2
):当前值为 0.597。说明模型对大目标检测效果更好。
- small(小目标,
-
AR (Average Recall)
AR 是衡量模型召回能力的指标,表示在不同的最大检测数(maxDets)下的平均召回率:- AR @[ IoU=0.50:0.95 | area=all | maxDets=100 ]: 当前值为 0.859。
- AR @[ IoU=0.50:0.95 | area=all | maxDets=300 ] 和 maxDets=1000: 当前值为 0.860。
- 按物体大小划分的 AR:
- small: 当前值为 0.606。
- medium: 当前值为 0.833。
- large: 当前值为 0.883。
3. 关键评估结果分析
-
模型整体表现
coco/bbox_mAP: 0.533
是综合指标,表示在多个 IoU 阈值下的平均性能。- 结合 AP 和 AR 指标,可以看到模型对大目标(large)的检测效果最佳(
AP=0.597
,AR=0.883
),对小目标(small)的检测效果较差(AP=0.368
,AR=0.606
)。
-
时间和资源消耗
- 验证过程耗时较短(每次迭代的平均时间约为
0.1436s
)。 - 占用显存较少,内存仅 3155 MB。
- 验证过程耗时较短(每次迭代的平均时间约为
-
IoU 阈值的影响
- 当 IoU 阈值提高到 0.75 时,
AP=0.562
,相较 IoU=0.50 的 0.652 略有下降,说明模型在更严格的定位条件下仍具有较强表现。
- 当 IoU 阈值提高到 0.75 时,
总结
-
模型优点:
- 整体性能良好,综合
mAP=0.533
,在 COCO 基准中属于中上游水平。 - 对大目标的检测效果突出(
AP=0.597
,AR=0.883
)。 - 资源消耗较低,验证时间快。
- 整体性能良好,综合
-
模型不足:
- 小目标检测性能仍有待提高,
AP_s=0.368
较低,可能需要优化特征提取器或多尺度检测头。
- 小目标检测性能仍有待提高,
-
改进方向:
- 提升小目标检测:考虑增加小目标增强(如分辨率调整、多尺度数据增强)。
- 加强定位能力:通过优化边框回归损失(如 IoU 损失的调整)。