Get interested in yolov8 and after few youtube tutorials i tried to train custom dataset. After all manipulations i got no prediction results :( 2nd image - val_batch0_labels, 3rd image - val_batch0_pred



I tried to do this in pycharm and google colab (same results) and here's the code:
# main.py
from ultralytics import YOLO


model = YOLO("yolov8n.yaml")

results = model.train(data="config.yaml", epochs=1)

# config.yaml
path: Y:\coding\python\yolo_test\data_airplane\data # dataset root dir
train: images  # train images (relative to 'path')
val: images  # val images (relative to 'path')

# Classes
names:
  0: airplane

And for more information here's all what i get after run this:
              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    897664  ultralytics.nn.modules.head.Detect           [80, [64, 128, 256]]
YOLOv8n summary: 225 layers, 3157200 parameters, 3157184 gradients
Ultralytics YOLOv8.0.141  Python-3.10.8 torch-2.0.1+cpu CPU (Intel Core(TM) i3-10105F 3.70GHz)
engine\trainer: task=detect, mode=train, model=yolov8n.yaml, data=config.yaml, epochs=1, 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\train22
Overriding model.yaml nc=80 with nc=1
               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    751507  ultralytics.nn.modules.head.Detect           [1, [64, 128, 256]]
YOLOv8n summary: 225 layers, 3011043 parameters, 3011027 gradients
train: Scanning Y:\coding\python\yolo_test\data_airplane\data\labels.cache... 3 images, 0 backgrounds, 0 corrupt: 100%|██████████| 3/3 [00:00<?, ?it/s]
val: Scanning Y:\coding\python\yolo_test\data_airplane\data\labels.cache... 3 images, 0 backgrounds, 0 corrupt: 100%|██████████| 3/3 [00:00<?, ?it/s]
Plotting labels to runs\detect\train22\labels.jpg...
optimizer: AdamW(lr=0.002, momentum=0.9) with parameter groups 57 weight(decay=0.0), 64 weight(decay=0.0005), 63 bias(decay=0.0)
Image sizes 640 train, 640 val
Using 0 dataloader workers
Logging results to runs\detect\train22
Starting training for 1 epochs..
  Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
    1/1         0G      3.156      3.899      4.605         33        640: 100%|██████████| 1/1 [00:02<00:00,  2.21s/it]
             Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 1/1 [00:01<00:00,  1.14s/it]
               all          3         16    0.00111     0.0625   0.000607   6.07e-05

1 epochs completed in 0.001 hours.
Optimizer stripped from runs\detect\train22\weights\last.pt, 6.2MB
Optimizer stripped from runs\detect\train22\weights\best.pt, 6.2MB
Validating runs\detect\train22\weights\best.pt...
Ultralytics YOLOv8.0.141  Python-3.10.8 torch-2.0.1+cpu CPU (Intel Core(TM) i3-10105F 3.70GHz)
YOLOv8n summary (fused): 168 layers, 3005843 parameters, 0 gradients
Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 1/1 [00:01<00:00,  1.08s/it]
all          3         16    0.00114     0.0625    0.00086    8.6e-05
Speed: 2.0ms preprocess, 123.7ms inference, 0.0ms loss, 1.7ms postprocess per image
Results saved to runs\detect\train22
Process finished with exit code 0