mirror of https://github.com/open-mmlab/mmpose
154 lines
4.8 KiB
Python
154 lines
4.8 KiB
Python
# =========================================================
|
|
# from 'mmdetection/configs/_base_/default_runtime.py'
|
|
# =========================================================
|
|
default_scope = 'mmdet'
|
|
checkpoint_config = dict(interval=1)
|
|
# yapf:disable
|
|
log_config = dict(
|
|
interval=50,
|
|
hooks=[
|
|
dict(type='TextLoggerHook'),
|
|
# dict(type='TensorboardLoggerHook')
|
|
])
|
|
# yapf:enable
|
|
custom_hooks = [dict(type='NumClassCheckHook')]
|
|
# =========================================================
|
|
|
|
# model settings
|
|
data_preprocessor = dict(
|
|
type='DetDataPreprocessor',
|
|
mean=[123.675, 116.28, 103.53],
|
|
std=[58.395, 57.12, 57.375],
|
|
bgr_to_rgb=True,
|
|
pad_size_divisor=1)
|
|
model = dict(
|
|
type='SingleStageDetector',
|
|
data_preprocessor=data_preprocessor,
|
|
backbone=dict(
|
|
type='MobileNetV2',
|
|
out_indices=(4, 7),
|
|
norm_cfg=dict(type='BN', eps=0.001, momentum=0.03),
|
|
init_cfg=dict(type='TruncNormal', layer='Conv2d', std=0.03)),
|
|
neck=dict(
|
|
type='SSDNeck',
|
|
in_channels=(96, 1280),
|
|
out_channels=(96, 1280, 512, 256, 256, 128),
|
|
level_strides=(2, 2, 2, 2),
|
|
level_paddings=(1, 1, 1, 1),
|
|
l2_norm_scale=None,
|
|
use_depthwise=True,
|
|
norm_cfg=dict(type='BN', eps=0.001, momentum=0.03),
|
|
act_cfg=dict(type='ReLU6'),
|
|
init_cfg=dict(type='TruncNormal', layer='Conv2d', std=0.03)),
|
|
bbox_head=dict(
|
|
type='SSDHead',
|
|
in_channels=(96, 1280, 512, 256, 256, 128),
|
|
num_classes=1,
|
|
use_depthwise=True,
|
|
norm_cfg=dict(type='BN', eps=0.001, momentum=0.03),
|
|
act_cfg=dict(type='ReLU6'),
|
|
init_cfg=dict(type='Normal', layer='Conv2d', std=0.001),
|
|
|
|
# set anchor size manually instead of using the predefined
|
|
# SSD300 setting.
|
|
anchor_generator=dict(
|
|
type='SSDAnchorGenerator',
|
|
scale_major=False,
|
|
strides=[16, 32, 64, 107, 160, 320],
|
|
ratios=[[2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3]],
|
|
min_sizes=[48, 100, 150, 202, 253, 304],
|
|
max_sizes=[100, 150, 202, 253, 304, 320]),
|
|
bbox_coder=dict(
|
|
type='DeltaXYWHBBoxCoder',
|
|
target_means=[.0, .0, .0, .0],
|
|
target_stds=[0.1, 0.1, 0.2, 0.2])),
|
|
# model training and testing settings
|
|
train_cfg=dict(
|
|
assigner=dict(
|
|
type='MaxIoUAssigner',
|
|
pos_iou_thr=0.5,
|
|
neg_iou_thr=0.5,
|
|
min_pos_iou=0.,
|
|
ignore_iof_thr=-1,
|
|
gt_max_assign_all=False),
|
|
sampler=dict(type='PseudoSampler'),
|
|
smoothl1_beta=1.,
|
|
allowed_border=-1,
|
|
pos_weight=-1,
|
|
neg_pos_ratio=3,
|
|
debug=False),
|
|
test_cfg=dict(
|
|
nms_pre=1000,
|
|
nms=dict(type='nms', iou_threshold=0.45),
|
|
min_bbox_size=0,
|
|
score_thr=0.02,
|
|
max_per_img=200))
|
|
cudnn_benchmark = True
|
|
|
|
# dataset settings
|
|
file_client_args = dict(backend='disk')
|
|
|
|
dataset_type = 'CocoDataset'
|
|
data_root = 'data/onehand10k/'
|
|
classes = ('hand', )
|
|
input_size = 320
|
|
test_pipeline = [
|
|
dict(type='LoadImageFromFile'),
|
|
dict(type='Resize', scale=(input_size, input_size), keep_ratio=False),
|
|
dict(type='LoadAnnotations', with_bbox=True),
|
|
dict(
|
|
type='PackDetInputs',
|
|
meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',
|
|
'scale_factor'))
|
|
]
|
|
|
|
val_dataloader = dict(
|
|
batch_size=8,
|
|
num_workers=2,
|
|
persistent_workers=True,
|
|
drop_last=False,
|
|
sampler=dict(type='DefaultSampler', shuffle=False),
|
|
dataset=dict(
|
|
type=dataset_type,
|
|
data_root=data_root,
|
|
ann_file='annotations/onehand10k_test.json',
|
|
test_mode=True,
|
|
pipeline=test_pipeline))
|
|
test_dataloader = val_dataloader
|
|
|
|
# optimizer
|
|
optimizer = dict(type='SGD', lr=0.015, momentum=0.9, weight_decay=4.0e-5)
|
|
optimizer_config = dict(grad_clip=None)
|
|
|
|
# learning policy
|
|
lr_config = dict(
|
|
policy='CosineAnnealing',
|
|
warmup='linear',
|
|
warmup_iters=500,
|
|
warmup_ratio=0.001,
|
|
min_lr=0)
|
|
runner = dict(type='EpochBasedRunner', max_epochs=120)
|
|
|
|
# Avoid evaluation and saving weights too frequently
|
|
evaluation = dict(interval=5, metric='bbox')
|
|
checkpoint_config = dict(interval=5)
|
|
custom_hooks = [
|
|
dict(type='NumClassCheckHook'),
|
|
dict(type='CheckInvalidLossHook', interval=50, priority='VERY_LOW')
|
|
]
|
|
|
|
log_config = dict(interval=5)
|
|
|
|
# NOTE: `auto_scale_lr` is for automatically scaling LR,
|
|
# USER SHOULD NOT CHANGE ITS VALUES.
|
|
# base_batch_size = (8 GPUs) x (24 samples per GPU)
|
|
auto_scale_lr = dict(base_batch_size=192)
|
|
|
|
load_from = 'https://download.openmmlab.com/mmdetection/'
|
|
'v2.0/ssd/ssdlite_mobilenetv2_scratch_600e_coco/'
|
|
'ssdlite_mobilenetv2_scratch_600e_coco_20210629_110627-974d9307.pth'
|
|
|
|
vis_backends = [dict(type='LocalVisBackend')]
|
|
visualizer = dict(
|
|
type='DetLocalVisualizer', vis_backends=vis_backends, name='visualizer')
|