Skip to content

Commit 5353b7f

Browse files
author
WongGawa
committed
support v12
1 parent bdc48d6 commit 5353b7f

22 files changed

+820
-13
lines changed

configs/yolov12/hyp.scratch.l.yaml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
optimizer:
2+
optimizer: sgd
3+
lr_init: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
4+
momentum: 0.937 # SGD momentum/Adam beta1
5+
nesterov: True # update gradients with NAG(Nesterov Accelerated Gradient) algorithm
6+
loss_scale: 1.0 # loss scale for optimizer
7+
warmup_epochs: 3 # warmup epochs (fractions ok)
8+
warmup_momentum: 0.8 # warmup initial momentum
9+
warmup_bias_lr: 0.1 # warmup initial bias lr
10+
min_warmup_step: 1000 # minimum warmup step
11+
group_param: yolov8 # group param strategy
12+
gp_weight_decay: 0.0005 # group param weight decay 5e-4
13+
start_factor: 1.0
14+
end_factor: 0.01
15+
16+
loss:
17+
name: YOLOv12Loss
18+
box: 7.5 # box loss gain
19+
cls: 0.5 # cls loss gain
20+
dfl: 1.5 # dfl loss gain
21+
reg_max: 16
22+
23+
data:
24+
num_parallel_workers: 8
25+
26+
# multi-stage data augment
27+
train_transforms: {
28+
stage_epochs: [ 590, 10 ],
29+
trans_list: [
30+
[
31+
{func_name: mosaic, prob: 1.0},
32+
{func_name: copy_paste, prob: 0.5},
33+
{func_name: resample_segments},
34+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0},
35+
{func_name: mixup, alpha: 32.0, beta: 32.0, prob: 0.15, pre_transform: [
36+
{func_name: mosaic, prob: 1.0},
37+
{func_name: copy_paste, prob: 0.5},
38+
{func_name: resample_segments},
39+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0}, ]
40+
},
41+
{func_name: albumentations},
42+
{func_name: hsv_augment, prob: 1.0, hgain: 0.015, sgain: 0.7, vgain: 0.4},
43+
{func_name: fliplr, prob: 0.5},
44+
{func_name: label_norm, xyxy2xywh_: True},
45+
{func_name: label_pad, padding_size: 160, padding_value: -1},
46+
{func_name: image_norm, scale: 255.},
47+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
48+
],
49+
[
50+
{func_name: letterbox, scaleup: True},
51+
{func_name: resample_segments},
52+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0},
53+
{func_name: albumentations},
54+
{func_name: hsv_augment, prob: 1.0, hgain: 0.015, sgain: 0.7, vgain: 0.4},
55+
{func_name: fliplr, prob: 0.5},
56+
{func_name: label_norm, xyxy2xywh_: True},
57+
{func_name: label_pad, padding_size: 160, padding_value: -1},
58+
{func_name: image_norm, scale: 255.},
59+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
60+
]]
61+
}
62+
63+
test_transforms: [
64+
{func_name: letterbox, scaleup: False, only_image: True},
65+
{func_name: image_norm, scale: 255.},
66+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
67+
]

