-
-
Notifications
You must be signed in to change notification settings - Fork 262
Description
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
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
- no similar problems weere found in the GitHub blog
- 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