ultralytics框架yolov8模型训练过程(日志)讲解

训练命令及提示

        执行下面的命令,可以使用yolov8的图像目标检测功能完成训练:

yolo train model = yolov8x.pt data = test.yaml epochs = 150 imgsz = 640

命令执行成功后,会先弹出以下的信息:

New https://pypi.org/project/ultralytics/8.3.39 available 😃 Update with 'pip install -U ultralytics'
Ultralytics YOLOv8.0.150 🚀 Python-3.8.10 torch-1.8.0+cu111 CUDA:0 (NVIDIA A40, 45403MiB)
WARNING ⚠️ Upgrade to torch>=2.0.0 for deterministic training.
engine/trainer: task=detect, mode=train, model=yolov8x.pt, data=test.yaml, epochs=150, patience=50, batch=16, imgsz=640, save=True, save_period=-1, cache=False, device=None, workers=8, project=None, name=None, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, show=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, vid_stride=1, line_width=None, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, boxes=True, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=False, opset=None, workspace=4, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, label_smoothing=0.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0, cfg=None, tracker=botsort.yaml, save_dir=runs/detect/train13
Overriding model.yaml nc=80 with nc=8

                   from  n    params  module                                       arguments                     
  0                  -1  1      2320  ultralytics.nn.modules.conv.Conv             [3, 80, 3, 2]                 
  1                  -1  1    115520  ultralytics.nn.modules.conv.Conv             [80, 160, 3, 2]               
  2                  -1  3    436800  ultralytics.nn.modules.block.C2f             [160, 160, 3, True]           
  3                  -1  1    461440  ultralytics.nn.modules.conv.Conv             [160, 320, 3, 2]              
  4                  -1  6   3281920  ultralytics.nn.modules.block.C2f             [320, 320, 6, True]           
  5                  -1  1   1844480  ultralytics.nn.modules.conv.Conv             [320, 640, 3, 2]              
  6                  -1  6  13117440  ultralytics.nn.modules.block.C2f             [640, 640, 6, True]           
  7                  -1  1   3687680  ultralytics.nn.modules.conv.Conv             [640, 640, 3, 2]              
  8                  -1  3   6969600  ultralytics.nn.modules.block.C2f             [640, 640, 3, True]           
  9                  -1  1   1025920  ultralytics.nn.modules.block.SPPF            [640, 640, 5]                 
 10                  -1  1         0  torch.nn.modules.upsampling.Upsample         [None, 2, 'nearest']          
 11             [-1, 6]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           
 12                  -1  3   7379200  ultralytics.nn.modules.block.C2f             [1280, 640, 3]                
 13                  -1  1         0  torch.nn.modules.upsampling.Upsample         [None, 2, 'nearest']          
 14             [-1, 4]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           
 15                  -1  3   1948800  ultralytics.nn.modules.block.C2f             [960, 320, 3]                 
 16                  -1  1    922240  ultralytics.nn.modules.conv.Conv             [320, 320, 3, 2]              
 17            [-1, 12]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           
 18                  -1  3   7174400  ultralytics.nn.modules.block.C2f             [960, 640, 3]                 
 19                  -1  1   3687680  ultralytics.nn.modules.conv.Conv             [640, 640, 3, 2]              
 20             [-1, 9]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           
 21                  -1  3   7379200  ultralytics.nn.modules.block.C2f             [1280, 640, 3]                
 22        [15, 18, 21]  1   8725672  ultralytics.nn.modules.head.Detect           [8, [320, 640, 640]]          
Model summary: 365 layers, 68160312 parameters, 68160296 gradients