configs/yolov12/hyp.scratch.m.yaml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
optimizer:
2+
optimizer: sgd
3+
lr_init: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
4+
momentum: 0.937 # SGD momentum/Adam beta1
5+
nesterov: True # update gradients with NAG(Nesterov Accelerated Gradient) algorithm
6+
loss_scale: 1.0 # loss scale for optimizer
7+
warmup_epochs: 3 # warmup epochs (fractions ok)
8+
warmup_momentum: 0.8 # warmup initial momentum
9+
warmup_bias_lr: 0.1 # warmup initial bias lr
10+
min_warmup_step: 1000 # minimum warmup step
11+
group_param: yolov8 # group param strategy
12+
gp_weight_decay: 0.0005 # group param weight decay 5e-4
13+
start_factor: 1.0
14+
end_factor: 0.01
15+
16+
loss:
17+
name: YOLOv12Loss
18+
box: 7.5 # box loss gain
19+
cls: 0.5 # cls loss gain
20+
dfl: 1.5 # dfl loss gain
21+
reg_max: 16
22+
23+
data:
24+
num_parallel_workers: 8
25+
26+
# multi-stage data augment
27+
train_transforms: {
28+
stage_epochs: [ 590, 10 ],
29+
trans_list: [
30+
[
31+
{func_name: mosaic, prob: 1.0},
32+
{func_name: copy_paste, prob: 0.4},
33+
{func_name: resample_segments},
34+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0},
35+
{func_name: mixup, alpha: 32.0, beta: 32.0, prob: 0.15, pre_transform: [
36+
{func_name: mosaic, prob: 1.0},
37+
{func_name: copy_paste, prob: 0.4},
38+
{func_name: resample_segments},
39+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0}, ]
40+
},
41+
{func_name: albumentations},
42+
{func_name: hsv_augment, prob: 1.0, hgain: 0.015, sgain: 0.7, vgain: 0.4},
43+
{func_name: fliplr, prob: 0.5},
44+
{func_name: label_norm, xyxy2xywh_: True},
45+
{func_name: label_pad, padding_size: 160, padding_value: -1},
46+
{func_name: image_norm, scale: 255.},
47+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
48+
],
49+
[
50+
{func_name: letterbox, scaleup: True},
51+
{func_name: resample_segments},
52+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0},
53+
{func_name: albumentations},
54+
{func_name: hsv_augment, prob: 1.0, hgain: 0.015, sgain: 0.7, vgain: 0.4},
55+
{func_name: fliplr, prob: 0.5},
56+
{func_name: label_norm, xyxy2xywh_: True},
57+
{func_name: label_pad, padding_size: 160, padding_value: -1},
58+
{func_name: image_norm, scale: 255.},
59+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
60+
]]
61+
}
62+
63+
test_transforms: [
64+
{func_name: letterbox, scaleup: False, only_image: True},
65+
{func_name: image_norm, scale: 255.},
66+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
67+
]

configs/yolov12/hyp.scratch.n.yaml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
optimizer:
2+
optimizer: sgd
3+
lr_init: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
4+
momentum: 0.937 # SGD momentum/Adam beta1
5+
nesterov: True # update gradients with NAG(Nesterov Accelerated Gradient) algorithm
6+
loss_scale: 1.0 # loss scale for optimizer
7+
warmup_epochs: 3 # warmup epochs (fractions ok)
8+
warmup_momentum: 0.8 # warmup initial momentum
9+
warmup_bias_lr: 0.1 # warmup initial bias lr
10+
min_warmup_step: 1000 # minimum warmup step
11+
group_param: yolov8 # group param strategy
12+
gp_weight_decay: 0.0005 # group param weight decay 5e-4
13+
start_factor: 1.0
14+
end_factor: 0.01
15+
16+
loss:
17+
name: YOLOv12Loss
18+
box: 7.5 # box loss gain
19+
cls: 0.5 # cls loss gain
20+
dfl: 1.5 # dfl loss gain
21+
reg_max: 16
22+
23+
data:
24+
num_parallel_workers: 8
25+
26+
# multi-stage data augment
27+
train_transforms: {
28+
stage_epochs: [ 590, 10 ],
29+
trans_list: [
30+
[
31+
{func_name: mosaic, prob: 1.0},
32+
{func_name: copy_paste, prob: 0.1},
33+
{func_name: resample_segments},
34+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.5, shear: 0.0},
35+
{func_name: albumentations},
36+
{func_name: hsv_augment, prob: 1.0, hgain: 0.015, sgain: 0.7, vgain: 0.4},
37+
{func_name: fliplr, prob: 0.5},
38+
{func_name: label_norm, xyxy2xywh_: True},
39+
{func_name: label_pad, padding_size: 160, padding_value: -1},
40+
{func_name: image_norm, scale: 255.},
41+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
42+
],
43+
[
44+
{func_name: letterbox, scaleup: True},
45+
{func_name: resample_segments},
46+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.5, shear: 0.0},
47+
{func_name: albumentations},
48+
{func_name: hsv_augment, prob: 1.0, hgain: 0.015, sgain: 0.7, vgain: 0.4},
49+
{func_name: fliplr, prob: 0.5},
50+
{func_name: label_norm, xyxy2xywh_: True},
51+
{func_name: label_pad, padding_size: 160, padding_value: -1},
52+
{func_name: image_norm, scale: 255.},
53+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
54+
]]
55+
}
56+
57+
test_transforms: [
58+
{func_name: letterbox, scaleup: False, only_image: True},
59+
{func_name: image_norm, scale: 255.},
60+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
61+
]

