2023-01-11 19:01:06 +08:00
|
|
|
_base_ = './yolov8_s_syncbn_fast_8xb16-500e_coco.py'
|
|
|
|
|
2023-02-06 19:39:39 +08:00
|
|
|
# ========================modified parameters======================
|
2023-01-11 19:01:06 +08:00
|
|
|
deepen_factor = 0.67
|
|
|
|
widen_factor = 0.75
|
|
|
|
last_stage_out_channels = 768
|
|
|
|
|
2023-01-18 14:16:37 +08:00
|
|
|
affine_scale = 0.9
|
2023-02-06 19:39:39 +08:00
|
|
|
mixup_prob = 0.1
|
2023-01-18 14:16:37 +08:00
|
|
|
|
2023-02-06 19:39:39 +08:00
|
|
|
# =======================Unmodified in most cases==================
|
2023-01-18 14:16:37 +08:00
|
|
|
num_classes = _base_.num_classes
|
|
|
|
num_det_layers = _base_.num_det_layers
|
|
|
|
img_scale = _base_.img_scale
|
|
|
|
|
2023-01-11 19:01:06 +08:00
|
|
|
model = dict(
|
|
|
|
backbone=dict(
|
|
|
|
last_stage_out_channels=last_stage_out_channels,
|
|
|
|
deepen_factor=deepen_factor,
|
|
|
|
widen_factor=widen_factor),
|
|
|
|
neck=dict(
|
|
|
|
deepen_factor=deepen_factor,
|
|
|
|
widen_factor=widen_factor,
|
|
|
|
in_channels=[256, 512, last_stage_out_channels],
|
|
|
|
out_channels=[256, 512, last_stage_out_channels]),
|
|
|
|
bbox_head=dict(
|
|
|
|
head_module=dict(
|
|
|
|
widen_factor=widen_factor,
|
|
|
|
in_channels=[256, 512, last_stage_out_channels])))
|
2023-01-18 14:16:37 +08:00
|
|
|
|
|
|
|
pre_transform = _base_.pre_transform
|
|
|
|
albu_train_transform = _base_.albu_train_transform
|
|
|
|
last_transform = _base_.last_transform
|
|
|
|
|
2023-02-06 19:39:39 +08:00
|
|
|
mosaic_affine_pipeline = [
|
2023-01-18 14:16:37 +08:00
|
|
|
dict(
|
|
|
|
type='Mosaic',
|
|
|
|
img_scale=img_scale,
|
|
|
|
pad_val=114.0,
|
|
|
|
pre_transform=pre_transform),
|
|
|
|
dict(
|
|
|
|
type='YOLOv5RandomAffine',
|
|
|
|
max_rotate_degree=0.0,
|
|
|
|
max_shear_degree=0.0,
|
|
|
|
max_aspect_ratio=100,
|
|
|
|
scaling_ratio_range=(1 - affine_scale, 1 + affine_scale),
|
|
|
|
# img_scale is (width, height)
|
|
|
|
border=(-img_scale[0] // 2, -img_scale[1] // 2),
|
|
|
|
border_val=(114, 114, 114))
|
|
|
|
]
|
|
|
|
|
2023-02-06 19:39:39 +08:00
|
|
|
# enable mixup
|
2023-01-18 14:16:37 +08:00
|
|
|
train_pipeline = [
|
2023-02-06 19:39:39 +08:00
|
|
|
*pre_transform, *mosaic_affine_pipeline,
|
2023-01-18 14:16:37 +08:00
|
|
|
dict(
|
|
|
|
type='YOLOv5MixUp',
|
2023-02-06 19:39:39 +08:00
|
|
|
prob=mixup_prob,
|
|
|
|
pre_transform=[*pre_transform, *mosaic_affine_pipeline]),
|
2023-01-18 14:16:37 +08:00
|
|
|
*last_transform
|
|
|
|
]
|
|
|
|
|
|
|
|
train_dataloader = dict(dataset=dict(pipeline=train_pipeline))
|
|
|
|
|
|
|
|
train_pipeline_stage2 = [
|
|
|
|
*pre_transform,
|
|
|
|
dict(type='YOLOv5KeepRatioResize', scale=img_scale),
|
|
|
|
dict(
|
|
|
|
type='LetterResize',
|
|
|
|
scale=img_scale,
|
|
|
|
allow_scale_up=True,
|
|
|
|
pad_val=dict(img=114.0)),
|
|
|
|
dict(
|
|
|
|
type='YOLOv5RandomAffine',
|
|
|
|
max_rotate_degree=0.0,
|
|
|
|
max_shear_degree=0.0,
|
|
|
|
scaling_ratio_range=(1 - affine_scale, 1 + affine_scale),
|
|
|
|
max_aspect_ratio=100,
|
|
|
|
border_val=(114, 114, 114)), *last_transform
|
|
|
|
]
|
|
|
|
|
|
|
|
custom_hooks = [
|
|
|
|
dict(
|
|
|
|
type='EMAHook',
|
|
|
|
ema_type='ExpMomentumEMA',
|
|
|
|
momentum=0.0001,
|
|
|
|
update_buffers=True,
|
|
|
|
strict_load=False,
|
|
|
|
priority=49),
|
|
|
|
dict(
|
|
|
|
type='mmdet.PipelineSwitchHook',
|
2023-02-06 19:39:39 +08:00
|
|
|
switch_epoch=_base_.max_epochs - _base_.close_mosaic_epochs,
|
2023-01-18 14:16:37 +08:00
|
|
|
switch_pipeline=train_pipeline_stage2)
|
|
|
|
]
|