yolov8 training:

数据结构

mydata
├── Annotations
├── images
├── ImageSets
├── labels
├── all.yaml
├── text.txt
├── train.txt
├── val.txt
└── labels   

all.yaml

train: F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/train.txt
val: F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/val.txt
test: F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/test.txt

# number of classes
nc: 6

# class names
names: ['storage tanks', 'valve', 'person', 'fire', 'toxic substances', 'boat']

标签格式:

0 0.10595703125 0.6002928257686677 0.1337890625 0.30453879941434847
0 0.2744140625 0.6105417276720352 0.109375 0.3279648609077599
0 0.75927734375 0.6142020497803807 0.1123046875 0.3235724743777453
0 0.9208984375 0.6120058565153734 0.13671875 0.3191800878477306
0 0.65673828125 0.6156661786237189 0.0771484375 0.18301610541727673
1 0.65576171875 0.4787701317715959 0.0126953125 0.020497803806734993
1 0.65576171875 0.5029282576866765 0.0126953125 0.01903367496339678
1 0.67431640625 0.5073206442166911 0.0126953125 0.01903367496339678
1 0.435546875 0.5636896046852123 0.0078125 0.03806734992679356


问题描述

当我运行

yolo task=detect mode=train model=yolov8n.pt data=F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/all.yaml batch=4 epochs=100 imgsz=640 workers=4 device=0

出现