configs/yolov12/hyp.scratch.s.yaml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
optimizer:
2+
optimizer: sgd
3+
lr_init: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
4+
momentum: 0.937 # SGD momentum/Adam beta1
5+
nesterov: True # update gradients with NAG(Nesterov Accelerated Gradient) algorithm
6+
loss_scale: 1.0 # loss scale for optimizer
7+
warmup_epochs: 3 # warmup epochs (fractions ok)
8+
warmup_momentum: 0.8 # warmup initial momentum
9+
warmup_bias_lr: 0.1 # warmup initial bias lr
10+
min_warmup_step: 1000 # minimum warmup step
11+
group_param: yolov8 # group param strategy
12+
gp_weight_decay: 0.0005 # group param weight decay 5e-4
13+
start_factor: 1.0
14+
end_factor: 0.01
15+
16+
loss:
17+
name: YOLOv12Loss
18+
box: 7.5 # box loss gain
19+
cls: 0.5 # cls loss gain
20+
dfl: 1.5 # dfl loss gain
21+
reg_max: 16
22+
23+
data:
24+
num_parallel_workers: 8
25+
26+
# multi-stage data augment
27+
train_transforms: {
28+
stage_epochs: [ 590, 10 ],
29+
trans_list: [
30+
[
31+
{func_name: mosaic, prob: 1.0},
32+
{func_name: copy_paste, prob: 0.15},
33+
{func_name: resample_segments},
34+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0},
35+
{func_name: mixup, alpha: 32.0, beta: 32.0, prob: 0.05, pre_transform: [
36+
{func_name: mosaic, prob: 1.0},
37+
{func_name: copy_paste, prob: 0.15},
38+
{func_name: resample_segments},
39+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0}, ]
40+
},
41+
{func_name: albumentations},
42+
{func_name: hsv_augment, prob: 1.0, hgain: 0.015, sgain: 0.7, vgain: 0.4},
43+
{func_name: fliplr, prob: 0.5},
44+
{func_name: label_norm, xyxy2xywh_: True},
45+
{func_name: label_pad, padding_size: 160, padding_value: -1},
46+
{func_name: image_norm, scale: 255.},
47+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
48+
],
49+
[
50+
{func_name: letterbox, scaleup: True},
51+
{func_name: resample_segments},
52+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0},
53+
{func_name: albumentations},
54+
{func_name: hsv_augment, prob: 1.0, hgain: 0.015, sgain: 0.7, vgain: 0.4},
55+
{func_name: fliplr, prob: 0.5},
56+
{func_name: label_norm, xyxy2xywh_: True},
57+
{func_name: label_pad, padding_size: 160, padding_value: -1},
58+
{func_name: image_norm, scale: 255.},
59+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
60+
]]
61+
}
62+
63+
test_transforms: [
64+
{func_name: letterbox, scaleup: False, only_image: True},
65+
{func_name: image_norm, scale: 255.},
66+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
67+
]

configs/yolov12/hyp.scratch.x.yaml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
optimizer:
2+
optimizer: sgd
3+
lr_init: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
4+
momentum: 0.937 # SGD momentum/Adam beta1
5+
nesterov: True # update gradients with NAG(Nesterov Accelerated Gradient) algorithm
6+
loss_scale: 1.0 # loss scale for optimizer
7+
warmup_epochs: 3 # warmup epochs (fractions ok)
8+
warmup_momentum: 0.8 # warmup initial momentum
9+
warmup_bias_lr: 0.1 # warmup initial bias lr
10+
min_warmup_step: 1000 # minimum warmup step
11+
group_param: yolov8 # group param strategy
12+
gp_weight_decay: 0.0005 # group param weight decay 5e-4
13+
start_factor: 1.0
14+
end_factor: 0.01
15+
16+
loss:
17+
name: YOLOv12Loss
18+
box: 7.5 # box loss gain
19+
cls: 0.5 # cls loss gain
20+
dfl: 1.5 # dfl loss gain
21+
reg_max: 16
22+
23+
data:
24+
num_parallel_workers: 8
25+
26+
# multi-stage data augment
27+
train_transforms: {
28+
stage_epochs: [ 590, 10 ],
29+
trans_list: [
30+
[
31+
{func_name: mosaic, prob: 1.0},
32+
{func_name: copy_paste, prob: 0.6},
33+
{func_name: resample_segments},
34+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0},
35+
{func_name: mixup, alpha: 32.0, beta: 32.0, prob: 0.2, pre_transform: [
36+
{func_name: mosaic, prob: 1.0},
37+
{func_name: copy_paste, prob: 0.6},
38+
{func_name: resample_segments},
39+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0}, ]
40+
},
41+
{func_name: albumentations},
42+
{func_name: hsv_augment, prob: 1.0, hgain: 0.015, sgain: 0.7, vgain: 0.4},
43+
{func_name: fliplr, prob: 0.5},
44+
{func_name: label_norm, xyxy2xywh_: True},
45+
{func_name: label_pad, padding_size: 160, padding_value: -1},
46+
{func_name: image_norm, scale: 255.},
47+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
48+
],
49+
[
50+
{func_name: letterbox, scaleup: True},
51+
{func_name: resample_segments},
52+
{func_name: random_perspective, prob: 1.0, degrees: 0.0, translate: 0.1, scale: 0.9, shear: 0.0},
53+
{func_name: albumentations},
54+
{func_name: hsv_augment, prob: 1.0, hgain: 0.015, sgain: 0.7, vgain: 0.4},
55+
{func_name: fliplr, prob: 0.5},
56+
{func_name: label_norm, xyxy2xywh_: True},
57+
{func_name: label_pad, padding_size: 160, padding_value: -1},
58+
{func_name: image_norm, scale: 255.},
59+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
60+
]]
61+
}
62+
63+
test_transforms: [
64+
{func_name: letterbox, scaleup: False, only_image: True},
65+
{func_name: image_norm, scale: 255.},
66+
{func_name: image_transpose, bgr2rgb: True, hwc2chw: True}
67+
]