Transferred 589/595 items from pretrained weights
AMP: running Automatic Mixed Precision (AMP) checks with YOLOv8n...
AMP: checks passed ✅
train: Scanning /home/admin/yolov8/project/dataset/labels/train2017... 138 images, 0 backgrounds, 0 corrupt: 100%|██████████| 138/138 [00
train: New cache created: /home/admin/yolov8/project/dataset/labels/train2017.cache
val: Scanning /home/admin/yolov8/project/dataset/labels/val2017... 21 images, 0 backgrounds, 0 corrupt: 100%|██████████| 21/21 [00:00<00:
val: New cache created: /home/admin/yolov8/project/dataset/labels/val2017.cache
Plotting labels to runs/detect/train13/labels.jpg... 
optimizer: AdamW(lr=0.000833, momentum=0.9) with parameter groups 97 weight(decay=0.0), 104 weight(decay=0.0005), 103 bias(decay=0.0)
Image sizes 640 train, 640 val
Using 8 dataloader workers
Logging results to runs/detect/train13

训练日志参数

        在使用yolov8模型的时候,一旦数据集和模型设置正确,就会进行训练,训练过程的日志包含一些参数,这些指标共同帮助您了解模型的训练和验证性能,调整超参数或模型架构可以改善结果,训练示意图如下:

Starting training for 150 epochs...

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      1/150      14.2G      1.538      3.762      1.308        203        640: 100%|██████████| 9/9 [00:09<00:00,  1.10s/it]
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 1/1 [00:00<00:00,  4.25it/s]
                   all         21        278      0.592      0.646      0.541       0.39

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
      2/150      14.6G     0.8739     0.7865     0.9155        298        640: 100%|██████████| 9/9 [00:09<00:00,  1.01s/it]
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 1/1 [00:00<00:00,  4.39it/s]
                   all         21        278      0.782      0.986       0.97      0.745

1.Epoch:

  • 表示当前训练的轮次。YOLOv8 在训练过程中会更新模型参数多次,每次完整的遍历训练集称为一个 epoch。

2.GPU_mem:

  • 表示在训练过程中使用的 GPU 内存量。这有助于了解模型的内存需求,特别是在处理大型模型或数据集时。

3.box_loss:

  • 边界框损失(Bounding Box Loss),用于衡量预测框和真实框之间的差异。通常使用 GIoU(Generalized Intersection over Union)或 CIoU(Complete IoU)作为衡量标准。

4.cls_loss:

  • 分类损失(Classification Loss),用于衡量模型分类错误的程度。它评估每个预测框中对象的类别是否正确。

5.dfl_loss:

  • 分布式焦点损失(Distribution Focal Loss),用于改善预测框的定位精度。YOLOv8 使用 DFL 来提高定位的精细度。

6.Instances:

  • 当前批次中图像的总实例数(对象数)。这可以帮助理解模型在一次迭代中处理的对象数量。

7.Size:

  • 输入图像的尺寸(如 640x640)。这表示进入模型的图像被调整到的大小。

验证(评估)日志参数

1.Class:

  • 表示评估结果涵盖的类(如 “all” 表示所有类)。

2.Images:

  • 验证集中图像的数量。

3.Instances:

  • 验证集中对象的数量。

4.Box§:

  • 边界框的精度(Precision),表示正确预测的正样本占所有预测正样本的比例。

5.R:

  • 召回率(Recall),表示正确预测的正样本占所有实际正样本的比例。

6.mAP50:

  • 在 IoU 阈值为 0.5 的情况下,平均精度(Mean Average Precision)。mAP50 是评估目标检测模型性能的常用指标。

7.mAP50-95:

  • 在 IoU 阈值从 0.5 到 0.95(步长为 0.05)之间的平均精度。这个指标提供了对模型在不同 IoU 阈值下性能的全面评估。

模型路径

训练完成后,在当前路径下的runs文件夹下查找自己的相关信息即可,该文件夹包含你的任务,如果是训练的检测模型就在detect文件夹,如果是分割模型就在segment文件夹。

每次训练会生成一个新的训练任务文件夹,里面包含每次模型训练的所有信息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵追慕者

您的支持是我写作分享最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值