From 18ebd8e8303e1cdb511e8093158ba26204e26a1e Mon Sep 17 00:00:00 2001 From: kingyaaa <191220004@smail.nju.edu.cn> Date: Mon, 21 Aug 2023 20:33:13 +0800 Subject: [PATCH 1/3] add new config --- mmpose/configs/new_config.py | 176 +++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 mmpose/configs/new_config.py diff --git a/mmpose/configs/new_config.py b/mmpose/configs/new_config.py new file mode 100644 index 0000000000..70be132872 --- /dev/null +++ b/mmpose/configs/new_config.py @@ -0,0 +1,176 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from mmengine.config import read_base + +with read_base(): + from mmpose.configs._base_.default_runtime import * + +from mmengine.dataset import DefaultSampler +from mmengine.model import PretrainedInit +from mmengine.optim import LinearLR, MultiStepLR +from torch.optim import Adam + +from mmpose.codecs import MSRAHeatmap +from mmpose.datasets import (OneHand10KDataset, GenerateTarget, GetBBoxCenterScale, + LoadImage, PackPoseInputs, RandomFlip, + TopdownAffine) +from mmpose.datasets.transforms.common_transforms import RandomBBoxTransform +from mmpose.evaluation import PCKAccuracy, AUC, EPE +from mmpose.models import (HeatmapHead, HRNet, KeypointMSELoss, FeatureMapProcessor, + PoseDataPreprocessor, TopdownPoseEstimator) +# + +# runtime +train_cfg.update(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type=Adam, + lr=5e-4, +)) + +# learning policy +param_scheduler = [ + dict(type=LinearLR, begin=0, end=500, start_factor=0.001, + by_epoch=False), # warm-up + dict( + type=MultiStepLR, + begin=0, + end=210, + milestones=[170, 200], + gamma=0.1, + by_epoch=True) +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=512) + +# hooks +default_hooks.update(checkpoint=dict(save_best='AUC', rule='greater')) + +# codec settings +codec = dict( + type=MSRAHeatmap, input_size=(256, 256), heatmap_size=(64, 64), sigma=2, unbiased=True) + +# model settings +model = dict( + type=TopdownPoseEstimator, + data_preprocessor=dict( + type=PoseDataPreprocessor, + mean=[123.675, 116.28, 103.53], + std=[58.395, 57.12, 57.375], + bgr_to_rgb=True), + backbone=dict( + type=HRNet, + in_channels=3, + extra=dict( + stage1=dict( + num_modules=1, + num_branches=1, + block='BOTTLENECK', + num_blocks=(4, ), + num_channels=(64, )), + stage2=dict( + num_modules=1, + num_branches=2, + block='BASIC', + num_blocks=(4, 4), + num_channels=(18, 36)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(18, 36, 72)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(18, 36, 72, 144), + multiscale_output=True), + upsample=dict(mode='bilinear', align_corners=False)), + init_cfg=dict( + type=PretrainedInit, + checkpoint='open-mmlab://msra/hrnetv2_w18', + )), + neck=dict( + type=FeatureMapProcessor, + concat=True, + ), + head=dict( + type=HeatmapHead, + in_channels=270, + out_channels=21, + deconv_out_channels=None, + conv_out_channels=(270, ), + conv_kernel_sizes=(1, ), + loss=dict(type=KeypointMSELoss, use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=True, + )) + +# base dataset settings +dataset_type = OneHand10KDataset +data_mode = 'topdown' +data_root = 'data/pose/OneHand10K/' + +# pipelines +train_pipeline = [ + dict(type=LoadImage), + dict(type=GetBBoxCenterScale), + dict(type=RandomFlip, direction='horizontal'), + dict( + type=RandomBBoxTransform, rotate_factor=180, + scale_factor=(0.7, 1.3)), + dict(type=TopdownAffine, input_size=codec['input_size']), + dict(type=GenerateTarget, encoder=codec), + dict(type=PackPoseInputs) +] +val_pipeline = [ + dict(type=LoadImage), + dict(type=GetBBoxCenterScale), + dict(type=TopdownAffine, input_size=codec['input_size']), + dict(type=PackPoseInputs) +] + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=2, + persistent_workers=True, + sampler=dict(type=DefaultSampler, shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='annotations/onehand10k_train.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=2, + persistent_workers=True, + drop_last=False, + sampler=dict(type=DefaultSampler, shuffle=False, round_up=False), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='annotations/onehand10k_test.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = [ + dict(type=PCKAccuracy, thr=0.2), + dict(type=AUC), + dict(type=EPE), +] +test_evaluator = val_evaluator From 15ca5c7b62167922bbe5fd746bd0c657e8e2bf3b Mon Sep 17 00:00:00 2001 From: kingyaaa <191220004@smail.nju.edu.cn> Date: Mon, 21 Aug 2023 21:06:19 +0800 Subject: [PATCH 2/3] update new config --- mmpose/configs/new_config.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/mmpose/configs/new_config.py b/mmpose/configs/new_config.py index 70be132872..4a305005e0 100644 --- a/mmpose/configs/new_config.py +++ b/mmpose/configs/new_config.py @@ -10,13 +10,21 @@ from torch.optim import Adam from mmpose.codecs import MSRAHeatmap -from mmpose.datasets import (OneHand10KDataset, GenerateTarget, GetBBoxCenterScale, - LoadImage, PackPoseInputs, RandomFlip, - TopdownAffine) +from mmpose.datasets import OneHand10KDataset +from mmpose.datasets import GenerateTarget +from mmpose.datasets import GetBBoxCenterScale +from mmpose.datasets import LoadImage +from mmpose.datasets import PackPoseInputs +from mmpose.datasets import RandomFlip +from mmpose.datasets import TopdownAffine from mmpose.datasets.transforms.common_transforms import RandomBBoxTransform from mmpose.evaluation import PCKAccuracy, AUC, EPE -from mmpose.models import (HeatmapHead, HRNet, KeypointMSELoss, FeatureMapProcessor, - PoseDataPreprocessor, TopdownPoseEstimator) +from mmpose.models import HeatmapHead +from mmpose.models import HRNet +from mmpose.models import KeypointMSELoss +from mmpose.models import FeatureMapProcessor +from mmpose.models import PoseDataPreprocessor +from mmpose.models import TopdownPoseEstimator # # runtime @@ -49,7 +57,12 @@ # codec settings codec = dict( - type=MSRAHeatmap, input_size=(256, 256), heatmap_size=(64, 64), sigma=2, unbiased=True) + type=MSRAHeatmap, + input_size=(256, 256), + heatmap_size=(64, 64), + sigma=2, + unbiased=True +) # model settings model = dict( From 13dc37aac2463c317992197052918f1ba884accf Mon Sep 17 00:00:00 2001 From: kingyaaa <191220004@smail.nju.edu.cn> Date: Mon, 21 Aug 2023 21:14:36 +0800 Subject: [PATCH 3/3] update new config --- mmpose/configs/new_config.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mmpose/configs/new_config.py b/mmpose/configs/new_config.py index 4a305005e0..64d340f96e 100644 --- a/mmpose/configs/new_config.py +++ b/mmpose/configs/new_config.py @@ -14,7 +14,7 @@ from mmpose.datasets import GenerateTarget from mmpose.datasets import GetBBoxCenterScale from mmpose.datasets import LoadImage -from mmpose.datasets import PackPoseInputs +from mmpose.datasets import PackPoseInputs from mmpose.datasets import RandomFlip from mmpose.datasets import TopdownAffine from mmpose.datasets.transforms.common_transforms import RandomBBoxTransform @@ -57,10 +57,10 @@ # codec settings codec = dict( - type=MSRAHeatmap, - input_size=(256, 256), - heatmap_size=(64, 64), - sigma=2, + type=MSRAHeatmap, + input_size=(256, 256), + heatmap_size=(64, 64), + sigma=2, unbiased=True )