configs/yolov12/yolov12-base.yaml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
epochs: 600 # total train epochs
2+
per_batch_size: 32 # 32 * 8 = 256
3+
img_size: 640
4+
conf_free: True
5+
iou_thres: 0.7
6+
ms_loss_scaler: dynamic
7+
ms_loss_scaler_value: 65536.0
8+
clip_grad: True
9+
anchor_base: False
10+
opencv_threads_num: 0 # opencv: disable threading optimizations
11+
12+
network:
13+
model_name: yolov12
14+
nc: 80 # number of classes
15+
reg_max: 16
16+
17+
stride: [8, 16, 32]
18+
19+
# YOLOv12n backbone
20+
backbone:
21+
# [from, repeats, module, args]
22+
- [-1, 1, ConvNormAct, [64, 3, 2]] # 0-P1/2
23+
- [-1, 1, ConvNormAct, [128, 3, 2]] # 1-P2/4
24+
- [-1, 2, C3k2, [256, False, 0.25]]
25+
- [-1, 1, ConvNormAct, [256, 3, 2]] # 3-P3/8
26+
- [-1, 2, C3k2, [512, False, 0.25]]
27+
- [-1, 1, ConvNormAct, [512, 3, 2]] # 5-P4/16
28+
- [-1, 4, A2C2f, [512, True, 4]]
29+
- [-1, 1, ConvNormAct, [1024, 3, 2]] # 7-P5/32
30+
- [-1, 4, A2C2f, [1024, True, 1]]
31+
32+
# YOLOv12n head
33+
head:
34+
- [-1, 1, Upsample, [None, 2, 'nearest']]
35+
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
36+
- [-1, 2, A2C2f, [512, False, -1]] # 11
37+
38+
- [-1, 1, Upsample, [None, 2, 'nearest']]
39+
- [[-1, 4], 1, Concat, [1] ] # cat backbone P3
40+
- [-1, 2, A2C2f, [256, False, -1]] # 14
41+
42+
- [-1, 1, ConvNormAct, [256, 3, 2]]
43+
- [[ -1, 11], 1, Concat, [1]] # cat head P4
44+
- [-1, 2, A2C2f, [512, False, -1]] # 17
45+
46+
- [-1, 1, ConvNormAct, [512, 3, 2]]
47+
- [[-1, 8], 1, Concat, [1]] # cat head P5
48+
- [-1, 2, C3k2, [1024, True]] # 20 (P5/32-large)
49+
50+
- [[14, 17, 20], 1, YOLOv12Head, [nc, reg_max, stride]] # Detect(P3, P4, P5)

configs/yolov12/yolov12l.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
__BASE__: [
2+
'../coco.yaml',
3+
'./hyp.scratch.l.yaml',
4+
'./yolov12-base.yaml',
5+
]
6+
7+
overflow_still_update: False
8+
network:
9+
scale: l
10+
depth_multiple: 1.00 # model depth multiple
11+
width_multiple: 1.00 # layer channel multiple
12+
max_channels: 512

0 commit comments

Comments
 (0)