(yolov8) F:\YOLOV8\ultralytics-main>yolo task=detect mode=train model=yolov8n.pt data=F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/all.yaml batch=4 epochs=100 imgsz
=640 workers=4 device=0
Ultralytics YOLOv8.0.202  Python-3.9.18 torch-2.0.0+cu118 CUDA:0 (NVIDIA GeForce GTX 1650, 4096MiB)
engine\trainer: task=detect, mode=train, model=yolov8n.pt, data=F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/all.yaml, epochs=100, patience=50, batch=4, imgsz=640, 
save=True, save_period=-1, cache=False, device=0, workers=4, project=None, name=train8, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, singl
e_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, 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, stream_buffer=False, 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\train8      
Overriding model.yaml nc=80 with nc=6

                   from  n    params  module                                       arguments
  0                  -1  1       464  ultralytics.nn.modules.conv.Conv             [3, 16, 3, 2]                 
  1                  -1  1      4672  ultralytics.nn.modules.conv.Conv             [16, 32, 3, 2]                
  2                  -1  1      7360  ultralytics.nn.modules.block.C2f             [32, 32, 1, True]
  3                  -1  1     18560  ultralytics.nn.modules.conv.Conv             [32, 64, 3, 2]
  4                  -1  2     49664  ultralytics.nn.modules.block.C2f             [64, 64, 2, True]
  5                  -1  1     73984  ultralytics.nn.modules.conv.Conv             [64, 128, 3, 2]
  6                  -1  2    197632  ultralytics.nn.modules.block.C2f             [128, 128, 2, True]           
  7                  -1  1    295424  ultralytics.nn.modules.conv.Conv             [128, 256, 3, 2]
  8                  -1  1    460288  ultralytics.nn.modules.block.C2f             [256, 256, 1, True]
  9                  -1  1    164608  ultralytics.nn.modules.block.SPPF            [256, 256, 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  1    148224  ultralytics.nn.modules.block.C2f             [384, 128, 1]                 
 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  1     37248  ultralytics.nn.modules.block.C2f             [192, 64, 1]
 16                  -1  1     36992  ultralytics.nn.modules.conv.Conv             [64, 64, 3, 2]
 17            [-1, 12]  1         0  ultralytics.nn.modules.conv.Concat           [1]
 18                  -1  1    123648  ultralytics.nn.modules.block.C2f             [192, 128, 1]
 19                  -1  1    147712  ultralytics.nn.modules.conv.Conv             [128, 128, 3, 2]
 20             [-1, 9]  1         0  ultralytics.nn.modules.conv.Concat           [1]
 21                  -1  1    493056  ultralytics.nn.modules.block.C2f             [384, 256, 1]                 
 22        [15, 18, 21]  1    752482  ultralytics.nn.modules.head.Detect           [6, [64, 128, 256]]           
Model summary: 225 layers, 3012018 parameters, 3012002 gradients, 8.2 GFLOPs

Transferred 319/355 items from pretrained weights
Freezing layer 'model.22.dfl.conv.weight'
AMP: running Automatic Mixed Precision (AMP) checks with YOLOv8n...
WARNING  NMS time limit 0.550s exceeded
AMP: checks passed 
train: Scanning mydata\labels... 0 images, 0 backgrounds, 9 corrupt: 100%|██████████| 9/9 [00:00<?, ?it/s]
train: WARNING  mydata\images\1.jpg: ignoring corrupt image/label: [Errno 2] No such file or directory: 'mydata\\images\\1.jpg'
train: WARNING  mydata\images\11.jpg: ignoring corrupt image/label: [Errno 2] No such file or directory: 'mydata\\images\\11.jpg'
train: WARNING  mydata\images\12.jpg: ignoring corrupt image/label: [Errno 2] No such file or directory: 'mydata\\images\\12.jpg'
train: WARNING  mydata\images\2.jpg: ignoring corrupt image/label: [Errno 2] No such file or directory: 'mydata\\images\\2.jpg'
train: WARNING  mydata\images\4.jpg: ignoring corrupt image/label: [Errno 2] No such file or directory: 'mydata\\images\\4.jpg'
train: WARNING  mydata\images\5.jpg: ignoring corrupt image/label: [Errno 2] No such file or directory: 'mydata\\images\\5.jpg'
train: WARNING  mydata\images\6.jpg: ignoring corrupt image/label: [Errno 2] No such file or directory: 'mydata\\images\\6.jpg'
train: WARNING  mydata\images\7.jpg: ignoring corrupt image/label: [Errno 2] No such file or directory: 'mydata\\images\\7.jpg'
train: WARNING  mydata\images\9.jpg: ignoring corrupt image/label: [Errno 2] No such file or directory: 'mydata\\images\\9.jpg'
train: WARNING  No labels found in mydata\labels.cache. See https://docs.ultralytics.com/datasets/detect for dataset formatting guidance.
train: WARNING  Cache directory mydata is not writeable, cache not saved.
WARNING  No images found in mydata\labels.cache, training may not work correctly. See https://docs.ultralytics.com/datasets/detect for dataset formatting guidance.
Traceback (most recent call last):
  File "F:\anaconda2023.3.0\envs\yolov8\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "F:\anaconda2023.3.0\envs\yolov8\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "F:\anaconda2023.3.0\envs\yolov8\Scripts\yolo.exe\__main__.py", line 7, in <module>
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\cfg\__init__.py", line 444, in entrypoint
    getattr(model, mode)(**overrides)  # default args from model
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\engine\model.py", line 341, in train
    self.trainer.train()
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\engine\trainer.py", line 192, in train
    self._do_train(world_size)
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\engine\trainer.py", line 288, in _do_train
    self._setup_train(world_size)
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\engine\trainer.py", line 253, in _setup_train
    self.train_loader = self.get_dataloader(self.trainset, batch_size=batch_size, rank=RANK, mode='train')
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\models\yolo\detect\train.py", line 46, in get_dataloader
    dataset = self.build_dataset(dataset_path, mode, batch_size)
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\models\yolo\detect\train.py", line 40, in build_dataset
    return build_yolo_dataset(self.args, img_path, batch, self.data, mode=mode, rect=mode == 'val', stride=gs)
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\data\build.py", line 80, in build_yolo_dataset
    return YOLODataset(
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\data\dataset.py", line 41, in __init__
    super().__init__(*args, **kwargs)
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\data\base.py", line 73, in __init__
    self.labels = self.get_labels()
  File "F:\anaconda2023.3.0\envs\yolov8\lib\site-packages\ultralytics\data\dataset.py", line 125, in get_labels
    len_cls, len_boxes, len_segments = (sum(x) for x in zip(*lengths))
ValueError: not enough values to unpack (expected 3, got 0)

原因分析:

在这之前,我看了很多关于 ValueError: not enough values to unpack (expected 3, got 0) 的解决方案,都一一试过,未解决,于是我就返回去看自己的报错信息,发现还有一些错误就是 No such file or directory: 'mydata\\images\\1.jpg'以及 No such file or directory: 'mydata\\images\\11.jpg'等等,然后我看了我的 train.txt文件,发现 XML2TXT.py生成的train.txt文件里面图片的访问路径不完整。
即:
train.txt

mydata/images/1.jpg
mydata/images/11.jpg
mydata/images/12.jpg
mydata/images/2.jpg
mydata/images/4.jpg
mydata/images/5.jpg
mydata/images/6.jpg
mydata/images/7.jpg
mydata/images/9.jpg

解决方案:

添加上完整路径F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/xx.jpg

train.txt

F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/1.jpg
F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/11.jpg
F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/12.jpg
F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/2.jpg
F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/4.jpg
F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/5.jpg
F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/6.jpg
F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/7.jpg
F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/9.jpg

再次运行

yolo task=detect mode=train model=yolov8n.pt data=F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/all.yaml batch=4 epochs=100 imgsz=640 workers=4 device=0

运行成功
在这里插入图片描述


写到最后,
每个人遇到的问题都不一样,在网上搜往往可以找到解决问题的方法,但有时需要回过头认真去看看自己的报错信息。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