YOLOv8 successfully solved ValueError: not enough values to unpack (expected 3, got 0) and `No such file or directory, etc.

yolov8 training:

data structure

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']

Label format:

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

Problem description

When I run

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

Appear

(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)

Cause analysis:

Before this, I read a lot of solutions to ValueError: not enough values to unpack (expected 3, got 0). I tried them all one by one, but they were not solved, so I went back and looked at myself. error message, I found that there are still some errors: No such file or directory: 'mydata\images\1.jpg' and No such file or directory: 'mydata\images\11.jpg' and so on, then I looked at my train.txt file and found XML2TXT.pyThe access path to the image in the generated train.txt file is incomplete.
Right now:
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

Solution:

Add the full path F:/YOLOV8/ultralytics-main/ultralytics/models/yolo/detect/mydata/images/xx.jpg
Right now
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

run again

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

Run successfully

Write to the end,
Everyone encounters different problems. You can often find solutions to problems by searching online, but sometimes you need to go back and carefully read your own error messages.