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.py
The 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.