Skip to content

Yolov8 rejecting labels during model.training #94

@palmcorp

Description

@palmcorp

CASE: Yolov8-pose rejecting labels during training
QUESTION: Where does yolov8 determine how many columns are required for each label?

ERROR at model.train phase:

train: WARNING ⚠️ /content/datasets/echo-pose/images/train2017/frame_000151.PNG: ignoring corrupt image/label: labels require 15 columns each

SAMPLE LABELS FROM train2017:
0 0.680863 0.595223 0.20369 0.0726488 0.579017 0.631547 2 0.687827 0.609047 2 0.748973 0.590758 2 0.782708 0.558898 2 0.6325 0.624151 2

0 0.659062 0.613906 0.23378 0.0539435 0.542172 0.640877 2 0.645104 0.61308 2 0.714791 0.617574 2 0.775952 0.586934 2 0.589449 0.637366 2
<etc.>

BACKROUND

  1. no similar problems weere found in the GitHub blog
  2. Label files were scanned to insure no hidden, or unicode characters were embedded

#####C O D E#####

LOAD MODEL

ECHO_YAMAL=os.path.join ("/content/YAML/yolov8n-echo-pose.yaml")
model = YOLO(ECHO_YAMAL, verbose = VERBOSE)
model = YOLO('yolov8n-pose.pt') # load a pretrained model (recommended for training)
model = YOLO('yolov8n-pose.yaml').load('yolov8n-pose.pt')

TRAIN MODEL

YP=os.path.join ("/content/YAML/data5.yaml")
model.train(data=YP, epochs=EPOCHS, imgsz=640)

HERE ARE THE TWO YAML FILES:

=====================
yolovn-echo-pose.yaml

Ultralytics YOLO 🚀, AGPL-3.0 license

YOLOv8-pose-p6 keypoints/pose estimation model. For Usage examples see https://docs.ultralytics.com/tasks/pose

Parameters

nc: 5 # number of classes # UPDATED *
kpt_shape: [5, 2] # number of keypoints,* number of dims (2 for x,y or 3 for x,y,visible)
flip_indx: [0,1,2,3,4] # no flipping *
scales: # model compound scaling constants, i.e. 'model=yolov8n-p6.yaml' will call yolov8-p6.yaml with scale 'n'

[depth, width, max_channels]

n: [0.33, 0.25, 1024]
s: [0.33, 0.50, 1024]
m: [0.67, 0.75, 768]
l: [1.00, 1.00, 512]
x: [1.00, 1.25, 512]

YOLOv8.0x6 backbone

backbone:

[from, repeats, module, args]

  • [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
  • [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
  • [-1, 3, C2f, [128, True]]
  • [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
  • [-1, 6, C2f, [256, True]]
  • [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
  • [-1, 6, C2f, [512, True]]
  • [-1, 1, Conv, [768, 3, 2]] # 7-P5/32
  • [-1, 3, C2f, [768, True]]
  • [-1, 1, Conv, [1024, 3, 2]] # 9-P6/64
  • [-1, 3, C2f, [1024, True]]
  • [-1, 1, SPPF, [1024, 5]] # 11

YOLOv8.0x6 head

head:

  • [-1, 1, nn.Upsample, [None, 2, "nearest"]]

  • [[-1, 8], 1, Concat, [1]] # cat backbone P5

  • [-1, 3, C2, [768, False]] # 14

  • [-1, 1, nn.Upsample, [None, 2, "nearest"]]

  • [[-1, 6], 1, Concat, [1]] # cat backbone P4

  • [-1, 3, C2, [512, False]] # 17

  • [-1, 1, nn.Upsample, [None, 2, "nearest"]]

  • [[-1, 4], 1, Concat, [1]] # cat backbone P3

  • [-1, 3, C2, [256, False]] # 20 (P3/8-small)

  • [-1, 1, Conv, [256, 3, 2]]

  • [[-1, 17], 1, Concat, [1]] # cat head P4

  • [-1, 3, C2, [512, False]] # 23 (P4/16-medium)

  • [-1, 1, Conv, [512, 3, 2]]

  • [[-1, 14], 1, Concat, [1]] # cat head P5

  • [-1, 3, C2, [768, False]] # 26 (P5/32-large)

  • [-1, 1, Conv, [768, 3, 2]]

  • [[-1, 11], 1, Concat, [1]] # cat head P6

  • [-1, 3, C2, [1024, False]] # 29 (P6/64-xlarge)

  • [[20, 23, 26, 29], 1, Pose, [nc, kpt_shape]] # Pose(P3, P4, P5, P6)

Classes

names:
0: Class0
1: Class1
2: Class2
3: Class3
4: Class4

==========
data5.yaml

#keypoint data sets

Data

#path: D:POSE/data
path: /content/datasets/echo-pose
train: images/train2017 # subsets to D
val: images/val2017 # relative to path

Keypoints

kpt_shape: [5,2] # number of keypoints, number of dim
flip_indx: [0,1,2,3,4] # no flipping

#backbone: uskng standard backbone
backbone:

[from, repeats, module, args]

  • [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
  • [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
  • [-1, 3, C2f, [128, True]]
  • [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
  • [-1, 6, C2f, [256, True]]
  • [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
  • [-1, 6, C2f, [512, True]]
  • [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
  • [-1, 3, C2f, [1024, True]]
  • [-1, 1, SPPF, [1024, 5]] # 9
    #usn standard head

head:

  • [-1, 1, nn.Upsample, [None, 2, "nearest"]]

  • [[-1, 8], 1, Concat, [1]] # cat backbone P5

  • [-1, 3, C2, [768, False]] # 14

  • [-1, 1, nn.Upsample, [None, 2, "nearest"]]

  • [[-1, 6], 1, Concat, [1]] # cat backbone P4

  • [-1, 3, C2, [512, False]] # 17

  • [-1, 1, nn.Upsample, [None, 2, "nearest"]]

  • [[-1, 4], 1, Concat, [1]] # cat backbone P3

  • [-1, 3, C2, [256, False]] # 20 (P3/8-small)

  • [-1, 1, Conv, [256, 3, 2]]

  • [[-1, 17], 1, Concat, [1]] # cat head P4

  • [-1, 3, C2, [512, False]] # 23 (P4/16-medium)

  • [-1, 1, Conv, [512, 3, 2]]

  • [[-1, 14], 1, Concat, [1]] # cat head P5

  • [-1, 3, C2, [768, False]] # 26 (P5/32-large)

  • [-1, 1, Conv, [768, 3, 2]]

  • [[-1, 11], 1, Concat, [1]] # cat head P6

  • [-1, 3, C2, [1024, False]] # 29 (P6/64-xlarge)

  • [[20, 23, 26, 29], 1, Pose, [nc, kpt_shape]] # Pose(P3, P4, P5, P6)

Classes

names:
0: Class0
1: Class1
2: Class2
3: Class3
4: Class4

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions