训练命令及提示
执行下面的命令,可以使用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文件夹。
每次训练会生成一个新的训练任务文件夹,里面包含每次模型训练的所有信息。