From c7bfc9e461a4f084b9d1de059410c012307782ca Mon Sep 17 00:00:00 2001 From: Tau Date: Thu, 6 Apr 2023 16:51:48 +0800 Subject: [PATCH 1/7] Bump version to v1.0.0 (#2169) (#2170) --- mmpose/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mmpose/version.py b/mmpose/version.py index 390f9399d3..73312cc28d 100644 --- a/mmpose/version.py +++ b/mmpose/version.py @@ -1,6 +1,6 @@ # Copyright (c) Open-MMLab. All rights reserved. -__version__ = '1.0.0rc1' +__version__ = '1.0.0' short_version = __version__ From cf47b71c3235a0dddc8ae664edf27bef404640b3 Mon Sep 17 00:00:00 2001 From: Yining Li Date: Mon, 17 Apr 2023 11:49:06 +0800 Subject: [PATCH 2/7] [Fix] add .owners.yml (#2243) --- .owners.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .owners.yml diff --git a/.owners.yml b/.owners.yml new file mode 100644 index 0000000000..2050b43c10 --- /dev/null +++ b/.owners.yml @@ -0,0 +1,16 @@ +assign: + issues: enabled + pull_requests: disabled + strategy: + # random + daily-shift-based + scedule: + '*/1 * * * *' + assignees: + - Tau-J + - LareinaM + - Ben-Louis + - LareinaM + - Ben-Louis + - Tau-J + - Tau-J From b2ffafacb14a66cde9a906c9066f62da55bf219c Mon Sep 17 00:00:00 2001 From: juxuan27 Date: Sun, 23 Apr 2023 23:21:48 +0800 Subject: [PATCH 3/7] add dataset: Human-Art --- README.md | 1 + README_CN.md | 1 + configs/_base_/datasets/humanart.py | 181 +++++++++++ configs/_base_/datasets/humanart_aic.py | 205 +++++++++++++ ...e_hrnet-w32_8xb24-300e_humanart-512x512.py | 159 ++++++++++ ...d_hrnet-w32_8xb20-140e_humanart-512x512.py | 164 ++++++++++ ...d_hrnet-w48_8xb20-140e_humanart-512x512.py | 164 ++++++++++ ...r_hrnet-w32_8xb10-140e_humanart-512x512.py | 186 ++++++++++++ ...r_hrnet-w48_8xb10-140e_humanart-640x640.py | 187 ++++++++++++ .../ipr_res50_8xb64-210e_humanart-256x256.py | 134 +++++++++ ...es50_debias-8xb64-210e_humanart-256x256.py | 136 +++++++++ ..._res50_dsnt-8xb64-210e_humanart-256x256.py | 134 +++++++++ ...pose-l_8xb256-420e_aic-humanart-256x192.py | 272 +++++++++++++++++ ...pose-l_8xb256-420e_aic-humanart-384x288.py | 272 +++++++++++++++++ .../rtmpose-l_8xb256-420e_humanart-256x192.py | 232 ++++++++++++++ ...pose-m_8xb256-420e_aic-humanart-256x192.py | 272 +++++++++++++++++ ...pose-m_8xb256-420e_aic-humanart-384x288.py | 272 +++++++++++++++++ .../rtmpose-m_8xb256-420e_humanart-256x192.py | 232 ++++++++++++++ ...pose-s_8xb256-420e_aic-humanart-256x192.py | 272 +++++++++++++++++ .../rtmpose-s_8xb256-420e_humanart-256x192.py | 232 ++++++++++++++ ...pose-t_8xb256-420e_aic-humanart-256x192.py | 273 +++++++++++++++++ .../rtmpose-t_8xb256-420e_humanart-256x192.py | 233 ++++++++++++++ ...2_wo-deconv-8xb64-210e_humanart-256x192.py | 124 ++++++++ ...simcc_res50_8xb32-140e_humanart-384x288.py | 120 ++++++++ ...simcc_res50_8xb64-210e_humanart-256x192.py | 114 +++++++ ...vipnas-mbv3_8xb64-210e_humanart-256x192.py | 119 ++++++++ ...-l_udp_8xb256-210e_aic-humanart-256x192.py | 284 ++++++++++++++++++ ...next-l_udp_8xb256-210e_humanart-256x192.py | 214 +++++++++++++ ...-m_udp_8xb256-210e_aic-humanart-256x192.py | 284 ++++++++++++++++++ ...next-m_udp_8xb256-210e_humanart-256x192.py | 214 +++++++++++++ ...-s_udp_8xb256-210e_aic-humanart-256x192.py | 284 ++++++++++++++++++ ...next-s_udp_8xb256-210e_humanart-256x192.py | 214 +++++++++++++ ...ny_udp_8xb256-210e_aic-humanart-256x192.py | 284 ++++++++++++++++++ ...t-tiny_udp_8xb256-210e_humanart-256x192.py | 214 +++++++++++++ .../humanart/hrnet_humanart.md | 44 +++ ...hm_2xmspn50_8xb32-210e_humanart-256x192.py | 152 ++++++++++ ...-hm_2xrsn50_8xb32-210e_humanart-256x192.py | 154 ++++++++++ ...hm_3xmspn50_8xb32-210e_humanart-256x192.py | 152 ++++++++++ ...-hm_3xrsn50_8xb32-210e_humanart-256x192.py | 154 ++++++++++ ...hm_4xmspn50_8xb32-210e_humanart-256x192.py | 152 ++++++++++ ...base-simple_8xb64-210e_humanart-256x192.py | 153 ++++++++++ ...iTPose-base_8xb64-210e_humanart-256x192.py | 150 +++++++++ ...huge-simple_8xb64-210e_humanart-256x192.py | 153 ++++++++++ ...iTPose-huge_8xb64-210e_humanart-256x192.py | 150 +++++++++ ...arge-simple_8xb64-210e_humanart-256x192.py | 153 ++++++++++ ...TPose-large_8xb64-210e_humanart-256x192.py | 150 +++++++++ ...mall-simple_8xb64-210e_humanart-256x192.py | 158 ++++++++++ ...TPose-small_8xb64-210e_humanart-256x192.py | 155 ++++++++++ ...-hm_alexnet_8xb64-210e_humanart-256x192.py | 117 ++++++++ .../td-hm_cpm_8xb32-210e_humanart-384x288.py | 125 ++++++++ .../td-hm_cpm_8xb64-210e_humanart-256x192.py | 125 ++++++++ ...hourglass52_8xb32-210e_humanart-256x256.py | 122 ++++++++ ...hourglass52_8xb32-210e_humanart-384x384.py | 122 ++++++++ ...former-base_8xb32-210e_humanart-256x192.py | 174 +++++++++++ ...former-base_8xb32-210e_humanart-384x288.py | 174 +++++++++++ ...ormer-small_8xb32-210e_humanart-256x192.py | 174 +++++++++++ ...ormer-small_8xb32-210e_humanart-384x288.py | 174 +++++++++++ ...m_hrnet-w32_8xb64-210e_humanart-256x192.py | 150 +++++++++ ...m_hrnet-w32_8xb64-210e_humanart-384x288.py | 150 +++++++++ ...8xb64-210e_humanart-aic-256x192-combine.py | 221 ++++++++++++++ ...2_8xb64-210e_humanart-aic-256x192-merge.py | 187 ++++++++++++ ...arsedropout-8xb64-210e_humanart-256x192.py | 165 ++++++++++ ...et-w32_dark-8xb64-210e_humanart-256x192.py | 154 ++++++++++ ...et-w32_dark-8xb64-210e_humanart-384x288.py | 154 ++++++++++ ...et-w32_fp16-8xb64-210e_humanart-256x192.py | 7 + ...32_gridmask-8xb64-210e_humanart-256x192.py | 162 ++++++++++ ...photometric-8xb64-210e_humanart-256x192.py | 153 ++++++++++ ...net-w32_udp-8xb64-210e_humanart-256x192.py | 150 +++++++++ ...net-w32_udp-8xb64-210e_humanart-384x288.py | 150 +++++++++ ...udp-regress-8xb64-210e_humanart-256x192.py | 155 ++++++++++ ...m_hrnet-w48_8xb32-210e_humanart-256x192.py | 150 +++++++++ ...m_hrnet-w48_8xb32-210e_humanart-384x288.py | 150 +++++++++ ...et-w48_dark-8xb32-210e_humanart-256x192.py | 154 ++++++++++ ...et-w48_dark-8xb32-210e_humanart-384x288.py | 154 ++++++++++ ...net-w48_udp-8xb32-210e_humanart-256x192.py | 150 +++++++++ ...net-w48_udp-8xb32-210e_humanart-384x288.py | 150 +++++++++ ...itehrnet-18_8xb32-210e_humanart-384x288.py | 140 +++++++++ ...itehrnet-18_8xb64-210e_humanart-256x192.py | 140 +++++++++ ...itehrnet-30_8xb32-210e_humanart-384x288.py | 140 +++++++++ ...itehrnet-30_8xb64-210e_humanart-256x192.py | 140 +++++++++ ...mobilenetv2_8xb64-210e_humanart-256x192.py | 124 ++++++++ ...mobilenetv2_8xb64-210e_humanart-384x288.py | 124 ++++++++ ...d-hm_mspn50_8xb32-210e_humanart-256x192.py | 152 ++++++++++ ...td-hm_pvt-s_8xb64-210e_humanart-256x192.py | 127 ++++++++ ...hm_pvtv2-b2_8xb64-210e_humanart-256x192.py | 128 ++++++++ ...d-hm_res101_8xb32-210e_humanart-384x288.py | 121 ++++++++ ...d-hm_res101_8xb64-210e_humanart-256x192.py | 121 ++++++++ ...res101_dark-8xb64-210e_humanart-256x192.py | 125 ++++++++ ...res101_dark-8xb64-210e_humanart-384x288.py | 125 ++++++++ ...d-hm_res152_8xb32-210e_humanart-256x192.py | 121 ++++++++ ...d-hm_res152_8xb32-210e_humanart-384x288.py | 121 ++++++++ ...res152_dark-8xb32-210e_humanart-256x192.py | 125 ++++++++ ...res152_dark-8xb32-210e_humanart-384x288.py | 126 ++++++++ ...td-hm_res50_8xb64-210e_humanart-256x192.py | 121 ++++++++ ...td-hm_res50_8xb64-210e_humanart-384x288.py | 121 ++++++++ ..._res50_dark-8xb64-210e_humanart-256x192.py | 125 ++++++++ ..._res50_dark-8xb64-210e_humanart-384x288.py | 125 ++++++++ ..._res50_fp16-8xb64-210e_humanart-256x192.py | 7 + ..._resnest101_8xb32-210e_humanart-384x288.py | 121 ++++++++ ..._resnest101_8xb64-210e_humanart-256x192.py | 121 ++++++++ ..._resnest200_8xb16-210e_humanart-384x288.py | 121 ++++++++ ..._resnest200_8xb64-210e_humanart-256x192.py | 121 ++++++++ ..._resnest269_8xb16-210e_humanart-384x288.py | 121 ++++++++ ..._resnest269_8xb32-210e_humanart-256x192.py | 121 ++++++++ ...m_resnest50_8xb64-210e_humanart-256x192.py | 121 ++++++++ ...m_resnest50_8xb64-210e_humanart-384x288.py | 121 ++++++++ ...esnetv1d101_8xb32-210e_humanart-384x288.py | 121 ++++++++ ...esnetv1d101_8xb64-210e_humanart-256x192.py | 121 ++++++++ ...esnetv1d152_8xb32-210e_humanart-256x192.py | 121 ++++++++ ...esnetv1d152_8xb48-210e_humanart-384x288.py | 121 ++++++++ ...resnetv1d50_8xb64-210e_humanart-256x192.py | 121 ++++++++ ...resnetv1d50_8xb64-210e_humanart-384x288.py | 121 ++++++++ ..._resnext101_8xb32-210e_humanart-384x288.py | 122 ++++++++ ..._resnext101_8xb64-210e_humanart-256x192.py | 122 ++++++++ ..._resnext152_8xb32-210e_humanart-256x192.py | 122 ++++++++ ..._resnext152_8xb48-210e_humanart-384x288.py | 122 ++++++++ ...m_resnext50_8xb64-210e_humanart-256x192.py | 121 ++++++++ ...m_resnext50_8xb64-210e_humanart-384x288.py | 121 ++++++++ ...td-hm_rsn18_8xb32-210e_humanart-256x192.py | 154 ++++++++++ ...td-hm_rsn50_8xb32-210e_humanart-256x192.py | 154 ++++++++++ ...hm_scnet101_8xb32-210e_humanart-256x192.py | 124 ++++++++ ...hm_scnet101_8xb48-210e_humanart-384x288.py | 124 ++++++++ ...-hm_scnet50_8xb32-210e_humanart-384x288.py | 124 ++++++++ ...-hm_scnet50_8xb64-210e_humanart-256x192.py | 124 ++++++++ ...seresnet101_8xb32-210e_humanart-384x288.py | 121 ++++++++ ...seresnet101_8xb64-210e_humanart-256x192.py | 121 ++++++++ ...seresnet152_8xb32-210e_humanart-256x192.py | 120 ++++++++ ...seresnet152_8xb48-210e_humanart-384x288.py | 120 ++++++++ ..._seresnet50_8xb64-210e_humanart-256x192.py | 121 ++++++++ ..._seresnet50_8xb64-210e_humanart-384x288.py | 121 ++++++++ ...hufflenetv1_8xb64-210e_humanart-256x192.py | 121 ++++++++ ...hufflenetv1_8xb64-210e_humanart-384x288.py | 121 ++++++++ ...hufflenetv2_8xb64-210e_humanart-256x192.py | 121 ++++++++ ...hufflenetv2_8xb64-210e_humanart-384x288.py | 121 ++++++++ ...win-b-p4-w7_8xb32-210e_humanart-256x192.py | 139 +++++++++ ...win-b-p4-w7_8xb32-210e_humanart-384x288.py | 139 +++++++++ ...win-l-p4-w7_8xb32-210e_humanart-256x192.py | 148 +++++++++ ...win-l-p4-w7_8xb32-210e_humanart-384x288.py | 148 +++++++++ ...win-t-p4-w7_8xb32-210e_humanart-256x192.py | 139 +++++++++ ...hm_vgg16-bn_8xb64-210e_humanart-256x192.py | 122 ++++++++ ...vipnas-mbv3_8xb64-210e_humanart-256x192.py | 122 ++++++++ ...ipnas-res50_8xb64-210e_humanart-256x192.py | 120 ++++++++ ...-pretrained-8xb64-210e_humanart-256x192.py | 126 ++++++++ ...-reg_res101_8xb64-210e_humanart-256x192.py | 120 ++++++++ ..._res101_rle-8xb64-210e_humanart-256x192.py | 121 ++++++++ ...-reg_res152_8xb64-210e_humanart-256x192.py | 120 ++++++++ ..._res152_rle-8xb64-210e_humanart-256x192.py | 121 ++++++++ ..._res152_rle-8xb64-210e_humanart-384x288.py | 121 ++++++++ ...d-reg_res50_8xb64-210e_humanart-256x192.py | 120 ++++++++ ...g_res50_rle-8xb64-210e_humanart-256x192.py | 121 ++++++++ ...-pretrained-8xb64-210e_humanart-256x192.py | 125 ++++++++ docs/en/dataset_zoo/2d_body_keypoint.md | 52 ++++ docs/zh_cn/dataset_zoo/2d_body_keypoint.md | 52 ++++ mmpose/datasets/datasets/body/__init__.py | 3 +- .../datasets/body/humanart_dataset.py | 73 +++++ 155 files changed, 22372 insertions(+), 1 deletion(-) create mode 100644 configs/_base_/datasets/humanart.py create mode 100644 configs/_base_/datasets/humanart_aic.py create mode 100644 configs/body_2d_keypoint/associative_embedding/humanart/ae_hrnet-w32_8xb24-300e_humanart-512x512.py create mode 100644 configs/body_2d_keypoint/cid/humanart/cid_hrnet-w32_8xb20-140e_humanart-512x512.py create mode 100644 configs/body_2d_keypoint/cid/humanart/cid_hrnet-w48_8xb20-140e_humanart-512x512.py create mode 100644 configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w32_8xb10-140e_humanart-512x512.py create mode 100644 configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w48_8xb10-140e_humanart-640x640.py create mode 100644 configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_8xb64-210e_humanart-256x256.py create mode 100644 configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_debias-8xb64-210e_humanart-256x256.py create mode 100644 configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_dsnt-8xb64-210e_humanart-256x256.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-256x192.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-384x288.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-256x192.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-384x288.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_aic-humanart-256x192.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_aic-humanart-256x192.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/simcc/humanart/simcc_mobilenetv2_wo-deconv-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb32-140e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/simcc/humanart/simcc_vipnas-mbv3_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_aic-humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_aic-humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_aic-humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_aic-humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/hrnet_humanart.md create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xmspn50_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xrsn50_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xmspn50_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xrsn50_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_4xmspn50_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base-simple_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge-simple_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large-simple_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small-simple_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_alexnet_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-256x256.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-384x384.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-combine.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-merge.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_coarsedropout-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_fp16-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_gridmask-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_photometric-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-regress-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mspn50_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvt-s_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvtv2-b2_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_fp16-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb16-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb16-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb48-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb48-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn18_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn50_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb48-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb48-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-t-p4-w7_8xb32-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vgg16-bn_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-mbv3_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-res50_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_mobilenetv2_rle-pretrained-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_rle-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-384x288.py create mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-pretrained-8xb64-210e_humanart-256x192.py create mode 100644 mmpose/datasets/datasets/body/humanart_dataset.py diff --git a/README.md b/README.md index 823324c3bd..9d5cd392a3 100644 --- a/README.md +++ b/README.md @@ -284,6 +284,7 @@ A summary can be found in the [Model Zoo](https://mmpose.readthedocs.io/en/lates - [x] [InterHand2.6M](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#interhand2-6m-eccv-2020) \[[homepage](https://mks0601.github.io/InterHand2.6M/)\] (ECCV'2020) - [x] [AP-10K](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#ap-10k-neurips-2021) \[[homepage](https://github.com/AlexTheBad/AP-10K)\] (NeurIPS'2021) - [x] [Horse-10](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#horse-10-wacv-2021) \[[homepage](http://www.mackenziemathislab.org/horse10)\] (WACV'2021) +- [x] [Human-Art](#todo) \[[homepage](https://idea-research.github.io/HumanArt/)\] (CVPR'2023) diff --git a/README_CN.md b/README_CN.md index ff5f14c50b..bf07f1120d 100644 --- a/README_CN.md +++ b/README_CN.md @@ -282,6 +282,7 @@ MMPose v1.0.0 是一个重大更新,包括了大量的 API 和配置文件的 - [x] [InterHand2.6M](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#interhand2-6m-eccv-2020) \[[主页](https://mks0601.github.io/InterHand2.6M/)\] (ECCV'2020) - [x] [AP-10K](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#ap-10k-neurips-2021) \[[主页](https://github.com/AlexTheBad/AP-10K)\] (NeurIPS'2021) - [x] [Horse-10](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#horse-10-wacv-2021) \[[主页](http://www.mackenziemathislab.org/horse10)\] (WACV'2021) +- [x] [Human-Art](#todo) \[[homepage](https://idea-research.github.io/HumanArt/)\] (CVPR'2023) diff --git a/configs/_base_/datasets/humanart.py b/configs/_base_/datasets/humanart.py new file mode 100644 index 0000000000..b549269b69 --- /dev/null +++ b/configs/_base_/datasets/humanart.py @@ -0,0 +1,181 @@ +dataset_info = dict( + dataset_name='Human-Art', + paper_info=dict( + author='Ju, Xuan and Zeng, Ailing and ' + 'Wang, Jianan and Xu, Qiang and Zhang, Lei', + title='Human-Art: A Versatile Human-Centric Dataset ' + 'Bridging Natural and Artificial Scenes', + container='Proceedings of the IEEE/CVF Conference on ' + 'Computer Vision and Pattern Recognition', + year='2023', + homepage='https://idea-research.github.io/HumanArt/', + ), + keypoint_info={ + 0: + dict(name='nose', id=0, color=[51, 153, 255], type='upper', swap=''), + 1: + dict( + name='left_eye', + id=1, + color=[51, 153, 255], + type='upper', + swap='right_eye'), + 2: + dict( + name='right_eye', + id=2, + color=[51, 153, 255], + type='upper', + swap='left_eye'), + 3: + dict( + name='left_ear', + id=3, + color=[51, 153, 255], + type='upper', + swap='right_ear'), + 4: + dict( + name='right_ear', + id=4, + color=[51, 153, 255], + type='upper', + swap='left_ear'), + 5: + dict( + name='left_shoulder', + id=5, + color=[0, 255, 0], + type='upper', + swap='right_shoulder'), + 6: + dict( + name='right_shoulder', + id=6, + color=[255, 128, 0], + type='upper', + swap='left_shoulder'), + 7: + dict( + name='left_elbow', + id=7, + color=[0, 255, 0], + type='upper', + swap='right_elbow'), + 8: + dict( + name='right_elbow', + id=8, + color=[255, 128, 0], + type='upper', + swap='left_elbow'), + 9: + dict( + name='left_wrist', + id=9, + color=[0, 255, 0], + type='upper', + swap='right_wrist'), + 10: + dict( + name='right_wrist', + id=10, + color=[255, 128, 0], + type='upper', + swap='left_wrist'), + 11: + dict( + name='left_hip', + id=11, + color=[0, 255, 0], + type='lower', + swap='right_hip'), + 12: + dict( + name='right_hip', + id=12, + color=[255, 128, 0], + type='lower', + swap='left_hip'), + 13: + dict( + name='left_knee', + id=13, + color=[0, 255, 0], + type='lower', + swap='right_knee'), + 14: + dict( + name='right_knee', + id=14, + color=[255, 128, 0], + type='lower', + swap='left_knee'), + 15: + dict( + name='left_ankle', + id=15, + color=[0, 255, 0], + type='lower', + swap='right_ankle'), + 16: + dict( + name='right_ankle', + id=16, + color=[255, 128, 0], + type='lower', + swap='left_ankle') + }, + skeleton_info={ + 0: + dict(link=('left_ankle', 'left_knee'), id=0, color=[0, 255, 0]), + 1: + dict(link=('left_knee', 'left_hip'), id=1, color=[0, 255, 0]), + 2: + dict(link=('right_ankle', 'right_knee'), id=2, color=[255, 128, 0]), + 3: + dict(link=('right_knee', 'right_hip'), id=3, color=[255, 128, 0]), + 4: + dict(link=('left_hip', 'right_hip'), id=4, color=[51, 153, 255]), + 5: + dict(link=('left_shoulder', 'left_hip'), id=5, color=[51, 153, 255]), + 6: + dict(link=('right_shoulder', 'right_hip'), id=6, color=[51, 153, 255]), + 7: + dict( + link=('left_shoulder', 'right_shoulder'), + id=7, + color=[51, 153, 255]), + 8: + dict(link=('left_shoulder', 'left_elbow'), id=8, color=[0, 255, 0]), + 9: + dict( + link=('right_shoulder', 'right_elbow'), id=9, color=[255, 128, 0]), + 10: + dict(link=('left_elbow', 'left_wrist'), id=10, color=[0, 255, 0]), + 11: + dict(link=('right_elbow', 'right_wrist'), id=11, color=[255, 128, 0]), + 12: + dict(link=('left_eye', 'right_eye'), id=12, color=[51, 153, 255]), + 13: + dict(link=('nose', 'left_eye'), id=13, color=[51, 153, 255]), + 14: + dict(link=('nose', 'right_eye'), id=14, color=[51, 153, 255]), + 15: + dict(link=('left_eye', 'left_ear'), id=15, color=[51, 153, 255]), + 16: + dict(link=('right_eye', 'right_ear'), id=16, color=[51, 153, 255]), + 17: + dict(link=('left_ear', 'left_shoulder'), id=17, color=[51, 153, 255]), + 18: + dict( + link=('right_ear', 'right_shoulder'), id=18, color=[51, 153, 255]) + }, + joint_weights=[ + 1., 1., 1., 1., 1., 1., 1., 1.2, 1.2, 1.5, 1.5, 1., 1., 1.2, 1.2, 1.5, + 1.5 + ], + sigmas=[ + 0.026, 0.025, 0.025, 0.035, 0.035, 0.079, 0.079, 0.072, 0.072, 0.062, + 0.062, 0.107, 0.107, 0.087, 0.087, 0.089, 0.089 + ]) diff --git a/configs/_base_/datasets/humanart_aic.py b/configs/_base_/datasets/humanart_aic.py new file mode 100644 index 0000000000..e999427536 --- /dev/null +++ b/configs/_base_/datasets/humanart_aic.py @@ -0,0 +1,205 @@ +dataset_info = dict( + dataset_name='humanart', + paper_info=[ + dict( + author='Ju, Xuan and Zeng, Ailing and ' + 'Wang, Jianan and Xu, Qiang and Zhang, ' + 'Lei', + title='Human-Art: A Versatile Human-Centric Dataset ' + 'Bridging Natural and Artificial Scenes', + container='CVPR', + year='2023', + homepage='https://idea-research.github.io/HumanArt/', + ), + dict( + author='Wu, Jiahong and Zheng, He and Zhao, Bo and ' + 'Li, Yixin and Yan, Baoming and Liang, Rui and ' + 'Wang, Wenjia and Zhou, Shipei and Lin, Guosen and ' + 'Fu, Yanwei and others', + title='Ai challenger: A large-scale dataset for going ' + 'deeper in image understanding', + container='arXiv', + year='2017', + homepage='https://github.com/AIChallenger/AI_Challenger_2017', + ), + ], + keypoint_info={ + 0: + dict(name='nose', id=0, color=[51, 153, 255], type='upper', swap=''), + 1: + dict( + name='left_eye', + id=1, + color=[51, 153, 255], + type='upper', + swap='right_eye'), + 2: + dict( + name='right_eye', + id=2, + color=[51, 153, 255], + type='upper', + swap='left_eye'), + 3: + dict( + name='left_ear', + id=3, + color=[51, 153, 255], + type='upper', + swap='right_ear'), + 4: + dict( + name='right_ear', + id=4, + color=[51, 153, 255], + type='upper', + swap='left_ear'), + 5: + dict( + name='left_shoulder', + id=5, + color=[0, 255, 0], + type='upper', + swap='right_shoulder'), + 6: + dict( + name='right_shoulder', + id=6, + color=[255, 128, 0], + type='upper', + swap='left_shoulder'), + 7: + dict( + name='left_elbow', + id=7, + color=[0, 255, 0], + type='upper', + swap='right_elbow'), + 8: + dict( + name='right_elbow', + id=8, + color=[255, 128, 0], + type='upper', + swap='left_elbow'), + 9: + dict( + name='left_wrist', + id=9, + color=[0, 255, 0], + type='upper', + swap='right_wrist'), + 10: + dict( + name='right_wrist', + id=10, + color=[255, 128, 0], + type='upper', + swap='left_wrist'), + 11: + dict( + name='left_hip', + id=11, + color=[0, 255, 0], + type='lower', + swap='right_hip'), + 12: + dict( + name='right_hip', + id=12, + color=[255, 128, 0], + type='lower', + swap='left_hip'), + 13: + dict( + name='left_knee', + id=13, + color=[0, 255, 0], + type='lower', + swap='right_knee'), + 14: + dict( + name='right_knee', + id=14, + color=[255, 128, 0], + type='lower', + swap='left_knee'), + 15: + dict( + name='left_ankle', + id=15, + color=[0, 255, 0], + type='lower', + swap='right_ankle'), + 16: + dict( + name='right_ankle', + id=16, + color=[255, 128, 0], + type='lower', + swap='left_ankle'), + 17: + dict( + name='head_top', + id=17, + color=[51, 153, 255], + type='upper', + swap=''), + 18: + dict(name='neck', id=18, color=[51, 153, 255], type='upper', swap='') + }, + skeleton_info={ + 0: + dict(link=('left_ankle', 'left_knee'), id=0, color=[0, 255, 0]), + 1: + dict(link=('left_knee', 'left_hip'), id=1, color=[0, 255, 0]), + 2: + dict(link=('right_ankle', 'right_knee'), id=2, color=[255, 128, 0]), + 3: + dict(link=('right_knee', 'right_hip'), id=3, color=[255, 128, 0]), + 4: + dict(link=('left_hip', 'right_hip'), id=4, color=[51, 153, 255]), + 5: + dict(link=('left_shoulder', 'left_hip'), id=5, color=[51, 153, 255]), + 6: + dict(link=('right_shoulder', 'right_hip'), id=6, color=[51, 153, 255]), + 7: + dict( + link=('left_shoulder', 'right_shoulder'), + id=7, + color=[51, 153, 255]), + 8: + dict(link=('left_shoulder', 'left_elbow'), id=8, color=[0, 255, 0]), + 9: + dict( + link=('right_shoulder', 'right_elbow'), id=9, color=[255, 128, 0]), + 10: + dict(link=('left_elbow', 'left_wrist'), id=10, color=[0, 255, 0]), + 11: + dict(link=('right_elbow', 'right_wrist'), id=11, color=[255, 128, 0]), + 12: + dict(link=('left_eye', 'right_eye'), id=12, color=[51, 153, 255]), + 13: + dict(link=('nose', 'left_eye'), id=13, color=[51, 153, 255]), + 14: + dict(link=('nose', 'right_eye'), id=14, color=[51, 153, 255]), + 15: + dict(link=('left_eye', 'left_ear'), id=15, color=[51, 153, 255]), + 16: + dict(link=('right_eye', 'right_ear'), id=16, color=[51, 153, 255]), + 17: + dict(link=('left_ear', 'left_shoulder'), id=17, color=[51, 153, 255]), + 18: + dict( + link=('right_ear', 'right_shoulder'), id=18, color=[51, 153, 255]), + 19: + dict(link=('head_top', 'neck'), id=11, color=[51, 153, 255]), + }, + joint_weights=[ + 1., 1., 1., 1., 1., 1., 1., 1.2, 1.2, 1.5, 1.5, 1., 1., 1.2, 1.2, 1.5, + 1.5, 1.5 + ], + sigmas=[ + 0.026, 0.025, 0.025, 0.035, 0.035, 0.079, 0.079, 0.072, 0.072, 0.062, + 0.062, 0.107, 0.107, 0.087, 0.087, 0.089, 0.089, 0.026, 0.026 + ]) diff --git a/configs/body_2d_keypoint/associative_embedding/humanart/ae_hrnet-w32_8xb24-300e_humanart-512x512.py b/configs/body_2d_keypoint/associative_embedding/humanart/ae_hrnet-w32_8xb24-300e_humanart-512x512.py new file mode 100644 index 0000000000..53f474e2f4 --- /dev/null +++ b/configs/body_2d_keypoint/associative_embedding/humanart/ae_hrnet-w32_8xb24-300e_humanart-512x512.py @@ -0,0 +1,159 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=300, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=1.5e-3, +)) + +# 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=300, + milestones=[200, 260], + gamma=0.1, + by_epoch=True) +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=192) + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', interval=50)) + +# codec settings +codec = dict( + type='AssociativeEmbedding', + input_size=(512, 512), + heatmap_size=(128, 128), + sigma=2, + decode_keypoint_order=[ + 0, 1, 2, 3, 4, 5, 6, 11, 12, 7, 8, 9, 10, 13, 14, 15, 16 + ], + decode_max_instances=30) + +# model settings +model = dict( + type='BottomupPoseEstimator', + 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + head=dict( + type='AssociativeEmbeddingHead', + in_channels=32, + num_keypoints=17, + tag_dim=1, + tag_per_keypoint=True, + deconv_out_channels=None, + keypoint_loss=dict(type='KeypointMSELoss', use_target_weight=True), + tag_loss=dict(type='AssociativeEmbeddingLoss', loss_weight=0.001), + # The heatmap will be resized to the input size before decoding + # if ``restore_heatmap_size==True`` + decoder=dict(codec, heatmap_size=codec['input_size'])), + test_cfg=dict( + multiscale_test=False, + flip_test=True, + shift_heatmap=True, + restore_heatmap_size=True, + align_corners=False)) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'bottomup' +data_root = 'data/' + +# pipelines +train_pipeline = [] +val_pipeline = [ + dict(type='LoadImage'), + dict( + type='BottomupResize', + input_size=codec['input_size'], + size_factor=32, + resize_mode='expand'), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=24, + 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='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=1, + 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='HumanArt/annotations/validation_humanart.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + nms_mode='none', + score_mode='keypoint', +) +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w32_8xb20-140e_humanart-512x512.py b/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w32_8xb20-140e_humanart-512x512.py new file mode 100644 index 0000000000..7150772111 --- /dev/null +++ b/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w32_8xb20-140e_humanart-512x512.py @@ -0,0 +1,164 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=140, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=1e-3, +)) + +# learning policy +param_scheduler = [ + dict( + type='MultiStepLR', + begin=0, + end=140, + milestones=[90, 120], + gamma=0.1, + by_epoch=True) +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=160) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='DecoupledHeatmap', input_size=(512, 512), heatmap_size=(128, 128)) + +# model settings +model = dict( + type='BottomupPoseEstimator', + 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256), + multiscale_output=True)), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + neck=dict( + type='FeatureMapProcessor', + concat=True, + ), + head=dict( + type='CIDHead', + in_channels=480, + num_keypoints=17, + gfd_channels=32, + coupled_heatmap_loss=dict(type='FocalHeatmapLoss', loss_weight=1.0), + decoupled_heatmap_loss=dict(type='FocalHeatmapLoss', loss_weight=4.0), + contrastive_loss=dict( + type='InfoNCELoss', temperature=0.05, loss_weight=1.0), + decoder=codec, + ), + train_cfg=dict(max_train_instances=200), + test_cfg=dict( + multiscale_test=False, + flip_test=True, + shift_heatmap=False, + align_corners=False)) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'bottomup' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='BottomupRandomAffine', input_size=codec['input_size']), + dict(type='RandomFlip', direction='horizontal'), + dict(type='GenerateTarget', encoder=codec), + dict(type='BottomupGetHeatmapMask'), + dict(type='PackPoseInputs'), +] +val_pipeline = [ + dict(type='LoadImage'), + dict( + type='BottomupResize', + input_size=codec['input_size'], + size_factor=64, + resize_mode='expand'), + dict( + type='PackPoseInputs', + meta_keys=('id', 'img_id', 'img_path', 'crowd_index', 'ori_shape', + 'img_shape', 'input_size', 'input_center', 'input_scale', + 'flip', 'flip_direction', 'flip_indices', 'raw_ann_info', + 'skeleton_links')) +] + +# data loaders +train_dataloader = dict( + batch_size=20, + 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='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=1, + num_workers=1, + 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='HumanArt/annotations/validation_humanart.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + nms_thr=0.8, + score_mode='keypoint', +) +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w48_8xb20-140e_humanart-512x512.py b/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w48_8xb20-140e_humanart-512x512.py new file mode 100644 index 0000000000..b8e61a3189 --- /dev/null +++ b/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w48_8xb20-140e_humanart-512x512.py @@ -0,0 +1,164 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=140, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=1e-3, +)) + +# learning policy +param_scheduler = [ + dict( + type='MultiStepLR', + begin=0, + end=140, + milestones=[90, 120], + gamma=0.1, + by_epoch=True) +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=160) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='DecoupledHeatmap', input_size=(512, 512), heatmap_size=(128, 128)) + +# model settings +model = dict( + type='BottomupPoseEstimator', + 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=(48, 96)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(48, 96, 192)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(48, 96, 192, 384), + multiscale_output=True)), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w48-8ef0771d.pth'), + ), + neck=dict( + type='FeatureMapProcessor', + concat=True, + ), + head=dict( + type='CIDHead', + in_channels=720, + num_keypoints=17, + gfd_channels=48, + coupled_heatmap_loss=dict(type='FocalHeatmapLoss', loss_weight=1.0), + decoupled_heatmap_loss=dict(type='FocalHeatmapLoss', loss_weight=4.0), + contrastive_loss=dict( + type='InfoNCELoss', temperature=0.05, loss_weight=1.0), + decoder=codec, + ), + train_cfg=dict(max_train_instances=200), + test_cfg=dict( + multiscale_test=False, + flip_test=True, + shift_heatmap=False, + align_corners=False)) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'bottomup' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='BottomupRandomAffine', input_size=codec['input_size']), + dict(type='RandomFlip', direction='horizontal'), + dict(type='GenerateTarget', encoder=codec), + dict(type='BottomupGetHeatmapMask'), + dict(type='PackPoseInputs'), +] +val_pipeline = [ + dict(type='LoadImage'), + dict( + type='BottomupResize', + input_size=codec['input_size'], + size_factor=64, + resize_mode='expand'), + dict( + type='PackPoseInputs', + meta_keys=('id', 'img_id', 'img_path', 'crowd_index', 'ori_shape', + 'img_shape', 'input_size', 'input_center', 'input_scale', + 'flip', 'flip_direction', 'flip_indices', 'raw_ann_info', + 'skeleton_links')) +] + +# data loaders +train_dataloader = dict( + batch_size=20, + 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='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=1, + num_workers=1, + 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='HumanArt/annotations/validation_humanart.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + nms_thr=0.8, + score_mode='keypoint', +) +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w32_8xb10-140e_humanart-512x512.py b/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w32_8xb10-140e_humanart-512x512.py new file mode 100644 index 0000000000..17e96ebdb2 --- /dev/null +++ b/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w32_8xb10-140e_humanart-512x512.py @@ -0,0 +1,186 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=140, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=1e-3, +)) + +# 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=140, + milestones=[90, 120], + gamma=0.1, + by_epoch=True) +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=80) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='SPR', + input_size=(512, 512), + heatmap_size=(128, 128), + sigma=(4, 2), + minimal_diagonal_length=32**0.5, + generate_keypoint_heatmaps=True, + decode_max_instances=30) + +# model settings +model = dict( + type='BottomupPoseEstimator', + 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256), + multiscale_output=True)), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + neck=dict( + type='FeatureMapProcessor', + concat=True, + ), + head=dict( + type='DEKRHead', + in_channels=480, + num_keypoints=17, + heatmap_loss=dict(type='KeypointMSELoss', use_target_weight=True), + displacement_loss=dict( + type='SoftWeightSmoothL1Loss', + use_target_weight=True, + supervise_empty=False, + beta=1 / 9, + loss_weight=0.002, + ), + decoder=codec, + rescore_cfg=dict( + in_channels=74, + norm_indexes=(5, 6), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/kpt_rescore_coco-33d58c5c.pth')), + ), + test_cfg=dict( + multiscale_test=False, + flip_test=True, + nms_dist_thr=0.05, + shift_heatmap=True, + align_corners=False)) + +# enable DDP training when rescore net is used +find_unused_parameters = True + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'bottomup' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='BottomupRandomAffine', input_size=codec['input_size']), + dict(type='RandomFlip', direction='horizontal'), + dict(type='GenerateTarget', encoder=codec), + dict(type='BottomupGetHeatmapMask'), + dict(type='PackPoseInputs'), +] +val_pipeline = [ + dict(type='LoadImage'), + dict( + type='BottomupResize', + input_size=codec['input_size'], + size_factor=32, + resize_mode='expand'), + dict( + type='PackPoseInputs', + meta_keys=('id', 'img_id', 'img_path', 'crowd_index', 'ori_shape', + 'img_shape', 'input_size', 'input_center', 'input_scale', + 'flip', 'flip_direction', 'flip_indices', 'raw_ann_info', + 'skeleton_links')) +] + +# data loaders +train_dataloader = dict( + batch_size=10, + 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='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=1, + num_workers=1, + 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='HumanArt/annotations/validation_humanart.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + nms_mode='none', + score_mode='keypoint', +) +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w48_8xb10-140e_humanart-640x640.py b/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w48_8xb10-140e_humanart-640x640.py new file mode 100644 index 0000000000..c1b4df97de --- /dev/null +++ b/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w48_8xb10-140e_humanart-640x640.py @@ -0,0 +1,187 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=140, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=1e-3, +)) + +# 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=140, + milestones=[90, 120], + gamma=0.1, + by_epoch=True) +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=80) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='SPR', + input_size=(640, 640), + heatmap_size=(160, 160), + sigma=(4, 2), + minimal_diagonal_length=32**0.5, + generate_keypoint_heatmaps=True, + decode_max_instances=30) + +# model settings +model = dict( + type='BottomupPoseEstimator', + 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=(48, 96)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(48, 96, 192)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(48, 96, 192, 384), + multiscale_output=True)), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w48-8ef0771d.pth'), + ), + neck=dict( + type='FeatureMapProcessor', + concat=True, + ), + head=dict( + type='DEKRHead', + in_channels=720, + num_keypoints=17, + num_heatmap_filters=48, + heatmap_loss=dict(type='KeypointMSELoss', use_target_weight=True), + displacement_loss=dict( + type='SoftWeightSmoothL1Loss', + use_target_weight=True, + supervise_empty=False, + beta=1 / 9, + loss_weight=0.002, + ), + decoder=codec, + rescore_cfg=dict( + in_channels=74, + norm_indexes=(5, 6), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/kpt_rescore_coco-33d58c5c.pth')), + ), + test_cfg=dict( + multiscale_test=False, + flip_test=True, + nms_dist_thr=0.05, + shift_heatmap=True, + align_corners=False)) + +# enable DDP training when rescore net is used +find_unused_parameters = True + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'bottomup' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='BottomupRandomAffine', input_size=codec['input_size']), + dict(type='RandomFlip', direction='horizontal'), + dict(type='GenerateTarget', encoder=codec), + dict(type='BottomupGetHeatmapMask'), + dict(type='PackPoseInputs'), +] +val_pipeline = [ + dict(type='LoadImage'), + dict( + type='BottomupResize', + input_size=codec['input_size'], + size_factor=32, + resize_mode='expand'), + dict( + type='PackPoseInputs', + meta_keys=('id', 'img_id', 'img_path', 'crowd_index', 'ori_shape', + 'img_shape', 'input_size', 'input_center', 'input_scale', + 'flip', 'flip_direction', 'flip_indices', 'raw_ann_info', + 'skeleton_links')) +] + +# data loaders +train_dataloader = dict( + batch_size=10, + 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='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=1, + num_workers=1, + 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='HumanArt/annotations/validation_humanart.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + nms_mode='none', + score_mode='keypoint', +) +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_8xb64-210e_humanart-256x256.py b/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_8xb64-210e_humanart-256x256.py new file mode 100644 index 0000000000..85368b20be --- /dev/null +++ b/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_8xb64-210e_humanart-256x256.py @@ -0,0 +1,134 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict( + type='IntegralRegressionLabel', + input_size=(256, 256), + heatmap_size=(64, 64), + sigma=2.0, + normalize=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='ResNet', + depth=50, + ), + head=dict( + type='DSNTHead', + in_channels=2048, + in_featuremap_size=(8, 8), + num_joints=17, + loss=dict( + type='MultipleLossWrapper', + losses=[ + dict(type='SmoothL1Loss', use_target_weight=True), + dict(type='KeypointMSELoss', use_target_weight=True) + ]), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + shift_heatmap=True, + ), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/td-hm_res50_8xb64-210e_coco-256x192.pth')) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +test_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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=test_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=f'{data_root}HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_debias-8xb64-210e_humanart-256x256.py b/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_debias-8xb64-210e_humanart-256x256.py new file mode 100644 index 0000000000..7ed6122914 --- /dev/null +++ b/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_debias-8xb64-210e_humanart-256x256.py @@ -0,0 +1,136 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict( + type='IntegralRegressionLabel', + input_size=(256, 256), + heatmap_size=(64, 64), + sigma=2.0, + normalize=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='ResNet', + depth=50, + ), + head=dict( + type='DSNTHead', + in_channels=2048, + in_featuremap_size=(8, 8), + num_joints=17, + debias=True, + beta=10., + loss=dict( + type='MultipleLossWrapper', + losses=[ + dict(type='SmoothL1Loss', use_target_weight=True), + dict(type='JSDiscretLoss', use_target_weight=True) + ]), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + shift_heatmap=True, + ), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/td-hm_res50_8xb64-210e_coco-256x192.pth')) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +test_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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=test_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=f'{data_root}HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_dsnt-8xb64-210e_humanart-256x256.py b/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_dsnt-8xb64-210e_humanart-256x256.py new file mode 100644 index 0000000000..5078e5ee12 --- /dev/null +++ b/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_dsnt-8xb64-210e_humanart-256x256.py @@ -0,0 +1,134 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict( + type='IntegralRegressionLabel', + input_size=(256, 256), + heatmap_size=(64, 64), + sigma=2.0, + normalize=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='ResNet', + depth=50, + ), + head=dict( + type='DSNTHead', + in_channels=2048, + in_featuremap_size=(8, 8), + num_joints=17, + loss=dict( + type='MultipleLossWrapper', + losses=[ + dict(type='SmoothL1Loss', use_target_weight=True), + dict(type='JSDiscretLoss', use_target_weight=True) + ]), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + shift_heatmap=True, + ), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/td-hm_res50_8xb64-210e_coco-256x192.pth')) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +test_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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=test_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=f'{data_root}HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-256x192.py new file mode 100644 index 0000000000..3eb94c1ed2 --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-256x192.py @@ -0,0 +1,272 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 420 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 210 to 420 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='SimCCLabel', + input_size=(192, 256), + sigma=(4.9, 5.66), + simcc_split_ratio=2.0, + normalize=False, + use_dark=False) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=1., + widen_factor=1., + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' + 'rtmpose/cspnext-l_udp-aic-coco_210e-256x192-273b7631_20230130.pth' # noqa + )), + head=dict( + type='RTMCCHead', + in_channels=1024, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + final_layer_kernel_size=7, + gau_cfg=dict( + hidden_dims=256, + s=128, + expansion_factor=2, + dropout_rate=0., + drop_path=0., + act_fn='SiLU', + use_rel_bias=False, + pos_enc=False), + loss=dict( + type='KLDiscretLoss', + use_target_weight=True, + beta=10., + label_softmax=True), + decoder=codec), + test_cfg=dict(flip_test=True, )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/', +# f'{data_root}': 's3://openmmlab/datasets/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.0), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# train datasets +dataset_humanart = dict( + type='RepeatDataset', + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[], + ), + times=3) + +dataset_aic = dict( + type='AicDataset', + data_root=data_root, + data_mode=data_mode, + ann_file='aic/annotations/aic_train.json', + data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' + '_train_20170902/keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=17, + mapping=[ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + ]) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-384x288.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-384x288.py new file mode 100644 index 0000000000..ace553e1f8 --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-384x288.py @@ -0,0 +1,272 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 420 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 210 to 420 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='SimCCLabel', + input_size=(288, 384), + sigma=(6., 6.93), + simcc_split_ratio=2.0, + normalize=False, + use_dark=False) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=1., + widen_factor=1., + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' + 'rtmpose/cspnext-l_udp-aic-coco_210e-256x192-273b7631_20230130.pth' # noqa + )), + head=dict( + type='RTMCCHead', + in_channels=1024, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(9, 12), + simcc_split_ratio=codec['simcc_split_ratio'], + final_layer_kernel_size=7, + gau_cfg=dict( + hidden_dims=256, + s=128, + expansion_factor=2, + dropout_rate=0., + drop_path=0., + act_fn='SiLU', + use_rel_bias=False, + pos_enc=False), + loss=dict( + type='KLDiscretLoss', + use_target_weight=True, + beta=10., + label_softmax=True), + decoder=codec), + test_cfg=dict(flip_test=True, )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/', +# f'{data_root}': 's3://openmmlab/datasets/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.0), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# train datasets +dataset_humanart = dict( + type='RepeatDataset', + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[], + ), + times=3) + +dataset_aic = dict( + type='AicDataset', + data_root=data_root, + data_mode=data_mode, + ann_file='aic/annotations/aic_train.json', + data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' + '_train_20170902/keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=17, + mapping=[ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + ]) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py new file mode 100644 index 0000000000..60586f584a --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py @@ -0,0 +1,232 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 420 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 210 to 420 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='SimCCLabel', + input_size=(192, 256), + sigma=(4.9, 5.66), + simcc_split_ratio=2.0, + normalize=False, + use_dark=False) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=1., + widen_factor=1., + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' + 'rtmpose/cspnext-l_udp-aic-coco_210e-256x192-273b7631_20230130.pth' # noqa + )), + head=dict( + type='RTMCCHead', + in_channels=1024, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + final_layer_kernel_size=7, + gau_cfg=dict( + hidden_dims=256, + s=128, + expansion_factor=2, + dropout_rate=0., + drop_path=0., + act_fn='SiLU', + use_rel_bias=False, + pos_enc=False), + loss=dict( + type='KLDiscretLoss', + use_target_weight=True, + beta=10., + label_softmax=True), + decoder=codec), + test_cfg=dict(flip_test=True)) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file=f'{data_root}person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-256x192.py new file mode 100644 index 0000000000..d1d3e3086f --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-256x192.py @@ -0,0 +1,272 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 420 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 210 to 420 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='SimCCLabel', + input_size=(192, 256), + sigma=(4.9, 5.66), + simcc_split_ratio=2.0, + normalize=False, + use_dark=False) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.67, + widen_factor=0.75, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' + 'rtmpose/cspnext-m_udp-aic-coco_210e-256x192-f2f7d6f6_20230130.pth' # noqa + )), + head=dict( + type='RTMCCHead', + in_channels=768, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + final_layer_kernel_size=7, + gau_cfg=dict( + hidden_dims=256, + s=128, + expansion_factor=2, + dropout_rate=0., + drop_path=0., + act_fn='SiLU', + use_rel_bias=False, + pos_enc=False), + loss=dict( + type='KLDiscretLoss', + use_target_weight=True, + beta=10., + label_softmax=True), + decoder=codec), + test_cfg=dict(flip_test=True, )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/', +# f'{data_root}': 's3://openmmlab/datasets/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.0), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# train datasets +dataset_humanart = dict( + type='RepeatDataset', + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[], + ), + times=3) + +dataset_aic = dict( + type='AicDataset', + data_root=data_root, + data_mode=data_mode, + ann_file='aic/annotations/aic_train.json', + data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' + '_train_20170902/keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=17, + mapping=[ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + ]) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=128 * 2, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-384x288.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-384x288.py new file mode 100644 index 0000000000..22ebbd7b45 --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-384x288.py @@ -0,0 +1,272 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 420 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 210 to 420 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='SimCCLabel', + input_size=(288, 384), + sigma=(6., 6.93), + simcc_split_ratio=2.0, + normalize=False, + use_dark=False) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.67, + widen_factor=0.75, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' + 'rtmpose/cspnext-m_udp-aic-coco_210e-256x192-f2f7d6f6_20230130.pth' # noqa + )), + head=dict( + type='RTMCCHead', + in_channels=768, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(9, 12), + simcc_split_ratio=codec['simcc_split_ratio'], + final_layer_kernel_size=7, + gau_cfg=dict( + hidden_dims=256, + s=128, + expansion_factor=2, + dropout_rate=0., + drop_path=0., + act_fn='SiLU', + use_rel_bias=False, + pos_enc=False), + loss=dict( + type='KLDiscretLoss', + use_target_weight=True, + beta=10., + label_softmax=True), + decoder=codec), + test_cfg=dict(flip_test=True, )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/', +# f'{data_root}': 's3://openmmlab/datasets/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.0), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# train datasets +dataset_humanart = dict( + type='RepeatDataset', + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[], + ), + times=3) + +dataset_aic = dict( + type='AicDataset', + data_root=data_root, + data_mode=data_mode, + ann_file='aic/annotations/aic_train.json', + data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' + '_train_20170902/keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=17, + mapping=[ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + ]) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=128 * 2, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py new file mode 100644 index 0000000000..b4b96baebf --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py @@ -0,0 +1,232 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 420 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 210 to 420 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='SimCCLabel', + input_size=(192, 256), + sigma=(4.9, 5.66), + simcc_split_ratio=2.0, + normalize=False, + use_dark=False) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.67, + widen_factor=0.75, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' + 'rtmpose/cspnext-m_udp-aic-coco_210e-256x192-f2f7d6f6_20230130.pth' # noqa + )), + head=dict( + type='RTMCCHead', + in_channels=768, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + final_layer_kernel_size=7, + gau_cfg=dict( + hidden_dims=256, + s=128, + expansion_factor=2, + dropout_rate=0., + drop_path=0., + act_fn='SiLU', + use_rel_bias=False, + pos_enc=False), + loss=dict( + type='KLDiscretLoss', + use_target_weight=True, + beta=10., + label_softmax=True), + decoder=codec), + test_cfg=dict(flip_test=True)) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file=f'{data_root}person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_aic-humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_aic-humanart-256x192.py new file mode 100644 index 0000000000..3aad883095 --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_aic-humanart-256x192.py @@ -0,0 +1,272 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 420 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.0), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 210 to 420 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='SimCCLabel', + input_size=(192, 256), + sigma=(4.9, 5.66), + simcc_split_ratio=2.0, + normalize=False, + use_dark=False) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.33, + widen_factor=0.5, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' + 'rtmpose/cspnext-s_udp-aic-coco_210e-256x192-92f5a029_20230130.pth' # noqa + )), + head=dict( + type='RTMCCHead', + in_channels=512, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + final_layer_kernel_size=7, + gau_cfg=dict( + hidden_dims=256, + s=128, + expansion_factor=2, + dropout_rate=0., + drop_path=0., + act_fn='SiLU', + use_rel_bias=False, + pos_enc=False), + loss=dict( + type='KLDiscretLoss', + use_target_weight=True, + beta=10., + label_softmax=True), + decoder=codec), + test_cfg=dict(flip_test=True, )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/', +# f'{data_root}': 's3://openmmlab/datasets/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.0), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# train datasets +dataset_humanart = dict( + type='RepeatDataset', + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[], + ), + times=3) + +dataset_aic = dict( + type='AicDataset', + data_root=data_root, + data_mode=data_mode, + ann_file='aic/annotations/aic_train.json', + data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' + '_train_20170902/keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=17, + mapping=[ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + ]) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=128 * 2, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py new file mode 100644 index 0000000000..3f5c37fee7 --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py @@ -0,0 +1,232 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 420 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 210 to 420 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='SimCCLabel', + input_size=(192, 256), + sigma=(4.9, 5.66), + simcc_split_ratio=2.0, + normalize=False, + use_dark=False) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.33, + widen_factor=0.5, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' + 'rtmpose/cspnext-s_udp-aic-coco_210e-256x192-92f5a029_20230130.pth' # noqa + )), + head=dict( + type='RTMCCHead', + in_channels=512, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + final_layer_kernel_size=7, + gau_cfg=dict( + hidden_dims=256, + s=128, + expansion_factor=2, + dropout_rate=0., + drop_path=0., + act_fn='SiLU', + use_rel_bias=False, + pos_enc=False), + loss=dict( + type='KLDiscretLoss', + use_target_weight=True, + beta=10., + label_softmax=True), + decoder=codec), + test_cfg=dict(flip_test=True)) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file=f'{data_root}person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_aic-humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_aic-humanart-256x192.py new file mode 100644 index 0000000000..e12f2b456a --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_aic-humanart-256x192.py @@ -0,0 +1,273 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 420 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 210 to 420 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='SimCCLabel', + input_size=(192, 256), + sigma=(4.9, 5.66), + simcc_split_ratio=2.0, + normalize=False, + use_dark=False) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.167, + widen_factor=0.375, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' + 'rtmpose/cspnext-tiny_udp-aic-coco_210e-256x192-cbed682d_20230130.pth' # noqa + )), + head=dict( + type='RTMCCHead', + in_channels=384, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + final_layer_kernel_size=7, + gau_cfg=dict( + hidden_dims=256, + s=128, + expansion_factor=2, + dropout_rate=0., + drop_path=0., + act_fn='SiLU', + use_rel_bias=False, + pos_enc=False), + loss=dict( + type='KLDiscretLoss', + use_target_weight=True, + beta=10., + label_softmax=True), + decoder=codec), + test_cfg=dict(flip_test=True, )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/', +# f'{data_root}': 's3://openmmlab/datasets/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.0), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# train datasets +dataset_humanart = dict( + type='RepeatDataset', + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[], + ), + times=3) + +dataset_aic = dict( + type='AicDataset', + data_root=data_root, + data_mode=data_mode, + ann_file='aic/annotations/aic_train.json', + data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' + '_train_20170902/keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=17, + mapping=[ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + ]) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + # Turn off EMA while training the tiny model + # dict( + # type='EMAHook', + # ema_type='ExpMomentumEMA', + # momentum=0.0002, + # update_buffers=True, + # priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_humanart-256x192.py new file mode 100644 index 0000000000..273532aae4 --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_humanart-256x192.py @@ -0,0 +1,233 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 420 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 210 to 420 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='SimCCLabel', + input_size=(192, 256), + sigma=(4.9, 5.66), + simcc_split_ratio=2.0, + normalize=False, + use_dark=False) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.167, + widen_factor=0.375, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' + 'rtmpose/cspnext-tiny_udp-aic-coco_210e-256x192-cbed682d_20230130.pth' # noqa + )), + head=dict( + type='RTMCCHead', + in_channels=384, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + final_layer_kernel_size=7, + gau_cfg=dict( + hidden_dims=256, + s=128, + expansion_factor=2, + dropout_rate=0., + drop_path=0., + act_fn='SiLU', + use_rel_bias=False, + pos_enc=False), + loss=dict( + type='KLDiscretLoss', + use_target_weight=True, + beta=10., + label_softmax=True), + decoder=codec), + test_cfg=dict(flip_test=True)) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file=f'{data_root}person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + # Turn off EMA while training the tiny model + # dict( + # type='EMAHook', + # ema_type='ExpMomentumEMA', + # momentum=0.0002, + # update_buffers=True, + # priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/simcc/humanart/simcc_mobilenetv2_wo-deconv-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/simcc/humanart/simcc_mobilenetv2_wo-deconv-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..6650f03ad8 --- /dev/null +++ b/configs/body_2d_keypoint/simcc/humanart/simcc_mobilenetv2_wo-deconv-8xb64-210e_humanart-256x192.py @@ -0,0 +1,124 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict( + type='SimCCLabel', input_size=(192, 256), sigma=6.0, simcc_split_ratio=2.0) + +# 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='MobileNetV2', + widen_factor=1., + out_indices=(7, ), + init_cfg=dict( + type='Pretrained', + checkpoint='mmcls://mobilenet_v2', + )), + head=dict( + type='SimCCHead', + in_channels=1280, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + deconv_out_channels=None, + loss=dict(type='KLDiscretLoss', use_target_weight=True), + decoder=codec), + test_cfg=dict(flip_test=True, )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb32-140e_humanart-384x288.py b/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb32-140e_humanart-384x288.py new file mode 100644 index 0000000000..7afb8d69b6 --- /dev/null +++ b/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb32-140e_humanart-384x288.py @@ -0,0 +1,120 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=140, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=1e-3, +)) + +# 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=train_cfg['max_epochs'], + milestones=[90, 120], + gamma=0.1, + by_epoch=True) +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=512) + +# codec settings +codec = dict( + type='SimCCLabel', input_size=(288, 384), sigma=6.0, simcc_split_ratio=2.0) + +# 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='ResNet', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), + ), + head=dict( + type='SimCCHead', + in_channels=2048, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(9, 12), + simcc_split_ratio=codec['simcc_split_ratio'], + loss=dict(type='KLDiscretLoss', use_target_weight=True), + decoder=codec), + test_cfg=dict(flip_test=True)) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +test_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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=test_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..1c29181998 --- /dev/null +++ b/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb64-210e_humanart-256x192.py @@ -0,0 +1,114 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=1e-3, +)) + +# learning policy +param_scheduler = [ + dict( + type='LinearLR', begin=0, end=500, start_factor=0.001, + by_epoch=False), # warm-up + dict(type='MultiStepLR', 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) + +# codec settings +codec = dict( + type='SimCCLabel', input_size=(192, 256), sigma=6.0, simcc_split_ratio=2.0) + +# 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='ResNet', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), + ), + head=dict( + type='SimCCHead', + in_channels=2048, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + loss=dict(type='KLDiscretLoss', use_target_weight=True), + decoder=codec), + test_cfg=dict(flip_test=True)) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +test_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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=test_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/simcc/humanart/simcc_vipnas-mbv3_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/simcc/humanart/simcc_vipnas-mbv3_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..119bf63b57 --- /dev/null +++ b/configs/body_2d_keypoint/simcc/humanart/simcc_vipnas-mbv3_8xb64-210e_humanart-256x192.py @@ -0,0 +1,119 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict( + type='SimCCLabel', input_size=(192, 256), sigma=6.0, simcc_split_ratio=2.0) + +# 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='ViPNAS_MobileNetV3'), + head=dict( + type='SimCCHead', + in_channels=160, + out_channels=17, + input_size=codec['input_size'], + in_featuremap_size=(6, 8), + simcc_split_ratio=codec['simcc_split_ratio'], + deconv_type='vipnas', + deconv_out_channels=(160, 160, 160), + deconv_num_groups=(160, 160, 160), + loss=dict(type='KLDiscretLoss', use_target_weight=True), + decoder=codec), + test_cfg=dict(flip_test=True, )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=data_root + 'HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_aic-humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_aic-humanart-256x192.py new file mode 100644 index 0000000000..6a54bc5dca --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_aic-humanart-256x192.py @@ -0,0 +1,284 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 210 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 105 to 210 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# keypoint mappings +keypoint_mapping_humanart = [ + (0, 0), + (1, 1), + (2, 2), + (3, 3), + (4, 4), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11), + (12, 12), + (13, 13), + (14, 14), + (15, 15), + (16, 16), +] + +keypoint_mapping_aic = [ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + (12, 17), + (13, 18), +] + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=1., + widen_factor=1., + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' + 'rtmdet/cspnext_rsb_pretrain/' + 'cspnext-l_8xb256-rsb-a1-600e_in1k-6a760974.pth')), + head=dict( + type='HeatmapHead', + in_channels=1024, + out_channels=19, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=False, + output_keypoint_indices=[ + target for _, target in keypoint_mapping_humanart + ])) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/', +# f'{data_root}': 's3://openmmlab/datasets/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# train datasets +dataset_humanart = dict( + type='RepeatDataset', + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=19, + mapping=keypoint_mapping_humanart) + ], + ), + times=3) + +dataset_aic = dict( + type='AicDataset', + data_root=data_root, + data_mode=data_mode, + ann_file='aic/annotations/aic_train.json', + data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' + '_train_20170902/keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=19, + mapping=keypoint_mapping_aic) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_humanart-256x192.py new file mode 100644 index 0000000000..0870973244 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_humanart-256x192.py @@ -0,0 +1,214 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 210 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 105 to 210 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=1., + widen_factor=1., + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' + 'rtmdet/cspnext_rsb_pretrain/' + 'cspnext-l_8xb256-rsb-a1-600e_in1k-6a760974.pth')), + head=dict( + type='HeatmapHead', + in_channels=1024, + out_channels=17, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_aic-humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_aic-humanart-256x192.py new file mode 100644 index 0000000000..1e42debdbb --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_aic-humanart-256x192.py @@ -0,0 +1,284 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 210 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 105 to 210 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# keypoint mappings +keypoint_mapping_humanart = [ + (0, 0), + (1, 1), + (2, 2), + (3, 3), + (4, 4), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11), + (12, 12), + (13, 13), + (14, 14), + (15, 15), + (16, 16), +] + +keypoint_mapping_aic = [ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + (12, 17), + (13, 18), +] + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.67, + widen_factor=0.75, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' + 'rtmdet/cspnext_rsb_pretrain/' + 'cspnext-m_8xb256-rsb-a1-600e_in1k-ecb3bbd9.pth')), + head=dict( + type='HeatmapHead', + in_channels=768, + out_channels=19, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=False, + output_keypoint_indices=[ + target for _, target in keypoint_mapping_humanart + ])) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/', +# f'{data_root}': 's3://openmmlab/datasets/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# train datasets +dataset_humanart = dict( + type='RepeatDataset', + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=19, + mapping=keypoint_mapping_humanart) + ], + ), + times=3) + +dataset_aic = dict( + type='AicDataset', + data_root=data_root, + data_mode=data_mode, + ann_file='aic/annotations/aic_train.json', + data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' + '_train_20170902/keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=19, + mapping=keypoint_mapping_aic) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_humanart-256x192.py new file mode 100644 index 0000000000..7589652a94 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_humanart-256x192.py @@ -0,0 +1,214 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 210 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 105 to 210 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.67, + widen_factor=0.75, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' + 'rtmdet/cspnext_rsb_pretrain/' + 'cspnext-m_8xb256-rsb-a1-600e_in1k-ecb3bbd9.pth')), + head=dict( + type='HeatmapHead', + in_channels=768, + out_channels=17, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_aic-humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_aic-humanart-256x192.py new file mode 100644 index 0000000000..49770fb71b --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_aic-humanart-256x192.py @@ -0,0 +1,284 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 210 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.0), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 105 to 210 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# keypoint mappings +keypoint_mapping_humanart = [ + (0, 0), + (1, 1), + (2, 2), + (3, 3), + (4, 4), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11), + (12, 12), + (13, 13), + (14, 14), + (15, 15), + (16, 16), +] + +keypoint_mapping_aic = [ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + (12, 17), + (13, 18), +] + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.33, + widen_factor=0.5, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' + 'rtmdet/cspnext_rsb_pretrain/' + 'cspnext-s_imagenet_600e-ea671761.pth')), + head=dict( + type='HeatmapHead', + in_channels=512, + out_channels=19, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=False, + output_keypoint_indices=[ + target for _, target in keypoint_mapping_humanart + ])) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/', +# f'{data_root}': 's3://openmmlab/datasets/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# train datasets +dataset_humanart = dict( + type='RepeatDataset', + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=19, + mapping=keypoint_mapping_humanart) + ], + ), + times=3) + +dataset_aic = dict( + type='AicDataset', + data_root=data_root, + data_mode=data_mode, + ann_file='aic/annotations/aic_train.json', + data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' + '_train_20170902/keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=19, + mapping=keypoint_mapping_aic) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_humanart-256x192.py new file mode 100644 index 0000000000..ae9eadff52 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_humanart-256x192.py @@ -0,0 +1,214 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 210 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 105 to 210 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.33, + widen_factor=0.5, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' + 'rtmdet/cspnext_rsb_pretrain/' + 'cspnext-s_imagenet_600e-ea671761.pth')), + head=dict( + type='HeatmapHead', + in_channels=512, + out_channels=17, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + dict( + type='EMAHook', + ema_type='ExpMomentumEMA', + momentum=0.0002, + update_buffers=True, + priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_aic-humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_aic-humanart-256x192.py new file mode 100644 index 0000000000..9a4efa6361 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_aic-humanart-256x192.py @@ -0,0 +1,284 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 210 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.0), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 105 to 210 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# keypoint mappings +keypoint_mapping_humanart = [ + (0, 0), + (1, 1), + (2, 2), + (3, 3), + (4, 4), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11), + (12, 12), + (13, 13), + (14, 14), + (15, 15), + (16, 16), +] + +keypoint_mapping_aic = [ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + (12, 17), + (13, 18), +] + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.167, + widen_factor=0.375, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' + 'rtmdet/cspnext_rsb_pretrain/' + 'cspnext-tiny_imagenet_600e-3a2dd350.pth')), + head=dict( + type='HeatmapHead', + in_channels=384, + out_channels=19, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=False, + output_keypoint_indices=[ + target for _, target in keypoint_mapping_humanart + ])) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/', +# f'{data_root}': 's3://openmmlab/datasets/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# train datasets +dataset_humanart = dict( + type='RepeatDataset', + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=19, + mapping=keypoint_mapping_humanart) + ], + ), + times=3) + +dataset_aic = dict( + type='AicDataset', + data_root=data_root, + data_mode=data_mode, + ann_file='aic/annotations/aic_train.json', + data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' + '_train_20170902/keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=19, + mapping=keypoint_mapping_aic) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + # dict( + # type='EMAHook', + # ema_type='ExpMomentumEMA', + # momentum=0.0002, + # update_buffers=True, + # priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_humanart-256x192.py new file mode 100644 index 0000000000..d94061485f --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_humanart-256x192.py @@ -0,0 +1,214 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +max_epochs = 210 +stage2_num_epochs = 30 +base_lr = 4e-3 + +train_cfg = dict(max_epochs=max_epochs, val_interval=10) +randomness = dict(seed=21) + +# optimizer +optim_wrapper = dict( + type='OptimWrapper', + optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), + paramwise_cfg=dict( + norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) + +# learning rate +param_scheduler = [ + dict( + type='LinearLR', + start_factor=1.0e-5, + by_epoch=False, + begin=0, + end=1000), + dict( + # use cosine lr from 105 to 210 epoch + type='CosineAnnealingLR', + eta_min=base_lr * 0.05, + begin=max_epochs // 2, + end=max_epochs, + T_max=max_epochs // 2, + by_epoch=True, + convert_to_iter_based=True), +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=1024) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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( + _scope_='mmdet', + type='CSPNeXt', + arch='P5', + expand_ratio=0.5, + deepen_factor=0.167, + widen_factor=0.375, + out_indices=(4, ), + channel_attention=True, + norm_cfg=dict(type='SyncBN'), + act_cfg=dict(type='SiLU'), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' + 'rtmdet/cspnext_rsb_pretrain/' + 'cspnext-tiny_imagenet_600e-3a2dd350.pth')), + head=dict( + type='HeatmapHead', + in_channels=384, + out_channels=17, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +backend_args = dict(backend='local') +# backend_args = dict( +# backend='petrel', +# path_mapping=dict({ +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', +# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' +# })) + +# pipelines +train_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=1.), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +train_pipeline_stage2 = [ + dict(type='LoadImage', backend_args=backend_args), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + shift_factor=0., + scale_factor=[0.75, 1.25], + rotate_factor=60), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='mmdet.YOLOXHSVRandomAug'), + dict( + type='Albumentation', + transforms=[ + dict(type='Blur', p=0.1), + dict(type='MedianBlur', p=0.1), + dict( + type='CoarseDropout', + max_holes=1, + max_height=0.4, + max_width=0.4, + min_holes=1, + min_height=0.2, + min_width=0.2, + p=0.5), + ]), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=256, + num_workers=10, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=64, + num_workers=10, + 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='HumanArt/annotations/validation_humanart.json', + # bbox_file='data/coco/person_detection_results/' + # 'COCO_val2017_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +custom_hooks = [ + # dict( + # type='EMAHook', + # ema_type='ExpMomentumEMA', + # momentum=0.0002, + # update_buffers=True, + # priority=49), + dict( + type='mmdet.PipelineSwitchHook', + switch_epoch=max_epochs - stage2_num_epochs, + switch_pipeline=train_pipeline_stage2) +] + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/hrnet_humanart.md b/configs/body_2d_keypoint/topdown_heatmap/humanart/hrnet_humanart.md new file mode 100644 index 0000000000..fe3d0989ec --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/hrnet_humanart.md @@ -0,0 +1,44 @@ + + +
+HRNet (CVPR'2019) + +```bibtex +@inproceedings{sun2019deep, + title={Deep high-resolution representation learning for human pose estimation}, + author={Sun, Ke and Xiao, Bin and Liu, Dong and Wang, Jingdong}, + booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, + pages={5693--5703}, + year={2019} +} +``` + +
+ + + +
+Human-Art (CVPR'2023) + +```bibtex +@inproceedings{ju2023human, + title={Human-Art: A Versatile Human-Centric Dataset Bridging Natural and Artificial Scenes}, + author={Ju, Xuan and Zeng, Ailing and Wang, Jianan and Xu, Qiang and Zhang, Lei}, + booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition}, + year={2023}, +} +``` + +
+ +Results on Human-Art validation set with ground-truth bounding box + +| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | +| :-------------------------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------------------------: | :-------: | +| [pose_hrnet_w48](/configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/humanart/hrnet_w48_humanart_256x192.py) | 256x192 | 0.764 | 0.906 | 0.824 | 0.794 | 0.918 | [ckpt](https://drive.google.com/file/d/1gs1RCxRcItUHwA5N8P5_9mKcgwLiBjOO/view?usp=share_link) | [log](<>) | + +Results on COCO val2017 set with ground-truth bounding box + +| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | +| :-------------------------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------------------------: | :-------: | +| [pose_hrnet_w48](/configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/humanart/hrnet_w48_humanart_256x192.py) | 256x192 | 0.772 | 0.936 | 0.847 | 0.800 | 0.942 | [ckpt](https://drive.google.com/file/d/1gs1RCxRcItUHwA5N8P5_9mKcgwLiBjOO/view?usp=share_link) | [log](<>) | diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xmspn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xmspn50_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..7fbdeafabc --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xmspn50_8xb32-210e_humanart-256x192.py @@ -0,0 +1,152 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=5e-3, +)) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. +kernel_sizes = [15, 11, 9, 7, 5] +codec = [ + dict( + type='MegviiHeatmap', + input_size=(192, 256), + heatmap_size=(48, 64), + kernel_size=kernel_size) for kernel_size in kernel_sizes +] + +# 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='MSPN', + unit_channels=256, + num_stages=2, + num_units=4, + num_blocks=[3, 4, 6, 3], + norm_cfg=dict(type='BN'), + init_cfg=dict( + type='Pretrained', + checkpoint='torchvision://resnet50', + )), + head=dict( + type='MSPNHead', + out_shape=(64, 48), + unit_channels=256, + out_channels=17, + num_stages=2, + num_units=4, + norm_cfg=dict(type='BN'), + # each sub list is for a stage + # and each element in each list is for a unit + level_indices=[0, 1, 2, 3] + [1, 2, 3, 4], + loss=([ + dict( + type='KeypointMSELoss', + use_target_weight=True, + loss_weight=0.25) + ] * 3 + [ + dict( + type='KeypointOHKMMSELoss', + use_target_weight=True, + loss_weight=1.) + ]) * 2, + decoder=codec[-1]), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='GenerateTarget', multilevel=True, encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=32, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'annotations/person_keypoints_val2017.json', + nms_mode='none') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xrsn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xrsn50_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..5215e422bf --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xrsn50_8xb32-210e_humanart-256x192.py @@ -0,0 +1,154 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=5e-3, +)) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. +kernel_sizes = [15, 11, 9, 7, 5] +codec = [ + dict( + type='MegviiHeatmap', + input_size=(192, 256), + heatmap_size=(48, 64), + kernel_size=kernel_size) for kernel_size in kernel_sizes +] + +# 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='RSN', + unit_channels=256, + num_stages=2, + num_units=4, + num_blocks=[3, 4, 6, 3], + num_steps=4, + norm_cfg=dict(type='BN'), + ), + head=dict( + type='MSPNHead', + out_shape=(64, 48), + unit_channels=256, + out_channels=17, + num_stages=2, + num_units=4, + norm_cfg=dict(type='BN'), + # each sub list is for a stage + # and each element in each list is for a unit + level_indices=[0, 1, 2, 3] + [1, 2, 3, 4], + loss=([ + dict( + type='KeypointMSELoss', + use_target_weight=True, + loss_weight=0.25) + ] * 3 + [ + dict( + type='KeypointOHKMMSELoss', + use_target_weight=True, + loss_weight=1.) + ]) * 2, + decoder=codec[-1]), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='GenerateTarget', multilevel=True, encoder=codec), + dict(type='PackPoseInputs') +] + +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=32, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'annotations/person_keypoints_val2017.json', + nms_mode='none') +test_evaluator = val_evaluator + +# fp16 settings +fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xmspn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xmspn50_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..4ea845985e --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xmspn50_8xb32-210e_humanart-256x192.py @@ -0,0 +1,152 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=5e-3, +)) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. +kernel_sizes = [15, 11, 9, 7, 5] +codec = [ + dict( + type='MegviiHeatmap', + input_size=(192, 256), + heatmap_size=(48, 64), + kernel_size=kernel_size) for kernel_size in kernel_sizes +] + +# 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='MSPN', + unit_channels=256, + num_stages=3, + num_units=4, + num_blocks=[3, 4, 6, 3], + norm_cfg=dict(type='BN'), + init_cfg=dict( + type='Pretrained', + checkpoint='torchvision://resnet50', + )), + head=dict( + type='MSPNHead', + out_shape=(64, 48), + unit_channels=256, + out_channels=17, + num_stages=3, + num_units=4, + norm_cfg=dict(type='BN'), + # each sub list is for a stage + # and each element in each list is for a unit + level_indices=[0, 1, 2, 3] * 2 + [1, 2, 3, 4], + loss=([ + dict( + type='KeypointMSELoss', + use_target_weight=True, + loss_weight=0.25) + ] * 3 + [ + dict( + type='KeypointOHKMMSELoss', + use_target_weight=True, + loss_weight=1.) + ]) * 3, + decoder=codec[-1]), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='GenerateTarget', multilevel=True, encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=32, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'annotations/person_keypoints_val2017.json', + nms_mode='none') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xrsn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xrsn50_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..3286db101f --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xrsn50_8xb32-210e_humanart-256x192.py @@ -0,0 +1,154 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=5e-3, +)) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. +kernel_sizes = [15, 11, 9, 7, 5] +codec = [ + dict( + type='MegviiHeatmap', + input_size=(192, 256), + heatmap_size=(48, 64), + kernel_size=kernel_size) for kernel_size in kernel_sizes +] + +# 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='RSN', + unit_channels=256, + num_stages=3, + num_units=4, + num_blocks=[3, 4, 6, 3], + num_steps=4, + norm_cfg=dict(type='BN'), + ), + head=dict( + type='MSPNHead', + out_shape=(64, 48), + unit_channels=256, + out_channels=17, + num_stages=3, + num_units=4, + norm_cfg=dict(type='BN'), + # each sub list is for a stage + # and each element in each list is for a unit + level_indices=[0, 1, 2, 3] * 2 + [1, 2, 3, 4], + loss=([ + dict( + type='KeypointMSELoss', + use_target_weight=True, + loss_weight=0.25) + ] * 3 + [ + dict( + type='KeypointOHKMMSELoss', + use_target_weight=True, + loss_weight=1.) + ]) * 3, + decoder=codec[-1]), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='GenerateTarget', multilevel=True, encoder=codec), + dict(type='PackPoseInputs') +] + +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=32, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'annotations/person_keypoints_val2017.json', + nms_mode='none') +test_evaluator = val_evaluator + +# fp16 settings +fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_4xmspn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_4xmspn50_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..43f2705bf1 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_4xmspn50_8xb32-210e_humanart-256x192.py @@ -0,0 +1,152 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=5e-3, +)) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. +kernel_sizes = [15, 11, 9, 7, 5] +codec = [ + dict( + type='MegviiHeatmap', + input_size=(192, 256), + heatmap_size=(48, 64), + kernel_size=kernel_size) for kernel_size in kernel_sizes +] + +# 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='MSPN', + unit_channels=256, + num_stages=4, + num_units=4, + num_blocks=[3, 4, 6, 3], + norm_cfg=dict(type='BN'), + init_cfg=dict( + type='Pretrained', + checkpoint='torchvision://resnet50', + )), + head=dict( + type='MSPNHead', + out_shape=(64, 48), + unit_channels=256, + out_channels=17, + num_stages=4, + num_units=4, + norm_cfg=dict(type='BN'), + # each sub list is for a stage + # and each element in each list is for a unit + level_indices=[0, 1, 2, 3] * 3 + [1, 2, 3, 4], + loss=([ + dict( + type='KeypointMSELoss', + use_target_weight=True, + loss_weight=0.25) + ] * 3 + [ + dict( + type='KeypointOHKMMSELoss', + use_target_weight=True, + loss_weight=1.) + ]) * 4, + decoder=codec[-1]), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='GenerateTarget', multilevel=True, encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=32, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'annotations/person_keypoints_val2017.json', + nms_mode='none') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base-simple_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base-simple_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..f61aaa4bf7 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base-simple_8xb64-210e_humanart-256x192.py @@ -0,0 +1,153 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +custom_imports = dict( + imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], + allow_failed_imports=False) + +optim_wrapper = dict( + optimizer=dict( + type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), + paramwise_cfg=dict( + num_layers=12, + layer_decay_rate=0.75, + custom_keys={ + 'bias': dict(decay_multi=0.0), + 'pos_embed': dict(decay_mult=0.0), + 'relative_position_bias_table': dict(decay_mult=0.0), + 'norm': dict(decay_mult=0.0), + }, + ), + constructor='LayerDecayOptimWrapperConstructor', + clip_grad=dict(max_norm=1., norm_type=2), +) + +# 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 = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='mmcls.VisionTransformer', + arch='base', + img_size=(256, 192), + patch_size=16, + qkv_bias=True, + drop_path_rate=0.3, + with_cls_token=False, + output_cls_token=False, + patch_cfg=dict(padding=2), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'v1/pretrained_models/mae_pretrain_vit_base.pth'), + ), + neck=dict(type='FeatureMapProcessor', scale_factor=4.0, apply_relu=True), + head=dict( + type='HeatmapHead', + in_channels=768, + out_channels=17, + deconv_out_channels=[], + deconv_kernel_sizes=[], + final_layer=dict(kernel_size=3, padding=1), + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec, + ), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +data_root = 'data/' +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..6f08f404fb --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base_8xb64-210e_humanart-256x192.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +custom_imports = dict( + imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], + allow_failed_imports=False) + +optim_wrapper = dict( + optimizer=dict( + type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), + paramwise_cfg=dict( + num_layers=12, + layer_decay_rate=0.75, + custom_keys={ + 'bias': dict(decay_multi=0.0), + 'pos_embed': dict(decay_mult=0.0), + 'relative_position_bias_table': dict(decay_mult=0.0), + 'norm': dict(decay_mult=0.0), + }, + ), + constructor='LayerDecayOptimWrapperConstructor', + clip_grad=dict(max_norm=1., norm_type=2), +) + +# 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 = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='mmcls.VisionTransformer', + arch='base', + img_size=(256, 192), + patch_size=16, + qkv_bias=True, + drop_path_rate=0.3, + with_cls_token=False, + output_cls_token=False, + patch_cfg=dict(padding=2), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'v1/pretrained_models/mae_pretrain_vit_base.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=768, + out_channels=17, + deconv_out_channels=(256, 256), + deconv_kernel_sizes=(4, 4), + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +data_root = 'data/' +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge-simple_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge-simple_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..2b8dd0bc2b --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge-simple_8xb64-210e_humanart-256x192.py @@ -0,0 +1,153 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +custom_imports = dict( + imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], + allow_failed_imports=False) + +optim_wrapper = dict( + optimizer=dict( + type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), + paramwise_cfg=dict( + num_layers=32, + layer_decay_rate=0.85, + custom_keys={ + 'bias': dict(decay_multi=0.0), + 'pos_embed': dict(decay_mult=0.0), + 'relative_position_bias_table': dict(decay_mult=0.0), + 'norm': dict(decay_mult=0.0), + }, + ), + constructor='LayerDecayOptimWrapperConstructor', + clip_grad=dict(max_norm=1., norm_type=2), +) + +# 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 = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='mmcls.VisionTransformer', + arch='huge', + img_size=(256, 192), + patch_size=16, + qkv_bias=True, + drop_path_rate=0.55, + with_cls_token=False, + output_cls_token=False, + patch_cfg=dict(padding=2), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'v1/pretrained_models/mae_pretrain_vit_huge.pth'), + ), + neck=dict(type='FeatureMapProcessor', scale_factor=4.0, apply_relu=True), + head=dict( + type='HeatmapHead', + in_channels=1280, + out_channels=17, + deconv_out_channels=[], + deconv_kernel_sizes=[], + final_layer=dict(kernel_size=3, padding=1), + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec, + ), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +data_root = 'data/' +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..925f68e3d1 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge_8xb64-210e_humanart-256x192.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +custom_imports = dict( + imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], + allow_failed_imports=False) + +optim_wrapper = dict( + optimizer=dict( + type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), + paramwise_cfg=dict( + num_layers=32, + layer_decay_rate=0.85, + custom_keys={ + 'bias': dict(decay_multi=0.0), + 'pos_embed': dict(decay_mult=0.0), + 'relative_position_bias_table': dict(decay_mult=0.0), + 'norm': dict(decay_mult=0.0), + }, + ), + constructor='LayerDecayOptimWrapperConstructor', + clip_grad=dict(max_norm=1., norm_type=2), +) + +# 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 = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='mmcls.VisionTransformer', + arch='huge', + img_size=(256, 192), + patch_size=16, + qkv_bias=True, + drop_path_rate=0.55, + with_cls_token=False, + output_cls_token=False, + patch_cfg=dict(padding=2), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'v1/pretrained_models/mae_pretrain_vit_huge.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=1280, + out_channels=17, + deconv_out_channels=(256, 256), + deconv_kernel_sizes=(4, 4), + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +data_root = 'data/' +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large-simple_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large-simple_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..9352f615c2 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large-simple_8xb64-210e_humanart-256x192.py @@ -0,0 +1,153 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +custom_imports = dict( + imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], + allow_failed_imports=False) + +optim_wrapper = dict( + optimizer=dict( + type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), + paramwise_cfg=dict( + num_layers=24, + layer_decay_rate=0.8, + custom_keys={ + 'bias': dict(decay_multi=0.0), + 'pos_embed': dict(decay_mult=0.0), + 'relative_position_bias_table': dict(decay_mult=0.0), + 'norm': dict(decay_mult=0.0), + }, + ), + constructor='LayerDecayOptimWrapperConstructor', + clip_grad=dict(max_norm=1., norm_type=2), +) + +# 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 = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='mmcls.VisionTransformer', + arch='large', + img_size=(256, 192), + patch_size=16, + qkv_bias=True, + drop_path_rate=0.5, + with_cls_token=False, + output_cls_token=False, + patch_cfg=dict(padding=2), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'v1/pretrained_models/mae_pretrain_vit_large.pth'), + ), + neck=dict(type='FeatureMapProcessor', scale_factor=4.0, apply_relu=True), + head=dict( + type='HeatmapHead', + in_channels=1024, + out_channels=17, + deconv_out_channels=[], + deconv_kernel_sizes=[], + final_layer=dict(kernel_size=3, padding=1), + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec, + ), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +data_root = 'data/' +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..7ea9dbf395 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large_8xb64-210e_humanart-256x192.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +custom_imports = dict( + imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], + allow_failed_imports=False) + +optim_wrapper = dict( + optimizer=dict( + type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), + paramwise_cfg=dict( + num_layers=24, + layer_decay_rate=0.8, + custom_keys={ + 'bias': dict(decay_multi=0.0), + 'pos_embed': dict(decay_mult=0.0), + 'relative_position_bias_table': dict(decay_mult=0.0), + 'norm': dict(decay_mult=0.0), + }, + ), + constructor='LayerDecayOptimWrapperConstructor', + clip_grad=dict(max_norm=1., norm_type=2), +) + +# 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 = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='mmcls.VisionTransformer', + arch='large', + img_size=(256, 192), + patch_size=16, + qkv_bias=True, + drop_path_rate=0.5, + with_cls_token=False, + output_cls_token=False, + patch_cfg=dict(padding=2), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'v1/pretrained_models/mae_pretrain_vit_large.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=1024, + out_channels=17, + deconv_out_channels=(256, 256), + deconv_kernel_sizes=(4, 4), + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +data_root = 'data/' +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small-simple_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small-simple_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..a0e2c9f849 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small-simple_8xb64-210e_humanart-256x192.py @@ -0,0 +1,158 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +custom_imports = dict( + imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], + allow_failed_imports=False) + +optim_wrapper = dict( + optimizer=dict( + type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), + paramwise_cfg=dict( + num_layers=12, + layer_decay_rate=0.8, + custom_keys={ + 'bias': dict(decay_multi=0.0), + 'pos_embed': dict(decay_mult=0.0), + 'relative_position_bias_table': dict(decay_mult=0.0), + 'norm': dict(decay_mult=0.0), + }, + ), + constructor='LayerDecayOptimWrapperConstructor', + clip_grad=dict(max_norm=1., norm_type=2), +) + +# 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 = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='mmcls.VisionTransformer', + arch={ + 'embed_dims': 384, + 'num_layers': 12, + 'num_heads': 12, + 'feedforward_channels': 384 * 4 + }, + img_size=(256, 192), + patch_size=16, + qkv_bias=True, + drop_path_rate=0.1, + with_cls_token=False, + output_cls_token=False, + patch_cfg=dict(padding=2), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'v1/pretrained_models/mae_pretrain_vit_small.pth'), + ), + neck=dict(type='FeatureMapProcessor', scale_factor=4.0, apply_relu=True), + head=dict( + type='HeatmapHead', + in_channels=384, + out_channels=17, + deconv_out_channels=[], + deconv_kernel_sizes=[], + final_layer=dict(kernel_size=3, padding=1), + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec, + ), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +data_root = 'data/' +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..6daf87cc90 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small_8xb64-210e_humanart-256x192.py @@ -0,0 +1,155 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +custom_imports = dict( + imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], + allow_failed_imports=False) + +optim_wrapper = dict( + optimizer=dict( + type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), + paramwise_cfg=dict( + num_layers=12, + layer_decay_rate=0.8, + custom_keys={ + 'bias': dict(decay_multi=0.0), + 'pos_embed': dict(decay_mult=0.0), + 'relative_position_bias_table': dict(decay_mult=0.0), + 'norm': dict(decay_mult=0.0), + }, + ), + constructor='LayerDecayOptimWrapperConstructor', + clip_grad=dict(max_norm=1., norm_type=2), +) + +# 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 = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='mmcls.VisionTransformer', + arch={ + 'embed_dims': 384, + 'num_layers': 12, + 'num_heads': 12, + 'feedforward_channels': 384 * 4 + }, + img_size=(256, 192), + patch_size=16, + qkv_bias=True, + drop_path_rate=0.1, + with_cls_token=False, + output_cls_token=False, + patch_cfg=dict(padding=2), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'v1/pretrained_models/mae_pretrain_vit_small.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=384, + out_channels=17, + deconv_out_channels=(256, 256), + deconv_kernel_sizes=(4, 4), + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +data_root = 'data/' +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_alexnet_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_alexnet_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..08935037f4 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_alexnet_8xb64-210e_humanart-256x192.py @@ -0,0 +1,117 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(40, 56), sigma=2) + +# 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='AlexNet', num_classes=-1), + head=dict( + type='HeatmapHead', + in_channels=256, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..33f521d47f --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb32-210e_humanart-384x288.py @@ -0,0 +1,125 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(36, 48), sigma=3) + +# 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='CPM', + in_channels=3, + out_channels=17, + feat_channels=128, + num_stages=6), + head=dict( + type='CPMHead', + in_channels=17, + out_channels=17, + num_stages=6, + deconv_out_channels=None, + final_layer=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..7ff91cf1ce --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb64-210e_humanart-256x192.py @@ -0,0 +1,125 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(24, 32), sigma=2) + +# 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='CPM', + in_channels=3, + out_channels=17, + feat_channels=128, + num_stages=6), + head=dict( + type='CPMHead', + in_channels=17, + out_channels=17, + num_stages=6, + deconv_out_channels=None, + final_layer=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-256x256.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-256x256.py new file mode 100644 index 0000000000..8bcfec9abf --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-256x256.py @@ -0,0 +1,122 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(256, 256), heatmap_size=(64, 64), sigma=2) + +# 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='HourglassNet', + num_stacks=1, + ), + head=dict( + type='CPMHead', + in_channels=256, + out_channels=17, + num_stages=1, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-384x384.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-384x384.py new file mode 100644 index 0000000000..d49e4688fa --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-384x384.py @@ -0,0 +1,122 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(384, 384), heatmap_size=(96, 96), sigma=3) + +# 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='HourglassNet', + num_stacks=1, + ), + head=dict( + type='CPMHead', + in_channels=256, + out_channels=17, + num_stages=1, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..c8227aaea2 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-256x192.py @@ -0,0 +1,174 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict( + optimizer=dict( + type='AdamW', + lr=5e-4, + betas=(0.9, 0.999), + weight_decay=0.01, + ), + paramwise_cfg=dict( + custom_keys={'relative_position_bias_table': dict(decay_mult=0.)})) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='HRFormer', + in_channels=3, + norm_cfg=norm_cfg, + extra=dict( + drop_path_rate=0.2, + with_rpe=True, + stage1=dict( + num_modules=1, + num_branches=1, + block='BOTTLENECK', + num_blocks=(2, ), + num_channels=(64, ), + num_heads=[2], + mlp_ratios=[4]), + stage2=dict( + num_modules=1, + num_branches=2, + block='HRFORMERBLOCK', + num_blocks=(2, 2), + num_channels=(78, 156), + num_heads=[2, 4], + mlp_ratios=[4, 4], + window_sizes=[7, 7]), + stage3=dict( + num_modules=4, + num_branches=3, + block='HRFORMERBLOCK', + num_blocks=(2, 2, 2), + num_channels=(78, 156, 312), + num_heads=[2, 4, 8], + mlp_ratios=[4, 4, 4], + window_sizes=[7, 7, 7]), + stage4=dict( + num_modules=2, + num_branches=4, + block='HRFORMERBLOCK', + num_blocks=(2, 2, 2, 2), + num_channels=(78, 156, 312, 624), + num_heads=[2, 4, 8, 16], + mlp_ratios=[4, 4, 4, 4], + window_sizes=[7, 7, 7, 7])), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrformer_base-32815020_20220226.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=78, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator + +# fp16 settings +fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..d58d2236e5 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-384x288.py @@ -0,0 +1,174 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict( + optimizer=dict( + type='AdamW', + lr=5e-4, + betas=(0.9, 0.999), + weight_decay=0.01, + ), + paramwise_cfg=dict( + custom_keys={'relative_position_bias_table': dict(decay_mult=0.)})) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='HRFormer', + in_channels=3, + norm_cfg=norm_cfg, + extra=dict( + drop_path_rate=0.2, + with_rpe=True, + stage1=dict( + num_modules=1, + num_branches=1, + block='BOTTLENECK', + num_blocks=(2, ), + num_channels=(64, ), + num_heads=[2], + mlp_ratios=[4]), + stage2=dict( + num_modules=1, + num_branches=2, + block='HRFORMERBLOCK', + num_blocks=(2, 2), + num_channels=(78, 156), + num_heads=[2, 4], + mlp_ratios=[4, 4], + window_sizes=[7, 7]), + stage3=dict( + num_modules=4, + num_branches=3, + block='HRFORMERBLOCK', + num_blocks=(2, 2, 2), + num_channels=(78, 156, 312), + num_heads=[2, 4, 8], + mlp_ratios=[4, 4, 4], + window_sizes=[7, 7, 7]), + stage4=dict( + num_modules=2, + num_branches=4, + block='HRFORMERBLOCK', + num_blocks=(2, 2, 2, 2), + num_channels=(78, 156, 312, 624), + num_heads=[2, 4, 8, 16], + mlp_ratios=[4, 4, 4, 4], + window_sizes=[7, 7, 7, 7])), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrformer_base-32815020_20220226.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=78, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator + +# fp16 settings +fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..e41b3be2ac --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-256x192.py @@ -0,0 +1,174 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict( + optimizer=dict( + type='AdamW', + lr=5e-4, + betas=(0.9, 0.999), + weight_decay=0.01, + ), + paramwise_cfg=dict( + custom_keys={'relative_position_bias_table': dict(decay_mult=0.)})) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='HRFormer', + in_channels=3, + norm_cfg=norm_cfg, + extra=dict( + drop_path_rate=0.1, + with_rpe=True, + stage1=dict( + num_modules=1, + num_branches=1, + block='BOTTLENECK', + num_blocks=(2, ), + num_channels=(64, ), + num_heads=[2], + num_mlp_ratios=[4]), + stage2=dict( + num_modules=1, + num_branches=2, + block='HRFORMERBLOCK', + num_blocks=(2, 2), + num_channels=(32, 64), + num_heads=[1, 2], + mlp_ratios=[4, 4], + window_sizes=[7, 7]), + stage3=dict( + num_modules=4, + num_branches=3, + block='HRFORMERBLOCK', + num_blocks=(2, 2, 2), + num_channels=(32, 64, 128), + num_heads=[1, 2, 4], + mlp_ratios=[4, 4, 4], + window_sizes=[7, 7, 7]), + stage4=dict( + num_modules=2, + num_branches=4, + block='HRFORMERBLOCK', + num_blocks=(2, 2, 2, 2), + num_channels=(32, 64, 128, 256), + num_heads=[1, 2, 4, 8], + mlp_ratios=[4, 4, 4, 4], + window_sizes=[7, 7, 7, 7])), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrformer_small-09516375_20220226.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator + +# fp16 settings +fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..05ff951d84 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-384x288.py @@ -0,0 +1,174 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict( + optimizer=dict( + type='AdamW', + lr=5e-4, + betas=(0.9, 0.999), + weight_decay=0.01, + ), + paramwise_cfg=dict( + custom_keys={'relative_position_bias_table': dict(decay_mult=0.)})) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='HRFormer', + in_channels=3, + norm_cfg=norm_cfg, + extra=dict( + drop_path_rate=0.1, + with_rpe=True, + stage1=dict( + num_modules=1, + num_branches=1, + block='BOTTLENECK', + num_blocks=(2, ), + num_channels=(64, ), + num_heads=[2], + num_mlp_ratios=[4]), + stage2=dict( + num_modules=1, + num_branches=2, + block='HRFORMERBLOCK', + num_blocks=(2, 2), + num_channels=(32, 64), + num_heads=[1, 2], + mlp_ratios=[4, 4], + window_sizes=[7, 7]), + stage3=dict( + num_modules=4, + num_branches=3, + block='HRFORMERBLOCK', + num_blocks=(2, 2, 2), + num_channels=(32, 64, 128), + num_heads=[1, 2, 4], + mlp_ratios=[4, 4, 4], + window_sizes=[7, 7, 7]), + stage4=dict( + num_modules=2, + num_branches=4, + block='HRFORMERBLOCK', + num_blocks=(2, 2, 2, 2), + num_channels=(32, 64, 128, 256), + num_heads=[1, 2, 4, 8], + mlp_ratios=[4, 4, 4, 4], + window_sizes=[7, 7, 7, 7])), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrformer_small-09516375_20220226.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator + +# fp16 settings +fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..bf9fa25beb --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..7f49e9708f --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-384x288.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-combine.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-combine.py new file mode 100644 index 0000000000..2fa71699cb --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-combine.py @@ -0,0 +1,221 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict( + checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=3)) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# keypoint mappings +keypoint_mapping_humanart = [ + (0, 0), + (1, 1), + (2, 2), + (3, 3), + (4, 4), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11), + (12, 12), + (13, 13), + (14, 14), + (15, 15), + (16, 16), +] + +keypoint_mapping_aic = [ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + (12, 17), + (13, 18), +] + +# 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), + metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), + 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=19, + deconv_out_channels=None, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=True, + output_keypoint_indices=[ + target for _, target in keypoint_mapping_humanart + ])) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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') +] + +# train datasets +dataset_humanart = dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=19, + mapping=keypoint_mapping_humanart) + ], +) + +dataset_aic = dict( + type='AicDataset', + data_root='data/aic/', + data_mode=data_mode, + ann_file='annotations/aic_train.json', + data_prefix=dict(img='ai_challenger_keypoint_train_20170902/' + 'keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=19, + mapping=keypoint_mapping_aic) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=2, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-merge.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-merge.py new file mode 100644 index 0000000000..b7e287565c --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-merge.py @@ -0,0 +1,187 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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') +] + +# train datasets +dataset_humanart = dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=[], +) + +dataset_aic = dict( + type='AicDataset', + data_root='data/aic/', + data_mode=data_mode, + ann_file='annotations/aic_train.json', + data_prefix=dict(img='ai_challenger_keypoint_train_20170902/' + 'keypoint_train_images_20170902/'), + pipeline=[ + dict( + type='KeypointConverter', + num_keypoints=17, + mapping=[ + (0, 6), + (1, 8), + (2, 10), + (3, 5), + (4, 7), + (5, 9), + (6, 12), + (7, 14), + (8, 16), + (9, 11), + (10, 13), + (11, 15), + ]) + ], +) + +# data loaders +train_dataloader = dict( + batch_size=64, + num_workers=2, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type='CombinedDataset', + metainfo=dict(from_file='configs/_base_/datasets/coco.py'), + datasets=[dataset_humanart, dataset_aic], + pipeline=train_pipeline, + test_mode=False, + )) +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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_coarsedropout-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_coarsedropout-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..2eae18218e --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_coarsedropout-8xb64-210e_humanart-256x192.py @@ -0,0 +1,165 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/' + 'body_2d_keypoint/topdown_heatmap/coco/' + 'td-hm_hrnet-w32_8xb64-210e_coco-256x192-81c58e40_20220909.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict( + type='Albumentation', + transforms=[ + dict( + type='CoarseDropout', + max_holes=8, + max_height=40, + max_width=40, + min_holes=1, + min_height=10, + min_width=10, + p=0.5), + ]), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..1a95b32cc4 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-256x192.py @@ -0,0 +1,154 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', + input_size=(192, 256), + heatmap_size=(48, 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..09639a8b40 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-384x288.py @@ -0,0 +1,154 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', + input_size=(288, 384), + heatmap_size=(72, 96), + sigma=3, + 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_fp16-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_fp16-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..306d0aeb44 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_fp16-8xb64-210e_humanart-256x192.py @@ -0,0 +1,7 @@ +_base_ = ['./td-hm_hrnet-w32_8xb64-210e_coco-256x192.py'] + +# fp16 settings +optim_wrapper = dict( + type='AmpOptimWrapper', + loss_scale='dynamic', +) diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_gridmask-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_gridmask-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..70ea1fb597 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_gridmask-8xb64-210e_humanart-256x192.py @@ -0,0 +1,162 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/' + 'body_2d_keypoint/topdown_heatmap/coco/' + 'td-hm_hrnet-w32_8xb64-210e_coco-256x192-81c58e40_20220909.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict( + type='Albumentation', + transforms=[ + dict( + type='GridDropout', + unit_size_min=10, + unit_size_max=40, + random_offset=True, + p=0.5), + ]), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_photometric-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_photometric-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..156d012fb3 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_photometric-8xb64-210e_humanart-256x192.py @@ -0,0 +1,153 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/v1/' + 'body_2d_keypoint/topdown_heatmap/coco/' + 'td-hm_hrnet-w32_8xb64-210e_coco-256x192-81c58e40_20220909.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='PhotometricDistortion'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..68e227f8a8 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-256x192.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..52672824ff --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-384x288.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=17, + deconv_out_channels=None, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-regress-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-regress-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..b47e21d75d --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-regress-8xb64-210e_humanart-256x192.py @@ -0,0 +1,155 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='UDPHeatmap', + input_size=(192, 256), + heatmap_size=(48, 64), + sigma=2, + heatmap_type='combined') + +# 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=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(32, 64, 128, 256))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w32-36af842e.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=32, + out_channels=3 * 17, + deconv_out_channels=None, + loss=dict(type='CombinedTargetMSELoss', use_target_weight=True), + decoder=codec), + train_cfg=dict(compute_acc=False), + test_cfg=dict( + flip_test=True, + flip_mode='udp_combined', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..6a5ae0707c --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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=(48, 96)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(48, 96, 192)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(48, 96, 192, 384))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w48-8ef0771d.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=48, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..e75349bac6 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-384x288.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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=(48, 96)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(48, 96, 192)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(48, 96, 192, 384))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w48-8ef0771d.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=48, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..0b7d619fe2 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-256x192.py @@ -0,0 +1,154 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', + input_size=(192, 256), + heatmap_size=(48, 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=(48, 96)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(48, 96, 192)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(48, 96, 192, 384))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w48-8ef0771d.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=48, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..8b3b572e6e --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-384x288.py @@ -0,0 +1,154 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', + input_size=(288, 384), + heatmap_size=(72, 96), + sigma=3, + 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=(48, 96)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(48, 96, 192)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(48, 96, 192, 384))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w48-8ef0771d.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=48, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..c58a57a1da --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-256x192.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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=(48, 96)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(48, 96, 192)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(48, 96, 192, 384))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w48-8ef0771d.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=48, + out_channels=17, + deconv_out_channels=None, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..509341b9a3 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-384x288.py @@ -0,0 +1,150 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='UDPHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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=(48, 96)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BASIC', + num_blocks=(4, 4, 4), + num_channels=(48, 96, 192)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 4, 4, 4), + num_channels=(48, 96, 192, 384))), + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/hrnet_w48-8ef0771d.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=48, + out_channels=17, + deconv_out_channels=None, + loss=dict(type='KeypointMSELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..0448a55017 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb32-210e_humanart-384x288.py @@ -0,0 +1,140 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='LiteHRNet', + in_channels=3, + extra=dict( + stem=dict(stem_channels=32, out_channels=32, expand_ratio=1), + num_stages=3, + stages_spec=dict( + num_modules=(2, 4, 2), + num_branches=(2, 3, 4), + num_blocks=(2, 2, 2), + module_type=('LITE', 'LITE', 'LITE'), + with_fuse=(True, True, True), + reduce_ratios=(8, 8, 8), + num_channels=( + (40, 80), + (40, 80, 160), + (40, 80, 160, 320), + )), + with_head=True, + )), + head=dict( + type='HeatmapHead', + in_channels=40, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + rotate_factor=60, + scale_factor=(0.75, 1.25)), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..a58a880168 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb64-210e_humanart-256x192.py @@ -0,0 +1,140 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='LiteHRNet', + in_channels=3, + extra=dict( + stem=dict(stem_channels=32, out_channels=32, expand_ratio=1), + num_stages=3, + stages_spec=dict( + num_modules=(2, 4, 2), + num_branches=(2, 3, 4), + num_blocks=(2, 2, 2), + module_type=('LITE', 'LITE', 'LITE'), + with_fuse=(True, True, True), + reduce_ratios=(8, 8, 8), + num_channels=( + (40, 80), + (40, 80, 160), + (40, 80, 160, 320), + )), + with_head=True, + )), + head=dict( + type='HeatmapHead', + in_channels=40, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + rotate_factor=60, + scale_factor=(0.75, 1.25)), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..1af1e659b6 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb32-210e_humanart-384x288.py @@ -0,0 +1,140 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='LiteHRNet', + in_channels=3, + extra=dict( + stem=dict(stem_channels=32, out_channels=32, expand_ratio=1), + num_stages=3, + stages_spec=dict( + num_modules=(3, 8, 3), + num_branches=(2, 3, 4), + num_blocks=(2, 2, 2), + module_type=('LITE', 'LITE', 'LITE'), + with_fuse=(True, True, True), + reduce_ratios=(8, 8, 8), + num_channels=( + (40, 80), + (40, 80, 160), + (40, 80, 160, 320), + )), + with_head=True, + )), + head=dict( + type='HeatmapHead', + in_channels=40, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + rotate_factor=60, + scale_factor=(0.75, 1.25)), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..253416c2c1 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb64-210e_humanart-256x192.py @@ -0,0 +1,140 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='LiteHRNet', + in_channels=3, + extra=dict( + stem=dict(stem_channels=32, out_channels=32, expand_ratio=1), + num_stages=3, + stages_spec=dict( + num_modules=(3, 8, 3), + num_branches=(2, 3, 4), + num_blocks=(2, 2, 2), + module_type=('LITE', 'LITE', 'LITE'), + with_fuse=(True, True, True), + reduce_ratios=(8, 8, 8), + num_channels=( + (40, 80), + (40, 80, 160), + (40, 80, 160, 320), + )), + with_head=True, + )), + head=dict( + type='HeatmapHead', + in_channels=40, + out_channels=17, + deconv_out_channels=None, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + rotate_factor=60, + scale_factor=(0.75, 1.25)), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..e068b246d6 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-256x192.py @@ -0,0 +1,124 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='MobileNetV2', + widen_factor=1., + out_indices=(7, ), + init_cfg=dict( + type='Pretrained', + checkpoint='mmcls://mobilenet_v2', + )), + head=dict( + type='HeatmapHead', + in_channels=1280, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..57f5c1bb91 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-384x288.py @@ -0,0 +1,124 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='MobileNetV2', + widen_factor=1., + out_indices=(7, ), + init_cfg=dict( + type='Pretrained', + checkpoint='mmcls://mobilenet_v2', + )), + head=dict( + type='HeatmapHead', + in_channels=1280, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mspn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mspn50_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..28b1778176 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mspn50_8xb32-210e_humanart-256x192.py @@ -0,0 +1,152 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=5e-3, +)) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. +kernel_sizes = [11, 9, 7, 5] +codec = [ + dict( + type='MegviiHeatmap', + input_size=(192, 256), + heatmap_size=(48, 64), + kernel_size=kernel_size) for kernel_size in kernel_sizes +] + +# 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='MSPN', + unit_channels=256, + num_stages=1, + num_units=4, + num_blocks=[3, 4, 6, 3], + norm_cfg=dict(type='BN'), + init_cfg=dict( + type='Pretrained', + checkpoint='torchvision://resnet50', + )), + head=dict( + type='MSPNHead', + out_shape=(64, 48), + unit_channels=256, + out_channels=17, + num_stages=1, + num_units=4, + norm_cfg=dict(type='BN'), + # each sub list is for a stage + # and each element in each list is for a unit + level_indices=[0, 1, 2, 3], + loss=[ + dict( + type='KeypointMSELoss', + use_target_weight=True, + loss_weight=0.25) + ] * 3 + [ + dict( + type='KeypointOHKMMSELoss', + use_target_weight=True, + loss_weight=1.) + ], + decoder=codec[-1]), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='GenerateTarget', multilevel=True, encoder=codec), + dict(type='PackPoseInputs') +] +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=32, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'annotations/person_keypoints_val2017.json', + nms_mode='none') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvt-s_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvt-s_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..e49eb22f49 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvt-s_8xb64-210e_humanart-256x192.py @@ -0,0 +1,127 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='PyramidVisionTransformer', + num_layers=[3, 4, 6, 3], + init_cfg=dict( + type='Pretrained', + checkpoint='https://github.com/whai362/PVT/' + 'releases/download/v2/pvt_small.pth'), + ), + neck=dict(type='FeatureMapProcessor', select_index=3), + head=dict( + type='HeatmapHead', + in_channels=512, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvtv2-b2_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvtv2-b2_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..bf30e834bd --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvtv2-b2_8xb64-210e_humanart-256x192.py @@ -0,0 +1,128 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='PyramidVisionTransformerV2', + embed_dims=64, + num_layers=[3, 4, 6, 3], + init_cfg=dict( + type='Pretrained', + checkpoint='https://github.com/whai362/PVT/' + 'releases/download/v2/pvt_v2_b2.pth'), + ), + neck=dict(type='FeatureMapProcessor', select_index=3), + head=dict( + type='HeatmapHead', + in_channels=512, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..657ef05821 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb32-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNet', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=64, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..d42f787e93 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNet', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..1f594f2fae --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-256x192.py @@ -0,0 +1,125 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', + input_size=(192, 256), + heatmap_size=(48, 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='ResNet', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..e8f075c75c --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-384x288.py @@ -0,0 +1,125 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', + input_size=(288, 384), + heatmap_size=(72, 96), + sigma=3, + 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='ResNet', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..c2e5334357 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNet', + depth=152, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..c60681d3b1 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNet', + depth=152, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..b0a4b3258f --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-256x192.py @@ -0,0 +1,125 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', + input_size=(192, 256), + heatmap_size=(48, 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='ResNet', + depth=152, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..8ed8884023 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-384x288.py @@ -0,0 +1,126 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', + input_size=(288, 384), + heatmap_size=(72, 96), + sigma=3, + unbiased=True, + blur_kernel_size=17) + +# 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='ResNet', + depth=152, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..06bc5283c9 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNet', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..e209c63f85 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNet', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..a0770247f9 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-256x192.py @@ -0,0 +1,125 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', + input_size=(192, 256), + heatmap_size=(48, 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='ResNet', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..60575438ad --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-384x288.py @@ -0,0 +1,125 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', + input_size=(288, 384), + heatmap_size=(72, 96), + sigma=3, + 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='ResNet', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_fp16-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_fp16-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..66a6a27822 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_fp16-8xb64-210e_humanart-256x192.py @@ -0,0 +1,7 @@ +_base_ = ['./td-hm_res50_8xb64-210e_coco-256x192.py'] + +# fp16 settings +optim_wrapper = dict( + type='AmpOptimWrapper', + loss_scale='dynamic', +) diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..edd42dceb9 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb32-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNeSt', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest101'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..7f415346dd --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNeSt', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest101'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb16-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb16-210e_humanart-384x288.py new file mode 100644 index 0000000000..2f916b41e5 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb16-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=128) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNeSt', + depth=200, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest200'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=16, + 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='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=16, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..c29cc30444 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNeSt', + depth=200, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest200'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb16-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb16-210e_humanart-384x288.py new file mode 100644 index 0000000000..367331a325 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb16-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=128) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNeSt', + depth=269, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest269'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=16, + 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='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=16, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..dd334bb58b --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb32-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNeSt', + depth=269, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest269'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..c0eb815008 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNeSt', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest50'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..11958c0947 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNeSt', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest50'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..20a1b17d6e --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb32-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNetV1d', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet101_v1d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..9bb2ec99bf --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNetV1d', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet101_v1d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..16754f8066 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb32-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNetV1d', + depth=152, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet152_v1d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb48-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb48-210e_humanart-384x288.py new file mode 100644 index 0000000000..9d9ec562b0 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb48-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=384) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNetV1d', + depth=152, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet152_v1d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=48, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..74b206e66f --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNetV1d', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet50_v1d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..193fe55052 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNetV1d', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet50_v1d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..43fb721866 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb32-210e_humanart-384x288.py @@ -0,0 +1,122 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNeXt', + depth=101, + init_cfg=dict( + type='Pretrained', checkpoint='mmcls://resnext101_32x4d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..65f3b2bbb3 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb64-210e_humanart-256x192.py @@ -0,0 +1,122 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNeXt', + depth=101, + init_cfg=dict( + type='Pretrained', checkpoint='mmcls://resnext101_32x4d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..7315855cb6 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb32-210e_humanart-256x192.py @@ -0,0 +1,122 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNeXt', + depth=152, + init_cfg=dict( + type='Pretrained', checkpoint='mmcls://resnext152_32x4d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb48-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb48-210e_humanart-384x288.py new file mode 100644 index 0000000000..af23d16379 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb48-210e_humanart-384x288.py @@ -0,0 +1,122 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=384) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNeXt', + depth=152, + init_cfg=dict( + type='Pretrained', checkpoint='mmcls://resnext152_32x4d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=48, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..5ecba30aa4 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ResNeXt', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnext50_32x4d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..51d30d0394 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ResNeXt', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnext50_32x4d'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn18_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn18_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..06257d41fd --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn18_8xb32-210e_humanart-256x192.py @@ -0,0 +1,154 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=2e-2, +)) + +# 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, 190, 200], + gamma=0.1, + by_epoch=True) +] + +# automatically scaling LR based on the actual training batch size +auto_scale_lr = dict(base_batch_size=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. +kernel_sizes = [11, 9, 7, 5] +codec = [ + dict( + type='MegviiHeatmap', + input_size=(192, 256), + heatmap_size=(48, 64), + kernel_size=kernel_size) for kernel_size in kernel_sizes +] + +# 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='RSN', + unit_channels=256, + num_stages=1, + num_units=4, + num_blocks=[2, 2, 2, 2], + num_steps=4, + norm_cfg=dict(type='BN'), + ), + head=dict( + type='MSPNHead', + out_shape=(64, 48), + unit_channels=256, + out_channels=17, + num_stages=1, + num_units=4, + norm_cfg=dict(type='BN'), + # each sub list is for a stage + # and each element in each list is for a unit + level_indices=[0, 1, 2, 3], + loss=[ + dict( + type='KeypointMSELoss', + use_target_weight=True, + loss_weight=0.25) + ] * 3 + [ + dict( + type='KeypointOHKMMSELoss', + use_target_weight=True, + loss_weight=1.) + ], + decoder=codec[-1]), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='GenerateTarget', multilevel=True, encoder=codec), + dict(type='PackPoseInputs') +] + +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=32, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'annotations/person_keypoints_val2017.json', + nms_mode='none') +test_evaluator = val_evaluator + +# fp16 settings +fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn50_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..e73d6aeab3 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn50_8xb32-210e_humanart-256x192.py @@ -0,0 +1,154 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=5e-3, +)) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. +kernel_sizes = [11, 9, 7, 5] +codec = [ + dict( + type='MegviiHeatmap', + input_size=(192, 256), + heatmap_size=(48, 64), + kernel_size=kernel_size) for kernel_size in kernel_sizes +] + +# 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='RSN', + unit_channels=256, + num_stages=1, + num_units=4, + num_blocks=[3, 4, 6, 3], + num_steps=4, + norm_cfg=dict(type='BN'), + ), + head=dict( + type='MSPNHead', + out_shape=(64, 48), + unit_channels=256, + out_channels=17, + num_stages=1, + num_units=4, + norm_cfg=dict(type='BN'), + # each sub list is for a stage + # and each element in each list is for a unit + level_indices=[0, 1, 2, 3], + loss=[ + dict( + type='KeypointMSELoss', + use_target_weight=True, + loss_weight=0.25) + ] * 3 + [ + dict( + type='KeypointOHKMMSELoss', + use_target_weight=True, + loss_weight=1.) + ], + decoder=codec[-1]), + test_cfg=dict( + flip_test=True, + flip_mode='heatmap', + shift_heatmap=False, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='GenerateTarget', multilevel=True, encoder=codec), + dict(type='PackPoseInputs') +] + +val_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='TopdownAffine', input_size=codec[0]['input_size']), + dict(type='PackPoseInputs') +] + +# data loaders +train_dataloader = dict( + batch_size=32, + num_workers=4, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=4, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'annotations/person_keypoints_val2017.json', + nms_mode='none') +test_evaluator = val_evaluator + +# fp16 settings +fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..ac99362488 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb32-210e_humanart-256x192.py @@ -0,0 +1,124 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='SCNet', + depth=101, + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/scnet101-94250a77.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + num_workers=1, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=1, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb48-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb48-210e_humanart-384x288.py new file mode 100644 index 0000000000..6aa29f6edd --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb48-210e_humanart-384x288.py @@ -0,0 +1,124 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='SCNet', + depth=101, + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/scnet101-94250a77.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=48, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..5e7dd7ceae --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb32-210e_humanart-384x288.py @@ -0,0 +1,124 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='SCNet', + depth=50, + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/scnet50-7ef0a199.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + num_workers=1, + persistent_workers=True, + sampler=dict(type='DefaultSampler', shuffle=True), + dataset=dict( + type=dataset_type, + data_root=data_root, + data_mode=data_mode, + ann_file='HumanArt/annotations/training_humanart_coco.json', + data_prefix=dict(img=''), + pipeline=train_pipeline, + )) +val_dataloader = dict( + batch_size=32, + num_workers=1, + 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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..3423c14470 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb64-210e_humanart-256x192.py @@ -0,0 +1,124 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='SCNet', + depth=50, + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/scnet50-7ef0a199.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..b56a119ca1 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb32-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='SEResNet', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://se-resnet101'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..8d9b3185ca --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='SEResNet', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://se-resnet101'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..2714d8f3a0 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb32-210e_humanart-256x192.py @@ -0,0 +1,120 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='SEResNet', + depth=152, + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb48-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb48-210e_humanart-384x288.py new file mode 100644 index 0000000000..ba4c41d100 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb48-210e_humanart-384x288.py @@ -0,0 +1,120 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=384) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='SEResNet', + depth=152, + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=48, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..e48954cbac --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='SEResNet', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://se-resnet50'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..90716e2158 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='SEResNet', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://se-resnet50'), + ), + head=dict( + type='HeatmapHead', + in_channels=2048, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..407bf748ab --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ShuffleNetV1', + groups=3, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://shufflenet_v1'), + ), + head=dict( + type='HeatmapHead', + in_channels=960, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..e65682b415 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ShuffleNetV1', + groups=3, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://shufflenet_v1'), + ), + head=dict( + type='HeatmapHead', + in_channels=960, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..31001638ea --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ShuffleNetV2', + widen_factor=1.0, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://shufflenet_v2'), + ), + head=dict( + type='HeatmapHead', + in_channels=1024, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..c9febd94c8 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) + +# 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='ShuffleNetV2', + widen_factor=1.0, + init_cfg=dict(type='Pretrained', checkpoint='mmcls://shufflenet_v2'), + ), + head=dict( + type='HeatmapHead', + in_channels=1024, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..fbdba98074 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-256x192.py @@ -0,0 +1,139 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='SwinTransformer', + embed_dims=128, + depths=[2, 2, 18, 2], + num_heads=[4, 8, 16, 32], + window_size=7, + mlp_ratio=4, + qkv_bias=True, + qk_scale=None, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0.3, + patch_norm=True, + out_indices=(3, ), + with_cp=False, + convert_weights=True, + init_cfg=dict( + type='Pretrained', + checkpoint='https://github.com/SwinTransformer/storage/releases/' + 'download/v1.0.0/swin_base_patch4_window7_224_22k.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=1024, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..7b9f6bac77 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-384x288.py @@ -0,0 +1,139 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=2) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='SwinTransformer', + embed_dims=128, + depths=[2, 2, 18, 2], + num_heads=[4, 8, 16, 32], + window_size=12, + mlp_ratio=4, + qkv_bias=True, + qk_scale=None, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0.3, + patch_norm=True, + out_indices=(3, ), + with_cp=False, + convert_weights=True, + init_cfg=dict( + type='Pretrained', + checkpoint='https://github.com/SwinTransformer/storage/releases/' + 'download/v1.0.0/swin_base_patch4_window12_384_22k.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=1024, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..c34d8441a1 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-256x192.py @@ -0,0 +1,148 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict( + optimizer=dict( + type='AdamW', + lr=5e-4, + betas=(0.9, 0.999), + weight_decay=0.01, + ), + paramwise_cfg=dict( + custom_keys={ + 'absolute_pos_embed': dict(decay_mult=0.), + 'relative_position_bias_table': dict(decay_mult=0.), + 'norm': dict(decay_mult=0.) + })) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='SwinTransformer', + embed_dims=192, + depths=[2, 2, 18, 2], + num_heads=[6, 12, 24, 48], + window_size=7, + mlp_ratio=4, + qkv_bias=True, + qk_scale=None, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0.5, + patch_norm=True, + out_indices=(3, ), + with_cp=False, + convert_weights=True, + init_cfg=dict( + type='Pretrained', + checkpoint='https://github.com/SwinTransformer/storage/releases/' + 'download/v1.0.0/swin_base_patch4_window7_224_22k.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=1536, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-384x288.py new file mode 100644 index 0000000000..51d49afbba --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-384x288.py @@ -0,0 +1,148 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict( + optimizer=dict( + type='AdamW', + lr=5e-4, + betas=(0.9, 0.999), + weight_decay=0.01, + ), + paramwise_cfg=dict( + custom_keys={ + 'absolute_pos_embed': dict(decay_mult=0.), + 'relative_position_bias_table': dict(decay_mult=0.), + 'norm': dict(decay_mult=0.) + })) + +# 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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=2) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='SwinTransformer', + embed_dims=192, + depths=[2, 2, 18, 2], + num_heads=[6, 12, 24, 48], + window_size=7, + mlp_ratio=4, + qkv_bias=True, + qk_scale=None, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0.5, + patch_norm=True, + out_indices=(3, ), + with_cp=False, + convert_weights=True, + init_cfg=dict( + type='Pretrained', + checkpoint='https://github.com/SwinTransformer/storage/releases/' + 'download/v1.0.0/swin_base_patch4_window12_384_22k.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=1536, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-t-p4-w7_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-t-p4-w7_8xb32-210e_humanart-256x192.py new file mode 100644 index 0000000000..16d34b1e8a --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-t-p4-w7_8xb32-210e_humanart-256x192.py @@ -0,0 +1,139 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=256) + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# model settings +norm_cfg = dict(type='SyncBN', requires_grad=True) +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='SwinTransformer', + embed_dims=96, + depths=[2, 2, 6, 2], + num_heads=[3, 6, 12, 24], + window_size=7, + mlp_ratio=4, + qkv_bias=True, + qk_scale=None, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0.2, + patch_norm=True, + out_indices=(3, ), + with_cp=False, + convert_weights=True, + init_cfg=dict( + type='Pretrained', + checkpoint='https://github.com/SwinTransformer/storage/releases/' + 'download/v1.0.0/swin_tiny_patch4_window7_224.pth'), + ), + head=dict( + type='HeatmapHead', + in_channels=768, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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=32, + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vgg16-bn_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vgg16-bn_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..0a8722670b --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vgg16-bn_8xb64-210e_humanart-256x192.py @@ -0,0 +1,122 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='VGG', + depth=16, + norm_cfg=dict(type='BN'), + init_cfg=dict(type='Pretrained', checkpoint='mmcls://vgg16_bn'), + ), + head=dict( + type='HeatmapHead', + in_channels=512, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-mbv3_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-mbv3_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..a94e01c97e --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-mbv3_8xb64-210e_humanart-256x192.py @@ -0,0 +1,122 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ViPNAS_MobileNetV3'), + head=dict( + type='ViPNASHead', + in_channels=160, + out_channels=17, + deconv_out_channels=(160, 160, 160), + deconv_num_groups=(160, 160, 160), + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + rotate_factor=60, + scale_factor=(0.75, 1.25)), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-res50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-res50_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..b06189da21 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-res50_8xb64-210e_humanart-256x192.py @@ -0,0 +1,120 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# codec settings +codec = dict( + type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) + +# 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='ViPNAS_ResNet', depth=50), + head=dict( + type='ViPNASHead', + in_channels=608, + out_channels=17, + 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 = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict( + type='RandomBBoxTransform', + rotate_factor=60, + scale_factor=(0.75, 1.25)), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_mobilenetv2_rle-pretrained-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_mobilenetv2_rle-pretrained-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..8396ea1b26 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_mobilenetv2_rle-pretrained-8xb64-210e_humanart-256x192.py @@ -0,0 +1,126 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=1e-3, +)) + +# 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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict(type='RegressionLabel', input_size=(192, 256)) + +# 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='MobileNetV2', + widen_factor=1., + out_indices=(7, ), + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/top_down/' + 'mobilenetv2/mobilenetv2_coco_256x192-d1e58e7b_20200727.pth')), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='RLEHead', + in_channels=1280, + num_joints=17, + loss=dict(type='RLELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + ), +) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + score_mode='bbox_rle') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..5901d7dc9b --- /dev/null +++ b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_8xb64-210e_humanart-256x192.py @@ -0,0 +1,120 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict(type='RegressionLabel', input_size=(192, 256)) + +# 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='ResNet', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='RegressionHead', + in_channels=2048, + num_joints=17, + loss=dict(type='SmoothL1Loss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=f'{data_root}annotations/person_keypoints_val2017.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_rle-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_rle-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..189792780e --- /dev/null +++ b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_rle-8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict(type='RegressionLabel', input_size=(192, 256)) + +# 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='ResNet', + depth=101, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='RLEHead', + in_channels=2048, + num_joints=17, + loss=dict(type='RLELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + score_mode='bbox_rle') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..6589b8e56e --- /dev/null +++ b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_8xb64-210e_humanart-256x192.py @@ -0,0 +1,120 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict(type='RegressionLabel', input_size=(192, 256)) + +# 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='ResNet', + depth=152, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='RegressionHead', + in_channels=2048, + num_joints=17, + loss=dict(type='SmoothL1Loss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=f'{data_root}annotations/person_keypoints_val2017.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..77c3a0f1df --- /dev/null +++ b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict(type='RegressionLabel', input_size=(192, 256)) + +# 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='ResNet', + depth=152, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='RLEHead', + in_channels=2048, + num_joints=17, + loss=dict(type='RLELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + score_mode='bbox_rle') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-384x288.py new file mode 100644 index 0000000000..eff463d3e1 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-384x288.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict(type='RegressionLabel', input_size=(288, 384)) + +# 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='ResNet', + depth=152, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='RLEHead', + in_channels=2048, + num_joints=17, + loss=dict(type='RLELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + score_mode='bbox_rle') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..006c0fee44 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_8xb64-210e_humanart-256x192.py @@ -0,0 +1,120 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict(type='RegressionLabel', input_size=(192, 256)) + +# 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='ResNet', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='RegressionHead', + in_channels=2048, + num_joints=17, + loss=dict(type='SmoothL1Loss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=f'{data_root}annotations/person_keypoints_val2017.json') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..cf8b681560 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-8xb64-210e_humanart-256x192.py @@ -0,0 +1,121 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=1e-3, +)) + +# 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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict(type='RegressionLabel', input_size=(192, 256)) + +# 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='ResNet', + depth=50, + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='RLEHead', + in_channels=2048, + num_joints=17, + loss=dict(type='RLELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=val_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + score_mode='bbox_rle') +test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-pretrained-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-pretrained-8xb64-210e_humanart-256x192.py new file mode 100644 index 0000000000..c208491ae8 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-pretrained-8xb64-210e_humanart-256x192.py @@ -0,0 +1,125 @@ +_base_ = ['../../../_base_/default_runtime.py'] + +# runtime +train_cfg = dict(max_epochs=210, val_interval=10) + +# optimizer +optim_wrapper = dict(optimizer=dict( + type='Adam', + lr=1e-3, +)) + +# 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=train_cfg['max_epochs'], + 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) + +# codec settings +codec = dict(type='RegressionLabel', input_size=(192, 256)) + +# 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='ResNet', + depth=50, + init_cfg=dict( + type='Pretrained', + prefix='backbone.', + checkpoint='https://download.openmmlab.com/mmpose/' + 'pretrain_models/td-hm_res50_8xb64-210e_coco-256x192.pth'), + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='RLEHead', + in_channels=2048, + num_joints=17, + loss=dict(type='RLELoss', use_target_weight=True), + decoder=codec), + test_cfg=dict( + flip_test=True, + shift_coords=True, + )) + +# base dataset settings +dataset_type = 'HumanArtDataset' +data_mode = 'topdown' +data_root = 'data/' + +# pipelines +train_pipeline = [ + dict(type='LoadImage'), + dict(type='GetBBoxCenterScale'), + dict(type='RandomFlip', direction='horizontal'), + dict(type='RandomHalfBody'), + dict(type='RandomBBoxTransform'), + dict(type='TopdownAffine', input_size=codec['input_size']), + dict(type='GenerateTarget', encoder=codec), + dict(type='PackPoseInputs') +] +test_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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', + bbox_file=f'{data_root}HumanArt/person_detection_results/' + 'HumanArt_validation_detections_AP_H_56_person.json', + data_prefix=dict(img=''), + test_mode=True, + pipeline=test_pipeline, + )) +test_dataloader = val_dataloader + +# hooks +default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) + +# evaluators +val_evaluator = dict( + type='CocoMetric', + ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', + score_mode='bbox_rle') +test_evaluator = val_evaluator diff --git a/docs/en/dataset_zoo/2d_body_keypoint.md b/docs/en/dataset_zoo/2d_body_keypoint.md index c5bf70a3f8..4448ebe8f4 100644 --- a/docs/en/dataset_zoo/2d_body_keypoint.md +++ b/docs/en/dataset_zoo/2d_body_keypoint.md @@ -13,6 +13,7 @@ MMPose supported datasets: - [CrowdPose](#crowdpose) \[ [Homepage](https://github.com/Jeff-sjtu/CrowdPose) \] - [OCHuman](#ochuman) \[ [Homepage](https://github.com/liruilong940607/OCHumanApi) \] - [MHP](#mhp) \[ [Homepage](https://lv-mhp.github.io/dataset) \] + - [Human-Art](#humanart) \[ [Homepage](https://idea-research.github.io/HumanArt/) \] - Videos - [PoseTrack18](#posetrack18) \[ [Homepage](https://posetrack.net/users/download.php) \] - [sub-JHMDB](#sub-jhmdb-dataset) \[ [Homepage](http://jhmdb.is.tue.mpg.de/dataset) \] @@ -386,6 +387,57 @@ mmpose │ │ │-- ...~~~~ ``` +## Human-Art dataset + + + +
+Human-Art (CVPR'2023) + +```bibtex +@inproceedings{ju2023humanart, + title={Human-Art: A Versatile Human-Centric Dataset Bridging Natural and Artificial Scenes}, + author={Ju, Xuan and Zeng, Ailing and Jianan, Wang and Qiang, Xu and Lei, Zhang}, + booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), + year={2023}} +``` + +
+ +
+ +
+ +For [Human-Art](https://idea-research.github.io/HumanArt/) data, please download the images and annotation files from [its website](https://idea-research.github.io/HumanArt/). You need to fill in the [data form](https://docs.google.com/forms/d/e/1FAIpQLScroT_jvw6B9U2Qca1_cl5Kmmu1ceKtlh6DJNmWLte8xNEhEw/viewform) to get access to the data. +Move them under $MMPOSE/data, and make them look like this: + +```text +mmpose +├── mmpose +├── docs +├── tests +├── tools +├── configs +|── data + │── HumanArt + │-- images + │ │-- 2D_virtual_human + │ │ |-- cartoon + │ │ | |-- 000000000000.jpg + │ │ | |-- ... + │ │ |-- digital_art + │ │ |-- ... + │ |-- 3D_virtual_human + │ |-- real_human + |-- annotations + │ │-- validation_humanart.json + │ │-- training_humanart_coco.json + |-- person_detection_results + │ │-- HumanArt_validation_detections_AP_H_56_person.json +``` + +You can choose whether to download other annotation files in Human-Art. If you want to use additional annotation files (e.g. validation set of cartoon), you need to edit the corresponding code in config file. + ## PoseTrack18 diff --git a/docs/zh_cn/dataset_zoo/2d_body_keypoint.md b/docs/zh_cn/dataset_zoo/2d_body_keypoint.md index c5bf70a3f8..4448ebe8f4 100644 --- a/docs/zh_cn/dataset_zoo/2d_body_keypoint.md +++ b/docs/zh_cn/dataset_zoo/2d_body_keypoint.md @@ -13,6 +13,7 @@ MMPose supported datasets: - [CrowdPose](#crowdpose) \[ [Homepage](https://github.com/Jeff-sjtu/CrowdPose) \] - [OCHuman](#ochuman) \[ [Homepage](https://github.com/liruilong940607/OCHumanApi) \] - [MHP](#mhp) \[ [Homepage](https://lv-mhp.github.io/dataset) \] + - [Human-Art](#humanart) \[ [Homepage](https://idea-research.github.io/HumanArt/) \] - Videos - [PoseTrack18](#posetrack18) \[ [Homepage](https://posetrack.net/users/download.php) \] - [sub-JHMDB](#sub-jhmdb-dataset) \[ [Homepage](http://jhmdb.is.tue.mpg.de/dataset) \] @@ -386,6 +387,57 @@ mmpose │ │ │-- ...~~~~ ``` +## Human-Art dataset + + + +
+Human-Art (CVPR'2023) + +```bibtex +@inproceedings{ju2023humanart, + title={Human-Art: A Versatile Human-Centric Dataset Bridging Natural and Artificial Scenes}, + author={Ju, Xuan and Zeng, Ailing and Jianan, Wang and Qiang, Xu and Lei, Zhang}, + booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), + year={2023}} +``` + +
+ +
+ +
+ +For [Human-Art](https://idea-research.github.io/HumanArt/) data, please download the images and annotation files from [its website](https://idea-research.github.io/HumanArt/). You need to fill in the [data form](https://docs.google.com/forms/d/e/1FAIpQLScroT_jvw6B9U2Qca1_cl5Kmmu1ceKtlh6DJNmWLte8xNEhEw/viewform) to get access to the data. +Move them under $MMPOSE/data, and make them look like this: + +```text +mmpose +├── mmpose +├── docs +├── tests +├── tools +├── configs +|── data + │── HumanArt + │-- images + │ │-- 2D_virtual_human + │ │ |-- cartoon + │ │ | |-- 000000000000.jpg + │ │ | |-- ... + │ │ |-- digital_art + │ │ |-- ... + │ |-- 3D_virtual_human + │ |-- real_human + |-- annotations + │ │-- validation_humanart.json + │ │-- training_humanart_coco.json + |-- person_detection_results + │ │-- HumanArt_validation_detections_AP_H_56_person.json +``` + +You can choose whether to download other annotation files in Human-Art. If you want to use additional annotation files (e.g. validation set of cartoon), you need to edit the corresponding code in config file. + ## PoseTrack18 diff --git a/mmpose/datasets/datasets/body/__init__.py b/mmpose/datasets/datasets/body/__init__.py index a4aeef8519..1405b0d675 100644 --- a/mmpose/datasets/datasets/body/__init__.py +++ b/mmpose/datasets/datasets/body/__init__.py @@ -2,6 +2,7 @@ from .aic_dataset import AicDataset from .coco_dataset import CocoDataset from .crowdpose_dataset import CrowdPoseDataset +from .humanart_dataset import HumanArtDataset from .jhmdb_dataset import JhmdbDataset from .mhp_dataset import MhpDataset from .mpii_dataset import MpiiDataset @@ -13,5 +14,5 @@ __all__ = [ 'CocoDataset', 'MpiiDataset', 'MpiiTrbDataset', 'AicDataset', 'CrowdPoseDataset', 'OCHumanDataset', 'MhpDataset', 'PoseTrack18Dataset', - 'JhmdbDataset', 'PoseTrack18VideoDataset' + 'JhmdbDataset', 'PoseTrack18VideoDataset', 'HumanArtDataset' ] diff --git a/mmpose/datasets/datasets/body/humanart_dataset.py b/mmpose/datasets/datasets/body/humanart_dataset.py new file mode 100644 index 0000000000..719f35fc9e --- /dev/null +++ b/mmpose/datasets/datasets/body/humanart_dataset.py @@ -0,0 +1,73 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from mmpose.registry import DATASETS +from ..base import BaseCocoStyleDataset + + +@DATASETS.register_module() +class HumanArtDataset(BaseCocoStyleDataset): + """Human-Art dataset for pose estimation. + + "Human-Art: A Versatile Human-Centric Dataset + Bridging Natural and Artificial Scenes", CVPR'2023. + More details can be found in the `paper + `__ . + + Human-Art keypoints:: + + 0: 'nose', + 1: 'left_eye', + 2: 'right_eye', + 3: 'left_ear', + 4: 'right_ear', + 5: 'left_shoulder', + 6: 'right_shoulder', + 7: 'left_elbow', + 8: 'right_elbow', + 9: 'left_wrist', + 10: 'right_wrist', + 11: 'left_hip', + 12: 'right_hip', + 13: 'left_knee', + 14: 'right_knee', + 15: 'left_ankle', + 16: 'right_ankle' + + Args: + ann_file (str): Annotation file path. Default: ''. + bbox_file (str, optional): Detection result file path. If + ``bbox_file`` is set, detected bboxes loaded from this file will + be used instead of ground-truth bboxes. This setting is only for + evaluation, i.e., ignored when ``test_mode`` is ``False``. + Default: ``None``. + data_mode (str): Specifies the mode of data samples: ``'topdown'`` or + ``'bottomup'``. In ``'topdown'`` mode, each data sample contains + one instance; while in ``'bottomup'`` mode, each data sample + contains all instances in a image. Default: ``'topdown'`` + metainfo (dict, optional): Meta information for dataset, such as class + information. Default: ``None``. + data_root (str, optional): The root directory for ``data_prefix`` and + ``ann_file``. Default: ``None``. + data_prefix (dict, optional): Prefix for training data. Default: + ``dict(img=None, ann=None)``. + filter_cfg (dict, optional): Config for filter data. Default: `None`. + indices (int or Sequence[int], optional): Support using first few + data in annotation file to facilitate training/testing on a smaller + dataset. Default: ``None`` which means using all ``data_infos``. + serialize_data (bool, optional): Whether to hold memory using + serialized objects, when enabled, data loader workers can use + shared RAM from master process instead of making a copy. + Default: ``True``. + pipeline (list, optional): Processing pipeline. Default: []. + test_mode (bool, optional): ``test_mode=True`` means in test phase. + Default: ``False``. + lazy_init (bool, optional): Whether to load annotation during + instantiation. In some cases, such as visualization, only the meta + information of the dataset is needed, which is not necessary to + load annotation file. ``Basedataset`` can skip load annotations to + save time by set ``lazy_init=False``. Default: ``False``. + max_refetch (int, optional): If ``Basedataset.prepare_data`` get a + None img. The maximum extra number of cycles to get a valid + image. Default: 1000. + """ + + METAINFO: dict = dict(from_file='configs/_base_/datasets/humanart.py') From 165428e99790823f2148698f57c4a11b1059d7fb Mon Sep 17 00:00:00 2001 From: juxuan27 Date: Sun, 23 Apr 2023 23:46:13 +0800 Subject: [PATCH 4/7] add dataset: Human-Art --- tests/data/humanart/000000000785.jpg | Bin 0 -> 133674 bytes tests/data/humanart/000000040083.jpg | Bin 0 -> 104152 bytes tests/data/humanart/000000196141.jpg | Bin 0 -> 135345 bytes tests/data/humanart/000000197388.jpg | Bin 0 -> 167407 bytes tests/data/humanart/test_humanart.json | 2423 +++++++++++++++++ .../humanart/test_humanart_det_AP_H_56.json | 1300 +++++++++ .../test_humanart_dataset.py | 160 ++ 7 files changed, 3883 insertions(+) create mode 100644 tests/data/humanart/000000000785.jpg create mode 100644 tests/data/humanart/000000040083.jpg create mode 100644 tests/data/humanart/000000196141.jpg create mode 100644 tests/data/humanart/000000197388.jpg create mode 100644 tests/data/humanart/test_humanart.json create mode 100644 tests/data/humanart/test_humanart_det_AP_H_56.json create mode 100644 tests/test_datasets/test_datasets/test_body_datasets/test_humanart_dataset.py diff --git a/tests/data/humanart/000000000785.jpg b/tests/data/humanart/000000000785.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78718f5f5c031d1fed853b55878083058f289755 GIT binary patch literal 133674 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�@*MG-nkGU5H9b8@*0q&i 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

uK?kk6{e3;~AcYf#pmK(#kSMmM3%}34 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 literal 0 HcmV?d00001 diff --git a/tests/data/humanart/000000197388.jpg b/tests/data/humanart/000000197388.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d19ecd0cac9b14e7d68c1c851c60f207e2d5840 GIT binary patch literal 167407 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%0DtwZfFY##z1Bq|U8LN(T^{5C)$)RcX(Ii!Y#h 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%0D{FA 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%0AWu1o@!jcvY5K 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 literal 0 HcmV?d00001 diff --git a/tests/data/humanart/test_humanart.json b/tests/data/humanart/test_humanart.json new file mode 100644 index 0000000000..dff81a908e --- /dev/null +++ b/tests/data/humanart/test_humanart.json @@ -0,0 +1,2423 @@ +{ + "info": { + "description": "For testing HumanArt dataset only.", + "year": 2023, + "date_created": "2023/04/23" + }, + "categories": [ + { + "supercategory": "person", + "id": 1, + "name": "person", + "keypoints": [ + "nose", + "left_eye", + "right_eye", + "left_ear", + "right_ear", + "left_shoulder", + "right_shoulder", + "left_elbow", + "right_elbow", + "left_wrist", + "right_wrist", + "left_hip", + "right_hip", + "left_knee", + "right_knee", + "left_ankle", + "right_ankle" + ], + "skeleton": [ + [ + 16, + 14 + ], + [ + 14, + 12 + ], + [ + 17, + 15 + ], + [ + 15, + 13 + ], + [ + 12, + 13 + ], + [ + 6, + 12 + ], + [ + 7, + 13 + ], + [ + 6, + 7 + ], + [ + 6, + 8 + ], + [ + 7, + 9 + ], + [ + 8, + 10 + ], + [ + 9, + 11 + ], + [ + 2, + 3 + ], + [ + 1, + 2 + ], + [ + 1, + 3 + ], + [ + 2, + 4 + ], + [ + 3, + 5 + ], + [ + 4, + 6 + ], + [ + 5, + 7 + ] + ] + } + ], + "images": [ + { + "license": 4, + "file_name": "000000000785.jpg", + "coco_url": "http://images.cocodataset.org/val2017/000000000785.jpg", + "height": 425, + "width": 640, + "date_captured": "2013-11-19 21:22:42", + "flickr_url": "http://farm8.staticflickr.com/7015/6795644157_f019453ae7_z.jpg", + "id": 785 + }, + { + "license": 3, + "file_name": "000000040083.jpg", + "coco_url": "http://images.cocodataset.org/val2017/000000040083.jpg", + "height": 333, + "width": 500, + "date_captured": "2013-11-18 03:30:24", + "flickr_url": "http://farm1.staticflickr.com/116/254881838_e21c6d17b8_z.jpg", + "id": 40083 + }, + { + "license": 1, + "file_name": "000000196141.jpg", + "coco_url": "http://images.cocodataset.org/val2017/000000196141.jpg", + "height": 429, + "width": 640, + "date_captured": "2013-11-22 22:37:15", + "flickr_url": "http://farm4.staticflickr.com/3310/3611902235_57d4ae496d_z.jpg", + "id": 196141 + }, + { + "license": 3, + "file_name": "000000197388.jpg", + "coco_url": "http://images.cocodataset.org/val2017/000000197388.jpg", + "height": 392, + "width": 640, + "date_captured": "2013-11-19 20:10:37", + "flickr_url": "http://farm9.staticflickr.com/8375/8507321836_5b8b13188f_z.jpg", + "id": 197388 + } + ], + "annotations": [ + { + "segmentation": [ + [ + 353.37, + 67.65, + 358.15, + 52.37, + 362.92, + 47.59, + 374.38, + 44.73, + 389.66, + 52.37, + 389.66, + 67.65, + 389.66, + 76.25, + 393.48, + 83.89, + 396.35, + 88.66, + 397.3, + 91.53, + 406.85, + 99.17, + 413.54, + 104.9, + 451.74, + 148.83, + 458.43, + 153.6, + 462.25, + 166.02, + 467.02, + 173.66, + 463.2, + 181.3, + 449.83, + 183.21, + 448.88, + 191.81, + 455.56, + 226.19, + 448.88, + 254.84, + 453.65, + 286.36, + 475.62, + 323.6, + 491.85, + 361.81, + 494.72, + 382.82, + 494.72, + 382.82, + 499.49, + 391.41, + 416.4, + 391.41, + 424.04, + 383.77, + 439.33, + 374.22, + 445.06, + 360.85, + 436.46, + 334.11, + 421.18, + 303.55, + 416.4, + 289.22, + 409.72, + 268.21, + 396.35, + 280.63, + 405.9, + 298.77, + 417.36, + 324.56, + 425, + 349.39, + 425, + 357.99, + 419.27, + 360.85, + 394.44, + 367.54, + 362.92, + 370.4, + 346.69, + 367.54, + 360.06, + 362.76, + 369.61, + 360.85, + 382.98, + 340.8, + 355.28, + 271.08, + 360.06, + 266.3, + 386.8, + 219.5, + 368.65, + 162.2, + 348.6, + 175.57, + 309.44, + 187.03, + 301.8, + 192.76, + 288.43, + 193.72, + 282.7, + 193.72, + 280.79, + 187.03, + 280.79, + 174.62, + 287.47, + 171.75, + 291.29, + 171.75, + 295.11, + 171.75, + 306.57, + 166.98, + 312.3, + 165.07, + 345.73, + 142.14, + 350.51, + 117.31, + 350.51, + 102.03, + 350.51, + 90.57, + 353.37, + 65.74 + ] + ], + "num_keypoints": 17, + "area": 27789.11055, + "iscrowd": 0, + "keypoints": [ + 367, + 81, + 2, + 374, + 73, + 2, + 360, + 75, + 2, + 386, + 78, + 2, + 356, + 81, + 2, + 399, + 108, + 2, + 358, + 129, + 2, + 433, + 142, + 2, + 341, + 159, + 2, + 449, + 165, + 2, + 309, + 178, + 2, + 424, + 203, + 2, + 393, + 214, + 2, + 429, + 294, + 2, + 367, + 273, + 2, + 466, + 362, + 2, + 396, + 341, + 2 + ], + "image_id": 785, + "bbox": [ + 280.79, + 44.73, + 218.7, + 346.68 + ], + "category_id": 1, + "id": 442619 + }, + { + "segmentation": [ + [ + 98.56, + 273.72, + 132.9, + 267, + 140.37, + 281.93, + 165.75, + 285.66, + 156.79, + 264.01, + 170.23, + 261.02, + 177.7, + 272.97, + 182.18, + 279.69, + 200.85, + 268.49, + 212.79, + 255.05, + 188.9, + 256.54, + 164.26, + 240.12, + 139.62, + 212.49, + 109.01, + 221.45, + 103.04, + 220.71, + 122.45, + 202.04, + 113.49, + 196.07, + 96.32, + 168.44, + 97.06, + 162.47, + 110.5, + 136.34, + 112, + 124.39, + 91.09, + 110.95, + 80.64, + 114.68, + 71.68, + 131.86, + 62.72, + 147.54, + 57.49, + 156.5, + 48.53, + 168.44, + 41.07, + 180.39, + 38.08, + 193.08, + 40.32, + 205.03, + 47.04, + 213.24, + 54.5, + 216.23, + 82.13, + 252.06, + 91.09, + 271.48 + ] + ], + "num_keypoints": 14, + "area": 11025.219, + "iscrowd": 0, + "keypoints": [ + 99, + 144, + 2, + 104, + 141, + 2, + 96, + 137, + 2, + 0, + 0, + 0, + 78, + 133, + 2, + 56, + 161, + 2, + 81, + 162, + 2, + 0, + 0, + 0, + 103, + 208, + 2, + 116, + 204, + 2, + 0, + 0, + 0, + 57, + 246, + 1, + 82, + 259, + 1, + 137, + 219, + 2, + 138, + 247, + 2, + 177, + 256, + 2, + 158, + 296, + 1 + ], + "image_id": 40083, + "bbox": [ + 38.08, + 110.95, + 174.71, + 174.71 + ], + "category_id": 1, + "id": 198196 + }, + { + "segmentation": [ + [ + 257.76, + 288.05, + 273.4, + 258.26, + 325.55, + 253.79, + 335.23, + 232.93, + 326.3, + 186.74, + 333.74, + 177.05, + 327.79, + 153.21, + 333.74, + 142.04, + 344.17, + 139.06, + 353.11, + 139.06, + 359.07, + 145.02, + 360.56, + 148.74, + 362.05, + 168.86, + 388.87, + 197.17, + 397.81, + 276.88, + 372.48, + 293.27 + ] + ], + "num_keypoints": 15, + "area": 10171.9544, + "iscrowd": 0, + "keypoints": [ + 343, + 164, + 2, + 348, + 160, + 2, + 340, + 160, + 2, + 359, + 163, + 2, + 332, + 164, + 2, + 370, + 189, + 2, + 334, + 190, + 2, + 358, + 236, + 2, + 348, + 234, + 2, + 339, + 270, + 2, + 330, + 262, + 2, + 378, + 262, + 2, + 343, + 254, + 2, + 338, + 280, + 2, + 283, + 272, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "image_id": 40083, + "bbox": [ + 257.76, + 139.06, + 140.05, + 154.21 + ], + "category_id": 1, + "id": 230195 + }, + { + "segmentation": [ + [ + 285.37, + 126.5, + 281.97, + 127.72, + 280.76, + 132.33, + 280.76, + 136.46, + 275.17, + 143.26, + 275.9, + 158.08, + 277.6, + 164.4, + 278.33, + 173.87, + 278.33, + 183.83, + 279.79, + 191.11, + 281.97, + 194.76, + 284.89, + 192.09, + 284.89, + 186.99, + 284.89, + 181.16, + 284.64, + 177.51, + 285.86, + 173.87 + ] + ], + "num_keypoints": 0, + "area": 491.2669, + "iscrowd": 0, + "keypoints": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "image_id": 40083, + "bbox": [ + 275.17, + 126.5, + 10.69, + 68.26 + ], + "category_id": 1, + "id": 1202706 + }, + { + "segmentation": [ + [ + 339.34, + 107.97, + 338.38, + 102.19, + 339.34, + 91.58, + 335.49, + 84.84, + 326.81, + 74.23, + 312.35, + 74.23, + 301.75, + 74.23, + 295, + 86.76, + 295, + 93.51, + 292.11, + 99.3, + 287.29, + 102.19, + 291.14, + 107.01, + 295, + 107.01, + 295.96, + 112.79, + 301.75, + 115.69, + 305.6, + 119.54, + 307.53, + 123.4, + 317.17, + 123.4, + 311.39, + 129.18, + 286.32, + 139.79, + 274.75, + 139.79, + 264.15, + 138.82, + 262.22, + 144.61, + 261.26, + 147.5, + 253.54, + 147.5, + 247.76, + 150.39, + 249.69, + 159.07, + 256.44, + 161, + 262.22, + 161, + 268, + 161, + 276.68, + 161.96, + 284.39, + 168.71, + 293.07, + 174.49, + 301.75, + 174.49, + 308.49, + 169.67, + 308.49, + 188.95, + 311.39, + 194.74, + 312.35, + 208.23, + 307.53, + 221.73, + 297.89, + 229.44, + 281.5, + 250.65, + 269.93, + 262.22, + 278.61, + 320.06, + 281.5, + 331.63, + 276.68, + 338.38, + 270.9, + 349.95, + 262.22, + 356.7, + 253.54, + 359.59, + 253.54, + 365.37, + 274.75, + 365.37, + 291.14, + 365.37, + 306.57, + 359.59, + 303.67, + 352.84, + 297.89, + 340.31, + 293.07, + 318.13, + 295, + 294.03, + 293.07, + 278.61, + 294.03, + 270.9, + 305.6, + 259.33, + 313.31, + 299.82, + 319.1, + 309.46, + 341.27, + 317.17, + 384.65, + 330.67, + 387.55, + 335.49, + 383.69, + 341.27, + 397.19, + 350.91, + 398.15, + 363.44, + 398.15, + 375.01, + 405.86, + 374.05, + 409.72, + 357.66, + 411.65, + 342.24, + 416.47, + 328.74, + 417.43, + 321.03, + 410.68, + 319.1, + 401.04, + 318.13, + 392.37, + 318.13, + 382.73, + 314.28, + 348.98, + 300.78, + 339.34, + 293.07, + 334.52, + 285.36, + 340.31, + 259.33, + 340.31, + 246.8, + 340.31, + 242.94, + 350.91, + 228.48, + 358.62, + 214.98, + 355.22, + 204.32, + 357.05, + 196.11, + 361.61, + 188.82, + 361.61, + 181.97, + 365.26, + 165.63, + 367.54, + 139.18, + 366.17, + 123.68, + 361.15, + 112.73, + 353.86, + 107.72, + 351.58, + 105.89, + 344.74, + 105.89, + 340.18, + 109.08 + ] + ], + "num_keypoints": 15, + "area": 17123.92955, + "iscrowd": 0, + "keypoints": [ + 297, + 111, + 2, + 299, + 106, + 2, + 0, + 0, + 0, + 314, + 108, + 2, + 0, + 0, + 0, + 329, + 141, + 2, + 346, + 125, + 2, + 295, + 164, + 2, + 323, + 130, + 2, + 266, + 155, + 2, + 279, + 143, + 2, + 329, + 225, + 2, + 331, + 221, + 2, + 327, + 298, + 2, + 283, + 269, + 2, + 398, + 327, + 2, + 288, + 349, + 2 + ], + "image_id": 196141, + "bbox": [ + 247.76, + 74.23, + 169.67, + 300.78 + ], + "category_id": 1, + "id": 460541 + }, + { + "segmentation": [ + [ + 578.76, + 112.4, + 589.39, + 100.81, + 589.39, + 99.84, + 596.16, + 116.27, + 603.89, + 122.07, + 603.89, + 138.49, + 598.09, + 159.75, + 597.12, + 181, + 594.22, + 191.63, + 589.39, + 212.89, + 583.59, + 208.06, + 583.59, + 206.13, + 582.63, + 200.33, + 582.63, + 193.57, + 582.63, + 182.94, + 575.86, + 181, + 567.17, + 197.43, + 571.03, + 203.23, + 567.17, + 207.09, + 555.57, + 208.06, + 562.34, + 200.33, + 565.24, + 190.67, + 565.24, + 173.27, + 566.2, + 163.61, + 568.14, + 156.85, + 570.07, + 148.15, + 566.2, + 143.32, + 565.24, + 133.66, + 575.86, + 118.2 + ] + ], + "num_keypoints": 15, + "area": 2789.0208, + "iscrowd": 0, + "keypoints": [ + 589, + 113, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 595, + 112, + 1, + 584, + 110, + 2, + 598, + 123, + 2, + 579, + 119, + 2, + 594, + 141, + 2, + 570, + 137, + 2, + 576, + 135, + 2, + 585, + 139, + 2, + 590, + 157, + 2, + 574, + 156, + 2, + 589, + 192, + 2, + 565, + 189, + 1, + 587, + 222, + 1, + 557, + 219, + 1 + ], + "image_id": 196141, + "bbox": [ + 555.57, + 99.84, + 48.32, + 113.05 + ], + "category_id": 1, + "id": 488308 + }, + { + "segmentation": [ + [ + 446.96, + 73.13, + 445.81, + 77.71, + 443.33, + 78.29, + 441.61, + 81.72, + 441.23, + 84.58, + 440.85, + 90.5, + 442.19, + 94.32, + 443.52, + 97.18, + 443.52, + 102.33, + 442.57, + 105.58, + 446.58, + 105.19, + 447.15, + 99.85, + 447.53, + 94.89, + 446, + 93.55, + 446.38, + 92.03, + 453.64, + 92.41, + 454.02, + 94.51, + 457.64, + 94.51, + 455.74, + 88.4, + 455.35, + 82.29, + 453.64, + 78.48, + 451.92, + 77.71, + 452.87, + 74.47, + 450.58, + 73.13 + ] + ], + "num_keypoints": 0, + "area": 285.7906, + "iscrowd": 0, + "keypoints": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "image_id": 196141, + "bbox": [ + 440.85, + 73.13, + 16.79, + 32.45 + ], + "category_id": 1, + "id": 508900 + }, + { + "segmentation": [ + [ + 497.15, + 413.95, + 531.55, + 417.68, + 548.74, + 411.7, + 551.74, + 403.48, + 546.5, + 394.5, + 543.51, + 386.28, + 571.93, + 390.76, + 574.92, + 391.51, + 579.4, + 409.46, + 605.58, + 409.46, + 615.3, + 408.71, + 607.07, + 389.27, + 598.1, + 381.79, + 607.82, + 366.83, + 607.82, + 352.63, + 610.06, + 338.42, + 619.04, + 345.15, + 631, + 344.4, + 630.25, + 336.92, + 626.51, + 318.98, + 616.05, + 286.07, + 598.85, + 263.64, + 585.39, + 257.66, + 593.61, + 244.2, + 601.09, + 235.97, + 596.6, + 219.52, + 587.63, + 211.29, + 577.91, + 208.3, + 563.7, + 206.81, + 556.22, + 214.29, + 548, + 217.28, + 539.77, + 229.99, + 539.77, + 241.95, + 539.02, + 247.19, + 523.32, + 247.19, + 503.88, + 254.67, + 485.93, + 254.67, + 479.95, + 248.68, + 473.22, + 241.21, + 485.93, + 227, + 477.7, + 215.78, + 457.51, + 215.78, + 453.77, + 235.22, + 463.5, + 246.44, + 465.74, + 261.4, + 490.42, + 274.11, + 501.63, + 275.6, + 504.62, + 286.07, + 519.58, + 286.07, + 522.57, + 292.06, + 512.85, + 310, + 515.09, + 330.94, + 530.05, + 343.65, + 505.37, + 341.41, + 479.95, + 339.91, + 465.74, + 346.64, + 463.5, + 358.61, + 473.97, + 381.04, + 485.18, + 390.02, + 501.63, + 398.99, + 504.62, + 404.22, + 491.16, + 412.45, + 495.65, + 417.68 + ] + ], + "num_keypoints": 12, + "area": 21608.94075, + "iscrowd": 0, + "keypoints": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 552, + 234, + 2, + 0, + 0, + 0, + 531, + 262, + 2, + 600, + 283, + 2, + 480, + 260, + 2, + 622, + 336, + 2, + 466, + 242, + 2, + 0, + 0, + 0, + 546, + 365, + 2, + 592, + 371, + 2, + 470, + 351, + 2, + 551, + 330, + 2, + 519, + 394, + 2, + 589, + 391, + 2 + ], + "image_id": 196141, + "bbox": [ + 453.77, + 206.81, + 177.23, + 210.87 + ], + "category_id": 1, + "id": 1717641 + }, + { + "segmentation": [ + [ + 58.93, + 163.67, + 47.18, + 161.59, + 36.12, + 93.86, + 41.65, + 82.8, + 40.27, + 69.66, + 50.64, + 67.59, + 55.48, + 73.81, + 63.08, + 92.47, + 66.53, + 99.38, + 65.15, + 109.06, + 61, + 127.03, + 59.62, + 162.97 + ] + ], + "num_keypoints": 17, + "area": 1870.14015, + "iscrowd": 0, + "keypoints": [ + 48, + 79, + 2, + 50, + 77, + 2, + 46, + 77, + 2, + 54, + 78, + 2, + 45, + 78, + 2, + 57, + 90, + 2, + 42, + 90, + 2, + 63, + 103, + 2, + 42, + 105, + 2, + 56, + 113, + 2, + 49, + 112, + 2, + 55, + 117, + 2, + 44, + 117, + 2, + 55, + 140, + 2, + 47, + 140, + 2, + 56, + 160, + 2, + 49, + 159, + 2 + ], + "image_id": 196141, + "bbox": [ + 36.12, + 67.59, + 30.41, + 96.08 + ], + "category_id": 1, + "id": 1724673 + }, + { + "segmentation": [ + [ + 139.41, + 321.58, + 144.78, + 326.56, + 196.92, + 314.68, + 196.16, + 309.31, + 207.28, + 292.05, + 213.03, + 284, + 228.75, + 270.2, + 233.35, + 261.38, + 244.47, + 252.56, + 254.44, + 237.61, + 267.86, + 215.37, + 272.08, + 212.68, + 285.5, + 232.62, + 294.7, + 250.64, + 295.08, + 264.06, + 290.87, + 277.87, + 290.87, + 286.3, + 289.71, + 298.19, + 281.66, + 318.89, + 282.05, + 334.23, + 295.08, + 340.37, + 315.02, + 343.82, + 314.25, + 336.53, + 310.42, + 330.4, + 301.98, + 322.34, + 304.29, + 310.84, + 304.67, + 302.79, + 306.2, + 292.05, + 311.19, + 275.56, + 313.87, + 251.79, + 311.19, + 234.54, + 312.72, + 224.57, + 310.42, + 212.3, + 307.74, + 201.56, + 306.2, + 193.51, + 306.59, + 183.16, + 310.04, + 177.41, + 314.64, + 173.19, + 316.94, + 171.65, + 328.06, + 163.99, + 337.64, + 157.85, + 343.4, + 159.77, + 346.46, + 166.67, + 346.85, + 170.5, + 346.46, + 179.71, + 346.85, + 188.53, + 346.85, + 191.98, + 344.55, + 198.11, + 342.25, + 203.48, + 338.41, + 208.46, + 335.34, + 212.68, + 335.34, + 217.67, + 343.01, + 222.65, + 354.9, + 210.76, + 359.12, + 196.19, + 361.8, + 173.19, + 361.42, + 161.69, + 356.43, + 150.18, + 344.93, + 135.61, + 343.01, + 132.93, + 345.31, + 126.41, + 345.7, + 124.88, + 343.4, + 115.29, + 340.33, + 104.17, + 337.26, + 102.25, + 330.36, + 103.4, + 326.14, + 106.09, + 320.01, + 111.07, + 314.64, + 119.89, + 310.42, + 121.04, + 292.02, + 121.81, + 279.75, + 127.94, + 244.09, + 138.68, + 240.25, + 142.51, + 238.72, + 154.4, + 239.1, + 163.6, + 239.87, + 173.96, + 241.79, + 181.24, + 248.3, + 192.36, + 240.25, + 206.55, + 236.42, + 219.2, + 229.9, + 236.45, + 225.3, + 247.57, + 218.4, + 254.48, + 208.81, + 265.6, + 202.29, + 278.25, + 195.39, + 285.92, + 188.49, + 292.05, + 183.5, + 295.89, + 176.6, + 302.41, + 172, + 308.54, + 167.78, + 313.14, + 146.31, + 318.89 + ] + ], + "num_keypoints": 16, + "area": 14250.29385, + "iscrowd": 0, + "keypoints": [ + 334, + 135, + 2, + 340, + 129, + 2, + 331, + 129, + 2, + 0, + 0, + 0, + 319, + 123, + 2, + 340, + 146, + 2, + 292, + 133, + 2, + 353, + 164, + 2, + 246, + 144, + 2, + 354, + 197, + 2, + 250, + 185, + 2, + 293, + 197, + 2, + 265, + 187, + 2, + 305, + 252, + 2, + 231, + 254, + 2, + 293, + 321, + 2, + 193, + 297, + 2 + ], + "image_id": 197388, + "bbox": [ + 139.41, + 102.25, + 222.39, + 241.57 + ], + "category_id": 1, + "id": 437295 + }, + { + "segmentation": [ + [ + 287.17, + 121.42, + 294.22, + 106.44, + 302.15, + 116.13, + 303.03, + 121.42 + ], + [ + 297.74, + 99.39, + 310.08, + 76.49, + 326.81, + 76.49, + 329.46, + 67.68, + 337.38, + 61.52, + 346.19, + 62.4, + 353.24, + 65.92, + 353.24, + 76.49, + 355.88, + 84.42, + 359.41, + 87.94, + 362.05, + 96.75, + 354.12, + 139.04, + 349.72, + 142.56, + 345.31, + 139.92, + 349.72, + 117.89, + 348.84, + 108.2, + 345.31, + 113.49, + 336.5, + 101.16, + 325.93, + 110.85, + 311.84, + 123.18 + ], + [ + 324.17, + 176.91, + 332.1, + 191.89, + 328.58, + 198.94, + 327.69, + 205.98, + 333.86, + 213.03, + 337.38, + 227.13, + 332.98, + 227.13, + 319.77, + 219.2, + 313.6, + 211.27 + ], + [ + 332.98, + 165.46, + 341.79, + 161.06, + 336.5, + 174.27, + 333.86, + 186.6, + 326.81, + 176.03 + ] + ], + "num_keypoints": 16, + "area": 3404.869, + "iscrowd": 0, + "keypoints": [ + 345, + 92, + 2, + 350, + 87, + 2, + 341, + 87, + 2, + 0, + 0, + 0, + 330, + 83, + 2, + 357, + 94, + 2, + 316, + 92, + 2, + 357, + 104, + 2, + 291, + 123, + 1, + 351, + 133, + 2, + 281, + 136, + 1, + 326, + 131, + 1, + 305, + 128, + 1, + 336, + 152, + 1, + 303, + 171, + 1, + 318, + 206, + 2, + 294, + 211, + 1 + ], + "image_id": 197388, + "bbox": [ + 287.17, + 61.52, + 74.88, + 165.61 + ], + "category_id": 1, + "id": 467657 + }, + { + "segmentation": [ + [ + 547.95, + 201.57, + 546.73, + 190.62, + 547.95, + 181.49, + 547.95, + 169.31, + 547.95, + 156.53, + 546.73, + 144.36, + 544.3, + 139.49, + 540.04, + 132.19, + 540.04, + 121.84, + 542.47, + 107.24, + 544.3, + 99.33, + 548.56, + 88.98, + 561.95, + 78.03, + 572.29, + 71.33, + 572.29, + 71.33, + 572.29, + 65.25, + 574.12, + 51.86, + 583.86, + 48.81, + 592.99, + 48.81, + 597.86, + 57.33, + 599.07, + 64.64, + 608.2, + 76.81, + 614.9, + 82.89, + 620.98, + 89.59, + 628.89, + 93.24, + 636.81, + 101.76, + 640, + 109.67, + 640, + 115.76, + 640, + 127.93, + 620.37, + 111.5, + 619.16, + 111.5, + 618.55, + 112.11, + 608.2, + 105.41, + 600.9, + 119.41, + 592.99, + 131.58, + 596.03, + 148.01, + 605.16, + 162.01, + 612.46, + 190.01, + 614.9, + 204.61, + 606.98, + 216.78, + 603.94, + 226.52, + 606.38, + 239.91, + 605.16, + 256.95, + 604.55, + 264.26, + 602.12, + 271.56, + 586.29, + 272.17, + 584.47, + 255.13, + 588.73, + 237.48, + 592.99, + 221.65, + 596.64, + 207.05, + 596.64, + 197.31, + 594.2, + 186.96, + 584.47, + 172.36, + 577.77, + 166.27, + 570.47, + 170.53, + 558.91, + 179.66, + 555.86, + 192.44, + 548.56, + 198.53, + 547.95, + 198.53 + ] + ], + "num_keypoints": 15, + "area": 8913.98475, + "iscrowd": 0, + "keypoints": [ + 591, + 78, + 2, + 594, + 74, + 2, + 586, + 74, + 2, + 0, + 0, + 0, + 573, + 70, + 2, + 598, + 86, + 2, + 566, + 93, + 2, + 626, + 105, + 2, + 546, + 126, + 2, + 0, + 0, + 0, + 561, + 150, + 2, + 582, + 150, + 2, + 557, + 154, + 2, + 606, + 194, + 2, + 558, + 209, + 1, + 591, + 252, + 2, + 539, + 262, + 1 + ], + "image_id": 197388, + "bbox": [ + 540.04, + 48.81, + 99.96, + 223.36 + ], + "category_id": 1, + "id": 531914 + }, + { + "segmentation": [ + [ + 561.51, + 385.38, + 572.11, + 352.71, + 570.34, + 317.4, + 559.75, + 282.08, + 552.68, + 267.07, + 565.93, + 236.17, + 583.59, + 236.17, + 602.13, + 260.01, + 614.49, + 286.5, + 628.61, + 302.39, + 639.21, + 281.2, + 614.49, + 251.18, + 588, + 218.51, + 595.95, + 202.62, + 594.18, + 185.85, + 580.05, + 170.84, + 562.4, + 179.67, + 557.98, + 198.21, + 554.45, + 202.62, + 532.38, + 199.97, + 525.32, + 202.62, + 511.19, + 229.11, + 493.53, + 256.48, + 484.7, + 276.78, + 451.15, + 323.58, + 423.78, + 338.59, + 388.47, + 373.9, + 372.58, + 387.14, + 396.41, + 388.03, + 418.49, + 367.72, + 450.27, + 345.65, + 501.48, + 306.8, + 520.02, + 301.5, + 552.68, + 340.35, + 543.86, + 369.49 + ] + ], + "num_keypoints": 16, + "area": 14267.20475, + "iscrowd": 0, + "keypoints": [ + 580, + 211, + 2, + 586, + 206, + 2, + 574, + 204, + 2, + 0, + 0, + 0, + 562, + 198, + 2, + 584, + 220, + 2, + 529, + 215, + 2, + 599, + 242, + 2, + 512, + 260, + 2, + 619, + 274, + 2, + 538, + 285, + 2, + 537, + 288, + 2, + 506, + 277, + 2, + 562, + 332, + 2, + 452, + 332, + 2, + 550, + 387, + 1, + 402, + 371, + 2 + ], + "image_id": 197388, + "bbox": [ + 372.58, + 170.84, + 266.63, + 217.19 + ], + "category_id": 1, + "id": 533949 + }, + { + "segmentation": [ + [ + 2.03, + 75.18, + 10.85, + 70.58, + 16.99, + 65.59, + 17.75, + 55.24, + 20.05, + 50.25, + 29.64, + 43.74, + 37.31, + 47.57, + 41.52, + 53.7, + 43.83, + 64.82, + 53.03, + 70.19, + 61.85, + 77.09, + 72.58, + 87.06, + 74.88, + 79.01, + 78.72, + 73.64, + 86.39, + 77.86, + 90.6, + 90.13, + 86, + 93.2, + 82.17, + 102.4, + 75.27, + 106.24, + 68.75, + 104.7, + 50.34, + 90.9, + 43.06, + 112.37, + 40.76, + 123.11, + 42.29, + 130.78, + 48.04, + 161.83, + 52.26, + 190.59, + 50.73, + 210.15, + 44.21, + 245.04, + 50.34, + 256.16, + 53.03, + 261.53, + 47.28, + 263.83, + 40.37, + 263.83, + 31.56, + 260.76, + 28.1, + 256.16, + 26.95, + 244.65, + 29.25, + 233.54, + 32.71, + 223.95, + 33.09, + 213.98, + 32.32, + 206.31, + 32.71, + 194.81, + 33.09, + 185.61, + 24.65, + 177.17, + 16.99, + 161.45, + 13.53, + 176.02, + 10.85, + 206.31, + 1.65, + 231.62, + 1.65, + 235.84, + 0.5, + 146.88, + 0.88, + 122.34, + 1.65, + 75.56 + ] + ], + "num_keypoints": 13, + "area": 8260.75085, + "iscrowd": 0, + "keypoints": [ + 36, + 79, + 2, + 40, + 74, + 2, + 31, + 75, + 2, + 0, + 0, + 0, + 19, + 69, + 2, + 45, + 77, + 2, + 2, + 89, + 2, + 74, + 99, + 2, + 0, + 0, + 0, + 78, + 92, + 2, + 0, + 0, + 0, + 33, + 149, + 2, + 7, + 153, + 2, + 44, + 196, + 2, + 2, + 205, + 2, + 35, + 245, + 2, + 0, + 0, + 0 + ], + "image_id": 197388, + "bbox": [ + 0.5, + 43.74, + 90.1, + 220.09 + ], + "category_id": 1, + "id": 543117 + } + ] +} diff --git a/tests/data/humanart/test_humanart_det_AP_H_56.json b/tests/data/humanart/test_humanart_det_AP_H_56.json new file mode 100644 index 0000000000..e166de0c64 --- /dev/null +++ b/tests/data/humanart/test_humanart_det_AP_H_56.json @@ -0,0 +1,1300 @@ +[ + { + "bbox": [ + 277.1183158543966, + 45.699667786163765, + 225.09126579259754, + 333.5602652943344 + ], + "category_id": 1, + "image_id": 785, + "score": 0.9999731779098511 + }, + { + "bbox": [ + 281.950178384611, + 44.56940615106412, + 212.94084624881856, + 344.98328732330305 + ], + "category_id": 1, + "image_id": 785, + "score": 0.30122078732076535 + }, + { + "bbox": [ + 268.01163251716935, + 43.98534000198524, + 238.46561540311666, + 341.79494090239166 + ], + "category_id": 1, + "image_id": 785, + "score": 0.09537058952055945 + }, + { + "bbox": [ + 286.24685022227766, + 41.757854101745124, + 223.83092714841916, + 338.2323329803221 + ], + "category_id": 1, + "image_id": 785, + "score": 0.02974060317622316 + }, + { + "bbox": [ + 262.7942371596824, + 63.5024099030928, + 3.164080328447767, + 4.2931809049024 + ], + "category_id": 1, + "image_id": 785, + "score": 0.01697496324777603 + }, + { + "bbox": [ + 460.79934160584526, + 54.24632570186816, + 3.1264258976875112, + 5.30507188737684 + ], + "category_id": 1, + "image_id": 785, + "score": 0.011266417550507977 + }, + { + "bbox": [ + 457.74867915702885, + 54.642754761043186, + 3.1463156275978577, + 5.30487109975607 + ], + "category_id": 1, + "image_id": 785, + "score": 0.009877337450527405 + }, + { + "bbox": [ + 283.6326909128262, + 48.41948428440242, + 208.11973684568892, + 329.94523003138954 + ], + "category_id": 1, + "image_id": 785, + "score": 0.009197559746208601 + }, + { + "bbox": [ + 207.3711401479468, + 63.36160650309581, + 2.93447433643874, + 3.468569626452343 + ], + "category_id": 1, + "image_id": 785, + "score": 0.008295997977256775 + }, + { + "bbox": [ + 458.51562228937183, + 59.46703918462182, + 3.272054625157523, + 4.619048555254508 + ], + "category_id": 1, + "image_id": 785, + "score": 0.008173274752520696 + }, + { + "bbox": [ + 461.08150984219986, + 58.545150021384245, + 3.249185872840485, + 5.844152786677249 + ], + "category_id": 1, + "image_id": 785, + "score": 0.007174033771332924 + }, + { + "bbox": [ + 259.83498140597413, + 62.3517572900752, + 2.9195241669668235, + 4.559862560086913 + ], + "category_id": 1, + "image_id": 785, + "score": 0.006377489306032658 + }, + { + "bbox": [ + 206.80460173580252, + 62.5220090883142, + 3.1584765729102457, + 3.520867237953432 + ], + "category_id": 1, + "image_id": 785, + "score": 0.005891890564944476 + }, + { + "bbox": [ + 459.5511247244534, + 54.89593493663015, + 3.230180209185619, + 5.595806307593442 + ], + "category_id": 1, + "image_id": 785, + "score": 0.005863019167811413 + }, + { + "bbox": [ + 457.2902794671802, + 58.740074277713674, + 3.316325358758718, + 5.415639229745793 + ], + "category_id": 1, + "image_id": 785, + "score": 0.005827399869551478 + }, + { + "bbox": [ + 262.6182415084011, + 62.83701378140133, + 3.0697625867510396, + 4.148177980683975 + ], + "category_id": 1, + "image_id": 785, + "score": 0.005008531179775657 + }, + { + "bbox": [ + 209.95621769919438, + 63.58898404912936, + 3.097942773760309, + 3.9870186328652224 + ], + "category_id": 1, + "image_id": 785, + "score": 0.004536413883644729 + }, + { + "bbox": [ + 459.25342388420654, + 59.04022778823142, + 3.6918324658356596, + 6.2054702421954175 + ], + "category_id": 1, + "image_id": 785, + "score": 0.00384555541357817 + }, + { + "bbox": [ + 208.42983867925258, + 62.66620641784881, + 2.939843970544956, + 3.5128275773914908 + ], + "category_id": 1, + "image_id": 785, + "score": 0.003631657359987463 + }, + { + "bbox": [ + 213.41976294267863, + 62.71431286477077, + 2.528260915549936, + 3.4008991982205927 + ], + "category_id": 1, + "image_id": 785, + "score": 0.0033746918197721243 + }, + { + "bbox": [ + 161.97753405615518, + 61.730313756833205, + 2.8917805026908923, + 4.075206275914702 + ], + "category_id": 1, + "image_id": 785, + "score": 0.003240120830014348 + }, + { + "bbox": [ + 457.5244691894709, + 54.70691525725411, + 6.2095088496953394, + 8.39989354390223 + ], + "category_id": 1, + "image_id": 785, + "score": 0.0028898494491729535 + }, + { + "bbox": [ + 376.9178826443722, + 172.73052709081233, + 261.25961331942824, + 215.58502374291808 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.9999579191207886 + }, + { + "bbox": [ + 163.9687616410633, + 80.41943032016765, + 200.19976794356094, + 259.2492676442412 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.9999035596847534 + }, + { + "bbox": [ + 1.218278714743892, + 47.45300387559155, + 90.54113395922819, + 220.98988830655202 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.9998950958251953 + }, + { + "bbox": [ + 542.055600304138, + 50.78951110214531, + 97.65374183236963, + 187.04227881069528 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.9867184565824798 + }, + { + "bbox": [ + 281.8670596900398, + 58.53450299402189, + 82.11294655596839, + 86.20744367046282 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.9736837699533164 + }, + { + "bbox": [ + 279.94252362290945, + 59.89339467038772, + 81.61478084086349, + 147.45283612214442 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.5819535544584765 + }, + { + "bbox": [ + 535.4019505240893, + 48.1844256878009, + 105.27804947591062, + 239.31002317693435 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.4461107432274131 + }, + { + "bbox": [ + 168.57347257788564, + 103.56636286623898, + 188.67170536354314, + 230.37891238088162 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.3492993107937081 + }, + { + "bbox": [ + 372.0082417618134, + 163.99891619439003, + 236.90653900133447, + 224.81380141719242 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.32743142104478484 + }, + { + "bbox": [ + 1.388905257619702, + 35.86500152126901, + 87.67960208998994, + 220.4727970838673 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.31936580857404523 + }, + { + "bbox": [ + 283.65021434011885, + 57.518455359834334, + 81.08575097216988, + 85.11418577738398 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.1897958763078807 + }, + { + "bbox": [ + 543.1779979060689, + 37.87532382036906, + 94.66280745251572, + 191.29243939893223 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.17261266781373394 + }, + { + "bbox": [ + 258.5633408567725, + 60.27068241963883, + 102.3686462123, + 151.42071713691902 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.13677866226510016 + }, + { + "bbox": [ + 380.00719017305823, + 181.1782438214781, + 257.505490623621, + 199.13011090655024 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.12246560363252844 + }, + { + "bbox": [ + 177.40899563109633, + 78.35446740631232, + 189.53651142957023, + 263.45315194093274 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.1013108540546625 + }, + { + "bbox": [ + 0.7289829477709847, + 43.73276160140667, + 85.41587076323728, + 221.3344387113314 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.09960434746646744 + }, + { + "bbox": [ + 461.84120081448543, + 144.75681027711394, + 7.162490813687327, + 8.531497919325176 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.08173750340938568 + }, + { + "bbox": [ + 296.17189402683806, + 85.73360082440907, + 62.47594584815931, + 130.1418854933646 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.0717465542448663 + }, + { + "bbox": [ + 539.1454728501081, + 43.14242476252679, + 100.3810332864756, + 247.18086755992118 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.06011599272181979 + }, + { + "bbox": [ + 277.97115514687323, + 62.833796387748365, + 85.73469418408934, + 109.64015622069529 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.0423359872651069 + }, + { + "bbox": [ + 462.1613388043361, + 146.12331612284657, + 4.619414527763752, + 5.653142729845399 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.03960325857728385 + }, + { + "bbox": [ + 365.7412020686737, + 174.63881714430087, + 251.65152786857914, + 216.71453560361638 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.03937998874316995 + }, + { + "bbox": [ + 3.4297732174796693, + 45.43705430480154, + 92.63472057783511, + 222.82923167372067 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.033127322744961746 + }, + { + "bbox": [ + 169.87771310995316, + 89.66612191248007, + 182.26201179942262, + 244.24356591209786 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.03232751908601077 + }, + { + "bbox": [ + 236.36941077406334, + 63.89780825602214, + 126.04036089393139, + 167.83640884370914 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.026460597694444848 + }, + { + "bbox": [ + 306.015998970117, + 102.95796459236254, + 50.95681252313989, + 115.84925059311661 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.02226386399182351 + }, + { + "bbox": [ + 537.318841521999, + 51.127194758764055, + 100.70779100270272, + 184.38821643554354 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.021828400794543387 + }, + { + "bbox": [ + 462.4003780259345, + 145.2270003005055, + 5.570865375100425, + 6.968161205149954 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.017564592704083917 + }, + { + "bbox": [ + 284.4247396061427, + 58.40109305610073, + 77.51981649355616, + 85.87582588813615 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.015670991050973693 + }, + { + "bbox": [ + 381.11136505330313, + 182.22526492755827, + 252.6961926281694, + 195.18863447956443 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.012290037721773745 + }, + { + "bbox": [ + 159.00697010469204, + 66.94814529991709, + 208.17784842532066, + 275.3418926190766 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.010543055168754003 + }, + { + "bbox": [ + 0.0, + 41.78049849392192, + 88.22526407776418, + 228.8951048951705 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.009550385293192926 + }, + { + "bbox": [ + 577.9447869595953, + 225.0889245399691, + 34.613561069282355, + 45.224848999211105 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.009009368302155088 + }, + { + "bbox": [ + 461.84120081448543, + 144.75681027711394, + 7.162490813687327, + 8.531497919325176 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.008478489359995936 + }, + { + "bbox": [ + 536.7620147243282, + 50.12388034294447, + 103.91798527567175, + 227.99503472686746 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.0070238283037164315 + }, + { + "bbox": [ + 324.4889601722706, + 132.0053388533619, + 33.860410488241655, + 86.62326758044719 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.006766568381450841 + }, + { + "bbox": [ + 246.15395215941302, + 55.57516986353281, + 114.57893265029415, + 151.51097731653135 + ], + "category_id": 1, + "image_id": 197388, + "score": 0.00619416668365814 + }, + { + "bbox": [ + 38.32789823729127, + 112.41407584232527, + 174.68030024685248, + 169.5690071995081 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.9999903440475464 + }, + { + "bbox": [ + 273.75504650493133, + 127.03007800217645, + 13.119059034012025, + 66.89919582171933 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.9987139701843262 + }, + { + "bbox": [ + 281.037309318129, + 138.89800552022552, + 115.77299430404673, + 161.8925392525125 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.9967334429627354 + }, + { + "bbox": [ + 122.98736914581909, + 149.19548926043387, + 13.238023418245518, + 13.251921410601938 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.7115740632536128 + }, + { + "bbox": [ + 134.73643174966296, + 136.1444006258907, + 11.484101688887165, + 24.515063595289917 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.6175192526221182 + }, + { + "bbox": [ + 244.00963353440733, + 141.97232651644495, + 149.05240181123492, + 151.9715830001215 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.4946145965118973 + }, + { + "bbox": [ + 275.164993708296, + 126.95531864312014, + 13.321305363409294, + 66.11390534184258 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.4050845742423741 + }, + { + "bbox": [ + 42.96185669219733, + 122.34524983009223, + 160.1285645732864, + 161.9463250366397 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.353162111215626 + }, + { + "bbox": [ + 119.6385577246031, + 155.7402521228216, + 13.35265116435049, + 26.52128467487711 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.28122130800324224 + }, + { + "bbox": [ + 134.01278713702155, + 135.5395238881317, + 11.64567949798922, + 24.682523935864452 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.19370334661431887 + }, + { + "bbox": [ + 124.09760300731958, + 148.1338264630807, + 11.235262772767982, + 13.52837293393398 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.176868630098971 + }, + { + "bbox": [ + 218.7332213212989, + 140.0443329358783, + 180.4683469351732, + 156.8554518569021 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.16822000522327524 + }, + { + "bbox": [ + 270.92053528959764, + 133.3265646431611, + 13.58464710826729, + 56.339971422777694 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.1562438273124175 + }, + { + "bbox": [ + 37.809250550065954, + 105.79757078726388, + 182.54979468741817, + 184.99414098124603 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.14206553007930756 + }, + { + "bbox": [ + 131.5670033941938, + 158.319905396887, + 9.554075877756475, + 21.518604078379468 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.1142622835492838 + }, + { + "bbox": [ + 127.07848171294685, + 138.86839277431187, + 17.235128293754656, + 44.84156945207431 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.09938282001938761 + }, + { + "bbox": [ + 275.15638186104223, + 133.5832174441871, + 10.20764095132887, + 60.2529082432996 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.08779323860838567 + }, + { + "bbox": [ + 118.09746041875155, + 153.9768088492941, + 17.64612772931838, + 33.0168198306535 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.08400380428176607 + }, + { + "bbox": [ + 129.65247011589898, + 146.21014275291188, + 9.816644995735373, + 16.98788352109895 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.07980794934855787 + }, + { + "bbox": [ + 271.7621155363754, + 144.86674821981342, + 124.64715453387907, + 156.9482558015152 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.07801336023989208 + }, + { + "bbox": [ + 122.31437055574987, + 149.80085696138593, + 14.266245774025762, + 12.463835012516398 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.06346535355569785 + }, + { + "bbox": [ + 34.56564215631444, + 135.92815585957712, + 177.51220438385354, + 164.41951766953704 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.0485074333765967 + }, + { + "bbox": [ + 136.7368415229119, + 137.89135149894196, + 9.122227037700043, + 22.213023488378155 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.04772781404400169 + }, + { + "bbox": [ + 123.3235499944418, + 150.25321417348, + 15.765761854272228, + 36.16957895970921 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.04220727754152085 + }, + { + "bbox": [ + 271.90779626938615, + 128.14539407135078, + 15.405080085072711, + 64.71005682344074 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.04092462762153748 + }, + { + "bbox": [ + 114.0193235709124, + 155.5618252886575, + 9.112663847332854, + 14.913955482463706 + ], + "category_id": 1, + "image_id": 40083, + "score": 0.040561411233867466 + }, + { + "bbox": [ + 246.79480278830977, + 74.45452361185933, + 168.83467296399175, + 294.5553838783887 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.9998471736907959 + }, + { + "bbox": [ + 449.91721482790945, + 204.96684769367067, + 185.0938399278399, + 209.68341364145596 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.9993680119514465 + }, + { + "bbox": [ + 551.8933527530817, + 98.62668626165973, + 53.015730818431166, + 114.70768739332982 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.9989681245939074 + }, + { + "bbox": [ + 36.629787184254866, + 68.37446568096026, + 33.14949933628988, + 95.8618173172063 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.9987284541130066 + }, + { + "bbox": [ + 440.89995321368673, + 70.30641025016695, + 19.43814726089363, + 37.077964642141026 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.9947758913040161 + }, + { + "bbox": [ + 601.8062068801571, + 88.95295148681318, + 16.128385553229577, + 24.398472250098138 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.7787292817106939 + }, + { + "bbox": [ + 443.0809847626748, + 71.63759967713678, + 13.50749833723944, + 32.66811758890536 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.4904795373325092 + }, + { + "bbox": [ + 396.569778686132, + 70.2787260371438, + 13.479104730026052, + 31.759617864735645 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.4112498931182214 + }, + { + "bbox": [ + 38.70719296509935, + 70.61443452888409, + 28.17963315510066, + 92.31016180688292 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.3796398182128506 + }, + { + "bbox": [ + 609.3142175988798, + 93.72376246104807, + 19.058191027280486, + 20.77005778794522 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.370328633830097 + }, + { + "bbox": [ + 548.7095132625554, + 98.39472701114634, + 53.25156101474022, + 116.43788199987897 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.33102923130101364 + }, + { + "bbox": [ + 455.5297663676009, + 206.88078209027378, + 175.70291860814734, + 199.34403654904446 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.3069290034626759 + }, + { + "bbox": [ + 250.74661573104714, + 87.13280710904513, + 167.45142937734437, + 278.3106151544837 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.30579873324356427 + }, + { + "bbox": [ + 440.7002672189753, + 69.17369758813695, + 14.444703091985616, + 37.00946842030504 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.25331338842056605 + }, + { + "bbox": [ + 614.9353977385917, + 95.74403799582933, + 11.596245346674664, + 17.631981747095708 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.22204102380904406 + }, + { + "bbox": [ + 400.60963922399134, + 70.43862641691737, + 8.331775245023891, + 35.000620170929324 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.20590268390631786 + }, + { + "bbox": [ + 602.6848618804396, + 88.3983294514046, + 15.524266109773862, + 24.329680417924536 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.1935096033322262 + }, + { + "bbox": [ + 453.62495235047044, + 80.93588476309868, + 8.634490931609093, + 24.416622635007826 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.13682630359796108 + }, + { + "bbox": [ + 438.1383792082668, + 71.62832244418284, + 13.671594135308055, + 34.59094773941301 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.12521365808926627 + }, + { + "bbox": [ + 37.07150693742372, + 71.09337416480857, + 29.051661261168164, + 90.74910484197981 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.11572668958758377 + }, + { + "bbox": [ + 612.4694532238449, + 94.33977605307147, + 11.44235234183725, + 18.834863504196264 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.1118136151149066 + }, + { + "bbox": [ + 601.3005939432458, + 93.44761682206529, + 12.158258551431686, + 21.16533746684057 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.10474070969851616 + }, + { + "bbox": [ + 552.5681619230662, + 93.99774029686462, + 52.01820025716597, + 118.51885706193504 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.10326196808658804 + }, + { + "bbox": [ + 398.5848517781443, + 73.06106969434823, + 9.784228227546066, + 31.1350301063286 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.09513584625155845 + }, + { + "bbox": [ + 447.4145013754455, + 199.11669450357687, + 182.9378852593169, + 211.20266858232594 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.09457972184460144 + }, + { + "bbox": [ + 242.46158239970538, + 71.50036639162563, + 171.43617162489392, + 297.42260463621386 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.09176039055855717 + }, + { + "bbox": [ + 597.2197814264931, + 82.37761224901661, + 11.327105500584025, + 31.481263735129318 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.08028100931968704 + }, + { + "bbox": [ + 599.0760153957814, + 81.53235136929479, + 7.865899180085421, + 9.27911853791521 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.06306317158251058 + }, + { + "bbox": [ + 458.0528386594554, + 76.79036559159022, + 7.6005536116708186, + 25.915126727881812 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.06281862376239655 + }, + { + "bbox": [ + 446.7096696323964, + 70.72615937722122, + 12.841618701895356, + 34.64495922754935 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.061957712774678333 + }, + { + "bbox": [ + 435.5707540307205, + 72.6766990179972, + 9.948115403515544, + 29.835360002866068 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.05090554307604889 + }, + { + "bbox": [ + 395.9134672120448, + 68.37234648135498, + 13.313090353344592, + 35.21000811416911 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.048676813090792935 + }, + { + "bbox": [ + 441.55283109201787, + 70.93636919677598, + 12.61247065074889, + 34.04032271350583 + ], + "category_id": 1, + "image_id": 196141, + "score": 0.041175731433019114 + } +] diff --git a/tests/test_datasets/test_datasets/test_body_datasets/test_humanart_dataset.py b/tests/test_datasets/test_datasets/test_body_datasets/test_humanart_dataset.py new file mode 100644 index 0000000000..e63484a4e7 --- /dev/null +++ b/tests/test_datasets/test_datasets/test_body_datasets/test_humanart_dataset.py @@ -0,0 +1,160 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from unittest import TestCase + +import numpy as np + +from mmpose.datasets.datasets.body import HumanArtDataset + + +class TestHumanartDataset(TestCase): + + def build_humanart_dataset(self, **kwargs): + + cfg = dict( + ann_file='test_humanart.json', + bbox_file=None, + data_mode='topdown', + data_root='tests/data/humanart', + pipeline=[], + test_mode=False) + + cfg.update(kwargs) + return HumanArtDataset(**cfg) + + def check_data_info_keys(self, + data_info: dict, + data_mode: str = 'topdown'): + if data_mode == 'topdown': + expected_keys = dict( + img_id=int, + img_path=str, + bbox=np.ndarray, + bbox_score=np.ndarray, + keypoints=np.ndarray, + keypoints_visible=np.ndarray, + id=int) + elif data_mode == 'bottomup': + expected_keys = dict( + img_id=int, + img_path=str, + bbox=np.ndarray, + bbox_score=np.ndarray, + keypoints=np.ndarray, + keypoints_visible=np.ndarray, + invalid_segs=list, + id=list) + else: + raise ValueError(f'Invalid data_mode {data_mode}') + + for key, type_ in expected_keys.items(): + self.assertIn(key, data_info) + self.assertIsInstance(data_info[key], type_, key) + + def check_metainfo_keys(self, metainfo: dict): + expected_keys = dict( + dataset_name=str, + num_keypoints=int, + keypoint_id2name=dict, + keypoint_name2id=dict, + upper_body_ids=list, + lower_body_ids=list, + flip_indices=list, + flip_pairs=list, + keypoint_colors=np.ndarray, + num_skeleton_links=int, + skeleton_links=list, + skeleton_link_colors=np.ndarray, + dataset_keypoint_weights=np.ndarray) + + for key, type_ in expected_keys.items(): + self.assertIn(key, metainfo) + self.assertIsInstance(metainfo[key], type_, key) + + def test_metainfo(self): + dataset = self.build_humanart_dataset() + self.check_metainfo_keys(dataset.metainfo) + # test dataset_name + self.assertEqual(dataset.metainfo['dataset_name'], 'humanart') + + # test number of keypoints + num_keypoints = 17 + self.assertEqual(dataset.metainfo['num_keypoints'], num_keypoints) + self.assertEqual( + len(dataset.metainfo['keypoint_colors']), num_keypoints) + self.assertEqual( + len(dataset.metainfo['dataset_keypoint_weights']), num_keypoints) + # note that len(sigmas) may be zero if dataset.metainfo['sigmas'] = [] + self.assertEqual(len(dataset.metainfo['sigmas']), num_keypoints) + + # test some extra metainfo + self.assertEqual( + len(dataset.metainfo['skeleton_links']), + len(dataset.metainfo['skeleton_link_colors'])) + + def test_topdown(self): + # test topdown training + dataset = self.build_humanart_dataset(data_mode='topdown') + self.assertEqual(len(dataset), 12) + self.check_data_info_keys(dataset[0], data_mode='topdown') + + # test topdown testing + dataset = self.build_humanart_dataset( + data_mode='topdown', test_mode=True) + self.assertEqual(len(dataset), 12) + self.check_data_info_keys(dataset[0], data_mode='topdown') + + # test topdown testing with bbox file + dataset = self.build_humanart_dataset( + data_mode='topdown', + test_mode=True, + bbox_file='tests/data/humanart/test_humanart_det_AP_H_56.json') + self.assertEqual(len(dataset), 118) + self.check_data_info_keys(dataset[0], data_mode='topdown') + + # test topdown testing with filter config + dataset = self.build_humanart_dataset( + data_mode='topdown', + test_mode=True, + bbox_file='tests/data/humanart/test_humanart_det_AP_H_56.json', + filter_cfg=dict(bbox_score_thr=0.3)) + self.assertEqual(len(dataset), 33) + + def test_bottomup(self): + # test bottomup training + dataset = self.build_humanart_dataset(data_mode='bottomup') + self.assertEqual(len(dataset), 4) + self.check_data_info_keys(dataset[0], data_mode='bottomup') + + # test bottomup testing + dataset = self.build_humanart_dataset( + data_mode='bottomup', test_mode=True) + self.assertEqual(len(dataset), 4) + self.check_data_info_keys(dataset[0], data_mode='bottomup') + + def test_exceptions_and_warnings(self): + + with self.assertRaisesRegex(ValueError, 'got invalid data_mode'): + _ = self.build_humanart_dataset(data_mode='invalid') + + with self.assertRaisesRegex( + ValueError, + '"bbox_file" is only supported when `test_mode==True`'): + _ = self.build_humanart_dataset( + data_mode='topdown', + test_mode=False, + bbox_file='tests/data/humanart/test_humanart_det_AP_H_56.json') + + with self.assertRaisesRegex( + ValueError, '"bbox_file" is only supported in topdown mode'): + _ = self.build_humanart_dataset( + data_mode='bottomup', + test_mode=True, + bbox_file='tests/data/humanart/test_humanart_det_AP_H_56.json') + + with self.assertRaisesRegex( + ValueError, + '"bbox_score_thr" is only supported in topdown mode'): + _ = self.build_humanart_dataset( + data_mode='bottomup', + test_mode=True, + filter_cfg=dict(bbox_score_thr=0.3)) From dcd1eb8752c600e205d44e7a8b8a520dcedc22b8 Mon Sep 17 00:00:00 2001 From: juxuan27 Date: Mon, 12 Jun 2023 00:22:43 +0800 Subject: [PATCH 5/7] add vitpose-s vitpose-b rtmpose-l rtmpose-b rtmpose-s --- ...e_hrnet-w32_8xb24-300e_humanart-512x512.py | 159 ---------- ...d_hrnet-w32_8xb20-140e_humanart-512x512.py | 164 ---------- ...d_hrnet-w48_8xb20-140e_humanart-512x512.py | 164 ---------- ...r_hrnet-w32_8xb10-140e_humanart-512x512.py | 186 ------------ ...r_hrnet-w48_8xb10-140e_humanart-640x640.py | 187 ------------ .../ipr_res50_8xb64-210e_humanart-256x256.py | 134 --------- ...es50_debias-8xb64-210e_humanart-256x256.py | 136 --------- ..._res50_dsnt-8xb64-210e_humanart-256x256.py | 134 --------- configs/body_2d_keypoint/rtmpose/README.md | 18 ++ ...pose-l_8xb256-420e_aic-humanart-256x192.py | 272 ----------------- ...pose-l_8xb256-420e_aic-humanart-384x288.py | 272 ----------------- .../rtmpose-l_8xb256-420e_humanart-256x192.py | 4 +- ...pose-m_8xb256-420e_aic-humanart-256x192.py | 272 ----------------- ...pose-m_8xb256-420e_aic-humanart-384x288.py | 272 ----------------- .../rtmpose-m_8xb256-420e_humanart-256x192.py | 4 +- ...pose-s_8xb256-420e_aic-humanart-256x192.py | 272 ----------------- .../rtmpose-s_8xb256-420e_humanart-256x192.py | 4 +- ...pose-t_8xb256-420e_aic-humanart-256x192.py | 273 ----------------- .../rtmpose-t_8xb256-420e_humanart-256x192.py | 233 -------------- .../rtmpose/humanart/rtmpose_humanart.md | 110 +++++++ .../rtmpose/humanart/rtmpose_humanart.yml | 106 +++++++ ...2_wo-deconv-8xb64-210e_humanart-256x192.py | 124 -------- ...simcc_res50_8xb32-140e_humanart-384x288.py | 120 -------- ...simcc_res50_8xb64-210e_humanart-256x192.py | 114 ------- ...vipnas-mbv3_8xb64-210e_humanart-256x192.py | 119 -------- .../topdown_heatmap/README.md | 16 + ...-l_udp_8xb256-210e_aic-humanart-256x192.py | 284 ------------------ ...next-l_udp_8xb256-210e_humanart-256x192.py | 214 ------------- ...-m_udp_8xb256-210e_aic-humanart-256x192.py | 284 ------------------ ...next-m_udp_8xb256-210e_humanart-256x192.py | 214 ------------- ...-s_udp_8xb256-210e_aic-humanart-256x192.py | 284 ------------------ ...next-s_udp_8xb256-210e_humanart-256x192.py | 214 ------------- ...ny_udp_8xb256-210e_aic-humanart-256x192.py | 284 ------------------ ...t-tiny_udp_8xb256-210e_humanart-256x192.py | 214 ------------- .../humanart/hrnet_humanart.md | 44 --- ...hm_2xmspn50_8xb32-210e_humanart-256x192.py | 152 ---------- ...-hm_2xrsn50_8xb32-210e_humanart-256x192.py | 154 ---------- ...hm_3xmspn50_8xb32-210e_humanart-256x192.py | 152 ---------- ...-hm_3xrsn50_8xb32-210e_humanart-256x192.py | 154 ---------- ...hm_4xmspn50_8xb32-210e_humanart-256x192.py | 152 ---------- ...base-simple_8xb64-210e_humanart-256x192.py | 153 ---------- ...huge-simple_8xb64-210e_humanart-256x192.py | 153 ---------- ...iTPose-huge_8xb64-210e_humanart-256x192.py | 150 --------- ...arge-simple_8xb64-210e_humanart-256x192.py | 153 ---------- ...TPose-large_8xb64-210e_humanart-256x192.py | 150 --------- ...mall-simple_8xb64-210e_humanart-256x192.py | 158 ---------- ...-hm_alexnet_8xb64-210e_humanart-256x192.py | 117 -------- .../td-hm_cpm_8xb32-210e_humanart-384x288.py | 125 -------- .../td-hm_cpm_8xb64-210e_humanart-256x192.py | 125 -------- ...hourglass52_8xb32-210e_humanart-256x256.py | 122 -------- ...hourglass52_8xb32-210e_humanart-384x384.py | 122 -------- ...former-base_8xb32-210e_humanart-256x192.py | 174 ----------- ...former-base_8xb32-210e_humanart-384x288.py | 174 ----------- ...ormer-small_8xb32-210e_humanart-256x192.py | 174 ----------- ...ormer-small_8xb32-210e_humanart-384x288.py | 174 ----------- ...m_hrnet-w32_8xb64-210e_humanart-256x192.py | 150 --------- ...m_hrnet-w32_8xb64-210e_humanart-384x288.py | 150 --------- ...8xb64-210e_humanart-aic-256x192-combine.py | 221 -------------- ...2_8xb64-210e_humanart-aic-256x192-merge.py | 187 ------------ ...arsedropout-8xb64-210e_humanart-256x192.py | 165 ---------- ...et-w32_dark-8xb64-210e_humanart-256x192.py | 154 ---------- ...et-w32_dark-8xb64-210e_humanart-384x288.py | 154 ---------- ...et-w32_fp16-8xb64-210e_humanart-256x192.py | 7 - ...32_gridmask-8xb64-210e_humanart-256x192.py | 162 ---------- ...photometric-8xb64-210e_humanart-256x192.py | 153 ---------- ...net-w32_udp-8xb64-210e_humanart-256x192.py | 150 --------- ...net-w32_udp-8xb64-210e_humanart-384x288.py | 150 --------- ...udp-regress-8xb64-210e_humanart-256x192.py | 155 ---------- ...m_hrnet-w48_8xb32-210e_humanart-256x192.py | 150 --------- ...m_hrnet-w48_8xb32-210e_humanart-384x288.py | 150 --------- ...et-w48_dark-8xb32-210e_humanart-256x192.py | 154 ---------- ...et-w48_dark-8xb32-210e_humanart-384x288.py | 154 ---------- ...net-w48_udp-8xb32-210e_humanart-256x192.py | 150 --------- ...net-w48_udp-8xb32-210e_humanart-384x288.py | 150 --------- ...itehrnet-18_8xb32-210e_humanart-384x288.py | 140 --------- ...itehrnet-18_8xb64-210e_humanart-256x192.py | 140 --------- ...itehrnet-30_8xb32-210e_humanart-384x288.py | 140 --------- ...itehrnet-30_8xb64-210e_humanart-256x192.py | 140 --------- ...mobilenetv2_8xb64-210e_humanart-256x192.py | 124 -------- ...mobilenetv2_8xb64-210e_humanart-384x288.py | 124 -------- ...d-hm_mspn50_8xb32-210e_humanart-256x192.py | 152 ---------- ...td-hm_pvt-s_8xb64-210e_humanart-256x192.py | 127 -------- ...hm_pvtv2-b2_8xb64-210e_humanart-256x192.py | 128 -------- ...d-hm_res101_8xb32-210e_humanart-384x288.py | 121 -------- ...d-hm_res101_8xb64-210e_humanart-256x192.py | 121 -------- ...res101_dark-8xb64-210e_humanart-256x192.py | 125 -------- ...res101_dark-8xb64-210e_humanart-384x288.py | 125 -------- ...d-hm_res152_8xb32-210e_humanart-256x192.py | 121 -------- ...d-hm_res152_8xb32-210e_humanart-384x288.py | 121 -------- ...res152_dark-8xb32-210e_humanart-256x192.py | 125 -------- ...res152_dark-8xb32-210e_humanart-384x288.py | 126 -------- ...td-hm_res50_8xb64-210e_humanart-256x192.py | 121 -------- ...td-hm_res50_8xb64-210e_humanart-384x288.py | 121 -------- ..._res50_dark-8xb64-210e_humanart-256x192.py | 125 -------- ..._res50_dark-8xb64-210e_humanart-384x288.py | 125 -------- ..._res50_fp16-8xb64-210e_humanart-256x192.py | 7 - ..._resnest101_8xb32-210e_humanart-384x288.py | 121 -------- ..._resnest101_8xb64-210e_humanart-256x192.py | 121 -------- ..._resnest200_8xb16-210e_humanart-384x288.py | 121 -------- ..._resnest200_8xb64-210e_humanart-256x192.py | 121 -------- ..._resnest269_8xb16-210e_humanart-384x288.py | 121 -------- ..._resnest269_8xb32-210e_humanart-256x192.py | 121 -------- ...m_resnest50_8xb64-210e_humanart-256x192.py | 121 -------- ...m_resnest50_8xb64-210e_humanart-384x288.py | 121 -------- ...esnetv1d101_8xb32-210e_humanart-384x288.py | 121 -------- ...esnetv1d101_8xb64-210e_humanart-256x192.py | 121 -------- ...esnetv1d152_8xb32-210e_humanart-256x192.py | 121 -------- ...esnetv1d152_8xb48-210e_humanart-384x288.py | 121 -------- ...resnetv1d50_8xb64-210e_humanart-256x192.py | 121 -------- ...resnetv1d50_8xb64-210e_humanart-384x288.py | 121 -------- ..._resnext101_8xb32-210e_humanart-384x288.py | 122 -------- ..._resnext101_8xb64-210e_humanart-256x192.py | 122 -------- ..._resnext152_8xb32-210e_humanart-256x192.py | 122 -------- ..._resnext152_8xb48-210e_humanart-384x288.py | 122 -------- ...m_resnext50_8xb64-210e_humanart-256x192.py | 121 -------- ...m_resnext50_8xb64-210e_humanart-384x288.py | 121 -------- ...td-hm_rsn18_8xb32-210e_humanart-256x192.py | 154 ---------- ...td-hm_rsn50_8xb32-210e_humanart-256x192.py | 154 ---------- ...hm_scnet101_8xb32-210e_humanart-256x192.py | 124 -------- ...hm_scnet101_8xb48-210e_humanart-384x288.py | 124 -------- ...-hm_scnet50_8xb32-210e_humanart-384x288.py | 124 -------- ...-hm_scnet50_8xb64-210e_humanart-256x192.py | 124 -------- ...seresnet101_8xb32-210e_humanart-384x288.py | 121 -------- ...seresnet101_8xb64-210e_humanart-256x192.py | 121 -------- ...seresnet152_8xb32-210e_humanart-256x192.py | 120 -------- ...seresnet152_8xb48-210e_humanart-384x288.py | 120 -------- ..._seresnet50_8xb64-210e_humanart-256x192.py | 121 -------- ..._seresnet50_8xb64-210e_humanart-384x288.py | 121 -------- ...hufflenetv1_8xb64-210e_humanart-256x192.py | 121 -------- ...hufflenetv1_8xb64-210e_humanart-384x288.py | 121 -------- ...hufflenetv2_8xb64-210e_humanart-256x192.py | 121 -------- ...hufflenetv2_8xb64-210e_humanart-384x288.py | 121 -------- ...win-b-p4-w7_8xb32-210e_humanart-256x192.py | 139 --------- ...win-b-p4-w7_8xb32-210e_humanart-384x288.py | 139 --------- ...win-l-p4-w7_8xb32-210e_humanart-256x192.py | 148 --------- ...win-l-p4-w7_8xb32-210e_humanart-384x288.py | 148 --------- ...win-t-p4-w7_8xb32-210e_humanart-256x192.py | 139 --------- ...hm_vgg16-bn_8xb64-210e_humanart-256x192.py | 122 -------- ...vipnas-mbv3_8xb64-210e_humanart-256x192.py | 122 -------- ...ipnas-res50_8xb64-210e_humanart-256x192.py | 120 -------- .../humanart/vitpose_humanart.md | 85 ++++++ .../humanart/vitpose_humanart.yml | 79 +++++ ...-pretrained-8xb64-210e_humanart-256x192.py | 126 -------- ...-reg_res101_8xb64-210e_humanart-256x192.py | 120 -------- ..._res101_rle-8xb64-210e_humanart-256x192.py | 121 -------- ...-reg_res152_8xb64-210e_humanart-256x192.py | 120 -------- ..._res152_rle-8xb64-210e_humanart-256x192.py | 121 -------- ..._res152_rle-8xb64-210e_humanart-384x288.py | 121 -------- ...d-reg_res50_8xb64-210e_humanart-256x192.py | 120 -------- ...g_res50_rle-8xb64-210e_humanart-256x192.py | 121 -------- ...-pretrained-8xb64-210e_humanart-256x192.py | 125 -------- tools/dist_train.sh | 0 152 files changed, 420 insertions(+), 20810 deletions(-) delete mode 100644 configs/body_2d_keypoint/associative_embedding/humanart/ae_hrnet-w32_8xb24-300e_humanart-512x512.py delete mode 100644 configs/body_2d_keypoint/cid/humanart/cid_hrnet-w32_8xb20-140e_humanart-512x512.py delete mode 100644 configs/body_2d_keypoint/cid/humanart/cid_hrnet-w48_8xb20-140e_humanart-512x512.py delete mode 100644 configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w32_8xb10-140e_humanart-512x512.py delete mode 100644 configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w48_8xb10-140e_humanart-640x640.py delete mode 100644 configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_8xb64-210e_humanart-256x256.py delete mode 100644 configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_debias-8xb64-210e_humanart-256x256.py delete mode 100644 configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_dsnt-8xb64-210e_humanart-256x256.py delete mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_aic-humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_aic-humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose_humanart.md create mode 100644 configs/body_2d_keypoint/rtmpose/humanart/rtmpose_humanart.yml delete mode 100644 configs/body_2d_keypoint/simcc/humanart/simcc_mobilenetv2_wo-deconv-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb32-140e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/simcc/humanart/simcc_vipnas-mbv3_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_aic-humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_aic-humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_aic-humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_aic-humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/hrnet_humanart.md delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xmspn50_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xrsn50_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xmspn50_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xrsn50_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_4xmspn50_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base-simple_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge-simple_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large-simple_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small-simple_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_alexnet_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-256x256.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-384x384.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-combine.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-merge.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_coarsedropout-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_fp16-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_gridmask-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_photometric-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-regress-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mspn50_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvt-s_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvtv2-b2_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_fp16-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb16-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb16-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb48-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb48-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn18_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn50_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb48-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb48-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-t-p4-w7_8xb32-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vgg16-bn_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-mbv3_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-res50_8xb64-210e_humanart-256x192.py create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/vitpose_humanart.md create mode 100644 configs/body_2d_keypoint/topdown_heatmap/humanart/vitpose_humanart.yml delete mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_mobilenetv2_rle-pretrained-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_rle-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-384x288.py delete mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-8xb64-210e_humanart-256x192.py delete mode 100644 configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-pretrained-8xb64-210e_humanart-256x192.py mode change 100644 => 100755 tools/dist_train.sh diff --git a/configs/body_2d_keypoint/associative_embedding/humanart/ae_hrnet-w32_8xb24-300e_humanart-512x512.py b/configs/body_2d_keypoint/associative_embedding/humanart/ae_hrnet-w32_8xb24-300e_humanart-512x512.py deleted file mode 100644 index 53f474e2f4..0000000000 --- a/configs/body_2d_keypoint/associative_embedding/humanart/ae_hrnet-w32_8xb24-300e_humanart-512x512.py +++ /dev/null @@ -1,159 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=300, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=1.5e-3, -)) - -# 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=300, - milestones=[200, 260], - gamma=0.1, - by_epoch=True) -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=192) - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', interval=50)) - -# codec settings -codec = dict( - type='AssociativeEmbedding', - input_size=(512, 512), - heatmap_size=(128, 128), - sigma=2, - decode_keypoint_order=[ - 0, 1, 2, 3, 4, 5, 6, 11, 12, 7, 8, 9, 10, 13, 14, 15, 16 - ], - decode_max_instances=30) - -# model settings -model = dict( - type='BottomupPoseEstimator', - 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - head=dict( - type='AssociativeEmbeddingHead', - in_channels=32, - num_keypoints=17, - tag_dim=1, - tag_per_keypoint=True, - deconv_out_channels=None, - keypoint_loss=dict(type='KeypointMSELoss', use_target_weight=True), - tag_loss=dict(type='AssociativeEmbeddingLoss', loss_weight=0.001), - # The heatmap will be resized to the input size before decoding - # if ``restore_heatmap_size==True`` - decoder=dict(codec, heatmap_size=codec['input_size'])), - test_cfg=dict( - multiscale_test=False, - flip_test=True, - shift_heatmap=True, - restore_heatmap_size=True, - align_corners=False)) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'bottomup' -data_root = 'data/' - -# pipelines -train_pipeline = [] -val_pipeline = [ - dict(type='LoadImage'), - dict( - type='BottomupResize', - input_size=codec['input_size'], - size_factor=32, - resize_mode='expand'), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=24, - 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='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=1, - 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='HumanArt/annotations/validation_humanart.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - nms_mode='none', - score_mode='keypoint', -) -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w32_8xb20-140e_humanart-512x512.py b/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w32_8xb20-140e_humanart-512x512.py deleted file mode 100644 index 7150772111..0000000000 --- a/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w32_8xb20-140e_humanart-512x512.py +++ /dev/null @@ -1,164 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=140, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=1e-3, -)) - -# learning policy -param_scheduler = [ - dict( - type='MultiStepLR', - begin=0, - end=140, - milestones=[90, 120], - gamma=0.1, - by_epoch=True) -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=160) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='DecoupledHeatmap', input_size=(512, 512), heatmap_size=(128, 128)) - -# model settings -model = dict( - type='BottomupPoseEstimator', - 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256), - multiscale_output=True)), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - neck=dict( - type='FeatureMapProcessor', - concat=True, - ), - head=dict( - type='CIDHead', - in_channels=480, - num_keypoints=17, - gfd_channels=32, - coupled_heatmap_loss=dict(type='FocalHeatmapLoss', loss_weight=1.0), - decoupled_heatmap_loss=dict(type='FocalHeatmapLoss', loss_weight=4.0), - contrastive_loss=dict( - type='InfoNCELoss', temperature=0.05, loss_weight=1.0), - decoder=codec, - ), - train_cfg=dict(max_train_instances=200), - test_cfg=dict( - multiscale_test=False, - flip_test=True, - shift_heatmap=False, - align_corners=False)) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'bottomup' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='BottomupRandomAffine', input_size=codec['input_size']), - dict(type='RandomFlip', direction='horizontal'), - dict(type='GenerateTarget', encoder=codec), - dict(type='BottomupGetHeatmapMask'), - dict(type='PackPoseInputs'), -] -val_pipeline = [ - dict(type='LoadImage'), - dict( - type='BottomupResize', - input_size=codec['input_size'], - size_factor=64, - resize_mode='expand'), - dict( - type='PackPoseInputs', - meta_keys=('id', 'img_id', 'img_path', 'crowd_index', 'ori_shape', - 'img_shape', 'input_size', 'input_center', 'input_scale', - 'flip', 'flip_direction', 'flip_indices', 'raw_ann_info', - 'skeleton_links')) -] - -# data loaders -train_dataloader = dict( - batch_size=20, - 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='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=1, - num_workers=1, - 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='HumanArt/annotations/validation_humanart.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - nms_thr=0.8, - score_mode='keypoint', -) -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w48_8xb20-140e_humanart-512x512.py b/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w48_8xb20-140e_humanart-512x512.py deleted file mode 100644 index b8e61a3189..0000000000 --- a/configs/body_2d_keypoint/cid/humanart/cid_hrnet-w48_8xb20-140e_humanart-512x512.py +++ /dev/null @@ -1,164 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=140, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=1e-3, -)) - -# learning policy -param_scheduler = [ - dict( - type='MultiStepLR', - begin=0, - end=140, - milestones=[90, 120], - gamma=0.1, - by_epoch=True) -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=160) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='DecoupledHeatmap', input_size=(512, 512), heatmap_size=(128, 128)) - -# model settings -model = dict( - type='BottomupPoseEstimator', - 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=(48, 96)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(48, 96, 192)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(48, 96, 192, 384), - multiscale_output=True)), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w48-8ef0771d.pth'), - ), - neck=dict( - type='FeatureMapProcessor', - concat=True, - ), - head=dict( - type='CIDHead', - in_channels=720, - num_keypoints=17, - gfd_channels=48, - coupled_heatmap_loss=dict(type='FocalHeatmapLoss', loss_weight=1.0), - decoupled_heatmap_loss=dict(type='FocalHeatmapLoss', loss_weight=4.0), - contrastive_loss=dict( - type='InfoNCELoss', temperature=0.05, loss_weight=1.0), - decoder=codec, - ), - train_cfg=dict(max_train_instances=200), - test_cfg=dict( - multiscale_test=False, - flip_test=True, - shift_heatmap=False, - align_corners=False)) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'bottomup' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='BottomupRandomAffine', input_size=codec['input_size']), - dict(type='RandomFlip', direction='horizontal'), - dict(type='GenerateTarget', encoder=codec), - dict(type='BottomupGetHeatmapMask'), - dict(type='PackPoseInputs'), -] -val_pipeline = [ - dict(type='LoadImage'), - dict( - type='BottomupResize', - input_size=codec['input_size'], - size_factor=64, - resize_mode='expand'), - dict( - type='PackPoseInputs', - meta_keys=('id', 'img_id', 'img_path', 'crowd_index', 'ori_shape', - 'img_shape', 'input_size', 'input_center', 'input_scale', - 'flip', 'flip_direction', 'flip_indices', 'raw_ann_info', - 'skeleton_links')) -] - -# data loaders -train_dataloader = dict( - batch_size=20, - 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='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=1, - num_workers=1, - 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='HumanArt/annotations/validation_humanart.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - nms_thr=0.8, - score_mode='keypoint', -) -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w32_8xb10-140e_humanart-512x512.py b/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w32_8xb10-140e_humanart-512x512.py deleted file mode 100644 index 17e96ebdb2..0000000000 --- a/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w32_8xb10-140e_humanart-512x512.py +++ /dev/null @@ -1,186 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=140, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=1e-3, -)) - -# 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=140, - milestones=[90, 120], - gamma=0.1, - by_epoch=True) -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=80) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='SPR', - input_size=(512, 512), - heatmap_size=(128, 128), - sigma=(4, 2), - minimal_diagonal_length=32**0.5, - generate_keypoint_heatmaps=True, - decode_max_instances=30) - -# model settings -model = dict( - type='BottomupPoseEstimator', - 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256), - multiscale_output=True)), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - neck=dict( - type='FeatureMapProcessor', - concat=True, - ), - head=dict( - type='DEKRHead', - in_channels=480, - num_keypoints=17, - heatmap_loss=dict(type='KeypointMSELoss', use_target_weight=True), - displacement_loss=dict( - type='SoftWeightSmoothL1Loss', - use_target_weight=True, - supervise_empty=False, - beta=1 / 9, - loss_weight=0.002, - ), - decoder=codec, - rescore_cfg=dict( - in_channels=74, - norm_indexes=(5, 6), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/kpt_rescore_coco-33d58c5c.pth')), - ), - test_cfg=dict( - multiscale_test=False, - flip_test=True, - nms_dist_thr=0.05, - shift_heatmap=True, - align_corners=False)) - -# enable DDP training when rescore net is used -find_unused_parameters = True - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'bottomup' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='BottomupRandomAffine', input_size=codec['input_size']), - dict(type='RandomFlip', direction='horizontal'), - dict(type='GenerateTarget', encoder=codec), - dict(type='BottomupGetHeatmapMask'), - dict(type='PackPoseInputs'), -] -val_pipeline = [ - dict(type='LoadImage'), - dict( - type='BottomupResize', - input_size=codec['input_size'], - size_factor=32, - resize_mode='expand'), - dict( - type='PackPoseInputs', - meta_keys=('id', 'img_id', 'img_path', 'crowd_index', 'ori_shape', - 'img_shape', 'input_size', 'input_center', 'input_scale', - 'flip', 'flip_direction', 'flip_indices', 'raw_ann_info', - 'skeleton_links')) -] - -# data loaders -train_dataloader = dict( - batch_size=10, - 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='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=1, - num_workers=1, - 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='HumanArt/annotations/validation_humanart.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - nms_mode='none', - score_mode='keypoint', -) -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w48_8xb10-140e_humanart-640x640.py b/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w48_8xb10-140e_humanart-640x640.py deleted file mode 100644 index c1b4df97de..0000000000 --- a/configs/body_2d_keypoint/dekr/humanart/dekr_hrnet-w48_8xb10-140e_humanart-640x640.py +++ /dev/null @@ -1,187 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=140, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=1e-3, -)) - -# 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=140, - milestones=[90, 120], - gamma=0.1, - by_epoch=True) -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=80) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='SPR', - input_size=(640, 640), - heatmap_size=(160, 160), - sigma=(4, 2), - minimal_diagonal_length=32**0.5, - generate_keypoint_heatmaps=True, - decode_max_instances=30) - -# model settings -model = dict( - type='BottomupPoseEstimator', - 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=(48, 96)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(48, 96, 192)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(48, 96, 192, 384), - multiscale_output=True)), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w48-8ef0771d.pth'), - ), - neck=dict( - type='FeatureMapProcessor', - concat=True, - ), - head=dict( - type='DEKRHead', - in_channels=720, - num_keypoints=17, - num_heatmap_filters=48, - heatmap_loss=dict(type='KeypointMSELoss', use_target_weight=True), - displacement_loss=dict( - type='SoftWeightSmoothL1Loss', - use_target_weight=True, - supervise_empty=False, - beta=1 / 9, - loss_weight=0.002, - ), - decoder=codec, - rescore_cfg=dict( - in_channels=74, - norm_indexes=(5, 6), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/kpt_rescore_coco-33d58c5c.pth')), - ), - test_cfg=dict( - multiscale_test=False, - flip_test=True, - nms_dist_thr=0.05, - shift_heatmap=True, - align_corners=False)) - -# enable DDP training when rescore net is used -find_unused_parameters = True - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'bottomup' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='BottomupRandomAffine', input_size=codec['input_size']), - dict(type='RandomFlip', direction='horizontal'), - dict(type='GenerateTarget', encoder=codec), - dict(type='BottomupGetHeatmapMask'), - dict(type='PackPoseInputs'), -] -val_pipeline = [ - dict(type='LoadImage'), - dict( - type='BottomupResize', - input_size=codec['input_size'], - size_factor=32, - resize_mode='expand'), - dict( - type='PackPoseInputs', - meta_keys=('id', 'img_id', 'img_path', 'crowd_index', 'ori_shape', - 'img_shape', 'input_size', 'input_center', 'input_scale', - 'flip', 'flip_direction', 'flip_indices', 'raw_ann_info', - 'skeleton_links')) -] - -# data loaders -train_dataloader = dict( - batch_size=10, - 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='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=1, - num_workers=1, - 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='HumanArt/annotations/validation_humanart.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - nms_mode='none', - score_mode='keypoint', -) -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_8xb64-210e_humanart-256x256.py b/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_8xb64-210e_humanart-256x256.py deleted file mode 100644 index 85368b20be..0000000000 --- a/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_8xb64-210e_humanart-256x256.py +++ /dev/null @@ -1,134 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict( - type='IntegralRegressionLabel', - input_size=(256, 256), - heatmap_size=(64, 64), - sigma=2.0, - normalize=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='ResNet', - depth=50, - ), - head=dict( - type='DSNTHead', - in_channels=2048, - in_featuremap_size=(8, 8), - num_joints=17, - loss=dict( - type='MultipleLossWrapper', - losses=[ - dict(type='SmoothL1Loss', use_target_weight=True), - dict(type='KeypointMSELoss', use_target_weight=True) - ]), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - shift_heatmap=True, - ), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/td-hm_res50_8xb64-210e_coco-256x192.pth')) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -test_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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=test_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=f'{data_root}HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_debias-8xb64-210e_humanart-256x256.py b/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_debias-8xb64-210e_humanart-256x256.py deleted file mode 100644 index 7ed6122914..0000000000 --- a/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_debias-8xb64-210e_humanart-256x256.py +++ /dev/null @@ -1,136 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict( - type='IntegralRegressionLabel', - input_size=(256, 256), - heatmap_size=(64, 64), - sigma=2.0, - normalize=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='ResNet', - depth=50, - ), - head=dict( - type='DSNTHead', - in_channels=2048, - in_featuremap_size=(8, 8), - num_joints=17, - debias=True, - beta=10., - loss=dict( - type='MultipleLossWrapper', - losses=[ - dict(type='SmoothL1Loss', use_target_weight=True), - dict(type='JSDiscretLoss', use_target_weight=True) - ]), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - shift_heatmap=True, - ), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/td-hm_res50_8xb64-210e_coco-256x192.pth')) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -test_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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=test_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=f'{data_root}HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_dsnt-8xb64-210e_humanart-256x256.py b/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_dsnt-8xb64-210e_humanart-256x256.py deleted file mode 100644 index 5078e5ee12..0000000000 --- a/configs/body_2d_keypoint/integral_regression/humanart/ipr_res50_dsnt-8xb64-210e_humanart-256x256.py +++ /dev/null @@ -1,134 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict( - type='IntegralRegressionLabel', - input_size=(256, 256), - heatmap_size=(64, 64), - sigma=2.0, - normalize=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='ResNet', - depth=50, - ), - head=dict( - type='DSNTHead', - in_channels=2048, - in_featuremap_size=(8, 8), - num_joints=17, - loss=dict( - type='MultipleLossWrapper', - losses=[ - dict(type='SmoothL1Loss', use_target_weight=True), - dict(type='JSDiscretLoss', use_target_weight=True) - ]), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - shift_heatmap=True, - ), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/td-hm_res50_8xb64-210e_coco-256x192.pth')) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -test_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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=test_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=f'{data_root}HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/README.md b/configs/body_2d_keypoint/rtmpose/README.md index 3037974917..38fd938376 100644 --- a/configs/body_2d_keypoint/rtmpose/README.md +++ b/configs/body_2d_keypoint/rtmpose/README.md @@ -37,3 +37,21 @@ Results on CrowdPose test with [YOLOv3](https://github.com/eriklindernoren/PyTor | Model | Input Size | AP | AR | Details and Download | | :-------: | :--------: | :---: | :---: | :------------------------------------------------------: | | RTMPose-m | 256x192 | 0.706 | 0.788 | [rtmpose_crowdpose.md](./crowdpose/rtmpose_crowdpose.md) | + +### Human-Art Dataset + +Results on Human-Art validation dataset with detector having human AP of 56.2 on Human-Art validation dataset + +| Model | Input Size | AP | AR | Details and Download | +| :-------: | :--------: | :---: | :---: | :---------------------------------------------------: | +| RTMPose-s | 256x192 | 0.311 | 0.381 | [rtmpose_humanart.md](./humanart/rtmpose_humanart.md) | +| RTMPose-m | 256x192 | 0.355 | 0.417 | [rtmpose_humanart.md](./humanart/rtmpose_humanart.md) | +| RTMPose-l | 256x192 | 0.378 | 0.442 | [rtmpose_humanart.md](./humanart/rtmpose_humanart.md) | + +Results on Human-Art validation dataset with ground-truth bounding-box + +| Model | Input Size | AP | AR | Details and Download | +| :-------: | :--------: | :---: | :---: | :---------------------------------------------------: | +| RTMPose-s | 256x192 | 0.698 | 0.732 | [rtmpose_humanart.md](./humanart/rtmpose_humanart.md) | +| RTMPose-m | 256x192 | 0.728 | 0.759 | [rtmpose_humanart.md](./humanart/rtmpose_humanart.md) | +| RTMPose-l | 256x192 | 0.753 | 0.783 | [rtmpose_humanart.md](./humanart/rtmpose_humanart.md) | diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-256x192.py deleted file mode 100644 index 3eb94c1ed2..0000000000 --- a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-256x192.py +++ /dev/null @@ -1,272 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 420 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 210 to 420 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='SimCCLabel', - input_size=(192, 256), - sigma=(4.9, 5.66), - simcc_split_ratio=2.0, - normalize=False, - use_dark=False) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=1., - widen_factor=1., - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' - 'rtmpose/cspnext-l_udp-aic-coco_210e-256x192-273b7631_20230130.pth' # noqa - )), - head=dict( - type='RTMCCHead', - in_channels=1024, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(6, 8), - simcc_split_ratio=codec['simcc_split_ratio'], - final_layer_kernel_size=7, - gau_cfg=dict( - hidden_dims=256, - s=128, - expansion_factor=2, - dropout_rate=0., - drop_path=0., - act_fn='SiLU', - use_rel_bias=False, - pos_enc=False), - loss=dict( - type='KLDiscretLoss', - use_target_weight=True, - beta=10., - label_softmax=True), - decoder=codec), - test_cfg=dict(flip_test=True, )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/', -# f'{data_root}': 's3://openmmlab/datasets/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.0), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# train datasets -dataset_humanart = dict( - type='RepeatDataset', - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[], - ), - times=3) - -dataset_aic = dict( - type='AicDataset', - data_root=data_root, - data_mode=data_mode, - ann_file='aic/annotations/aic_train.json', - data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' - '_train_20170902/keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=17, - mapping=[ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - ]) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-384x288.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-384x288.py deleted file mode 100644 index ace553e1f8..0000000000 --- a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_aic-humanart-384x288.py +++ /dev/null @@ -1,272 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 420 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 210 to 420 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='SimCCLabel', - input_size=(288, 384), - sigma=(6., 6.93), - simcc_split_ratio=2.0, - normalize=False, - use_dark=False) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=1., - widen_factor=1., - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' - 'rtmpose/cspnext-l_udp-aic-coco_210e-256x192-273b7631_20230130.pth' # noqa - )), - head=dict( - type='RTMCCHead', - in_channels=1024, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(9, 12), - simcc_split_ratio=codec['simcc_split_ratio'], - final_layer_kernel_size=7, - gau_cfg=dict( - hidden_dims=256, - s=128, - expansion_factor=2, - dropout_rate=0., - drop_path=0., - act_fn='SiLU', - use_rel_bias=False, - pos_enc=False), - loss=dict( - type='KLDiscretLoss', - use_target_weight=True, - beta=10., - label_softmax=True), - decoder=codec), - test_cfg=dict(flip_test=True, )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/', -# f'{data_root}': 's3://openmmlab/datasets/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.0), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# train datasets -dataset_humanart = dict( - type='RepeatDataset', - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[], - ), - times=3) - -dataset_aic = dict( - type='AicDataset', - data_root=data_root, - data_mode=data_mode, - ann_file='aic/annotations/aic_train.json', - data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' - '_train_20170902/keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=17, - mapping=[ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - ]) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py index 60586f584a..384a712d95 100644 --- a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py @@ -200,8 +200,8 @@ data_root=data_root, data_mode=data_mode, ann_file='HumanArt/annotations/validation_humanart.json', - # bbox_file=f'{data_root}person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', + # bbox_file=f'{data_root}HumanArt/person_detection_results/' + # 'HumanArt_validation_detections_AP_H_56_person.json', data_prefix=dict(img=''), test_mode=True, pipeline=val_pipeline, diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-256x192.py deleted file mode 100644 index d1d3e3086f..0000000000 --- a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-256x192.py +++ /dev/null @@ -1,272 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 420 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 210 to 420 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='SimCCLabel', - input_size=(192, 256), - sigma=(4.9, 5.66), - simcc_split_ratio=2.0, - normalize=False, - use_dark=False) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.67, - widen_factor=0.75, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' - 'rtmpose/cspnext-m_udp-aic-coco_210e-256x192-f2f7d6f6_20230130.pth' # noqa - )), - head=dict( - type='RTMCCHead', - in_channels=768, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(6, 8), - simcc_split_ratio=codec['simcc_split_ratio'], - final_layer_kernel_size=7, - gau_cfg=dict( - hidden_dims=256, - s=128, - expansion_factor=2, - dropout_rate=0., - drop_path=0., - act_fn='SiLU', - use_rel_bias=False, - pos_enc=False), - loss=dict( - type='KLDiscretLoss', - use_target_weight=True, - beta=10., - label_softmax=True), - decoder=codec), - test_cfg=dict(flip_test=True, )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/', -# f'{data_root}': 's3://openmmlab/datasets/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.0), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# train datasets -dataset_humanart = dict( - type='RepeatDataset', - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[], - ), - times=3) - -dataset_aic = dict( - type='AicDataset', - data_root=data_root, - data_mode=data_mode, - ann_file='aic/annotations/aic_train.json', - data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' - '_train_20170902/keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=17, - mapping=[ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - ]) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=128 * 2, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-384x288.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-384x288.py deleted file mode 100644 index 22ebbd7b45..0000000000 --- a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_aic-humanart-384x288.py +++ /dev/null @@ -1,272 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 420 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 210 to 420 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='SimCCLabel', - input_size=(288, 384), - sigma=(6., 6.93), - simcc_split_ratio=2.0, - normalize=False, - use_dark=False) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.67, - widen_factor=0.75, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' - 'rtmpose/cspnext-m_udp-aic-coco_210e-256x192-f2f7d6f6_20230130.pth' # noqa - )), - head=dict( - type='RTMCCHead', - in_channels=768, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(9, 12), - simcc_split_ratio=codec['simcc_split_ratio'], - final_layer_kernel_size=7, - gau_cfg=dict( - hidden_dims=256, - s=128, - expansion_factor=2, - dropout_rate=0., - drop_path=0., - act_fn='SiLU', - use_rel_bias=False, - pos_enc=False), - loss=dict( - type='KLDiscretLoss', - use_target_weight=True, - beta=10., - label_softmax=True), - decoder=codec), - test_cfg=dict(flip_test=True, )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/', -# f'{data_root}': 's3://openmmlab/datasets/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.0), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# train datasets -dataset_humanart = dict( - type='RepeatDataset', - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[], - ), - times=3) - -dataset_aic = dict( - type='AicDataset', - data_root=data_root, - data_mode=data_mode, - ann_file='aic/annotations/aic_train.json', - data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' - '_train_20170902/keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=17, - mapping=[ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - ]) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=128 * 2, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py index b4b96baebf..30178cbb6d 100644 --- a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py @@ -200,8 +200,8 @@ data_root=data_root, data_mode=data_mode, ann_file='HumanArt/annotations/validation_humanart.json', - # bbox_file=f'{data_root}person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', + # bbox_file=f'{data_root}HumanArt/person_detection_results/' + # 'HumanArt_validation_detections_AP_H_56_person.json', data_prefix=dict(img=''), test_mode=True, pipeline=val_pipeline, diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_aic-humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_aic-humanart-256x192.py deleted file mode 100644 index 3aad883095..0000000000 --- a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_aic-humanart-256x192.py +++ /dev/null @@ -1,272 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 420 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.0), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 210 to 420 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='SimCCLabel', - input_size=(192, 256), - sigma=(4.9, 5.66), - simcc_split_ratio=2.0, - normalize=False, - use_dark=False) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.33, - widen_factor=0.5, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' - 'rtmpose/cspnext-s_udp-aic-coco_210e-256x192-92f5a029_20230130.pth' # noqa - )), - head=dict( - type='RTMCCHead', - in_channels=512, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(6, 8), - simcc_split_ratio=codec['simcc_split_ratio'], - final_layer_kernel_size=7, - gau_cfg=dict( - hidden_dims=256, - s=128, - expansion_factor=2, - dropout_rate=0., - drop_path=0., - act_fn='SiLU', - use_rel_bias=False, - pos_enc=False), - loss=dict( - type='KLDiscretLoss', - use_target_weight=True, - beta=10., - label_softmax=True), - decoder=codec), - test_cfg=dict(flip_test=True, )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/', -# f'{data_root}': 's3://openmmlab/datasets/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.0), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# train datasets -dataset_humanart = dict( - type='RepeatDataset', - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[], - ), - times=3) - -dataset_aic = dict( - type='AicDataset', - data_root=data_root, - data_mode=data_mode, - ann_file='aic/annotations/aic_train.json', - data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' - '_train_20170902/keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=17, - mapping=[ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - ]) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=128 * 2, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py index 3f5c37fee7..b4263f25e7 100644 --- a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py @@ -200,8 +200,8 @@ data_root=data_root, data_mode=data_mode, ann_file='HumanArt/annotations/validation_humanart.json', - # bbox_file=f'{data_root}person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', + # bbox_file=f'{data_root}HumanArt/person_detection_results/' + # 'HumanArt_validation_detections_AP_H_56_person.json', data_prefix=dict(img=''), test_mode=True, pipeline=val_pipeline, diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_aic-humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_aic-humanart-256x192.py deleted file mode 100644 index e12f2b456a..0000000000 --- a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_aic-humanart-256x192.py +++ /dev/null @@ -1,273 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 420 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 210 to 420 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='SimCCLabel', - input_size=(192, 256), - sigma=(4.9, 5.66), - simcc_split_ratio=2.0, - normalize=False, - use_dark=False) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.167, - widen_factor=0.375, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' - 'rtmpose/cspnext-tiny_udp-aic-coco_210e-256x192-cbed682d_20230130.pth' # noqa - )), - head=dict( - type='RTMCCHead', - in_channels=384, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(6, 8), - simcc_split_ratio=codec['simcc_split_ratio'], - final_layer_kernel_size=7, - gau_cfg=dict( - hidden_dims=256, - s=128, - expansion_factor=2, - dropout_rate=0., - drop_path=0., - act_fn='SiLU', - use_rel_bias=False, - pos_enc=False), - loss=dict( - type='KLDiscretLoss', - use_target_weight=True, - beta=10., - label_softmax=True), - decoder=codec), - test_cfg=dict(flip_test=True, )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/', -# f'{data_root}': 's3://openmmlab/datasets/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.0), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# train datasets -dataset_humanart = dict( - type='RepeatDataset', - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[], - ), - times=3) - -dataset_aic = dict( - type='AicDataset', - data_root=data_root, - data_mode=data_mode, - ann_file='aic/annotations/aic_train.json', - data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' - '_train_20170902/keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=17, - mapping=[ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - ]) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - # Turn off EMA while training the tiny model - # dict( - # type='EMAHook', - # ema_type='ExpMomentumEMA', - # momentum=0.0002, - # update_buffers=True, - # priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_humanart-256x192.py b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_humanart-256x192.py deleted file mode 100644 index 273532aae4..0000000000 --- a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-t_8xb256-420e_humanart-256x192.py +++ /dev/null @@ -1,233 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 420 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 210 to 420 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='SimCCLabel', - input_size=(192, 256), - sigma=(4.9, 5.66), - simcc_split_ratio=2.0, - normalize=False, - use_dark=False) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.167, - widen_factor=0.375, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/v1/projects/' - 'rtmpose/cspnext-tiny_udp-aic-coco_210e-256x192-cbed682d_20230130.pth' # noqa - )), - head=dict( - type='RTMCCHead', - in_channels=384, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(6, 8), - simcc_split_ratio=codec['simcc_split_ratio'], - final_layer_kernel_size=7, - gau_cfg=dict( - hidden_dims=256, - s=128, - expansion_factor=2, - dropout_rate=0., - drop_path=0., - act_fn='SiLU', - use_rel_bias=False, - pos_enc=False), - loss=dict( - type='KLDiscretLoss', - use_target_weight=True, - beta=10., - label_softmax=True), - decoder=codec), - test_cfg=dict(flip_test=True)) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', -# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file=f'{data_root}person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - # Turn off EMA while training the tiny model - # dict( - # type='EMAHook', - # ema_type='ExpMomentumEMA', - # momentum=0.0002, - # update_buffers=True, - # priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose_humanart.md b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose_humanart.md new file mode 100644 index 0000000000..bfd925b2c8 --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose_humanart.md @@ -0,0 +1,110 @@ + + +

+RTMPose (arXiv'2023) + +```bibtex +@misc{https://doi.org/10.48550/arxiv.2303.07399, + doi = {10.48550/ARXIV.2303.07399}, + url = {https://arxiv.org/abs/2303.07399}, + author = {Jiang, Tao and Lu, Peng and Zhang, Li and Ma, Ningsheng and Han, Rui and Lyu, Chengqi and Li, Yining and Chen, Kai}, + keywords = {Computer Vision and Pattern Recognition (cs.CV), FOS: Computer and information sciences, FOS: Computer and information sciences}, + title = {RTMPose: Real-Time Multi-Person Pose Estimation based on MMPose}, + publisher = {arXiv}, + year = {2023}, + copyright = {Creative Commons Attribution 4.0 International} +} + +``` + +
+ + + +
+RTMDet (arXiv'2022) + +```bibtex +@misc{lyu2022rtmdet, + title={RTMDet: An Empirical Study of Designing Real-Time Object Detectors}, + author={Chengqi Lyu and Wenwei Zhang and Haian Huang and Yue Zhou and Yudong Wang and Yanyi Liu and Shilong Zhang and Kai Chen}, + year={2022}, + eprint={2212.07784}, + archivePrefix={arXiv}, + primaryClass={cs.CV} +} +``` + +
+ + + +
+COCO (ECCV'2014) + +```bibtex +@inproceedings{lin2014microsoft, + title={Microsoft coco: Common objects in context}, + author={Lin, Tsung-Yi and Maire, Michael and Belongie, Serge and Hays, James and Perona, Pietro and Ramanan, Deva and Doll{\'a}r, Piotr and Zitnick, C Lawrence}, + booktitle={European conference on computer vision}, + pages={740--755}, + year={2014}, + organization={Springer} +} +``` + +
+ +
+Human-Art (CVPR'2023) + +```bibtex +@inproceedings{ju2023humanart, + title={Human-Art: A Versatile Human-Centric Dataset Bridging Natural and Artificial Scenes}, + author={Ju, Xuan and Zeng, Ailing and Jianan, Wang and Qiang, Xu and Lei, Zhang}, + booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), + year={2023}} +``` + +
+ +Results on Human-Art validation dataset with detector having human AP of 56.2 on Human-Art validation dataset + +| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | +| :-------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------: | :-------------------------------------------: | +| [rtmpose-s-coco](/configs/body_2d_keypoint/rtmpose/coco/rtmpose-s_8xb256-420e_coco-256x192.py) | 256x192 | 0.199 | 0.328 | 0.198 | 0.261 | 0.418 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_simcc-coco_pt-aic-coco_420e-256x192-8edcf0d7_20230127.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_simcc-coco_pt-aic-coco_420e-256x192-8edcf0d7_20230127.json) | +| [rtmpose-s-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py) | 256x192 | 0.311 | 0.462 | 0.323 | 0.381 | 0.540 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_8xb256-420e_humanart-256x192-5a3ac943_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_8xb256-420e_humanart-256x192-5a3ac943_20230611.json) | +| [rtmpose-m-coco](/configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_coco-256x192.py) | 256x192 | 0.239 | 0.372 | 0.243 | 0.302 | 0.455 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-coco_pt-aic-coco_420e-256x192-d8dd5ca4_20230127.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-coco_pt-aic-coco_420e-256x192-d8dd5ca4_20230127.json) | +| [rtmpose-m-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py) | 256x192 | 0.355 | 0.503 | 0.377 | 0.417 | 0.568 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_8xb256-420e_humanart-256x192-8430627b_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_8xb256-420e_humanart-256x192-8430627b_20230611.json) | +| [rtmpose-l-coco](/configs/body_2d_keypoint/rtmpose/coco/rtmpose-l_8xb256-420e_coco-256x192.py) | 256x192 | 0.260 | 0.393 | 0.267 | 0.323 | 0.472 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_simcc-coco_pt-aic-coco_420e-256x192-1352a4d2_20230127.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_simcc-coco_pt-aic-coco_420e-256x192-1352a4d2_20230127.json) | +| [rtmpose-l-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py) | 256x192 | 0.378 | 0.521 | 0.399 | 0.442 | 0.584 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_8xb256-420e_humanart-256x192-389f2cb0_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_8xb256-420e_humanart-256x192-389f2cb0_20230611.json) | + +Results on Human-Art validation dataset with ground-truth bounding-box + +| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | +| :-------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------: | :-------------------------------------------: | +| [rtmpose-s-coco](/configs/body_2d_keypoint/rtmpose/coco/rtmpose-s_8xb256-420e_coco-256x192.py) | 256x192 | 0.480 | 0.739 | 0.498 | 0.521 | 0.763 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_simcc-coco_pt-aic-coco_420e-256x192-8edcf0d7_20230127.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_simcc-coco_pt-aic-coco_420e-256x192-8edcf0d7_20230127.json) | +| [rtmpose-s-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py) | 256x192 | 0.698 | 0.893 | 0.768 | 0.732 | 0.903 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_8xb256-420e_humanart-256x192-5a3ac943_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_8xb256-420e_humanart-256x192-5a3ac943_20230611.json) | +| [rtmpose-m-coco](/configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_coco-256x192.py) | 256x192 | 0.532 | 0.765 | 0.563 | 0.571 | 0.789 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-coco_pt-aic-coco_420e-256x192-d8dd5ca4_20230127.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-coco_pt-aic-coco_420e-256x192-d8dd5ca4_20230127.json) | +| [rtmpose-m-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py) | 256x192 | 0.728 | 0.895 | 0.791 | 0.759 | 0.906 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_8xb256-420e_humanart-256x192-8430627b_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_8xb256-420e_humanart-256x192-8430627b_20230611.json) | +| [rtmpose-l-coco](/configs/body_2d_keypoint/rtmpose/coco/rtmpose-l_8xb256-420e_coco-256x192.py) | 256x192 | 0.564 | 0.789 | 0.602 | 0.599 | 0.808 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_simcc-coco_pt-aic-coco_420e-256x192-1352a4d2_20230127.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_simcc-coco_pt-aic-coco_420e-256x192-1352a4d2_20230127.json) | +| [rtmpose-l-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py) | 256x192 | 0.753 | 0.905 | 0.812 | 0.783 | 0.915 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_8xb256-420e_humanart-256x192-389f2cb0_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_8xb256-420e_humanart-256x192-389f2cb0_20230611.json) | + +Results on COCO val2017 with detector having human AP of 56.4 on COCO val2017 dataset + +| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | +| :-------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------: | :-------------------------------------------: | +| [rtmpose-s-coco](/configs/body_2d_keypoint/rtmpose/coco/rtmpose-s_8xb256-420e_coco-256x192.py) | 256x192 | 0.716 | 0.892 | 0.789 | 0.768 | 0.929 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_simcc-coco_pt-aic-coco_420e-256x192-8edcf0d7_20230127.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_simcc-coco_pt-aic-coco_420e-256x192-8edcf0d7_20230127.json) | +| [rtmpose-s-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py) | 256x192 | 0.706 | 0.888 | 0.780 | 0.759 | 0.928 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_8xb256-420e_humanart-256x192-5a3ac943_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_8xb256-420e_humanart-256x192-5a3ac943_20230611.json) | +| [rtmpose-m-coco](/configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_coco-256x192.py) | 256x192 | 0.746 | 0.899 | 0.817 | 0.795 | 0.935 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-coco_pt-aic-coco_420e-256x192-d8dd5ca4_20230127.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-coco_pt-aic-coco_420e-256x192-d8dd5ca4_20230127.json) | +| [rtmpose-m-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py) | 256x192 | 0.725 | 0.892 | 0.795 | 0.775 | 0.929 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_8xb256-420e_humanart-256x192-8430627b_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_8xb256-420e_humanart-256x192-8430627b_20230611.json) | +| [rtmpose-l-coco](/configs/body_2d_keypoint/rtmpose/coco/rtmpose-l_8xb256-420e_coco-256x192.py) | 256x192 | 0.758 | 0.906 | 0.826 | 0.806 | 0.942 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_simcc-coco_pt-aic-coco_420e-256x192-1352a4d2_20230127.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_simcc-coco_pt-aic-coco_420e-256x192-1352a4d2_20230127.json) | +| [rtmpose-l-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py) | 256x192 | 0.748 | 0.901 | 0.816 | 0.796 | 0.938 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_8xb256-420e_humanart-256x192-389f2cb0_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_8xb256-420e_humanart-256x192-389f2cb0_20230611.json) | + +Results on COCO val2017 with ground-truth bounding box + +| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | +| :-------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------: | :-------------------------------------------: | +| [rtmpose-s-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py) | 256x192 | 0.725 | 0.916 | 0.798 | 0.753 | 0.925 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_8xb256-420e_humanart-256x192-5a3ac943_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_8xb256-420e_humanart-256x192-5a3ac943_20230611.json) | +| [rtmpose-m-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py) | 256x192 | 0.744 | 0.916 | 0.818 | 0.770 | 0.930 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_8xb256-420e_humanart-256x192-8430627b_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_8xb256-420e_humanart-256x192-8430627b_20230611.json) | +| [rtmpose-l-humanart-coco](/configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py) | 256x192 | 0.770 | 0.927 | 0.840 | 0.794 | 0.939 | [ckpt](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_8xb256-420e_humanart-256x192-389f2cb0_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_8xb256-420e_humanart-256x192-389f2cb0_20230611.json) | diff --git a/configs/body_2d_keypoint/rtmpose/humanart/rtmpose_humanart.yml b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose_humanart.yml new file mode 100644 index 0000000000..f0f21b2d6f --- /dev/null +++ b/configs/body_2d_keypoint/rtmpose/humanart/rtmpose_humanart.yml @@ -0,0 +1,106 @@ +Collections: +- Name: RTMPose + Paper: + Title: "RTMPose: Real-Time Multi-Person Pose Estimation based on MMPose" + URL: https://arxiv.org/abs/2303.07399 + README: https://github.com/open-mmlab/mmpose/blob/main/projects/rtmpose/README.md +Models: +- Config: configs/body_2d_keypoint/rtmpose/humanart/rtmpose-l_8xb256-420e_humanart-256x192.py + In Collection: RTMPose + Metadata: + Architecture: &id001 + - RTMPose + Training Data: &id002 + - COCO + - Human-Art + Name: rtmpose-l_8xb256-420e_humanart-256x192 + Results: + - Dataset: COCO + Metrics: + AP: 0.748 + AP@0.5: 0.901 + AP@0.75: 0.816 + AR: 0.796 + AR@0.5: 0.938 + Task: Body 2D Keypoint + - Dataset: Human-Art + Metrics: + AP: 0.378 + AP@0.5: 0.521 + AP@0.75: 0.399 + AR: 0.442 + AR@0.5: 0.584 + Task: Body 2D Keypoint + - Dataset: Human-Art(GT) + Metrics: + AP: 0.753 + AP@0.5: 0.905 + AP@0.75: 0.812 + AR: 0.783 + AR@0.5: 0.915 + Task: Body 2D Keypoint + Weights: https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-l_8xb256-420e_humanart-256x192-389f2cb0_20230611.pth +- Config: configs/body_2d_keypoint/rtmpose/humanart/rtmpose-m_8xb256-420e_humanart-256x192.py + In Collection: RTMPose + Metadata: + Architecture: *id001 + Training Data: *id002 + Name: rtmpose-m_8xb256-420e_humanart-256x192 + Results: + - Dataset: COCO + Metrics: + AP: 0.725 + AP@0.5: 0.892 + AP@0.75: 0.795 + AR: 0.775 + AR@0.5: 0.929 + Task: Body 2D Keypoint + - Dataset: Human-Art + Metrics: + AP: 0.355 + AP@0.5: 0.503 + AP@0.75: 0.377 + AR: 0.417 + AR@0.5: 0.568 + Task: Body 2D Keypoint + - Dataset: Human-Art(GT) + Metrics: + AP: 0.728 + AP@0.5: 0.895 + AP@0.75: 0.791 + AR: 0.759 + AR@0.5: 0.906 + Task: Body 2D Keypoint + Weights: https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_8xb256-420e_humanart-256x192-8430627b_20230611.pth +- Config: configs/body_2d_keypoint/rtmpose/humanart/rtmpose-s_8xb256-420e_humanart-256x192.py + In Collection: RTMPose + Metadata: + Architecture: *id001 + Training Data: *id002 + Name: rtmpose-s_8xb256-420e_humanart-256x192 + Results: + - Dataset: COCO + Metrics: + AP: 0.706 + AP@0.5: 0.888 + AP@0.75: 0.780 + AR: 0.759 + AR@0.5: 0.928 + Task: Body 2D Keypoint + - Dataset: Human-Art + Metrics: + AP: 0.311 + AP@0.5: 0.462 + AP@0.75: 0.323 + AR: 0.381 + AR@0.5: 0.540 + Task: Body 2D Keypoint + - Dataset: Human-Art(GT) + Metrics: + AP: 0.698 + AP@0.5: 0.893 + AP@0.75: 0.768 + AR: 0.732 + AR@0.5: 0.903 + Task: Body 2D Keypoint + Weights: https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-s_8xb256-420e_humanart-256x192-5a3ac943_20230611.pth diff --git a/configs/body_2d_keypoint/simcc/humanart/simcc_mobilenetv2_wo-deconv-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/simcc/humanart/simcc_mobilenetv2_wo-deconv-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 6650f03ad8..0000000000 --- a/configs/body_2d_keypoint/simcc/humanart/simcc_mobilenetv2_wo-deconv-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,124 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict( - type='SimCCLabel', input_size=(192, 256), sigma=6.0, simcc_split_ratio=2.0) - -# 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='MobileNetV2', - widen_factor=1., - out_indices=(7, ), - init_cfg=dict( - type='Pretrained', - checkpoint='mmcls://mobilenet_v2', - )), - head=dict( - type='SimCCHead', - in_channels=1280, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(6, 8), - simcc_split_ratio=codec['simcc_split_ratio'], - deconv_out_channels=None, - loss=dict(type='KLDiscretLoss', use_target_weight=True), - decoder=codec), - test_cfg=dict(flip_test=True, )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb32-140e_humanart-384x288.py b/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb32-140e_humanart-384x288.py deleted file mode 100644 index 7afb8d69b6..0000000000 --- a/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb32-140e_humanart-384x288.py +++ /dev/null @@ -1,120 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=140, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=1e-3, -)) - -# 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=train_cfg['max_epochs'], - milestones=[90, 120], - gamma=0.1, - by_epoch=True) -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=512) - -# codec settings -codec = dict( - type='SimCCLabel', input_size=(288, 384), sigma=6.0, simcc_split_ratio=2.0) - -# 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='ResNet', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), - ), - head=dict( - type='SimCCHead', - in_channels=2048, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(9, 12), - simcc_split_ratio=codec['simcc_split_ratio'], - loss=dict(type='KLDiscretLoss', use_target_weight=True), - decoder=codec), - test_cfg=dict(flip_test=True)) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -test_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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=test_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 1c29181998..0000000000 --- a/configs/body_2d_keypoint/simcc/humanart/simcc_res50_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,114 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=1e-3, -)) - -# learning policy -param_scheduler = [ - dict( - type='LinearLR', begin=0, end=500, start_factor=0.001, - by_epoch=False), # warm-up - dict(type='MultiStepLR', 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) - -# codec settings -codec = dict( - type='SimCCLabel', input_size=(192, 256), sigma=6.0, simcc_split_ratio=2.0) - -# 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='ResNet', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), - ), - head=dict( - type='SimCCHead', - in_channels=2048, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(6, 8), - simcc_split_ratio=codec['simcc_split_ratio'], - loss=dict(type='KLDiscretLoss', use_target_weight=True), - decoder=codec), - test_cfg=dict(flip_test=True)) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -test_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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=test_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/simcc/humanart/simcc_vipnas-mbv3_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/simcc/humanart/simcc_vipnas-mbv3_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 119bf63b57..0000000000 --- a/configs/body_2d_keypoint/simcc/humanart/simcc_vipnas-mbv3_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,119 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict( - type='SimCCLabel', input_size=(192, 256), sigma=6.0, simcc_split_ratio=2.0) - -# 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='ViPNAS_MobileNetV3'), - head=dict( - type='SimCCHead', - in_channels=160, - out_channels=17, - input_size=codec['input_size'], - in_featuremap_size=(6, 8), - simcc_split_ratio=codec['simcc_split_ratio'], - deconv_type='vipnas', - deconv_out_channels=(160, 160, 160), - deconv_num_groups=(160, 160, 160), - loss=dict(type='KLDiscretLoss', use_target_weight=True), - decoder=codec), - test_cfg=dict(flip_test=True, )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=data_root + 'HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/README.md b/configs/body_2d_keypoint/topdown_heatmap/README.md index 9e23b874bc..47aae219e4 100644 --- a/configs/body_2d_keypoint/topdown_heatmap/README.md +++ b/configs/body_2d_keypoint/topdown_heatmap/README.md @@ -115,3 +115,19 @@ Results on PoseTrack2018 val with ground-truth bounding boxes. | HRNet-w48 | 256x192 | 84.6 | [hrnet_posetrack18.md](./posetrack18/hrnet_posetrack18.md) | | HRNet-w32 | 256x192 | 83.4 | [hrnet_posetrack18.md](./posetrack18/hrnet_posetrack18.md) | | ResNet-50 | 256x192 | 81.2 | [resnet_posetrack18.md](./posetrack18/resnet_posetrack18.md) | + +### Human-Art Dataset + +Results on Human-Art validation dataset with detector having human AP of 56.2 on Human-Art validation dataset + +| Model | Input Size | AP | AR | Details and Download | +| :-------: | :--------: | :---: | :---: | :---------------------------------------------------: | +| ViTPose-s | 256x192 | 0.381 | 0.448 | [vitpose_humanart.md](./humanart/vitpose_humanart.md) | +| ViTPose-b | 256x192 | 0.410 | 0.475 | [vitpose_humanart.md](./humanart/vitpose_humanart.md) | + +Results on Human-Art validation dataset with ground-truth bounding-box + +| Model | Input Size | AP | AR | Details and Download | +| :-------: | :--------: | :---: | :---: | :---------------------------------------------------: | +| ViTPose-s | 256x192 | 0.738 | 0.768 | [vitpose_humanart.md](./humanart/vitpose_humanart.md) | +| ViTPose-b | 256x192 | 0.759 | 0.790 | [vitpose_humanart.md](./humanart/vitpose_humanart.md) | diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_aic-humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_aic-humanart-256x192.py deleted file mode 100644 index 6a54bc5dca..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_aic-humanart-256x192.py +++ /dev/null @@ -1,284 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 210 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 105 to 210 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# keypoint mappings -keypoint_mapping_humanart = [ - (0, 0), - (1, 1), - (2, 2), - (3, 3), - (4, 4), - (5, 5), - (6, 6), - (7, 7), - (8, 8), - (9, 9), - (10, 10), - (11, 11), - (12, 12), - (13, 13), - (14, 14), - (15, 15), - (16, 16), -] - -keypoint_mapping_aic = [ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - (12, 17), - (13, 18), -] - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=1., - widen_factor=1., - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' - 'rtmdet/cspnext_rsb_pretrain/' - 'cspnext-l_8xb256-rsb-a1-600e_in1k-6a760974.pth')), - head=dict( - type='HeatmapHead', - in_channels=1024, - out_channels=19, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=False, - output_keypoint_indices=[ - target for _, target in keypoint_mapping_humanart - ])) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/', -# f'{data_root}': 's3://openmmlab/datasets/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# train datasets -dataset_humanart = dict( - type='RepeatDataset', - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=19, - mapping=keypoint_mapping_humanart) - ], - ), - times=3) - -dataset_aic = dict( - type='AicDataset', - data_root=data_root, - data_mode=data_mode, - ann_file='aic/annotations/aic_train.json', - data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' - '_train_20170902/keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=19, - mapping=keypoint_mapping_aic) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_humanart-256x192.py deleted file mode 100644 index 0870973244..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-l_udp_8xb256-210e_humanart-256x192.py +++ /dev/null @@ -1,214 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 210 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 105 to 210 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=1., - widen_factor=1., - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' - 'rtmdet/cspnext_rsb_pretrain/' - 'cspnext-l_8xb256-rsb-a1-600e_in1k-6a760974.pth')), - head=dict( - type='HeatmapHead', - in_channels=1024, - out_channels=17, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', -# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_aic-humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_aic-humanart-256x192.py deleted file mode 100644 index 1e42debdbb..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_aic-humanart-256x192.py +++ /dev/null @@ -1,284 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 210 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 105 to 210 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# keypoint mappings -keypoint_mapping_humanart = [ - (0, 0), - (1, 1), - (2, 2), - (3, 3), - (4, 4), - (5, 5), - (6, 6), - (7, 7), - (8, 8), - (9, 9), - (10, 10), - (11, 11), - (12, 12), - (13, 13), - (14, 14), - (15, 15), - (16, 16), -] - -keypoint_mapping_aic = [ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - (12, 17), - (13, 18), -] - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.67, - widen_factor=0.75, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' - 'rtmdet/cspnext_rsb_pretrain/' - 'cspnext-m_8xb256-rsb-a1-600e_in1k-ecb3bbd9.pth')), - head=dict( - type='HeatmapHead', - in_channels=768, - out_channels=19, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=False, - output_keypoint_indices=[ - target for _, target in keypoint_mapping_humanart - ])) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/', -# f'{data_root}': 's3://openmmlab/datasets/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# train datasets -dataset_humanart = dict( - type='RepeatDataset', - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=19, - mapping=keypoint_mapping_humanart) - ], - ), - times=3) - -dataset_aic = dict( - type='AicDataset', - data_root=data_root, - data_mode=data_mode, - ann_file='aic/annotations/aic_train.json', - data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' - '_train_20170902/keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=19, - mapping=keypoint_mapping_aic) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_humanart-256x192.py deleted file mode 100644 index 7589652a94..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-m_udp_8xb256-210e_humanart-256x192.py +++ /dev/null @@ -1,214 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 210 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 105 to 210 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.67, - widen_factor=0.75, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' - 'rtmdet/cspnext_rsb_pretrain/' - 'cspnext-m_8xb256-rsb-a1-600e_in1k-ecb3bbd9.pth')), - head=dict( - type='HeatmapHead', - in_channels=768, - out_channels=17, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', -# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_aic-humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_aic-humanart-256x192.py deleted file mode 100644 index 49770fb71b..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_aic-humanart-256x192.py +++ /dev/null @@ -1,284 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 210 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.0), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 105 to 210 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# keypoint mappings -keypoint_mapping_humanart = [ - (0, 0), - (1, 1), - (2, 2), - (3, 3), - (4, 4), - (5, 5), - (6, 6), - (7, 7), - (8, 8), - (9, 9), - (10, 10), - (11, 11), - (12, 12), - (13, 13), - (14, 14), - (15, 15), - (16, 16), -] - -keypoint_mapping_aic = [ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - (12, 17), - (13, 18), -] - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.33, - widen_factor=0.5, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' - 'rtmdet/cspnext_rsb_pretrain/' - 'cspnext-s_imagenet_600e-ea671761.pth')), - head=dict( - type='HeatmapHead', - in_channels=512, - out_channels=19, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=False, - output_keypoint_indices=[ - target for _, target in keypoint_mapping_humanart - ])) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/', -# f'{data_root}': 's3://openmmlab/datasets/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# train datasets -dataset_humanart = dict( - type='RepeatDataset', - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=19, - mapping=keypoint_mapping_humanart) - ], - ), - times=3) - -dataset_aic = dict( - type='AicDataset', - data_root=data_root, - data_mode=data_mode, - ann_file='aic/annotations/aic_train.json', - data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' - '_train_20170902/keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=19, - mapping=keypoint_mapping_aic) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_humanart-256x192.py deleted file mode 100644 index ae9eadff52..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-s_udp_8xb256-210e_humanart-256x192.py +++ /dev/null @@ -1,214 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 210 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 105 to 210 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.33, - widen_factor=0.5, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' - 'rtmdet/cspnext_rsb_pretrain/' - 'cspnext-s_imagenet_600e-ea671761.pth')), - head=dict( - type='HeatmapHead', - in_channels=512, - out_channels=17, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', -# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - dict( - type='EMAHook', - ema_type='ExpMomentumEMA', - momentum=0.0002, - update_buffers=True, - priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_aic-humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_aic-humanart-256x192.py deleted file mode 100644 index 9a4efa6361..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_aic-humanart-256x192.py +++ /dev/null @@ -1,284 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 210 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.0), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 105 to 210 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# keypoint mappings -keypoint_mapping_humanart = [ - (0, 0), - (1, 1), - (2, 2), - (3, 3), - (4, 4), - (5, 5), - (6, 6), - (7, 7), - (8, 8), - (9, 9), - (10, 10), - (11, 11), - (12, 12), - (13, 13), - (14, 14), - (15, 15), - (16, 16), -] - -keypoint_mapping_aic = [ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - (12, 17), - (13, 18), -] - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.167, - widen_factor=0.375, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' - 'rtmdet/cspnext_rsb_pretrain/' - 'cspnext-tiny_imagenet_600e-3a2dd350.pth')), - head=dict( - type='HeatmapHead', - in_channels=384, - out_channels=19, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=False, - output_keypoint_indices=[ - target for _, target in keypoint_mapping_humanart - ])) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/', -# f'{data_root}': 's3://openmmlab/datasets/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# train datasets -dataset_humanart = dict( - type='RepeatDataset', - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=19, - mapping=keypoint_mapping_humanart) - ], - ), - times=3) - -dataset_aic = dict( - type='AicDataset', - data_root=data_root, - data_mode=data_mode, - ann_file='aic/annotations/aic_train.json', - data_prefix=dict(img='pose/ai_challenge/ai_challenger_keypoint' - '_train_20170902/keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=19, - mapping=keypoint_mapping_aic) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - # dict( - # type='EMAHook', - # ema_type='ExpMomentumEMA', - # momentum=0.0002, - # update_buffers=True, - # priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_humanart-256x192.py deleted file mode 100644 index d94061485f..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/cspnext-tiny_udp_8xb256-210e_humanart-256x192.py +++ /dev/null @@ -1,214 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -max_epochs = 210 -stage2_num_epochs = 30 -base_lr = 4e-3 - -train_cfg = dict(max_epochs=max_epochs, val_interval=10) -randomness = dict(seed=21) - -# optimizer -optim_wrapper = dict( - type='OptimWrapper', - optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05), - paramwise_cfg=dict( - norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True)) - -# learning rate -param_scheduler = [ - dict( - type='LinearLR', - start_factor=1.0e-5, - by_epoch=False, - begin=0, - end=1000), - dict( - # use cosine lr from 105 to 210 epoch - type='CosineAnnealingLR', - eta_min=base_lr * 0.05, - begin=max_epochs // 2, - end=max_epochs, - T_max=max_epochs // 2, - by_epoch=True, - convert_to_iter_based=True), -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=1024) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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( - _scope_='mmdet', - type='CSPNeXt', - arch='P5', - expand_ratio=0.5, - deepen_factor=0.167, - widen_factor=0.375, - out_indices=(4, ), - channel_attention=True, - norm_cfg=dict(type='SyncBN'), - act_cfg=dict(type='SiLU'), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmdetection/v3.0/' - 'rtmdet/cspnext_rsb_pretrain/' - 'cspnext-tiny_imagenet_600e-3a2dd350.pth')), - head=dict( - type='HeatmapHead', - in_channels=384, - out_channels=17, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -backend_args = dict(backend='local') -# backend_args = dict( -# backend='petrel', -# path_mapping=dict({ -# f'{data_root}': 's3://openmmlab/datasets/detection/coco/', -# f'{data_root}': 's3://openmmlab/datasets/detection/coco/' -# })) - -# pipelines -train_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', scale_factor=[0.6, 1.4], rotate_factor=80), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=1.), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -train_pipeline_stage2 = [ - dict(type='LoadImage', backend_args=backend_args), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - shift_factor=0., - scale_factor=[0.75, 1.25], - rotate_factor=60), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='mmdet.YOLOXHSVRandomAug'), - dict( - type='Albumentation', - transforms=[ - dict(type='Blur', p=0.1), - dict(type='MedianBlur', p=0.1), - dict( - type='CoarseDropout', - max_holes=1, - max_height=0.4, - max_width=0.4, - min_holes=1, - min_height=0.2, - min_width=0.2, - p=0.5), - ]), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=256, - num_workers=10, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=64, - num_workers=10, - 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='HumanArt/annotations/validation_humanart.json', - # bbox_file='data/coco/person_detection_results/' - # 'COCO_val2017_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -custom_hooks = [ - # dict( - # type='EMAHook', - # ema_type='ExpMomentumEMA', - # momentum=0.0002, - # update_buffers=True, - # priority=49), - dict( - type='mmdet.PipelineSwitchHook', - switch_epoch=max_epochs - stage2_num_epochs, - switch_pipeline=train_pipeline_stage2) -] - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/hrnet_humanart.md b/configs/body_2d_keypoint/topdown_heatmap/humanart/hrnet_humanart.md deleted file mode 100644 index fe3d0989ec..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/hrnet_humanart.md +++ /dev/null @@ -1,44 +0,0 @@ - - -
-HRNet (CVPR'2019) - -```bibtex -@inproceedings{sun2019deep, - title={Deep high-resolution representation learning for human pose estimation}, - author={Sun, Ke and Xiao, Bin and Liu, Dong and Wang, Jingdong}, - booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, - pages={5693--5703}, - year={2019} -} -``` - -
- - - -
-Human-Art (CVPR'2023) - -```bibtex -@inproceedings{ju2023human, - title={Human-Art: A Versatile Human-Centric Dataset Bridging Natural and Artificial Scenes}, - author={Ju, Xuan and Zeng, Ailing and Wang, Jianan and Xu, Qiang and Zhang, Lei}, - booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition}, - year={2023}, -} -``` - -
- -Results on Human-Art validation set with ground-truth bounding box - -| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | -| :-------------------------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------------------------: | :-------: | -| [pose_hrnet_w48](/configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/humanart/hrnet_w48_humanart_256x192.py) | 256x192 | 0.764 | 0.906 | 0.824 | 0.794 | 0.918 | [ckpt](https://drive.google.com/file/d/1gs1RCxRcItUHwA5N8P5_9mKcgwLiBjOO/view?usp=share_link) | [log](<>) | - -Results on COCO val2017 set with ground-truth bounding box - -| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | -| :-------------------------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------------------------: | :-------: | -| [pose_hrnet_w48](/configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/humanart/hrnet_w48_humanart_256x192.py) | 256x192 | 0.772 | 0.936 | 0.847 | 0.800 | 0.942 | [ckpt](https://drive.google.com/file/d/1gs1RCxRcItUHwA5N8P5_9mKcgwLiBjOO/view?usp=share_link) | [log](<>) | diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xmspn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xmspn50_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 7fbdeafabc..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xmspn50_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,152 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=5e-3, -)) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. -kernel_sizes = [15, 11, 9, 7, 5] -codec = [ - dict( - type='MegviiHeatmap', - input_size=(192, 256), - heatmap_size=(48, 64), - kernel_size=kernel_size) for kernel_size in kernel_sizes -] - -# 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='MSPN', - unit_channels=256, - num_stages=2, - num_units=4, - num_blocks=[3, 4, 6, 3], - norm_cfg=dict(type='BN'), - init_cfg=dict( - type='Pretrained', - checkpoint='torchvision://resnet50', - )), - head=dict( - type='MSPNHead', - out_shape=(64, 48), - unit_channels=256, - out_channels=17, - num_stages=2, - num_units=4, - norm_cfg=dict(type='BN'), - # each sub list is for a stage - # and each element in each list is for a unit - level_indices=[0, 1, 2, 3] + [1, 2, 3, 4], - loss=([ - dict( - type='KeypointMSELoss', - use_target_weight=True, - loss_weight=0.25) - ] * 3 + [ - dict( - type='KeypointOHKMMSELoss', - use_target_weight=True, - loss_weight=1.) - ]) * 2, - decoder=codec[-1]), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='GenerateTarget', multilevel=True, encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=32, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'annotations/person_keypoints_val2017.json', - nms_mode='none') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xrsn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xrsn50_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 5215e422bf..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_2xrsn50_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,154 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=5e-3, -)) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. -kernel_sizes = [15, 11, 9, 7, 5] -codec = [ - dict( - type='MegviiHeatmap', - input_size=(192, 256), - heatmap_size=(48, 64), - kernel_size=kernel_size) for kernel_size in kernel_sizes -] - -# 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='RSN', - unit_channels=256, - num_stages=2, - num_units=4, - num_blocks=[3, 4, 6, 3], - num_steps=4, - norm_cfg=dict(type='BN'), - ), - head=dict( - type='MSPNHead', - out_shape=(64, 48), - unit_channels=256, - out_channels=17, - num_stages=2, - num_units=4, - norm_cfg=dict(type='BN'), - # each sub list is for a stage - # and each element in each list is for a unit - level_indices=[0, 1, 2, 3] + [1, 2, 3, 4], - loss=([ - dict( - type='KeypointMSELoss', - use_target_weight=True, - loss_weight=0.25) - ] * 3 + [ - dict( - type='KeypointOHKMMSELoss', - use_target_weight=True, - loss_weight=1.) - ]) * 2, - decoder=codec[-1]), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='GenerateTarget', multilevel=True, encoder=codec), - dict(type='PackPoseInputs') -] - -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=32, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'annotations/person_keypoints_val2017.json', - nms_mode='none') -test_evaluator = val_evaluator - -# fp16 settings -fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xmspn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xmspn50_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 4ea845985e..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xmspn50_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,152 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=5e-3, -)) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. -kernel_sizes = [15, 11, 9, 7, 5] -codec = [ - dict( - type='MegviiHeatmap', - input_size=(192, 256), - heatmap_size=(48, 64), - kernel_size=kernel_size) for kernel_size in kernel_sizes -] - -# 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='MSPN', - unit_channels=256, - num_stages=3, - num_units=4, - num_blocks=[3, 4, 6, 3], - norm_cfg=dict(type='BN'), - init_cfg=dict( - type='Pretrained', - checkpoint='torchvision://resnet50', - )), - head=dict( - type='MSPNHead', - out_shape=(64, 48), - unit_channels=256, - out_channels=17, - num_stages=3, - num_units=4, - norm_cfg=dict(type='BN'), - # each sub list is for a stage - # and each element in each list is for a unit - level_indices=[0, 1, 2, 3] * 2 + [1, 2, 3, 4], - loss=([ - dict( - type='KeypointMSELoss', - use_target_weight=True, - loss_weight=0.25) - ] * 3 + [ - dict( - type='KeypointOHKMMSELoss', - use_target_weight=True, - loss_weight=1.) - ]) * 3, - decoder=codec[-1]), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='GenerateTarget', multilevel=True, encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=32, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'annotations/person_keypoints_val2017.json', - nms_mode='none') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xrsn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xrsn50_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 3286db101f..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_3xrsn50_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,154 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=5e-3, -)) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. -kernel_sizes = [15, 11, 9, 7, 5] -codec = [ - dict( - type='MegviiHeatmap', - input_size=(192, 256), - heatmap_size=(48, 64), - kernel_size=kernel_size) for kernel_size in kernel_sizes -] - -# 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='RSN', - unit_channels=256, - num_stages=3, - num_units=4, - num_blocks=[3, 4, 6, 3], - num_steps=4, - norm_cfg=dict(type='BN'), - ), - head=dict( - type='MSPNHead', - out_shape=(64, 48), - unit_channels=256, - out_channels=17, - num_stages=3, - num_units=4, - norm_cfg=dict(type='BN'), - # each sub list is for a stage - # and each element in each list is for a unit - level_indices=[0, 1, 2, 3] * 2 + [1, 2, 3, 4], - loss=([ - dict( - type='KeypointMSELoss', - use_target_weight=True, - loss_weight=0.25) - ] * 3 + [ - dict( - type='KeypointOHKMMSELoss', - use_target_weight=True, - loss_weight=1.) - ]) * 3, - decoder=codec[-1]), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='GenerateTarget', multilevel=True, encoder=codec), - dict(type='PackPoseInputs') -] - -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=32, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'annotations/person_keypoints_val2017.json', - nms_mode='none') -test_evaluator = val_evaluator - -# fp16 settings -fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_4xmspn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_4xmspn50_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 43f2705bf1..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_4xmspn50_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,152 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=5e-3, -)) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. -kernel_sizes = [15, 11, 9, 7, 5] -codec = [ - dict( - type='MegviiHeatmap', - input_size=(192, 256), - heatmap_size=(48, 64), - kernel_size=kernel_size) for kernel_size in kernel_sizes -] - -# 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='MSPN', - unit_channels=256, - num_stages=4, - num_units=4, - num_blocks=[3, 4, 6, 3], - norm_cfg=dict(type='BN'), - init_cfg=dict( - type='Pretrained', - checkpoint='torchvision://resnet50', - )), - head=dict( - type='MSPNHead', - out_shape=(64, 48), - unit_channels=256, - out_channels=17, - num_stages=4, - num_units=4, - norm_cfg=dict(type='BN'), - # each sub list is for a stage - # and each element in each list is for a unit - level_indices=[0, 1, 2, 3] * 3 + [1, 2, 3, 4], - loss=([ - dict( - type='KeypointMSELoss', - use_target_weight=True, - loss_weight=0.25) - ] * 3 + [ - dict( - type='KeypointOHKMMSELoss', - use_target_weight=True, - loss_weight=1.) - ]) * 4, - decoder=codec[-1]), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='GenerateTarget', multilevel=True, encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=32, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'annotations/person_keypoints_val2017.json', - nms_mode='none') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base-simple_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base-simple_8xb64-210e_humanart-256x192.py deleted file mode 100644 index f61aaa4bf7..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base-simple_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,153 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -custom_imports = dict( - imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], - allow_failed_imports=False) - -optim_wrapper = dict( - optimizer=dict( - type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), - paramwise_cfg=dict( - num_layers=12, - layer_decay_rate=0.75, - custom_keys={ - 'bias': dict(decay_multi=0.0), - 'pos_embed': dict(decay_mult=0.0), - 'relative_position_bias_table': dict(decay_mult=0.0), - 'norm': dict(decay_mult=0.0), - }, - ), - constructor='LayerDecayOptimWrapperConstructor', - clip_grad=dict(max_norm=1., norm_type=2), -) - -# 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 = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='mmcls.VisionTransformer', - arch='base', - img_size=(256, 192), - patch_size=16, - qkv_bias=True, - drop_path_rate=0.3, - with_cls_token=False, - output_cls_token=False, - patch_cfg=dict(padding=2), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'v1/pretrained_models/mae_pretrain_vit_base.pth'), - ), - neck=dict(type='FeatureMapProcessor', scale_factor=4.0, apply_relu=True), - head=dict( - type='HeatmapHead', - in_channels=768, - out_channels=17, - deconv_out_channels=[], - deconv_kernel_sizes=[], - final_layer=dict(kernel_size=3, padding=1), - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec, - ), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -data_root = 'data/' -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=64, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge-simple_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge-simple_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 2b8dd0bc2b..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge-simple_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,153 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -custom_imports = dict( - imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], - allow_failed_imports=False) - -optim_wrapper = dict( - optimizer=dict( - type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), - paramwise_cfg=dict( - num_layers=32, - layer_decay_rate=0.85, - custom_keys={ - 'bias': dict(decay_multi=0.0), - 'pos_embed': dict(decay_mult=0.0), - 'relative_position_bias_table': dict(decay_mult=0.0), - 'norm': dict(decay_mult=0.0), - }, - ), - constructor='LayerDecayOptimWrapperConstructor', - clip_grad=dict(max_norm=1., norm_type=2), -) - -# 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 = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='mmcls.VisionTransformer', - arch='huge', - img_size=(256, 192), - patch_size=16, - qkv_bias=True, - drop_path_rate=0.55, - with_cls_token=False, - output_cls_token=False, - patch_cfg=dict(padding=2), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'v1/pretrained_models/mae_pretrain_vit_huge.pth'), - ), - neck=dict(type='FeatureMapProcessor', scale_factor=4.0, apply_relu=True), - head=dict( - type='HeatmapHead', - in_channels=1280, - out_channels=17, - deconv_out_channels=[], - deconv_kernel_sizes=[], - final_layer=dict(kernel_size=3, padding=1), - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec, - ), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -data_root = 'data/' -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=64, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 925f68e3d1..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-huge_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,150 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -custom_imports = dict( - imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], - allow_failed_imports=False) - -optim_wrapper = dict( - optimizer=dict( - type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), - paramwise_cfg=dict( - num_layers=32, - layer_decay_rate=0.85, - custom_keys={ - 'bias': dict(decay_multi=0.0), - 'pos_embed': dict(decay_mult=0.0), - 'relative_position_bias_table': dict(decay_mult=0.0), - 'norm': dict(decay_mult=0.0), - }, - ), - constructor='LayerDecayOptimWrapperConstructor', - clip_grad=dict(max_norm=1., norm_type=2), -) - -# 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 = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='mmcls.VisionTransformer', - arch='huge', - img_size=(256, 192), - patch_size=16, - qkv_bias=True, - drop_path_rate=0.55, - with_cls_token=False, - output_cls_token=False, - patch_cfg=dict(padding=2), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'v1/pretrained_models/mae_pretrain_vit_huge.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=1280, - out_channels=17, - deconv_out_channels=(256, 256), - deconv_kernel_sizes=(4, 4), - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -data_root = 'data/' -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=64, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large-simple_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large-simple_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 9352f615c2..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large-simple_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,153 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -custom_imports = dict( - imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], - allow_failed_imports=False) - -optim_wrapper = dict( - optimizer=dict( - type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), - paramwise_cfg=dict( - num_layers=24, - layer_decay_rate=0.8, - custom_keys={ - 'bias': dict(decay_multi=0.0), - 'pos_embed': dict(decay_mult=0.0), - 'relative_position_bias_table': dict(decay_mult=0.0), - 'norm': dict(decay_mult=0.0), - }, - ), - constructor='LayerDecayOptimWrapperConstructor', - clip_grad=dict(max_norm=1., norm_type=2), -) - -# 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 = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='mmcls.VisionTransformer', - arch='large', - img_size=(256, 192), - patch_size=16, - qkv_bias=True, - drop_path_rate=0.5, - with_cls_token=False, - output_cls_token=False, - patch_cfg=dict(padding=2), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'v1/pretrained_models/mae_pretrain_vit_large.pth'), - ), - neck=dict(type='FeatureMapProcessor', scale_factor=4.0, apply_relu=True), - head=dict( - type='HeatmapHead', - in_channels=1024, - out_channels=17, - deconv_out_channels=[], - deconv_kernel_sizes=[], - final_layer=dict(kernel_size=3, padding=1), - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec, - ), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -data_root = 'data/' -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=64, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 7ea9dbf395..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-large_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,150 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -custom_imports = dict( - imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], - allow_failed_imports=False) - -optim_wrapper = dict( - optimizer=dict( - type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), - paramwise_cfg=dict( - num_layers=24, - layer_decay_rate=0.8, - custom_keys={ - 'bias': dict(decay_multi=0.0), - 'pos_embed': dict(decay_mult=0.0), - 'relative_position_bias_table': dict(decay_mult=0.0), - 'norm': dict(decay_mult=0.0), - }, - ), - constructor='LayerDecayOptimWrapperConstructor', - clip_grad=dict(max_norm=1., norm_type=2), -) - -# 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 = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='mmcls.VisionTransformer', - arch='large', - img_size=(256, 192), - patch_size=16, - qkv_bias=True, - drop_path_rate=0.5, - with_cls_token=False, - output_cls_token=False, - patch_cfg=dict(padding=2), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'v1/pretrained_models/mae_pretrain_vit_large.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=1024, - out_channels=17, - deconv_out_channels=(256, 256), - deconv_kernel_sizes=(4, 4), - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -data_root = 'data/' -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=64, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small-simple_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small-simple_8xb64-210e_humanart-256x192.py deleted file mode 100644 index a0e2c9f849..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small-simple_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,158 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -custom_imports = dict( - imports=['mmpose.engine.optim_wrappers.layer_decay_optim_wrapper'], - allow_failed_imports=False) - -optim_wrapper = dict( - optimizer=dict( - type='AdamW', lr=5e-4, betas=(0.9, 0.999), weight_decay=0.1), - paramwise_cfg=dict( - num_layers=12, - layer_decay_rate=0.8, - custom_keys={ - 'bias': dict(decay_multi=0.0), - 'pos_embed': dict(decay_mult=0.0), - 'relative_position_bias_table': dict(decay_mult=0.0), - 'norm': dict(decay_mult=0.0), - }, - ), - constructor='LayerDecayOptimWrapperConstructor', - clip_grad=dict(max_norm=1., norm_type=2), -) - -# 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 = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=1)) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='mmcls.VisionTransformer', - arch={ - 'embed_dims': 384, - 'num_layers': 12, - 'num_heads': 12, - 'feedforward_channels': 384 * 4 - }, - img_size=(256, 192), - patch_size=16, - qkv_bias=True, - drop_path_rate=0.1, - with_cls_token=False, - output_cls_token=False, - patch_cfg=dict(padding=2), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'v1/pretrained_models/mae_pretrain_vit_small.pth'), - ), - neck=dict(type='FeatureMapProcessor', scale_factor=4.0, apply_relu=True), - head=dict( - type='HeatmapHead', - in_channels=384, - out_channels=17, - deconv_out_channels=[], - deconv_kernel_sizes=[], - final_layer=dict(kernel_size=3, padding=1), - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec, - ), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -data_root = 'data/' -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=64, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_alexnet_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_alexnet_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 08935037f4..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_alexnet_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,117 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(40, 56), sigma=2) - -# 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='AlexNet', num_classes=-1), - head=dict( - type='HeatmapHead', - in_channels=256, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb32-210e_humanart-384x288.py deleted file mode 100644 index 33f521d47f..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,125 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(36, 48), sigma=3) - -# 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='CPM', - in_channels=3, - out_channels=17, - feat_channels=128, - num_stages=6), - head=dict( - type='CPMHead', - in_channels=17, - out_channels=17, - num_stages=6, - deconv_out_channels=None, - final_layer=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 7ff91cf1ce..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_cpm_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,125 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(24, 32), sigma=2) - -# 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='CPM', - in_channels=3, - out_channels=17, - feat_channels=128, - num_stages=6), - head=dict( - type='CPMHead', - in_channels=17, - out_channels=17, - num_stages=6, - deconv_out_channels=None, - final_layer=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-256x256.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-256x256.py deleted file mode 100644 index 8bcfec9abf..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-256x256.py +++ /dev/null @@ -1,122 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(256, 256), heatmap_size=(64, 64), sigma=2) - -# 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='HourglassNet', - num_stacks=1, - ), - head=dict( - type='CPMHead', - in_channels=256, - out_channels=17, - num_stages=1, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-384x384.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-384x384.py deleted file mode 100644 index d49e4688fa..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hourglass52_8xb32-210e_humanart-384x384.py +++ /dev/null @@ -1,122 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(384, 384), heatmap_size=(96, 96), sigma=3) - -# 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='HourglassNet', - num_stacks=1, - ), - head=dict( - type='CPMHead', - in_channels=256, - out_channels=17, - num_stages=1, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-256x192.py deleted file mode 100644 index c8227aaea2..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,174 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict( - optimizer=dict( - type='AdamW', - lr=5e-4, - betas=(0.9, 0.999), - weight_decay=0.01, - ), - paramwise_cfg=dict( - custom_keys={'relative_position_bias_table': dict(decay_mult=0.)})) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='HRFormer', - in_channels=3, - norm_cfg=norm_cfg, - extra=dict( - drop_path_rate=0.2, - with_rpe=True, - stage1=dict( - num_modules=1, - num_branches=1, - block='BOTTLENECK', - num_blocks=(2, ), - num_channels=(64, ), - num_heads=[2], - mlp_ratios=[4]), - stage2=dict( - num_modules=1, - num_branches=2, - block='HRFORMERBLOCK', - num_blocks=(2, 2), - num_channels=(78, 156), - num_heads=[2, 4], - mlp_ratios=[4, 4], - window_sizes=[7, 7]), - stage3=dict( - num_modules=4, - num_branches=3, - block='HRFORMERBLOCK', - num_blocks=(2, 2, 2), - num_channels=(78, 156, 312), - num_heads=[2, 4, 8], - mlp_ratios=[4, 4, 4], - window_sizes=[7, 7, 7]), - stage4=dict( - num_modules=2, - num_branches=4, - block='HRFORMERBLOCK', - num_blocks=(2, 2, 2, 2), - num_channels=(78, 156, 312, 624), - num_heads=[2, 4, 8, 16], - mlp_ratios=[4, 4, 4, 4], - window_sizes=[7, 7, 7, 7])), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrformer_base-32815020_20220226.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=78, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator - -# fp16 settings -fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-384x288.py deleted file mode 100644 index d58d2236e5..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-base_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,174 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict( - optimizer=dict( - type='AdamW', - lr=5e-4, - betas=(0.9, 0.999), - weight_decay=0.01, - ), - paramwise_cfg=dict( - custom_keys={'relative_position_bias_table': dict(decay_mult=0.)})) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='HRFormer', - in_channels=3, - norm_cfg=norm_cfg, - extra=dict( - drop_path_rate=0.2, - with_rpe=True, - stage1=dict( - num_modules=1, - num_branches=1, - block='BOTTLENECK', - num_blocks=(2, ), - num_channels=(64, ), - num_heads=[2], - mlp_ratios=[4]), - stage2=dict( - num_modules=1, - num_branches=2, - block='HRFORMERBLOCK', - num_blocks=(2, 2), - num_channels=(78, 156), - num_heads=[2, 4], - mlp_ratios=[4, 4], - window_sizes=[7, 7]), - stage3=dict( - num_modules=4, - num_branches=3, - block='HRFORMERBLOCK', - num_blocks=(2, 2, 2), - num_channels=(78, 156, 312), - num_heads=[2, 4, 8], - mlp_ratios=[4, 4, 4], - window_sizes=[7, 7, 7]), - stage4=dict( - num_modules=2, - num_branches=4, - block='HRFORMERBLOCK', - num_blocks=(2, 2, 2, 2), - num_channels=(78, 156, 312, 624), - num_heads=[2, 4, 8, 16], - mlp_ratios=[4, 4, 4, 4], - window_sizes=[7, 7, 7, 7])), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrformer_base-32815020_20220226.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=78, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator - -# fp16 settings -fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-256x192.py deleted file mode 100644 index e41b3be2ac..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,174 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict( - optimizer=dict( - type='AdamW', - lr=5e-4, - betas=(0.9, 0.999), - weight_decay=0.01, - ), - paramwise_cfg=dict( - custom_keys={'relative_position_bias_table': dict(decay_mult=0.)})) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='HRFormer', - in_channels=3, - norm_cfg=norm_cfg, - extra=dict( - drop_path_rate=0.1, - with_rpe=True, - stage1=dict( - num_modules=1, - num_branches=1, - block='BOTTLENECK', - num_blocks=(2, ), - num_channels=(64, ), - num_heads=[2], - num_mlp_ratios=[4]), - stage2=dict( - num_modules=1, - num_branches=2, - block='HRFORMERBLOCK', - num_blocks=(2, 2), - num_channels=(32, 64), - num_heads=[1, 2], - mlp_ratios=[4, 4], - window_sizes=[7, 7]), - stage3=dict( - num_modules=4, - num_branches=3, - block='HRFORMERBLOCK', - num_blocks=(2, 2, 2), - num_channels=(32, 64, 128), - num_heads=[1, 2, 4], - mlp_ratios=[4, 4, 4], - window_sizes=[7, 7, 7]), - stage4=dict( - num_modules=2, - num_branches=4, - block='HRFORMERBLOCK', - num_blocks=(2, 2, 2, 2), - num_channels=(32, 64, 128, 256), - num_heads=[1, 2, 4, 8], - mlp_ratios=[4, 4, 4, 4], - window_sizes=[7, 7, 7, 7])), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrformer_small-09516375_20220226.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator - -# fp16 settings -fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-384x288.py deleted file mode 100644 index 05ff951d84..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrformer-small_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,174 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict( - optimizer=dict( - type='AdamW', - lr=5e-4, - betas=(0.9, 0.999), - weight_decay=0.01, - ), - paramwise_cfg=dict( - custom_keys={'relative_position_bias_table': dict(decay_mult=0.)})) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='HRFormer', - in_channels=3, - norm_cfg=norm_cfg, - extra=dict( - drop_path_rate=0.1, - with_rpe=True, - stage1=dict( - num_modules=1, - num_branches=1, - block='BOTTLENECK', - num_blocks=(2, ), - num_channels=(64, ), - num_heads=[2], - num_mlp_ratios=[4]), - stage2=dict( - num_modules=1, - num_branches=2, - block='HRFORMERBLOCK', - num_blocks=(2, 2), - num_channels=(32, 64), - num_heads=[1, 2], - mlp_ratios=[4, 4], - window_sizes=[7, 7]), - stage3=dict( - num_modules=4, - num_branches=3, - block='HRFORMERBLOCK', - num_blocks=(2, 2, 2), - num_channels=(32, 64, 128), - num_heads=[1, 2, 4], - mlp_ratios=[4, 4, 4], - window_sizes=[7, 7, 7]), - stage4=dict( - num_modules=2, - num_branches=4, - block='HRFORMERBLOCK', - num_blocks=(2, 2, 2, 2), - num_channels=(32, 64, 128, 256), - num_heads=[1, 2, 4, 8], - mlp_ratios=[4, 4, 4, 4], - window_sizes=[7, 7, 7, 7])), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrformer_small-09516375_20220226.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator - -# fp16 settings -fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py deleted file mode 100644 index bf9fa25beb..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,150 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-384x288.py deleted file mode 100644 index 7f49e9708f..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,150 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-combine.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-combine.py deleted file mode 100644 index 2fa71699cb..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-combine.py +++ /dev/null @@ -1,221 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict( - checkpoint=dict(save_best='coco/AP', rule='greater', max_keep_ckpts=3)) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# keypoint mappings -keypoint_mapping_humanart = [ - (0, 0), - (1, 1), - (2, 2), - (3, 3), - (4, 4), - (5, 5), - (6, 6), - (7, 7), - (8, 8), - (9, 9), - (10, 10), - (11, 11), - (12, 12), - (13, 13), - (14, 14), - (15, 15), - (16, 16), -] - -keypoint_mapping_aic = [ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - (12, 17), - (13, 18), -] - -# 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), - metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), - 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=19, - deconv_out_channels=None, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=True, - output_keypoint_indices=[ - target for _, target in keypoint_mapping_humanart - ])) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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') -] - -# train datasets -dataset_humanart = dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=19, - mapping=keypoint_mapping_humanart) - ], -) - -dataset_aic = dict( - type='AicDataset', - data_root='data/aic/', - data_mode=data_mode, - ann_file='annotations/aic_train.json', - data_prefix=dict(img='ai_challenger_keypoint_train_20170902/' - 'keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=19, - mapping=keypoint_mapping_aic) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=64, - num_workers=2, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/humanart_aic.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-merge.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-merge.py deleted file mode 100644 index b7e287565c..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-aic-256x192-merge.py +++ /dev/null @@ -1,187 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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') -] - -# train datasets -dataset_humanart = dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=[], -) - -dataset_aic = dict( - type='AicDataset', - data_root='data/aic/', - data_mode=data_mode, - ann_file='annotations/aic_train.json', - data_prefix=dict(img='ai_challenger_keypoint_train_20170902/' - 'keypoint_train_images_20170902/'), - pipeline=[ - dict( - type='KeypointConverter', - num_keypoints=17, - mapping=[ - (0, 6), - (1, 8), - (2, 10), - (3, 5), - (4, 7), - (5, 9), - (6, 12), - (7, 14), - (8, 16), - (9, 11), - (10, 13), - (11, 15), - ]) - ], -) - -# data loaders -train_dataloader = dict( - batch_size=64, - num_workers=2, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type='CombinedDataset', - metainfo=dict(from_file='configs/_base_/datasets/coco.py'), - datasets=[dataset_humanart, dataset_aic], - pipeline=train_pipeline, - test_mode=False, - )) -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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_coarsedropout-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_coarsedropout-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 2eae18218e..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_coarsedropout-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,165 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/v1/' - 'body_2d_keypoint/topdown_heatmap/coco/' - 'td-hm_hrnet-w32_8xb64-210e_coco-256x192-81c58e40_20220909.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict( - type='Albumentation', - transforms=[ - dict( - type='CoarseDropout', - max_holes=8, - max_height=40, - max_width=40, - min_holes=1, - min_height=10, - min_width=10, - p=0.5), - ]), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 1a95b32cc4..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,154 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', - input_size=(192, 256), - heatmap_size=(48, 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-384x288.py deleted file mode 100644 index 09639a8b40..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_dark-8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,154 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', - input_size=(288, 384), - heatmap_size=(72, 96), - sigma=3, - 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_fp16-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_fp16-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 306d0aeb44..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_fp16-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,7 +0,0 @@ -_base_ = ['./td-hm_hrnet-w32_8xb64-210e_coco-256x192.py'] - -# fp16 settings -optim_wrapper = dict( - type='AmpOptimWrapper', - loss_scale='dynamic', -) diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_gridmask-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_gridmask-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 70ea1fb597..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_gridmask-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,162 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/v1/' - 'body_2d_keypoint/topdown_heatmap/coco/' - 'td-hm_hrnet-w32_8xb64-210e_coco-256x192-81c58e40_20220909.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict( - type='Albumentation', - transforms=[ - dict( - type='GridDropout', - unit_size_min=10, - unit_size_max=40, - random_offset=True, - p=0.5), - ]), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_photometric-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_photometric-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 156d012fb3..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_photometric-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,153 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/v1/' - 'body_2d_keypoint/topdown_heatmap/coco/' - 'td-hm_hrnet-w32_8xb64-210e_coco-256x192-81c58e40_20220909.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='PhotometricDistortion'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 68e227f8a8..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,150 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-384x288.py deleted file mode 100644 index 52672824ff..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,150 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=17, - deconv_out_channels=None, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-regress-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-regress-8xb64-210e_humanart-256x192.py deleted file mode 100644 index b47e21d75d..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_udp-regress-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,155 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='UDPHeatmap', - input_size=(192, 256), - heatmap_size=(48, 64), - sigma=2, - heatmap_type='combined') - -# 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=(32, 64)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(32, 64, 128)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(32, 64, 128, 256))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w32-36af842e.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=32, - out_channels=3 * 17, - deconv_out_channels=None, - loss=dict(type='CombinedTargetMSELoss', use_target_weight=True), - decoder=codec), - train_cfg=dict(compute_acc=False), - test_cfg=dict( - flip_test=True, - flip_mode='udp_combined', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 6a5ae0707c..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,150 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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=(48, 96)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(48, 96, 192)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(48, 96, 192, 384))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w48-8ef0771d.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=48, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-384x288.py deleted file mode 100644 index e75349bac6..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,150 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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=(48, 96)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(48, 96, 192)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(48, 96, 192, 384))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w48-8ef0771d.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=48, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-256x192.py deleted file mode 100644 index 0b7d619fe2..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,154 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', - input_size=(192, 256), - heatmap_size=(48, 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=(48, 96)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(48, 96, 192)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(48, 96, 192, 384))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w48-8ef0771d.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=48, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-384x288.py deleted file mode 100644 index 8b3b572e6e..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_dark-8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,154 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', - input_size=(288, 384), - heatmap_size=(72, 96), - sigma=3, - 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=(48, 96)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(48, 96, 192)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(48, 96, 192, 384))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w48-8ef0771d.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=48, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-256x192.py deleted file mode 100644 index c58a57a1da..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,150 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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=(48, 96)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(48, 96, 192)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(48, 96, 192, 384))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w48-8ef0771d.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=48, - out_channels=17, - deconv_out_channels=None, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-384x288.py deleted file mode 100644 index 509341b9a3..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w48_udp-8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,150 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='UDPHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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=(48, 96)), - stage3=dict( - num_modules=4, - num_branches=3, - block='BASIC', - num_blocks=(4, 4, 4), - num_channels=(48, 96, 192)), - stage4=dict( - num_modules=3, - num_branches=4, - block='BASIC', - num_blocks=(4, 4, 4, 4), - num_channels=(48, 96, 192, 384))), - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/hrnet_w48-8ef0771d.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=48, - out_channels=17, - deconv_out_channels=None, - loss=dict(type='KeypointMSELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec['input_size'], use_udp=True), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb32-210e_humanart-384x288.py deleted file mode 100644 index 0448a55017..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,140 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='LiteHRNet', - in_channels=3, - extra=dict( - stem=dict(stem_channels=32, out_channels=32, expand_ratio=1), - num_stages=3, - stages_spec=dict( - num_modules=(2, 4, 2), - num_branches=(2, 3, 4), - num_blocks=(2, 2, 2), - module_type=('LITE', 'LITE', 'LITE'), - with_fuse=(True, True, True), - reduce_ratios=(8, 8, 8), - num_channels=( - (40, 80), - (40, 80, 160), - (40, 80, 160, 320), - )), - with_head=True, - )), - head=dict( - type='HeatmapHead', - in_channels=40, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - rotate_factor=60, - scale_factor=(0.75, 1.25)), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb64-210e_humanart-256x192.py deleted file mode 100644 index a58a880168..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-18_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,140 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='LiteHRNet', - in_channels=3, - extra=dict( - stem=dict(stem_channels=32, out_channels=32, expand_ratio=1), - num_stages=3, - stages_spec=dict( - num_modules=(2, 4, 2), - num_branches=(2, 3, 4), - num_blocks=(2, 2, 2), - module_type=('LITE', 'LITE', 'LITE'), - with_fuse=(True, True, True), - reduce_ratios=(8, 8, 8), - num_channels=( - (40, 80), - (40, 80, 160), - (40, 80, 160, 320), - )), - with_head=True, - )), - head=dict( - type='HeatmapHead', - in_channels=40, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - rotate_factor=60, - scale_factor=(0.75, 1.25)), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb32-210e_humanart-384x288.py deleted file mode 100644 index 1af1e659b6..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,140 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='LiteHRNet', - in_channels=3, - extra=dict( - stem=dict(stem_channels=32, out_channels=32, expand_ratio=1), - num_stages=3, - stages_spec=dict( - num_modules=(3, 8, 3), - num_branches=(2, 3, 4), - num_blocks=(2, 2, 2), - module_type=('LITE', 'LITE', 'LITE'), - with_fuse=(True, True, True), - reduce_ratios=(8, 8, 8), - num_channels=( - (40, 80), - (40, 80, 160), - (40, 80, 160, 320), - )), - with_head=True, - )), - head=dict( - type='HeatmapHead', - in_channels=40, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - rotate_factor=60, - scale_factor=(0.75, 1.25)), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 253416c2c1..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_litehrnet-30_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,140 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='LiteHRNet', - in_channels=3, - extra=dict( - stem=dict(stem_channels=32, out_channels=32, expand_ratio=1), - num_stages=3, - stages_spec=dict( - num_modules=(3, 8, 3), - num_branches=(2, 3, 4), - num_blocks=(2, 2, 2), - module_type=('LITE', 'LITE', 'LITE'), - with_fuse=(True, True, True), - reduce_ratios=(8, 8, 8), - num_channels=( - (40, 80), - (40, 80, 160), - (40, 80, 160, 320), - )), - with_head=True, - )), - head=dict( - type='HeatmapHead', - in_channels=40, - out_channels=17, - deconv_out_channels=None, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - rotate_factor=60, - scale_factor=(0.75, 1.25)), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-256x192.py deleted file mode 100644 index e068b246d6..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,124 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='MobileNetV2', - widen_factor=1., - out_indices=(7, ), - init_cfg=dict( - type='Pretrained', - checkpoint='mmcls://mobilenet_v2', - )), - head=dict( - type='HeatmapHead', - in_channels=1280, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-384x288.py deleted file mode 100644 index 57f5c1bb91..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mobilenetv2_8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,124 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='MobileNetV2', - widen_factor=1., - out_indices=(7, ), - init_cfg=dict( - type='Pretrained', - checkpoint='mmcls://mobilenet_v2', - )), - head=dict( - type='HeatmapHead', - in_channels=1280, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mspn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mspn50_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 28b1778176..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_mspn50_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,152 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=5e-3, -)) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. -kernel_sizes = [11, 9, 7, 5] -codec = [ - dict( - type='MegviiHeatmap', - input_size=(192, 256), - heatmap_size=(48, 64), - kernel_size=kernel_size) for kernel_size in kernel_sizes -] - -# 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='MSPN', - unit_channels=256, - num_stages=1, - num_units=4, - num_blocks=[3, 4, 6, 3], - norm_cfg=dict(type='BN'), - init_cfg=dict( - type='Pretrained', - checkpoint='torchvision://resnet50', - )), - head=dict( - type='MSPNHead', - out_shape=(64, 48), - unit_channels=256, - out_channels=17, - num_stages=1, - num_units=4, - norm_cfg=dict(type='BN'), - # each sub list is for a stage - # and each element in each list is for a unit - level_indices=[0, 1, 2, 3], - loss=[ - dict( - type='KeypointMSELoss', - use_target_weight=True, - loss_weight=0.25) - ] * 3 + [ - dict( - type='KeypointOHKMMSELoss', - use_target_weight=True, - loss_weight=1.) - ], - decoder=codec[-1]), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='GenerateTarget', multilevel=True, encoder=codec), - dict(type='PackPoseInputs') -] -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=32, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'annotations/person_keypoints_val2017.json', - nms_mode='none') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvt-s_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvt-s_8xb64-210e_humanart-256x192.py deleted file mode 100644 index e49eb22f49..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvt-s_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,127 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='PyramidVisionTransformer', - num_layers=[3, 4, 6, 3], - init_cfg=dict( - type='Pretrained', - checkpoint='https://github.com/whai362/PVT/' - 'releases/download/v2/pvt_small.pth'), - ), - neck=dict(type='FeatureMapProcessor', select_index=3), - head=dict( - type='HeatmapHead', - in_channels=512, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvtv2-b2_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvtv2-b2_8xb64-210e_humanart-256x192.py deleted file mode 100644 index bf30e834bd..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_pvtv2-b2_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,128 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='PyramidVisionTransformerV2', - embed_dims=64, - num_layers=[3, 4, 6, 3], - init_cfg=dict( - type='Pretrained', - checkpoint='https://github.com/whai362/PVT/' - 'releases/download/v2/pvt_v2_b2.pth'), - ), - neck=dict(type='FeatureMapProcessor', select_index=3), - head=dict( - type='HeatmapHead', - in_channels=512, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb32-210e_humanart-384x288.py deleted file mode 100644 index 657ef05821..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNet', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=64, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb64-210e_humanart-256x192.py deleted file mode 100644 index d42f787e93..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNet', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 1f594f2fae..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,125 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', - input_size=(192, 256), - heatmap_size=(48, 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='ResNet', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-384x288.py deleted file mode 100644 index e8f075c75c..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res101_dark-8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,125 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', - input_size=(288, 384), - heatmap_size=(72, 96), - sigma=3, - 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='ResNet', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-256x192.py deleted file mode 100644 index c2e5334357..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNet', - depth=152, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-384x288.py deleted file mode 100644 index c60681d3b1..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNet', - depth=152, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-256x192.py deleted file mode 100644 index b0a4b3258f..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,125 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', - input_size=(192, 256), - heatmap_size=(48, 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='ResNet', - depth=152, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-384x288.py deleted file mode 100644 index 8ed8884023..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res152_dark-8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,126 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', - input_size=(288, 384), - heatmap_size=(72, 96), - sigma=3, - unbiased=True, - blur_kernel_size=17) - -# 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='ResNet', - depth=152, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 06bc5283c9..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNet', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-384x288.py deleted file mode 100644 index e209c63f85..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNet', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-256x192.py deleted file mode 100644 index a0770247f9..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,125 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', - input_size=(192, 256), - heatmap_size=(48, 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='ResNet', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-384x288.py deleted file mode 100644 index 60575438ad..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_dark-8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,125 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', - input_size=(288, 384), - heatmap_size=(72, 96), - sigma=3, - 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='ResNet', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_fp16-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_fp16-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 66a6a27822..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_res50_fp16-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,7 +0,0 @@ -_base_ = ['./td-hm_res50_8xb64-210e_coco-256x192.py'] - -# fp16 settings -optim_wrapper = dict( - type='AmpOptimWrapper', - loss_scale='dynamic', -) diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb32-210e_humanart-384x288.py deleted file mode 100644 index edd42dceb9..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNeSt', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest101'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 7f415346dd..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest101_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNeSt', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest101'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb16-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb16-210e_humanart-384x288.py deleted file mode 100644 index 2f916b41e5..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb16-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=128) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNeSt', - depth=200, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest200'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=16, - 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='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=16, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb64-210e_humanart-256x192.py deleted file mode 100644 index c29cc30444..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest200_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNeSt', - depth=200, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest200'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb16-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb16-210e_humanart-384x288.py deleted file mode 100644 index 367331a325..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb16-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=128) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNeSt', - depth=269, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest269'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=16, - 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='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=16, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb32-210e_humanart-256x192.py deleted file mode 100644 index dd334bb58b..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest269_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNeSt', - depth=269, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest269'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-256x192.py deleted file mode 100644 index c0eb815008..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNeSt', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest50'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-384x288.py deleted file mode 100644 index 11958c0947..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnest50_8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNeSt', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnest50'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb32-210e_humanart-384x288.py deleted file mode 100644 index 20a1b17d6e..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNetV1d', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet101_v1d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 9bb2ec99bf..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d101_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNetV1d', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet101_v1d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 16754f8066..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNetV1d', - depth=152, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet152_v1d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb48-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb48-210e_humanart-384x288.py deleted file mode 100644 index 9d9ec562b0..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d152_8xb48-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=384) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNetV1d', - depth=152, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet152_v1d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=48, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 74b206e66f..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNetV1d', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet50_v1d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-384x288.py deleted file mode 100644 index 193fe55052..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnetv1d50_8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNetV1d', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnet50_v1d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb32-210e_humanart-384x288.py deleted file mode 100644 index 43fb721866..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,122 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNeXt', - depth=101, - init_cfg=dict( - type='Pretrained', checkpoint='mmcls://resnext101_32x4d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 65f3b2bbb3..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext101_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,122 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNeXt', - depth=101, - init_cfg=dict( - type='Pretrained', checkpoint='mmcls://resnext101_32x4d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 7315855cb6..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,122 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNeXt', - depth=152, - init_cfg=dict( - type='Pretrained', checkpoint='mmcls://resnext152_32x4d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb48-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb48-210e_humanart-384x288.py deleted file mode 100644 index af23d16379..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext152_8xb48-210e_humanart-384x288.py +++ /dev/null @@ -1,122 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=384) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNeXt', - depth=152, - init_cfg=dict( - type='Pretrained', checkpoint='mmcls://resnext152_32x4d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=48, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 5ecba30aa4..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ResNeXt', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnext50_32x4d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-384x288.py deleted file mode 100644 index 51d30d0394..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_resnext50_8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ResNeXt', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://resnext50_32x4d'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn18_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn18_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 06257d41fd..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn18_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,154 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=2e-2, -)) - -# 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, 190, 200], - gamma=0.1, - by_epoch=True) -] - -# automatically scaling LR based on the actual training batch size -auto_scale_lr = dict(base_batch_size=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. -kernel_sizes = [11, 9, 7, 5] -codec = [ - dict( - type='MegviiHeatmap', - input_size=(192, 256), - heatmap_size=(48, 64), - kernel_size=kernel_size) for kernel_size in kernel_sizes -] - -# 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='RSN', - unit_channels=256, - num_stages=1, - num_units=4, - num_blocks=[2, 2, 2, 2], - num_steps=4, - norm_cfg=dict(type='BN'), - ), - head=dict( - type='MSPNHead', - out_shape=(64, 48), - unit_channels=256, - out_channels=17, - num_stages=1, - num_units=4, - norm_cfg=dict(type='BN'), - # each sub list is for a stage - # and each element in each list is for a unit - level_indices=[0, 1, 2, 3], - loss=[ - dict( - type='KeypointMSELoss', - use_target_weight=True, - loss_weight=0.25) - ] * 3 + [ - dict( - type='KeypointOHKMMSELoss', - use_target_weight=True, - loss_weight=1.) - ], - decoder=codec[-1]), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='GenerateTarget', multilevel=True, encoder=codec), - dict(type='PackPoseInputs') -] - -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=32, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'annotations/person_keypoints_val2017.json', - nms_mode='none') -test_evaluator = val_evaluator - -# fp16 settings -fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn50_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn50_8xb32-210e_humanart-256x192.py deleted file mode 100644 index e73d6aeab3..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_rsn50_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,154 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=5e-3, -)) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -# multiple kernel_sizes of heatmap gaussian for 'Megvii' approach. -kernel_sizes = [11, 9, 7, 5] -codec = [ - dict( - type='MegviiHeatmap', - input_size=(192, 256), - heatmap_size=(48, 64), - kernel_size=kernel_size) for kernel_size in kernel_sizes -] - -# 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='RSN', - unit_channels=256, - num_stages=1, - num_units=4, - num_blocks=[3, 4, 6, 3], - num_steps=4, - norm_cfg=dict(type='BN'), - ), - head=dict( - type='MSPNHead', - out_shape=(64, 48), - unit_channels=256, - out_channels=17, - num_stages=1, - num_units=4, - norm_cfg=dict(type='BN'), - # each sub list is for a stage - # and each element in each list is for a unit - level_indices=[0, 1, 2, 3], - loss=[ - dict( - type='KeypointMSELoss', - use_target_weight=True, - loss_weight=0.25) - ] * 3 + [ - dict( - type='KeypointOHKMMSELoss', - use_target_weight=True, - loss_weight=1.) - ], - decoder=codec[-1]), - test_cfg=dict( - flip_test=True, - flip_mode='heatmap', - shift_heatmap=False, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='GenerateTarget', multilevel=True, encoder=codec), - dict(type='PackPoseInputs') -] - -val_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='TopdownAffine', input_size=codec[0]['input_size']), - dict(type='PackPoseInputs') -] - -# data loaders -train_dataloader = dict( - batch_size=32, - num_workers=4, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=4, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'annotations/person_keypoints_val2017.json', - nms_mode='none') -test_evaluator = val_evaluator - -# fp16 settings -fp16 = dict(loss_scale='dynamic') diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb32-210e_humanart-256x192.py deleted file mode 100644 index ac99362488..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,124 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='SCNet', - depth=101, - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/scnet101-94250a77.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - num_workers=1, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=1, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb48-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb48-210e_humanart-384x288.py deleted file mode 100644 index 6aa29f6edd..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet101_8xb48-210e_humanart-384x288.py +++ /dev/null @@ -1,124 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='SCNet', - depth=101, - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/scnet101-94250a77.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=48, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb32-210e_humanart-384x288.py deleted file mode 100644 index 5e7dd7ceae..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,124 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='SCNet', - depth=50, - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/scnet50-7ef0a199.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - num_workers=1, - persistent_workers=True, - sampler=dict(type='DefaultSampler', shuffle=True), - dataset=dict( - type=dataset_type, - data_root=data_root, - data_mode=data_mode, - ann_file='HumanArt/annotations/training_humanart_coco.json', - data_prefix=dict(img=''), - pipeline=train_pipeline, - )) -val_dataloader = dict( - batch_size=32, - num_workers=1, - 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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 3423c14470..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_scnet50_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,124 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='SCNet', - depth=50, - init_cfg=dict( - type='Pretrained', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/scnet50-7ef0a199.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb32-210e_humanart-384x288.py deleted file mode 100644 index b56a119ca1..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='SEResNet', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://se-resnet101'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 8d9b3185ca..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet101_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='SEResNet', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://se-resnet101'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 2714d8f3a0..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,120 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='SEResNet', - depth=152, - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb48-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb48-210e_humanart-384x288.py deleted file mode 100644 index ba4c41d100..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet152_8xb48-210e_humanart-384x288.py +++ /dev/null @@ -1,120 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=384) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='SEResNet', - depth=152, - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=48, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-256x192.py deleted file mode 100644 index e48954cbac..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='SEResNet', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://se-resnet50'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-384x288.py deleted file mode 100644 index 90716e2158..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_seresnet50_8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='SEResNet', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://se-resnet50'), - ), - head=dict( - type='HeatmapHead', - in_channels=2048, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 407bf748ab..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ShuffleNetV1', - groups=3, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://shufflenet_v1'), - ), - head=dict( - type='HeatmapHead', - in_channels=960, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-384x288.py deleted file mode 100644 index e65682b415..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv1_8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ShuffleNetV1', - groups=3, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://shufflenet_v1'), - ), - head=dict( - type='HeatmapHead', - in_channels=960, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 31001638ea..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ShuffleNetV2', - widen_factor=1.0, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://shufflenet_v2'), - ), - head=dict( - type='HeatmapHead', - in_channels=1024, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-384x288.py deleted file mode 100644 index c9febd94c8..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_shufflenetv2_8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=3) - -# 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='ShuffleNetV2', - widen_factor=1.0, - init_cfg=dict(type='Pretrained', checkpoint='mmcls://shufflenet_v2'), - ), - head=dict( - type='HeatmapHead', - in_channels=1024, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-256x192.py deleted file mode 100644 index fbdba98074..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,139 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='SwinTransformer', - embed_dims=128, - depths=[2, 2, 18, 2], - num_heads=[4, 8, 16, 32], - window_size=7, - mlp_ratio=4, - qkv_bias=True, - qk_scale=None, - drop_rate=0., - attn_drop_rate=0., - drop_path_rate=0.3, - patch_norm=True, - out_indices=(3, ), - with_cp=False, - convert_weights=True, - init_cfg=dict( - type='Pretrained', - checkpoint='https://github.com/SwinTransformer/storage/releases/' - 'download/v1.0.0/swin_base_patch4_window7_224_22k.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=1024, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-384x288.py deleted file mode 100644 index 7b9f6bac77..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-b-p4-w7_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,139 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=2) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='SwinTransformer', - embed_dims=128, - depths=[2, 2, 18, 2], - num_heads=[4, 8, 16, 32], - window_size=12, - mlp_ratio=4, - qkv_bias=True, - qk_scale=None, - drop_rate=0., - attn_drop_rate=0., - drop_path_rate=0.3, - patch_norm=True, - out_indices=(3, ), - with_cp=False, - convert_weights=True, - init_cfg=dict( - type='Pretrained', - checkpoint='https://github.com/SwinTransformer/storage/releases/' - 'download/v1.0.0/swin_base_patch4_window12_384_22k.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=1024, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-256x192.py deleted file mode 100644 index c34d8441a1..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,148 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict( - optimizer=dict( - type='AdamW', - lr=5e-4, - betas=(0.9, 0.999), - weight_decay=0.01, - ), - paramwise_cfg=dict( - custom_keys={ - 'absolute_pos_embed': dict(decay_mult=0.), - 'relative_position_bias_table': dict(decay_mult=0.), - 'norm': dict(decay_mult=0.) - })) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='SwinTransformer', - embed_dims=192, - depths=[2, 2, 18, 2], - num_heads=[6, 12, 24, 48], - window_size=7, - mlp_ratio=4, - qkv_bias=True, - qk_scale=None, - drop_rate=0., - attn_drop_rate=0., - drop_path_rate=0.5, - patch_norm=True, - out_indices=(3, ), - with_cp=False, - convert_weights=True, - init_cfg=dict( - type='Pretrained', - checkpoint='https://github.com/SwinTransformer/storage/releases/' - 'download/v1.0.0/swin_base_patch4_window7_224_22k.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=1536, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-384x288.py deleted file mode 100644 index 51d49afbba..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-l-p4-w7_8xb32-210e_humanart-384x288.py +++ /dev/null @@ -1,148 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict( - optimizer=dict( - type='AdamW', - lr=5e-4, - betas=(0.9, 0.999), - weight_decay=0.01, - ), - paramwise_cfg=dict( - custom_keys={ - 'absolute_pos_embed': dict(decay_mult=0.), - 'relative_position_bias_table': dict(decay_mult=0.), - 'norm': dict(decay_mult=0.) - })) - -# 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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(288, 384), heatmap_size=(72, 96), sigma=2) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='SwinTransformer', - embed_dims=192, - depths=[2, 2, 18, 2], - num_heads=[6, 12, 24, 48], - window_size=7, - mlp_ratio=4, - qkv_bias=True, - qk_scale=None, - drop_rate=0., - attn_drop_rate=0., - drop_path_rate=0.5, - patch_norm=True, - out_indices=(3, ), - with_cp=False, - convert_weights=True, - init_cfg=dict( - type='Pretrained', - checkpoint='https://github.com/SwinTransformer/storage/releases/' - 'download/v1.0.0/swin_base_patch4_window12_384_22k.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=1536, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-t-p4-w7_8xb32-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-t-p4-w7_8xb32-210e_humanart-256x192.py deleted file mode 100644 index 16d34b1e8a..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_swin-t-p4-w7_8xb32-210e_humanart-256x192.py +++ /dev/null @@ -1,139 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=256) - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# model settings -norm_cfg = dict(type='SyncBN', requires_grad=True) -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='SwinTransformer', - embed_dims=96, - depths=[2, 2, 6, 2], - num_heads=[3, 6, 12, 24], - window_size=7, - mlp_ratio=4, - qkv_bias=True, - qk_scale=None, - drop_rate=0., - attn_drop_rate=0., - drop_path_rate=0.2, - patch_norm=True, - out_indices=(3, ), - with_cp=False, - convert_weights=True, - init_cfg=dict( - type='Pretrained', - checkpoint='https://github.com/SwinTransformer/storage/releases/' - 'download/v1.0.0/swin_tiny_patch4_window7_224.pth'), - ), - head=dict( - type='HeatmapHead', - in_channels=768, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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=32, - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vgg16-bn_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vgg16-bn_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 0a8722670b..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vgg16-bn_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,122 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='VGG', - depth=16, - norm_cfg=dict(type='BN'), - init_cfg=dict(type='Pretrained', checkpoint='mmcls://vgg16_bn'), - ), - head=dict( - type='HeatmapHead', - in_channels=512, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-mbv3_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-mbv3_8xb64-210e_humanart-256x192.py deleted file mode 100644 index a94e01c97e..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-mbv3_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,122 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ViPNAS_MobileNetV3'), - head=dict( - type='ViPNASHead', - in_channels=160, - out_channels=17, - deconv_out_channels=(160, 160, 160), - deconv_num_groups=(160, 160, 160), - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - rotate_factor=60, - scale_factor=(0.75, 1.25)), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-res50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-res50_8xb64-210e_humanart-256x192.py deleted file mode 100644 index b06189da21..0000000000 --- a/configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_vipnas-res50_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,120 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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 = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# codec settings -codec = dict( - type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2) - -# 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='ViPNAS_ResNet', depth=50), - head=dict( - type='ViPNASHead', - in_channels=608, - out_channels=17, - 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 = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict( - type='RandomBBoxTransform', - rotate_factor=60, - scale_factor=(0.75, 1.25)), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/vitpose_humanart.md b/configs/body_2d_keypoint/topdown_heatmap/humanart/vitpose_humanart.md new file mode 100644 index 0000000000..1e559aa4da --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/vitpose_humanart.md @@ -0,0 +1,85 @@ +To utilize ViTPose, you'll need to have [MMClassification](https://github.com/open-mmlab/mmclassification). To install the required version, run the following command: + +```shell +mim install 'mmcls>=1.0.0rc5' +``` + + + +
+ +ViTPose (NeurIPS'2022) + +```bibtex +@inproceedings{ + xu2022vitpose, + title={Vi{TP}ose: Simple Vision Transformer Baselines for Human Pose Estimation}, + author={Yufei Xu and Jing Zhang and Qiming Zhang and Dacheng Tao}, + booktitle={Advances in Neural Information Processing Systems}, + year={2022}, +} +``` + +
+ + + +
+COCO-WholeBody (ECCV'2020) + +```bibtex +@inproceedings{jin2020whole, + title={Whole-Body Human Pose Estimation in the Wild}, + author={Jin, Sheng and Xu, Lumin and Xu, Jin and Wang, Can and Liu, Wentao and Qian, Chen and Ouyang, Wanli and Luo, Ping}, + booktitle={Proceedings of the European Conference on Computer Vision (ECCV)}, + year={2020} +} +``` + +
+ +
+Human-Art (CVPR'2023) + +```bibtex +@inproceedings{ju2023humanart, + title={Human-Art: A Versatile Human-Centric Dataset Bridging Natural and Artificial Scenes}, + author={Ju, Xuan and Zeng, Ailing and Jianan, Wang and Qiang, Xu and Lei, Zhang}, + booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), + year={2023}} +``` + +
+ +Results on Human-Art validation dataset with detector having human AP of 56.2 on Human-Art validation dataset + +> With classic decoder + +| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | +| :-------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------: | :-------------------------------------------: | +| [ViTPose-S-coco](/configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-small_8xb64-210e_coco-256x192.py) | 256x192 | 0.228 | 0.371 | 0.229 | 0.298 | 0.467 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-small_8xb64-210e_coco-256x192-62d7a712_20230314.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-small_8xb64-210e_coco-256x192-62d7a712_20230314.json) | +| [ViTPose-S-humanart-coco](configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small_8xb64-210e_humanart-256x192.py) | 256x192 | 0.381 | 0.532 | 0.405 | 0.448 | 0.602 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-small_8xb64-210e_humanart-256x192-5cbe2bfc_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-small_8xb64-210e_humanart-256x192-5cbe2bfc_20230611.json) | +| [ViTPose-B-coco](/configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192.py) | 256x192 | 0.270 | 0.423 | 0.272 | 0.340 | 0.510 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192-216eae50_20230314.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192-216eae50_20230314.json) | +| [ViTPose-B-humanart-coco](configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base_8xb64-210e_humanart-256x192.py) | 256x192 | 0.410 | 0.549 | 0.434 | 0.475 | 0.615 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-base_8xb64-210e_humanart-256x192-b417f546_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-base_8xb64-210e_humanart-256x192-b417f546_20230611.json) | + +Results on Human-Art validation dataset with ground-truth bounding-box + +> With classic decoder + +| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | +| :-------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------: | :-------------------------------------------: | +| [ViTPose-S-coco](/configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-small_8xb64-210e_coco-256x192.py) | 256x192 | 0.507 | 0.758 | 0.531 | 0.551 | 0.780 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-small_8xb64-210e_coco-256x192-62d7a712_20230314.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-small_8xb64-210e_coco-256x192-62d7a712_20230314.json) | +| [ViTPose-S-humanart-coco](configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small_8xb64-210e_humanart-256x192.py) | 256x192 | 0.738 | 0.905 | 0.802 | 0.768 | 0.911 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-small_8xb64-210e_humanart-256x192-5cbe2bfc_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-small_8xb64-210e_humanart-256x192-5cbe2bfc_20230611.json) | +| [ViTPose-B-coco](/configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192.py) | 256x192 | 0.555 | 0.782 | 0.590 | 0.599 | 0.809 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192-216eae50_20230314.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192-216eae50_20230314.json) | +| [ViTPose-B-humanart-coco](configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base_8xb64-210e_humanart-256x192.py) | 256x192 | 0.759 | 0.905 | 0.823 | 0.790 | 0.917 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-base_8xb64-210e_humanart-256x192-b417f546_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-base_8xb64-210e_humanart-256x192-b417f546_20230611.json) | + +Results on COCO val2017 with detector having human AP of 56.4 on COCO val2017 dataset + +> With classic decoder + +| Arch | Input Size | AP | AP50 | AP75 | AR | AR50 | ckpt | log | +| :-------------------------------------------- | :--------: | :---: | :-------------: | :-------------: | :---: | :-------------: | :-------------------------------------------: | :-------------------------------------------: | +| [ViTPose-S-coco](/configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-small_8xb64-210e_coco-256x192.py) | 256x192 | 0.739 | 0.903 | 0.816 | 0.792 | 0.942 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-small_8xb64-210e_coco-256x192-62d7a712_20230314.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-small_8xb64-210e_coco-256x192-62d7a712_20230314.json) | +| [ViTPose-S-humanart-coco](configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small_8xb64-210e_humanart-256x192.py) | 256x192 | 0.737 | 0.902 | 0.811 | 0.792 | 0.942 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-small_8xb64-210e_humanart-256x192-5cbe2bfc_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-small_8xb64-210e_humanart-256x192-5cbe2bfc_20230611.json) | +| [ViTPose-B-coco](/configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192.py) | 256x192 | 0.757 | 0.905 | 0.829 | 0.810 | 0.946 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192-216eae50_20230314.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/coco/td-hm_ViTPose-base_8xb64-210e_coco-256x192-216eae50_20230314.json) | +| [ViTPose-B-humanart-coco](configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base_8xb64-210e_humanart-256x192.py) | 256x192 | 0.758 | 0.906 | 0.829 | 0.812 | 0.946 | [ckpt](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-base_8xb64-210e_humanart-256x192-b417f546_20230611.pth) | [log](https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-base_8xb64-210e_humanart-256x192-b417f546_20230611.json) | diff --git a/configs/body_2d_keypoint/topdown_heatmap/humanart/vitpose_humanart.yml b/configs/body_2d_keypoint/topdown_heatmap/humanart/vitpose_humanart.yml new file mode 100644 index 0000000000..12a557fbf6 --- /dev/null +++ b/configs/body_2d_keypoint/topdown_heatmap/humanart/vitpose_humanart.yml @@ -0,0 +1,79 @@ +Collections: +- Name: ViTPose + Paper: + Title: 'ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation' + URL: https://arxiv.org/abs/2204.12484 + README: https://github.com/open-mmlab/mmpose/blob/main/docs/src/papers/algorithms/vitpose.md + Metadata: + Training Resources: 8x A100 GPUs +Models: +- Config: configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-small_8xb64-210e_humanart-256x192.py + In Collection: ViTPose + Metadata: + Architecture: &id001 + - ViTPose + - Classic Head + Model Size: Small + Training Data: &id002 + - COCO + - Human-Art + Name: td-hm_ViTPose-small_8xb64-210e_humanart-256x192 + Results: + - Dataset: COCO + Metrics: + AP: 0.737 + AP@0.5: 0.902 + AP@0.75: 0.811 + AR: 0.792 + AR@0.5: 0.942 + Task: Body 2D Keypoint + - Dataset: Human-Art + Metrics: + AP: 0.381 + AP@0.5: 0.532 + AP@0.75: 0.405 + AR: 0.448 + AR@0.5: 0.602 + Task: Body 2D Keypoint + - Dataset: Human-Art(GT) + Metrics: + AP: 0.738 + AP@0.5: 0.905 + AP@0.75: 0.802 + AR: 0.768 + AR@0.5: 0.911 + Task: Body 2D Keypoint + Weights: https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-small_8xb64-210e_humanart-256x192-5cbe2bfc_20230611.pth +- Config: configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_ViTPose-base_8xb64-210e_humanart-256x192.py + In Collection: ViTPose + Metadata: + Architecture: *id001 + Model Size: Base + Training Data: *id002 + Name: td-hm_ViTPose-base_8xb64-210e_humanart-256x192 + Results: + - Dataset: COCO + Metrics: + AP: 0.758 + AP@0.5: 0.906 + AP@0.75: 0.829 + AR: 0.812 + AR@0.5: 0.946 + Task: Body 2D Keypoint + - Dataset: Human-Art + Metrics: + AP: 0.410 + AP@0.5: 0.549 + AP@0.75: 0.434 + AR: 0.475 + AR@0.5: 0.615 + Task: Body 2D Keypoint + - Dataset: Human-Art(GT) + Metrics: + AP: 0.759 + AP@0.5: 0.905 + AP@0.75: 0.823 + AR: 0.790 + AR@0.5: 0.917 + Task: Body 2D Keypoint + Weights: https://download.openmmlab.com/mmpose/v1/body_2d_keypoint/topdown_heatmap/human_art/td-hm_ViTPose-base_8xb64-210e_humanart-256x192-b417f546_20230611.pth diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_mobilenetv2_rle-pretrained-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_mobilenetv2_rle-pretrained-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 8396ea1b26..0000000000 --- a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_mobilenetv2_rle-pretrained-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,126 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=1e-3, -)) - -# 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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict(type='RegressionLabel', input_size=(192, 256)) - -# 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='MobileNetV2', - widen_factor=1., - out_indices=(7, ), - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/top_down/' - 'mobilenetv2/mobilenetv2_coco_256x192-d1e58e7b_20200727.pth')), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='RLEHead', - in_channels=1280, - num_joints=17, - loss=dict(type='RLELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - ), -) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - score_mode='bbox_rle') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 5901d7dc9b..0000000000 --- a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,120 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict(type='RegressionLabel', input_size=(192, 256)) - -# 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='ResNet', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), - ), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='RegressionHead', - in_channels=2048, - num_joints=17, - loss=dict(type='SmoothL1Loss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=f'{data_root}annotations/person_keypoints_val2017.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_rle-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_rle-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 189792780e..0000000000 --- a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res101_rle-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict(type='RegressionLabel', input_size=(192, 256)) - -# 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='ResNet', - depth=101, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet101'), - ), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='RLEHead', - in_channels=2048, - num_joints=17, - loss=dict(type='RLELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - score_mode='bbox_rle') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 6589b8e56e..0000000000 --- a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,120 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict(type='RegressionLabel', input_size=(192, 256)) - -# 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='ResNet', - depth=152, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), - ), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='RegressionHead', - in_channels=2048, - num_joints=17, - loss=dict(type='SmoothL1Loss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=f'{data_root}annotations/person_keypoints_val2017.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-256x192.py deleted file mode 100644 index 77c3a0f1df..0000000000 --- a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict(type='RegressionLabel', input_size=(192, 256)) - -# 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='ResNet', - depth=152, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), - ), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='RLEHead', - in_channels=2048, - num_joints=17, - loss=dict(type='RLELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - score_mode='bbox_rle') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-384x288.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-384x288.py deleted file mode 100644 index eff463d3e1..0000000000 --- a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res152_rle-8xb64-210e_humanart-384x288.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict(type='RegressionLabel', input_size=(288, 384)) - -# 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='ResNet', - depth=152, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet152'), - ), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='RLEHead', - in_channels=2048, - num_joints=17, - loss=dict(type='RLELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - score_mode='bbox_rle') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_8xb64-210e_humanart-256x192.py deleted file mode 100644 index 006c0fee44..0000000000 --- a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,120 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict(type='RegressionLabel', input_size=(192, 256)) - -# 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='ResNet', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), - ), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='RegressionHead', - in_channels=2048, - num_joints=17, - loss=dict(type='SmoothL1Loss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=f'{data_root}annotations/person_keypoints_val2017.json') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-8xb64-210e_humanart-256x192.py deleted file mode 100644 index cf8b681560..0000000000 --- a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,121 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=1e-3, -)) - -# 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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict(type='RegressionLabel', input_size=(192, 256)) - -# 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='ResNet', - depth=50, - init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'), - ), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='RLEHead', - in_channels=2048, - num_joints=17, - loss=dict(type='RLELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - 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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=val_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - score_mode='bbox_rle') -test_evaluator = val_evaluator diff --git a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-pretrained-8xb64-210e_humanart-256x192.py b/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-pretrained-8xb64-210e_humanart-256x192.py deleted file mode 100644 index c208491ae8..0000000000 --- a/configs/body_2d_keypoint/topdown_regression/humanart/td-reg_res50_rle-pretrained-8xb64-210e_humanart-256x192.py +++ /dev/null @@ -1,125 +0,0 @@ -_base_ = ['../../../_base_/default_runtime.py'] - -# runtime -train_cfg = dict(max_epochs=210, val_interval=10) - -# optimizer -optim_wrapper = dict(optimizer=dict( - type='Adam', - lr=1e-3, -)) - -# 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=train_cfg['max_epochs'], - 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) - -# codec settings -codec = dict(type='RegressionLabel', input_size=(192, 256)) - -# 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='ResNet', - depth=50, - init_cfg=dict( - type='Pretrained', - prefix='backbone.', - checkpoint='https://download.openmmlab.com/mmpose/' - 'pretrain_models/td-hm_res50_8xb64-210e_coco-256x192.pth'), - ), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='RLEHead', - in_channels=2048, - num_joints=17, - loss=dict(type='RLELoss', use_target_weight=True), - decoder=codec), - test_cfg=dict( - flip_test=True, - shift_coords=True, - )) - -# base dataset settings -dataset_type = 'HumanArtDataset' -data_mode = 'topdown' -data_root = 'data/' - -# pipelines -train_pipeline = [ - dict(type='LoadImage'), - dict(type='GetBBoxCenterScale'), - dict(type='RandomFlip', direction='horizontal'), - dict(type='RandomHalfBody'), - dict(type='RandomBBoxTransform'), - dict(type='TopdownAffine', input_size=codec['input_size']), - dict(type='GenerateTarget', encoder=codec), - dict(type='PackPoseInputs') -] -test_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='HumanArt/annotations/training_humanart_coco.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='HumanArt/annotations/validation_humanart.json', - bbox_file=f'{data_root}HumanArt/person_detection_results/' - 'HumanArt_validation_detections_AP_H_56_person.json', - data_prefix=dict(img=''), - test_mode=True, - pipeline=test_pipeline, - )) -test_dataloader = val_dataloader - -# hooks -default_hooks = dict(checkpoint=dict(save_best='coco/AP', rule='greater')) - -# evaluators -val_evaluator = dict( - type='CocoMetric', - ann_file=data_root + 'HumanArt/annotations/validation_humanart.json', - score_mode='bbox_rle') -test_evaluator = val_evaluator diff --git a/tools/dist_train.sh b/tools/dist_train.sh old mode 100644 new mode 100755 From 954f9f4fd7a15a4f392cb5902fdace26d2aa4d95 Mon Sep 17 00:00:00 2001 From: juxuan27 Date: Mon, 12 Jun 2023 01:38:12 +0800 Subject: [PATCH 6/7] change test images --- tests/data/humanart/000000000785.jpg | Bin 133674 -> 0 bytes tests/data/humanart/000000040083.jpg | Bin 104152 -> 0 bytes tests/data/humanart/000000196141.jpg | Bin 135345 -> 0 bytes tests/data/humanart/000000197388.jpg | Bin 167407 -> 0 bytes .../digital_art/000000001648.jpg | Bin 0 -> 1024164 bytes .../garage_kits/000000005603.jpg | Bin 0 -> 225722 bytes .../real_human/acrobatics/000000000590.jpg | Bin 0 -> 76762 bytes tests/data/humanart/test_humanart.json | 2745 ++++------------- .../humanart/test_humanart_det_AP_H_56.json | 1311 +------- 9 files changed, 597 insertions(+), 3459 deletions(-) delete mode 100644 tests/data/humanart/000000000785.jpg delete mode 100644 tests/data/humanart/000000040083.jpg delete mode 100644 tests/data/humanart/000000196141.jpg delete mode 100644 tests/data/humanart/000000197388.jpg create mode 100644 tests/data/humanart/2D_virtual_human/digital_art/000000001648.jpg create mode 100644 tests/data/humanart/3D_virtual_human/garage_kits/000000005603.jpg create mode 100644 tests/data/humanart/real_human/acrobatics/000000000590.jpg diff --git a/tests/data/humanart/000000000785.jpg b/tests/data/humanart/000000000785.jpg deleted file mode 100644 index 78718f5f5c031d1fed853b55878083058f289755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133674 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�@*MG-nkGU5H9b8@*0q&i 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

uK?kk6{e3;~AcYf#pmK(#kSMmM3%}34 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 diff --git a/tests/data/humanart/000000197388.jpg b/tests/data/humanart/000000197388.jpg deleted file mode 100644 index 2d19ecd0cac9b14e7d68c1c851c60f207e2d5840..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167407 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%0DtwZfFY##z1Bq|U8LN(T^{5C)$)RcX(Ii!Y#h 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%0D{FA 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%0AWu1o@!jcvY5K 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 diff --git a/tests/data/humanart/2D_virtual_human/digital_art/000000001648.jpg b/tests/data/humanart/2D_virtual_human/digital_art/000000001648.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f2202760b0eb691319123f7f81b204af3235bf3 GIT binary patch literal 1024164 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

_47fo4@Sy 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

  • 4NW`aSR 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

    k{&2-HEqWE=gClV$ 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©jvgry;|>nYG@^+LV^AIqUa-%GkZjEaj- zbi(1^%Vu$gKWfvgnftUVaA#XN>wI|5&&KEznBj*VqNP}HL-Hc~;ufRn>`0SSHLnz| z7nk$vUoFm{i(m>lGb-4id!>uBi_rHln1>~`@LHyg&}$WH;_)il7A*T9?A{`N3$;hR zV0<0Qir_q(bC@6!=D^(TO$Ie71gyyPGr&ujJSabMm2iq;06VU4BnD>}%O-hvj;&nm z^QW*L4ya%7HgQ1iV9iG%5M;pOo)} z!!lA}Q9`1J$kkHEc2ds`-m(icQ5kd`#GlDrPIK%=RxuYP9524-Q2FZfmtuRiaE6Xt z)ZOB5v}tUENzdhXM&hqLa~-F+FN{rp_rpKvj;`@D1(BkQ0=w~c%Z*O%P9WFj8DN*^n>V#=WGjEVJ}M#m#-s zC(k>o*FSl_!}Gmryb_<^D1gnIC+XAh+e4po%RW|kTN!*OPM$&q+J6_|wOWYRLD+Ru zmGKRzoR^i-8pv@1%MlmsBg_s-E!>~@U|`Mxa}e*^T%9<+5S4445>fX#n{)+?0Lea% z(i+=LJRDl zY4kbxBYmVSM|H=8Hz{PxZ-Yz15Yz`m0&E}d3P$UcTt#D{J6%QEBvg^1xw1iL*2r@%`9Zq3G&EJf}kJB#U z<=RxWvS_IA18@G5()$z0qy@dLzT_wx_Dey68Rt*(>Dn=#+W~%>Vyv`wrNrCeJBSj6&^i3oxkToTD8 zJhs&HYcvQ)6YNDGo0r441e{=t(iwO4wPrbHJyQ_!Y`Ut@lu9ha8Z#%gd`I7XXnlS8n44X*7+?QAWgua4Stayt$iRh|1N12-d|}bw|CE52}QV! zz`#l65$fh2zx7OsNd~SN`?KJvlWrTIrh`OuV^vu?@hq@XfQ@4>OK@JzHJpq#Gu@P` zaTx`{*|U>P5oZVFvGiNUvRgIo=j%voD@b#{|0iXWJyaE+&&9pi_@2l36}!>-?@Jep zO%6Sgmac~*iZ$~o3GJ#zPdT<5MMjoACr66_BijWC*Iki1J=Sw2OKfBW;?4gF+%VLnUy5s%-(1zDn*I-I?sNeS7LQSsr2BBzI+1(Y z*rKnEfi8Dnp-q`rD7uDf?jG+l7SOO)Sf`+_{r7P%zA1_GF|F`A%}3Z1x^3xnA z_PK_F|AFx*F&I_J0r9R&3jglg>LWXDN- zNk8{(FcP~R^+jP3tquBl@{v@@mf&w~WpP=-LfI>s;o0!WbJ*d4Qf57+M znNUNu^8tH5rbTTyzp-jxI5HvZoWq&LZ{HZ=r{tBg&xxYR1%;LkBr-APSADk0{zUuk zB}+UWPGa|A9w&Sm`2KO>h_v*DG94KO-mS)WwU^gFS-z^ko(NM=^7$3n;k>5EIda%5 zd|`Q4^(6-_-<0-umCeuoZ*}GvWMKMOURU1wh@sVK{jR6Mo8ea%aTd@kAAkgI**9h* zkKbLwuj(slU~+%of#(#va0y_`4u_f%CwTb|;Ws8Gtb&InaG?ZX^t|SPY@B^+Z`kvK zM4YdCGX>;zIu4l;?+n*lM^UUOIV#?t)U8t9qK2-K#nkzPe3t}E;mTLB~9Lg<^o zIY8%g$%4p&ncie|^Pmhivn#&l&Z&ZDn}L(Z?l{}1zu+|G{pHb=WU>8w!OJ(~@@HCV z3J8ziUjs5$aSZ!GjJ>1+)sF_dzVN_BkJ^kiBm_Ra^D=9dv6denf7GMoXS)xQ*fA;6 zE%k68|4ic`1(&dUIgXE17N|QMrJn$rsV#Uc&LFve5dTV~5RjO9aCs+G;iGH0S*v4- zpCSz>R)7DRK!D?1vlYSq8G?LhD(r>>K0p>Z|60g_Vxq)olfF91vaKlyoWPQ}%kwxz zHgoKqz715oXKjwPE{bs+?->PwTgAMR_0{X9ur=5ph4#w=nq)KgTISl785ozu;w`$5 z7tX>*Ie=wjK@@hunJ~n~#QynxTWE>HJAN~WG$Dk`nj1p`ZJocV+Zc~D67kBwB{k3W zarm{LpySoWV7*o)a0P6Br_VL^3bTEPFJ1ENcXUy-OU1t9Up%XZ-h-UUmQo;9Z$JvS zbzpmScFim-hC}s0?1E$oRnY+-s&l@>8%gVPVj;$}K`_1Y4zwKr^_$;0#c~~9=>tCp zdkx%dNw%_QElk8<{%t(<+#4KQ2&|IHGm%C)5V4=JN&?IK$vW*NB8vf(^WYMxDcD+W z*kZEcQ@@BOfmh*TWsVl*WtfSD;LZa_oFVRu*_Bt%=eovXL)POWvSTFE591ZF_?~)= z_gyi3lAQQl?onD&A4y{7RS%fT8RH$k)6g2Fex1Y^FLYZedqanDfx%9FVcevKbbO~Z zE+XS1&Liy$-DH-YQEd+ASS=`TpEzqYf&r}-^hzdc1Xw^wb_l>M|MyYB06W+9d|4z> zaIwY`KO!8Wj7>8uw*2-$uQ%6?G!?>FpaJYjbQeF0au}40G)=s=w%|U=I>CQQf*$*Ze zA{(|Fi@aOTp`@Q}-U2*{0)5w2fKLkQf0oy$+x0Q|*nIq4iU>cYxrpF+O)XC3x4<}R ztEcY@L=JgTk&-vXlL}pA941S=NRNtFg|!cqCU;I_+5qR_O_8!B$KXGyPe5hY5dZ;q zAby3QfREYANV~f&ad)Cku4kqCSHQa7J)L{Ym~c3;176{cK!-Loo!+|y+&XWF}BA=zHci;MYZueXMU?% zlMM#I6R1B9hbp)<;^J90mN8O8HV1x`+c?cV=obND+qIXLISXcN+wjc6`{WfWw2dG- zj2Tfkyd8;`p2M@V;x@DUL$vp^Cq{rGpa;Uzi-se@((X58xJQ$)zk8MMo1d!|>mck; zwpQ$QBJi8YTNYE>JYuyqMJ}ygr~D-LTiC-+jwvXDrbO-`qlutsGs;-b^0_|r>@Ld9 zK{JGZ$yZeWzp)PU)5nl*#{_WERm@M2HdbhiPI9Py5UCO9!Q!AI0)}0QJv_820b+?y<3MYM$be^(y0Rj>6>Kbe%%~;c^E; zefhX>P7+7wi-i|1KDQ|0GZ*AU2L(iapX80X96PDC1>IcqCaQSe^3?Dz z27=9eXaHtl#mDwk&3l`-&gvNxRt=D&Ml@z(+yNS1T73KgY~w5>_hVHeV?%C=kM@o7 zD1e+P@(A~>izJu~IKb|~PT@;LDwuu;buCVRUWjy8NLpi1;wQ#xaHPVPS@WI(!LFV1 zKR526f82*xtY(MhO5{MysD0V2i_X*CNhN)rk*VeXjxhk2iL*|E*;0XjUDFMYLSpsM zD{qyY#9qC$r^NCe+2s^eX>;gDaAZeCB@BJ?sB(;A-NhaW3sDV|-ofEJxBY_UYs|dPPOjdJM%b}R_?QG{kh>mY~H?m ze|OZ9Of=Q7+c#T>l*b&wbH=+GFF)L!5b;@1&J~G7HxWp83%GEIfeXo<-RzsAq1~4~ z#mVPBiv`A(T9fACYzNUoJ^g&&`l_yg=?f4bA}krtEoXMbm55AHld%niCRnsCj=wA^D9r4% z)tBUTm8ht6kyRas!v3F)FJT-{#fDogMXG6U-?HCb{hmbPh9pp z)HxP%$Ss_e1~P*S9dXXy(G`bt`i;AaVMtKPuBQWU8#0p1q5^xH`*Dor^=)E8N<(V0 zac-TmW_e17~?c6`hQX?{uCExN}LD%vUNLjVz@$D=w3?j z|6RQ^JYP0Eee3MGli15bOUa&(P2`T_ZhkLm8ps1vzkpoQT>Ba7lH>L}#19Ph9RLE{ z>U7DMpC3|p+UYbgO!X|$mrd1xezZ3UYmdD5K4GpaIqQ?{lz-fzE;VWfm6RHHHkyuh zS+;AGd)d9R9~|XuY>7FxEuS=1lzLvos1xl*guVb=!^h0lc)dFtdU%MQdtKV{l5?+s zNtC)JWDs{X*1hp7xwL8blaYVBByRtEnijz@_cbQ))E_buA8Q|0J@Nj^h1+G%E)HJ^ zII+8KqHg@N@6ykn+t0kid`I>Nmt_@J)>3Ej6VOxPWZRg3)Ye_)P|d5+SrZl&e@5tVg!rz_L%RxFhs77cVdQ2M%jk_G zpnq^1_G>+xN{o-0e3T@*Z(J z9mQZMG^wz+qa1m$eg!jU!dkTmOScYgAowaImOQFIlIn|PfejB_uTMWv-Nv?zV;JHH zfsmLWD)_E8zA1jsI^{H@QmwH%jx%1AoFY#)jOTr-@Yeg~bB0U^u|0J!mNQ%`_fxI^ z!baly;(BaE$sKtql{FH92B8zs@-P`|dBWeKVcuQ9mu<@Ut{=Fj_Uf8Mg7A0<;F-YV zqiFtT8{z*F15ENzILqRJI99eKzEY!QpF3-MuY>v zD!mCOwU|HC5|SdIBsCamcKQCY%A@I(;r}9}^qsoHS3%7WUen1hrHAPSC?q|!e_l#) zS>t`Q+|}vplwurX>~=k7h&Z!PZnn0=LU||<6B?%{xXf5inLJ7s%dp2=V<>6n7s_DO zE^{s?K#LV8smz{AZ!=N#eHI{emt?@Fo~UmXct(&OVQY-5IBSm&B5TJ`>Vx0n)M%f@ znc%(Zg-M9zo88YL5;trl9KsY}`hj*N<12PFq?Or*m1#N=Qfx6)o6M0;Gd!s)zCqu| z-i)m?)Q;#j{&8;T%E^C>4Oas?%|Gsv4YgLgqmMHS{{nNv$zik9Ezri?$wS#%iDFG5 zMgF(pq^4Xd{qE#Gi@uX9e(;6%%am^sVIr*-+$f>+=imwL0X*MueCL>pCylM4em8p-77HP zZfz%}xuyke8{&+hl&5e{*{T12LdBio_}V?|x_WvsPlVXw*RlESHcn^FMS|-61`%ay z_sd-;$L1=n`-3in9xoK}Ex4=ZX!wA}gHrE&HJl(Jmz>!v=uuAY(d+gs=OsLuM&Zlo zoC~bO+T_#0OLG@ZT+zXpA=h2=boR&v!Wvd!KZl-FmMNC>nIofaEr;+6f+y{d_PT*G z1M;q57bjEB7u2`k%Y@IZE_cRWJ3U-EHoop8SwnKkU}NgWu?Ii-c3uBQm>6JBJf68k zOXyxx;8OS|7FqO|KR4OW9KXq~WmhrF>>DI&;*YCL7*o8q=%_x}QT!(-K-7~Cfp9nm zy!hfLwITdVX2hx(xQ5<WK6qH}0dc#{buK#8>ur6i{YuUcqd(Az!MshdSkVTw{ zI%lk^?aw%6Okm_A9vO%}BMx17;VlE9^)uYi=;{cx!U;pH$+`@5=nK#k=i0ua>3(>Xm@B<_1psxiu6CYv!hZV=slG9`Q^Ry9(0ecoHpj ztrgX<_|>j32tCitl<)NtpUP)iX4#?MFp4Q$);gC&FyAZr>#^yn;splcY;lhx;D?up zxoIUYFA|0WJc($ekZbu;l8^aYKmt31&r{fVtXxe=EpfMi;=0%8RY>qdnNvU=DQ9~} z9$sy35v-%*^w*X>Up2w7at=R2d%2akWz4lN*5h_#PCH(4BCathMSSfa zXkak?&A82#lco1|-8?GgNjy!QqJ{{LfOUx>rr(HIm(eLFPlu-wRU!`KzvOyL>Uszp z;tWaRi-jxazt6XTXyyGkl@KFus_mQ}Am)tH&131!&XK7mk;!j<*2>PbZ$E*WOWTNh z!D3OtTT;X1Pn!7T+jNb)8DrGy$8>Q0Y9F&zRV%yh!bim>Uxzq=Om9bnUUofLN zJ)eZl*IN=F`pv|-?j5z<;PLT;v8;oVZv%nj{-@F)`a9r zHAloxOw=*~K_F)Lx5GIcOS7Bc%cx2bb3UgmMfXh>&#c$O<~AY5#R_5Z6t#fiS~cCp zsL99yZkp7Nd|@nBSPDW#JZpUJg#A`;d7&yB!^UbmPMMpz?nn|oJY`Tz01x?VP^D6^ z%Sdq#5S1VnF&nz?=xpf;9d*BYHrDOmkUeSGW#cm2#&Ex)=7ri`S5D934`(r z>oOBk`1v#T*zern7yvwW!S64At)O1Jp70m0nEZqDBUXe>@EILD%lFgy6?y@N_z?vo zSp=-k4x-E}vit^WIWBk6=EQP^v6D^>_64>zb4BC;xuTNKeu4sxg(q`&!6#|+;)&rT zLJVzbDd^DWXV)w*hLbAL(SLvt>tu85Sc61u1s!<_X=5>sj5FmCP7Uf7##NG3x%d*X zw0m1-x)!A;H1hDdG7h}60^M)@j9zLz?&%K+8|yOuSMTT=6r8J;)%Qy;<9RqKgus|J zlPFj*V>l9eapsChg5t5hEaEJ)%HK?M|4n)s1zVDk;2E@xV%4-;7wD-@wHvgD!@|?* zjV+-9VHiF}6o{8e5VmN^xk|W@M=aj?ezB^&$Hg?lLOH}mEB*=HXuBPQU6`hIH8c%J zt|qNrxgV^l)^CcI+AkF43LRZr?gw#k1=3;$*)Wx@e=f6)D7Vo5W8J)4b^e4<6%u8gUV>?IQ@3{Gyd%{=Rj&UrPT4%s1JS8qR+5D=k zqaud6W=SkwXXM93@IzE>N?f`@Vifih6Hlr~h6C1q4{waDz-)>431R!oZn&k&Qbr$HftX z9tI(8>?@ID@MC4iRst#l~u^|(rT!0%Oqnu(T7cL)9y)|x9ge_Tyn6_L<2sq zONZ_UIwuu+bFw^;KU13x_}$n?9Nmsf3L9u)S9-u1C)k&I9kgbE7Bzzd6hWBl3Gz`^ z3?VJd0LFk*S6qV5acCNd*xhh&{CvIFiVM@S;hTHDXOlc)XSW9Z@8|x9zbfxkH}yUA zn;x(+>&+W2}gA68uf_bd-+ zyV8X&5Zs&3Ny69c^YVMj>h9+M4(ks?z8ix*Fwh0OH9<&QW87(%>rX|7wav}-aVvMC zjhCq=^YQ`J_5UAHUmliJ`o3SEX2xlgDKoWHW-@ci(#p&orfG4^k~WvrBr`QNH8XRC zGmTT0sZ2F$xj>tdE3Rp#kSm!fCMqf_3MwL^pn%A7=J)pf=l4(7Raaba&Uw%KJn#M7 zOK;l1-?|-)Z#gvskd6r3>F6oF%a9D+U9`7NqL>v}cuiE;x<6>UQr>0B;g0>{C$gR| zwVq|n!0W}XcWr~$h^z>u!OyzB>8fxc;OY3D2Z)=W-a2aWU95C{DtaeRfs-sBF^)(s zJATMx*_lymPp*?U=^G|4b8DouhghRq7ZTAwDX#3^Rhx$+#bgh|1M!AQ^q;j;1Rn+1 z>v6pUoktq$^`ddaS)OL6PXKJHQ7B`aoDzbGkn_NG_-pWnlMqj6C)Ge3NS(~kq-f0H zrUtiw=9R5sUBUNSHSQA!oc>!icD~Bz^>9s%M=T1i{obRATVBOsH<=3El*iCW2t(d_$QH?8#_5k(`YD_$#sXVm(BD%N14kskk7y`m@ zLafGoEW&YH((x^Je>E$&r=Vw)nH1&f1?Fr5ul9O$e<-pl_AYwD*uE8nt%zC&Hi21eO z(s>5sXD2f%9<8?gi-QPSOyX$G;A1s^f!+(tucZ`SR7AIUZ@7`a{kPtd{{xZbv@2j! zFHH-oGY`UV9k0-i^V{0SlRU&I&bJ-T4uncRlywa~?R!OkOkUs*dT)Vdfb##g)P+kEv|QlUqa z;!;Z|kc0R#bwE7kY%RNN`|;uKVI|V?>DBmwKzNCZ*mC(AK#)B2%;WuZp{W5q-NL05 z0PY1MhxOXMFO%BGEP9^jaQVo^E!{7!IRSIr%eUGRBM5+{F(-B(ZOfzm6qCE4do&V$ ze2aY>W-#9)F>poqZmN#rS&6{&pO#P@0sqR`aGSuXFMuQwP`AT*X9P=*iFNVE@+r9gyVdO?yhEq>$<&l~UsFR18zUbr_p`5#&QWP^8m&<_ zX$tLkYjg;$U)u_fhu^Dte93;MG>}{<#BQP*D8jhpyET?;?faA6 zB+*W^K!`vjv1AAy4WS65SB+sx;+bELz;gL@ zueT;(!-vo;QUkZrux0(pv>9$A^`Q_5EP!6N&r|a|z>(b1+va3{lp+>DkK~BI$X^uo zesHqk)}}T%MCI8tk@t)l`>R=tk5_Z;F zh1acC9ghQJqfZ>f{Rx2_`e|5GHTUPA4t(TWJ9;6dAPEU3Yysspi`QW@#nC6>aOT@< z9Kt1=42KL-0p5yUc-kDE?@o++07i>9&@C)l?I~`tPuxw1(xal-V9{pamK`&LN_p;7 zyqEWpvCeAHBcAo+RNNj0wlvTsFpg}#v!>~0n>TB~f?fBH(J3*s*?Ze$z2<@E;MxC+ z=nMOA)$InbPa{SUhEUU4N27Rh8=?jCop5;=?8b+yW<3B@At0TnzlrJsP=lWQ5l~0{ z&hHv<3`u-05HaM3(@;(HMUx($$@6I{^mXo+)E}LJrkp&{o)|0isWrxAt0+go5EHGz z_fJfswkdE;V72j#CK~pXRmXklZ(whcedTPWmKy0+w;Wz}N@4NoKJgBkRmu(hWeAR@0% z87#=?Z`q9*TA~TRB9Ex*Gv5P9TmOUE{43C0TM0O9i6$)PL;ccK@N3bZL=0ZoV{z)^-Zk5j?nV6@ z-kL&akty+5mJPfq-Q@fdzJJp_|HlU&jU;DiDYTvTjMlt;d{hc<`2P|D*aP)%MVC|e zqb(4aB_ii;LUdcFmgR{1qRrbj>O{E#V+TGJ_%T@`&W7- zdC;ici{=Jkr8SdL7sMOl%y-QMbbDRX5pg5D`m{4W7| zL=T-VY=4?(%JX~NdhYbt@`rf<&{$=VQ{wUV1-ri%rvh2e?C!-qUSZq*);YQ_uhYgC z5DKMyj&;|p{oa9wPWZ!ner=S1tqz-aWvo6OW3bJdv*7HLNLgZ*#+ju%ZZGljjrZ;* z?MwR@jdpdE(2wS+f{i}$oL10V{VV!M^)EE{2xUHO9scW*VKz7#tZC}1L+o$*%1>FC zAvyYjGK(H9ix^+K(-0!Pg)a(MSg%8KHcq{cjz7vs0h5viCi3WtC(`uqk@#{LVj`I< zo-=WV#|@l`y7&cJz*0ky-X^yKKt!F>_TXCXIp@FwSEz*F7oBrOsB8F+fRZgQRo$ln zio!}T%c%H=MaxbpUmdN$yDyy0=a{2>j7}7w!|Yds1)|}gH0{wc#yI}p`0^E~QE3d= z*0Q3T-jk#~kyUU2nMtFt7T+%KCyk82D!`^|kN>EyfOUtqh2Eb0&_C*f^`mE=dtKPK zELa=0cjvcjdjwhuLQ;QOYRi$_^G~``Eq58W^T>S(d|7w2upHK_O68yz*<>eNe8Jub zJ?(zGcatJ=un_t@eefelUJ@5;AU`s(-_8M#?yYxyxVALj49FR+grbWw&bqH43(|pI zrNLOdLk#sD!3R z<926DPg)m-mYPEKf+0@W#aAEJh$_|Ydj{?6igc@4>opM8YKEa5_rZco)*fWCr2 zP|wzBP@)sPhr%yVDE)q^9pPI?nWH-g@)`Y=#*Qt0axX_^wx)mo2f&OR&^u+RxqF4+ zM><6Z(-)#GQWHsM=QWi7O>E%XImYk>85o|R?Y2kGbbd+8p{#=j_aiPyMC@-2MTQ@k z%VGzpi5neH?NQl(zOaW}lz`3wZ(*qgPHw(FyRStRil)8Ngw4cL3k#0M8uolf@R@8i zPfGduL)BIrtD`o?nA%g|YjG#g$k>L5FBnWD14KI@OK;RqXX?TmymS)5LZ}0!@)o6` zL(-l3b|7-dNu57H4W4Yc_?X##R@uEZOHcSOdU0my{Dy<+gP#}y8UzJPAEW&SW@-7* zM&Rg%d_by3{GH^WayVY(B{Vr({p5ngy&h@>(rcvIws(c4I%zYPuOhR*Tjh`!j&I?J z!BO-+x+W!k?=&k2iGVkUEF(iC=nU&OApW?F)R*r7223LM9f2l9f#4$MUa5@Zj2YvM zx!Q4uL_w(t-$jXgJjQ}|8Sm^v&+IM!jVMVc-<=aJ zP$0e#yyV2prLscFcCH@5WJ&EDugMOM0y}(tcq8i#WDE@bc&P1?HC$^_@~st$X%6SG zoD+f;U?r3G5J@atR5%*@WPuWc*a&imwSDe@0rmg+e-_Jpzq!2Pi$PGU(`WsJd9Mb`vOg*b9Mn@oP)_2*oi!U~{N3moQq5cMdq7FFaisHvBJ(m2C&qr^RKjSdUg%!jbJ0G@HsVRRpyu+L%Yt zEd=M@ze}FLz98>*mZXcaQxtQ93gZ)F;&F0^G?KKq3{63QZa}4)FJDJ(&Dfg0$2Qcj z`2oO@+piqxFXBd7;~GP!;sHve4H+X8nmEC++cdaJT?eNytzR6!Wms@*22bnpU<|)V zMYA~I?O>y*ny|x|Q3!!1fJ;NwWSFWhJVW-x2w;3e{|R4eNanW3_sStwVa4==fTbyb zWignb8p;wqu4iNUM2NCv^y_0xO$TWufJIx8!2vbC8T$UySPB>hBHx7Bxn_4&;udOY zGR?K4nsm*JNIKa3{POKRbA>q@1~x|{j5Mg%+B`DfPeVR_s64(Go;Id+%IK7W^Q=Rk zVq8OB0EZUJI67Ogtv%lb2P8<$PrSDC83)l+%^?)H)n~>vPB+#ONd%r!GP`xmf!fHt zB{DnnZ>RRN+%UiQt0W7|H!hQ&2g9bo<4u4GCm@iYenub^!(U)y>uDfB9SjBNS8lIkS(tJejW7+Gya9- zhn9%m)I3+|+s$KszBNv2DZro25l4iatns!zR@@_a@WHpfG-{iG9iY^^m-NSkvTuLg z7yRza=4XIQUGs+osB$?Gs)S9Q!p=NAoou#)PkRsO2*u>7uK3caJ|&6r7>&~4P^9r| zS;|Yd=fgTFBPtcKMeU4@$lUvwzkDD7K$K{nR2@fYoFE!xIHwdaRO)sbV31?wSmoVj zj+)R_$9z~6DiSdk;P8tfElBVv$Mt1-`ZSKLdVSq1u^u zhQ0~B(rf68YN)vp*$f-1&abe70X+IGpiSmEc=9aSI3Do(WMeE8LP7Lc8Jps)RrroV zZ(N=r_=HcOBZq6Nob@sd_qQSDA;#H-9$3F90auucB6Z4?x2MZoEWb&FOu$zw8yypR z^If7ld*;Y@$!DX#^j6j6U}X)!`ldY|#u=XL+8dV@QigW3hh$5>HI1xXk}!RIQY!jAr*% zyH#yCyV4w~0PTmJOoX+}xsd5{Zu0f*6MGztT5moD3UUNlL279X8|vIpnN$v%ND%vq zN-FDY_qf?H`58)bAhkxraq8moD%RZe;~hctNO1UScy_kXjf5T#?=(F2{+A1~QVSt? zc0Otv1Es#rD7f`#^r&Uz5<3Gt#gj`$C?TLeba1m6Ez@xWBJD{1EghmSw`~+pwl@mA3iHaiBM@fqn?9&$>goIN~+y9nKmm zD~eBtYRB-=n{M5q%o4L(wI%)3JULu~{0z*Fq0(s^2Eq$`pc;$+#OVF0F+zMB^e-VVi5{ z?=8YD4(&@k!=hEn!qQLnX7vo0hM1tnLIdF8#>sE1u=()N;mZoswUMBTuYYFD3@j8UGpv*ZRPM(eiA7CAtd3d)gnw3BOSD>PKlwa}46nwm zKVE%UUb~&jf@1T4V*iJJ(Mov_pU;$fWnfXg&+>7q{& zZ)l@^mwG@r@AQD@c|@BpF7K+CUV@N=-qswF7vns2fzDW%T08KK_I$t#dtOm&P7kQu z;M#R_ImPRXW0d*&)YgeCv)Pf(*=1Lqq=T8&r%Ua3$sC_JD|E&++udraa(0)^`_roW zsG}%U-+>;vldV8ThmNtVi;>#wBTmcv4cS){@Ff0@dWWtvqmYt7UQs)+zM!jv@0Upz zwAt*I9~V95d<)vq*;=5$D?Fv7_4P?wDaFZfpHhYdY+FDr`t}F>l3EN#uYiIJ%r|s_ zE0*&Ktn*=smSacd2v0AS?oJQN0Rj%F{vD7D%(?t4Y*QXvEwY8>oW?2c^lXD z?lbeS!o3p7dC2RAe?gV2yZ>O+wI4C$F&zi5%-At_FmjS-y+m(f7!P4*whrL0S9P@8 zOZkq#WSTpBA*n`dY-)_L1GUYBZK4Lbt{Z5x z;Bbs~8$|;cDz{L5BJsrIc`J5bg6eiR&Wf(v3y{t&wQ5(ed!yZmR1IyNlJH#|*DI-0 zWp3N7NvIv5jnSsf0Xidb?hhhv=gpoiNWW|8fAX(>vwqV=s0o$w*ndg_yJ${CDH2m( z$=@*65b$IvcxSW|Bo|)vgOtmw3|j-WbAXhW5zW*UJFB-KT5D-4oru1mi}D3?FiiodRc|C`%-1dTAM8%HO(l^b=>9t zcXMr^tmOaP^=pUrdYF5D-KDf@`D~l0lhJmr^G2PgUrmw+5_rLu)n#ST66+Unh)E8t zy;Jky5GS2xB!br{%zbRAS{f3S^J35N2pH~!A$4k?m2C~j_9IY6w&KOf8^gAfyFbB~ zu={pDC8qZzUXE2a9<&u)`fpXb+Px@_-I_zKf}*10qYC{-M|^!(Wf4u&XK+c27Ql;2%8?fxF=u9*!`MlY4D)B;%Qc9 zO)J-Ts_OPTs)!}?&@ySB9P-mM>kOCeEyk2^Gz(ie0~KBrRZi;TP(od8CAtKy@ryL7>8!g_v2eu(d(TeMJB3oL-on*6JpjFAD8 zMFiCR>POG8VAhiE-mH)1IjB4U(A*Jl)bWL{Hf64P!jJ@``J~d|-N(a>JQ$sjVEc)5 z7tCYYarldxX0gn|Sj8S?&EG0!hrEndJ?WrFI2fxn_5s7t*3oL4Y#oCiGmcCr3q=Cv zZ1kYC?01*%P>ENU*UZ{}r&)`n6u7e}B#&N^#g@%k&(cU&ep_G}2Fxa2INvGgG&(`6 zoB~)X&QFBj!w$jI@iu7(y!`aK4kiqe{Yuvd#rthlLRC;Dm$o=CNKs|=Oj$df2wP_C z*b4%7k>s9R(-qONKD*)uV4G|5p7>d_UqAJ!dX`B1Z$ix(jMg z&5Q7AXtSbL1g%Huj**9R_CE zl9~8P^G`Fb(aA+&v6ubgD6Ka9!hx8-UYB=kT_WcXacPg$(aK9=%e#FN1C)<@l&5aN z{nSs34d=XkjeiL-bi<_)22jN*o`65x;x7R)P++zbZc3i>-8epvK2YeopZ-;urK8~s zy$XtB0VmPdTuK|jc{?{F%WKt}%sV(?|$;ZW%Lei!1dU!DRf*)8xT<&6ZU1XL^}Ey z@@T{>v+tG|WV6yBzthuYtJr-yLOL~0AFhE9CU#y?58epw%yGXTH2zL*7YT{gEEs?qWDF;?j6D zbMwKnwMJ{Z_apQTgdIYrBkL1X8{3+QNv2hi2%NK$V}3dkv$R_r#fc>A$UNa@PN<0; z^W(~&s|+7IuX-Z%L#&;QE8ER=d~#2`uOTQtXX54;^j@b?i(bDJi`+3c#`wVG)Moo6G9H-B`B2Bu*uooy?< z8!%0_`k?q&F4~sa9Aly@m%ZuJU5H`$tNcMT;T`hwt2KApf8;+G`W60=RKWt9lpD1l z9x3@jE2Ywxa<9_e^vUEiKb<|D2_617;;y5%Eq+ZLd=|~Eu3 zecMnqR(_sk*r!+TF}g_|wOHvZrN&-nt3@aU6vB)o=Zz&vK?e0~d~&ToL}&3EPY6}N zyMY_I7a~m!)4V2z-HXo^U^lt!LH~7|6TG-o8?ZuXz21Vz94O8jKj1f3LE>&a@8-Jt z=d*M^9h@YQ-ixk@w1fQa>UnLSjGTC#o{45PW$=Hi%qr3U)a5=X4tiFw8_Wtaw3r%UaqW{H!8ze) zvoe>RP=-S=Q%x8G{p}7jwGLG%*Jw%)bu@Se>`7Xu`1RI;VbTSf3boJrVH23wY!Mr@ z|B&QbdX)w$^N($fL+hVlGmH&-Vit@Pgd^gVyHa+3WGi)7pH!oDr1y{v9ocWa@g#OG z-{Dk>;k_&FM{Ljjt!^Vj8+?jQ5Y>gNQ@E>Kms z8sS_;O_bK%r0=zp3)n|P$eJvs8?!V#{CGiW=DkNBnOe_hwL00xH7g6ihPLBrMxAip z>Tx2T<|kW@7481T$7$CVEyLBEM}7D@I7Tu?DtJ)#-P5`KRszO(fsFs1oFd*s#cg{w zjW$Sw4{HG|P!pybDKGhUG|-)bWwn~$Nz^#Ix&4NwvXzVO^ea(bd9Jgg!=4eKVqil#b7oo}T|Va5fs?V=D1Y zd?sHxRpOm=bHz6pt$~CJ?ffv2E!JK+ZN({0rHE9>n#mz}$GHO6;mMX5hSz(JmWL$m)dZ4g^CE*_ofY-_(rNc#8P|o za6>R1rMH>Qr#zt_5olJyH0+qTW`9l5iZtQ{=;^iRQbS3 zp>uFxn9n=T0PRrdlZ&7J$T`rx{{Wnjs3a6baktx1T#WuuUPb__F=dL=Ykhjl$*TA( z5h->H-3gGaUUj8TW7#zPcWvpRR~-by3`hw#+DR9HYQ8{U^`tEkF-w>J;FIz3d~-kW z3EbN9;gT$jJd>Jmr|KP(KHqH$dSk;V4w_8c{o;%1z^kP#@qV%Rd>jN=BLj`=-QTSo z(~g@*7<4ET@-}F{PV7I8I9c`3z0!ol(Y%SDcZiyIa;h6oUB7Neoy%N0?a0+ z6Sf@a3kg)b@3J3bBOX+FOB-1cY^Ma|%g*rC;;dZV*S{MM%Xp+EsS_eWL1;7H*HA7o zozA5zomk|R1>vLK8c>!=Y~DCxu5(;-nBMB$ws1em{cQ*&F&C5W?mIsABL2TsK+VTd z=dqTeRL)S-aiA!~4%DnoveZ%U>5145J2g1vcHI;Q+rccM;E{|=^BzZNFOhzV-hdBA zZH+T5qgrk$fB!Dz@3`x`%z!nre>ga4^)3i)eJ#v3h~Df5cgFrjYwu@U0_tvLDW3OD z44lB6rDz12VBLq`V#a{O3RZ@W!CS&T==CTg#g(PAiaXqV^J6L}igMrEdb2YPd=ikr zvngaZ^OaAUH-M05xkY`Vv60!ZE3#qxcty-xAD{bWe|wKr=;b%{#drT3ud1V;vso1- zA*9M^hKhDLj7<}XyyaXWI-(C$m-fbH0s*gh@ zVGcc}S(xif&>o=Q@hWBUM_joWooPQ7@USShejx(fcUg&ro)Ej>I$NwM1|IJ2M2>qi zTj(UG=|*uK9tt}JS0n9$CQDj3N7HS2KWj(zL?;h4KAb>*gpAceeWy@Hm0s63e7qE9 zpQ7BAfAuE*3NGr-pZl%)3|TYTcfMJh+b_4A4&`Eo*ERp)c*Gz6XKYn%>j~`y;kG|V z^vLG#D>S@bYF2FzRPLDTq;>kCOBE9g)CX9=AJLe^%rjmkpz{YBBg`bpyPG)s#+86? zj=Kmo=hVvmwtgOVFiY*nx|)G;Ow*WF)UKen(+$wYi5V_>xcog(&yn>~o4LTzhD$X6 zzY7I2I_@_+Y8jc@hWry-sr4s}2ocYE$~|B+NqAd@l_KR_4P&rr=Qn$Uvd6#Kj@+cL zy0r@Nx@@l_#{te)bldaPgfjHH_Y;>AjLx5^T7r0s?1vOOS`#Wjb#99PXx@lA&3_2aaeJ`r3xi>r( zLgRD906&`59FLCO*0DIfm_nu**$0s5rFehucYEILAotf>QyU{SCRF!gk8BWwQtN2a zPBeo1B=?dvg~9UCU1RJsDwkTv^rOVYM4X-VE3(4mNb2Ni<7XRe!6n)9jO#?gOM-Vq zpRA`6HW|(TF2I=MJz53u&kI^pD*q2RnE@7NM*yf5zDewUf?EqGFOz~3Sw%9X<4!uub#=NEDtrVV* z6pPK_KU^%CPZ?U+$5>R?wcV&Ew;8#yefuJ>G~{*@Cr7|XoiGu$yn-8Jj*5P3ZkjdD@xfi$d|yl5zbWgJ6?QBK}Qo9Wr=cbgAHJb3{{R8)I9t9 z@KuOTXAwG$(2pp;*Mhb?qIpS_V?D_-(r6m%m3Vi%dl+XSakzG%v9=#y3TnNl=HHnn zuIaCfP~TaN-o@6ezs9(IYB>uT^2N|NUY)qX7|=yL%m_8AbPtDo%!Plu;^n@Z&^x0u zs4E{o3WRH246VvqyNJ?r#O1VsM8;lO4dqY z=H=)d_rh_r`)$xw$8+shu4_iz%(Uk-Kd?{3OG?C=raF>n*tUK!5Ibn@$UFvYm`EiJ zhn1>MDGmQ*qOa;`%ww%g0;SdwN%4D6d3y_}vDfRPj;jw#`Ro-bOfy&f@1ie$Ij#Jo zAP=s6H`FA7tK@{X=-yv}VS> zW@ol%$Oj8x-obYIx|lg~jA4I6uLA8Hc>PD{%hL zW41xVG~SZ&s8jt_PZ@HJ!miaY_HIF1p^r-M7iO-(eK)VX-z)2z{c-)f;NT zjts}_VXRN_ln>s0qdOz>_7l#22JD0ePQ4GZ2yF-|#7lUc!kvE&ygbz*4T;K9L)QpD;i}q(^WG`L->clq9!B0qH3f5wy3yK$PD13F z!;g+k4!3OhIToB0q_Pqm!WDJ3J+cMeBcseA5lNQg80~8sXm`hr{w3w65dKQBayoS3 z>e%)qi%k{}f25REMV{v#$TPXy7QE%fgJO~9Lo-bc4&{If?T=q##9aDeaTdMDC5fVx zs}p#A0R`u(Q|6L8P_)Sa_6t!{TVhaQSn$SwTVNkNI1wQ*a7`Ti;@2f~3;}bV!J?5V zHTcFqznBNi)bGR3K5Q(#N?|eiOXl|v+QNfAu>WIAN*H@dHQ*rLIP0^e00RO*c{) zuCp@qxRmAZXJr6H>Ec_u65BktUA9RFeJ;MY9nvgZde)M{*e{XSRAl1rh5~9o4a~H% zpS2IgpZ9q-AGC-fXB@m?$6&4u=<**(*=r}NdbvKrjzz0Tz@&M~*Pn!le{*S`cmt^E zz@gknA;s#;5>q+ZYSRta=xgv{k5w5_9lUo@Al2G$82^z}W%%x&CU9&!1-?bLP&E5& zK?yQ6TcfeBweG$@;WSZrrOIz-!V(lXvH$C5=0K;=wxRP!iEmlg>sPq^8pno~HcU}_ zrr{5speL*#uY}!I!%O0_vH9(P{Bp31o15>}on(vpGBXa!XfBmM;0%HuUbRB+`U~AN8$GVgS=L#j@!8}gz zd@jIm?2BYBdj}Op(be^W1hQYe08T_=1X>gPxmRL`Q}uw8gl$2uKeCagZrFYf@+GRH z1q^Q`t%bAEQL7*xeOX+Vi~vVs{ut}I5Hwx=(l&f#D|AYG+ehvmW~Ty+qVLnpc_7w- zz9OQ;y=-7uIhzz=-dYrgmWSFR#-TosE%5n6l)sU>mg=Xspp>x#R2}h;Vrn62D&rXg zpE+|Fw9yRu(+uZktYH^IV=s8>c32B+@qRQ^L47jbAK2A$Mz!48S}{XMjah-A7$YNWoBBQ*{a%Y@KN47}avSwE16Q$!Uu^Oi@_#b8*J3d11{D!u&`L~S8C{+dy~0}FR5Y57>b-d7esI}H;w?IOyG*Rd$E?Jp zztoY}udr^JZ~aFzG|bXFT6W_%GfHG%0IA0|Qow6tUJwsbwLVebR-hLTdgb|9Zhig% z2vhPb^tL?y`tC_$$85KOXKV0d<(C_u?-e?Pl~RJ)d>K(g;70puGEut)H(fU>dg(^^ z0lRLeI^-!8OD9TY6W6@gHKx$3We`e<#6Fi&1lxIxxmSh0qaz%}_H*#pTJ+NQeHj-2 zt=brnMj+d+`Pp-tMF6p}w5FS2YO{f?(^cryXUOA9CVt#@8ZYP3f>{AmHWpwD;0Ppzethx>lf%s536^U(}o zk|!R$*&A)~quGmbD20c87ntPoZ2F%9SzhA6va9BqQ~ik!QPI%t_bVsDlV7Ezd;Olx zS&oRGuP}7l0bCsZTUCO}Z1bJXex$R3L`^|1N{IFnA%TBsSH<419cjiO6ihAg3op8a zU$O(>lM=Rrk4iU?5h4=|X}M#TQu^WI@G|^N9CJXwWS?7{yZi@f{hNH;bujondpH_? zjKeuOArziAQF{Ld8N(Wgfjv1rnG42+^hG#{zz&7i2yZ##9NDkuBV@$iGyx!{OE zni6??I-dhvc}LM)Vj@`Y2>4wzeK4?LQ-07EO|@XJt}#L97R;NBj@(=qYgsyXt-mdx z80z~qo+<)7&nRVoXY_Oj11O*s2?4svn)F!kdZb_4bvG=&VC3kb(~&m7z7|6k`lVyE zt57~I+y9Og#=hWxl_c&<$3Ux7<>=)-zN)=nAySLe5n$fkRVRWal*{m#%ANKIny7m- zhwp@)v67;jUU3odn9d}}3s4{YXnb|*irV=H$=0o&%9r%B3wK+0QF*iFu*nUgJ&E=$ zd-~f3wD@q}@5?9a?}fPpr3NrRnQ=I@I?5kRb!0FOnF*<$(fH$uGJ|#}NaM?Lik^TD za|6QSRU}M{T8ezjFBX%Vw|6C;N$JYdr18*!HI7O?%X*S$8=#vihrB;aZiPv+`*T7B z%kruoX!W=bi`)ON)Kc8gh(m0gje- zV`f-?!MaDoc3NToTlE?PkS=4|eR}9hO7_w3&+ff#x@V7Yw&Tzwt+A96E($E>oEKE& zUAo`>b}_IH`)!3e+e`p;LyO;6>8MtBotTp>Qq+jYQoczK(MSR&Y7kFzjf-rmN2eT8 z1l3ffjzz8{)YmU7qePyl{#S~dj8Dkmdtr%ZHIU_X$bLnSmm+d~9%pj0uc5dz{*B54 z2+IfpdNgBK4H>h)tN2{g_-;H%O~7n@T{&_u-xrSpAtTe~Lg%U^FGa`eI1@}?LDpis zfmG#(?*~}-ELhU!E2Ekc^mV5IdQQP~^7GS^Lp;r|O30GJ6y$KB5X>;`k|ON*Hyky47#UMj<521S+qhGt$;^0oA(&F!09)l z(KF7op|6Z1ccx99^KJNN{ey;XG?M)7zo?i5IIazLf=IlexZF~79lK5-4#?c@~27S2bXcb0f` zV`RgTlQ(e+wS&s@!O;!15&o5FUCD4Y*b7#}&Oem7yz)B&SJkfY)7;x-&=hL|SUjBP zZME9u=PND%PmIw)tSJf2K|k1RP#UCiq{DbBxNz|4PpHV)Q2(rJ1u&NX{J&M}nl!Sv z%P_>!hc6YMbXYiy-i28LTaa?ZL%M?Es1dDWUJK#IC;MngSGyhGJ0&9N`t&Jv~n%wkDfWl zu|T^Njv7X(<&={oZ1!y8mV({q3mA(UJg@w#sCuYc<=`4_9Qh9F93aQWD)`P{Rk!#` z*6Wb3@qVWcAV$)nLEpnt3}_R;eRQl3mhuTp88~547IqJMm*tYW$~Ug)aiN7vKK^Up zLP7N*;_P-W;F?*hqW-rErpj`syY`a!WR`%X4zuZ6x~h!UBqYMflbPrN5?QL-slT}L zE|$3*a1sa{#&2!KL2J}qw+@qH;qTD-H|03mxO<;Bj-&Vqj_LB@t(ZI)lum)b$rYZA zj?~~Ech4F?0}^1rXUkuaNdCXeQZXqq=huoY=pF>YR^H{4Q`|DJpD;xSwR*Gz@B@IP~8DpLV6Zk6- z(Lu5y3b4IW)~NA$F@+^E4FJniPG?1qNL7|(9`lV;*vW1d_&&8tgC?_P&_~6#sZa0s zX_mzhMJPsbiAaQHpv?Z**Of6}r^Enb;%F7%y7|B8L_AY*{D2x36y~L}T@GNMJ_{#7 zM+7-P({g-1`KN-L<`E4$BaisG*{20cNN2Ohr@CDKSx&d~OL=+)%Rmn_RyDIgjmrnd zhA_TPPRY6DaIxUAKG<8&GnHWBE7S@~oLKF(=r39j!ci>A0ydxjuNdww`59mF=xe6k zxje?(26W6cY*aCaW|)u%8hIb7CjIIIg)MId*;fom_iALqb~|A=4xhOM-G!zID>4ec zhnw5^SLByXN;rk0U~%8~y$|$csTl*6&rarrxEZGuC7lvSP zw<)l2G}If(M!&m$C?W?NaYI|%{t7LB)DvF!LWNham6R0}%-|3ACavY}GlnWhaVahK zmkLpIbHOa`pt;gsjQS8ik$$Cjkxf(MV!t^hDyh^=wF+tqqHZ1n3H1Hht)g|kW1Lfx zF3NC3S1Co^>R>2W(^})y2LFnKH$`FPkz2*J2!36IhrwP8^TWWkmT2m_{$)#TY8>gV z4K+WaG@zgRg<)IJQdeSX=)PzesZJ9Yuf3~$XD)QIeAvvbz`ECaG%xV`mNEB`;%JUY zIKKYk9LhBA=s2g{6;p+K7HJ)hI43?)P2`^u-+O1ZvRTW7NGm2)V$?<^Dn|t~=z+>3 z$x?#&I2trQ9!L2YS(Nm=L);4(v0^COR&Ni2jU8P@WkD|2=I>Ova_t*xfyj)fm(;f@MmMbAAf_#%=yUInq zQS(~;t0PWq#^wBl->q=HrgAG7@47Xbk94X@M-qOz#$S~eM=&##T2Iod^;$QYT)ft> zoBU|^-_Yxk8#m(TqKS#IZBQn%X@P*+?(i#3c0@r>M6w<&%nwMf><^s2zxmZMc@)haV6RULX>6&P5B=-yDer1l1vR&`{+!7CW(%#d#8OY(i4xf?zrNIxp z(kusjJX>~ti9_z{IB0BI@N{~x#IyY41it3)uysu307n$6$X&U}=@{lKcPIV&j(O|D z>Uh%;)D4F6fFmiALSv3KcJta69e)`6^~OgWQxm3r6w(Gk0-}E{3ip9U8FK{#(HL$*t*mMbq`Te=nvPJD&Sv6$lqO4C$kEXZ^O7 zv(%VdvF^=WlFGtd!`vcqDcw)=Zm}r5o{)DuxrJ}Q8klgOrWic{uFuMMtg+#J z;o;bDAE)Kx^$mxK;ZiKs5K>mnIz{J9H(Y&DQo!ac(hbn}5>|JioAK7nq~pP=^j82< z6mXE(vpu)UFkEBukIbv7c4;T=SH6=9fWIh-Uc2Jn>VCi=0zuqT;m20481GuMuZ_vI zEcR&D_|XPDRZi93W!bcu4@A$mio~<^l`7w}E9JjCT#gbF=t^aO?hp(hkD=%+QFscV>>>-Q7Zv&r@Ghv zwL~W#uBfT|`9;6ttF+5&&2mOR%QG#IZjy|x0cjLSk?Vxzkk$nBKn?M7OGZLwZfVxH zbVNU7=n6+~jas?s^WM0ath!oz9h`H_=$s5=d(8{jJdVy?Cdd#qiYIOLB(_B+#OrPD z(a}6B2pM0KZh5@7^_Sn;S50o1r_9q{Kx-rjqo{jk=~WHIvySFXw$H}JUWI-`3tNWT zCd7qpuOD#fMsbe8j(N-D%M|IdzR*8v3%OCRpp^A;MF=~O+!(nz zw`5A6piKuJ$AxecCn8}PP2Jr1O(WqF6)O@kW^Iw3D|}s(>@Rk+iFkdUF690$)!}^# z>S8wn|D0Gi11Sfse;}1ut03FPusfB5YO=1Qr~IzBb*U-~aNE&~ zhfS7}XtKQEdA<@37R%pGEn(EvvrcY!Fbq(gS2H3(!7RO4TkC~75&`i^>dY z`XwkWWNg2N98oGNYZfT8^2Jpxo{#)af)>1IqL9Ce82xjWP8m!LrootlIq&b;@B9Av{o^0J z^UnJ|&;8ujeP8!=G3hlj)i^nUv>EgB4xZw3j(U3SrTu=MGdZuR41UF-k&TNRZ{I){I?Ot7M{m48L@1YcOU z%%#I8TQW>z_1ZGV+Z6sAAJ<@$Q-yarXo?Y(b@jBLF(wg1K5^llh)Gb2x3u&qv3ZdZW3U`3UQ%%yYfland7qm?r{#GrWG}@w(dp&817is)% z#Oi%HDJ8S`>+b1yr6;|dbog&FJVss`wJQRk&*Uv-GN^i{EWvdlzHulgDtYHsP48AC%qbd_9`PT+!i*?mg_W{1ymCjwp7dG&eh+ zhT76S$0V*mG-xIe-zEpHiq$U9+CC`+)(bQVSBWYr+b`!5v(EVgu9BVU$=Sj4uu0ei zxWK#>XaO&D>kKuM>&qJo6j)lH%ZF(em|g-9c&poAJnalbS3tVSEKR%DW;-EDu{99S zfIC>k`5$AfDqaWT#ll*bac~i9`gDH{2=3bg5W4&VQ~S_JDvuNV^6t00%L^l6=yhcr z;H141jY;XTv=Z7igaOlLo@jKJ%VyNOmlb7KCf90*O%FB7nlHvQVhW34&v~`KxPJ0= zg<(XJEct&H(@S7lDyc(P^Ko@<&-K-SrRxgN?j#Vig3^Xs7S{|qC$1?)x0G=ljx-F7 zFY-9C$4utCK%^H!HoV~L-!N#@uU}{V*L2rZNz=VC46e1F&87O^&So9b+0^5~V4Mu0 zp~ohaMyyy@BlUxIpRXH@&$%x(H!+3v_g6bM{cVNJf;bC=k+&um{J(K`PW`a-1MQX~ zdX2tL!|prWC^{}B`e77p0GL&lFHalZhs{9kA*$jn;W2s}Om=c=qJulDODB@OZ5=C) zJ}AQ6G{$}3bo9fw^pq=U4&w*k7yVWCxXfkr{44FNrkZ1>ZH42)vm(C#lvTqJrJ~~Y zu+*n%pr45Z#2}Y{RW{5kKib@*^2TT)y142M-SPot=VEk1`pVm}S$LzJ?+i4O7JKIC zbl7Wgp#9#sXR1%;s+9|%0(-n?Psdoe;!RkGVcz!jihQ!yy@iFB_sDaOQ#2ZEBtjG= zMoppOkXvzfvHSG3R@4*UD>i%?7vs-0QJbkWxikEH$;=(7M($Ad(DPScxPR?1Vm)96 z$ICYiybr9qOHZEM$=mEIV%F9636V9J2NTe**6ZMeNHWiarrbY6)`dIvgu$ULq57U} zmtB;frzTu2_w`n|pPqFOw3-QpygxWBzIZvXW7ufNS8}1w@|J|wTA8cmhcRItWSpm( zlo@)`^Os7{eF%um2&ixlW?P={2>F3cx5!5!AO(){zE$}FRuajo;h#hmb7;;)?_+{dnaghtodWr2Vtjk zlu#Ky7P+k4g!0e7@y%sWV1IGZgzc4;WNL6Pp|@x8lLL5wbrc$Nyrt^8*Osy+2XX3I`rAD@AN7x~{NehWteTw_1Me z$(iMCi`YbB@m4cJ99d%6jH9(p?(lCii_3@8%|G7o)nB-38d+1lpzMiv8h;%SMSOpI zIYCQ)QpYR1cUS!N3}AM2*l1Uco8!5|SrnOQP?5@uXjhNN={!7b4(UbS?2NP-rx!0= zVKM)9m`=;L(jv!G_9_PfZ&R?=kf8pHQ*6Z@XCi5L)8??0hgPgKQ;AzEdT-zGqBUhe z&1pYf6G^mF4f2)aw+zEgihr>9JyZQXu1;>d`JOKE99x9gK5hIH($DQ^Z>4+A!f16O zkmq5n-Kso#^J{Q^4QLU)5?i)>#~b1qX2!B(v_Q~LdpCWXu?$*mju--a=$VoMZB8rP z_wN1BGQlNXl#8lNGhKqVM$6pJN60*H>}oi57qcEG_;DkpjytjX0}D?xm!!UpyeAs$ z-ms6ZWu*)I5KU~;4QDr0itSmKj~$OPcoXbX7ss^_y~2%(i07o6rPro}SNnvOQpVzR8a|f=cF2cM8)EsID*!Q)*bJT6}v&t`NTDR_w2VW|a z-E^&&!Ct8nkovc=rXGmReFeNAXdbzRyZnkKbuCb2feN+~ktcN6x37h)LzSABx?R@3lL-NKJG8CGCvt$3?#Q%47 z(wxy7#vvbSZO(ycd>ahSe9E0S>RCE=BiL8*c>o9DX9eY(CJ%=03Rs>AMYkzm0g8pB zXzeJVL&$Br{o)C`6OX(%`fFTywE>5Wc$!}x8wPAStMeQ$^O`Jm=9Oi8Z)9 zsj%GsJTFVS@Vajr6eo~gfFzs9@i^70o!_gn?&a36(imlUyEqZJYs}@C@IfW(FeSUB zJFWer5ZNx21s40qUTS?dyYBo1T+WKj9Vf3kVx;%K-WO8m@P5hB?+ zLdV=KzAY5Bf$&3!fF@1~01F5OQi0A8MRjhi-RUPTo~D!>|I!9wo=E6VUcm8jVh7k} z3%B@J!etTA4lq&t1UoIxzbtc;>N>31A@xzHRio!=#t=iFs)$V^Oy;G=cE#`lFVqaY z;{V34MpeU*gwu5W=4PyHrWw_uZ<^bVgDLx;!3+XJdn!Sa1CjnAf8==`$o7lWiOd;f zQ~<4aAoDV0keNom#(h1>K>ocNZ525nt%fm&$^YYGN~#RtojkCf08FXrY09Co%VPk3 z0wWM{xE=2HibF@Plk<$8#bR&Z?v~JTCB{sst1AQJex!=`{5|~F`Vj)a-(wF@j96m) z5BM%ljBc>u2^q$d>`jFk2A>ybLB1Zu8lXvu9G>fZx-Dt77a~sr<4Fl5r8Ex2?jc2z zTGw(;_Q8Ay4<$f_sw7=TkIsfv;0tfDy2e5@rG*MP;x+R%!~24|pkr3AXefa%m!^jY zucR5bk7oU5B~r(|)ZE{3yS-*YlQlHLE-98q!c&x;JO^Yr8E(jOp+j)D_7w)Z$Mpd;PqAF~7 z3@z31vMaQL9w>x;QrWo51;WP7C4xXvH_zc=xRY%w<>!^&Y~R^PNOpqF-Blx3M~_N( z(&q#D*Jq4AzWG-rlY){UNyupoLw5_&G3hAWAXK>7^^&Jv()cf+W|670yjVxNR`zyu zv7t)$o|}UBSXvzd@C}CX?E;^)Dt~!T0er>R%4zluphP?_SFQsc8CwAuS`7mPWp9H- z&Ad<=8+ec^o7F?=i!b0SOEwa=oI_TX;$$~-Dj= zrHR=b+FvO4aO0n8F}0r)0gnNUHU>ErNKF4c%>}xDK~k)dyeiEHZj8FDvb5z2CLZ1M1FWUarFX05Cf(P2eg&YA`OR^PWN=vOl!=tH`>x&_(k zVfpBaWzHNqz;E;AZZ8!6R(4k>E^a(YLY!IV`jukNgyqYT0|xIO?+h9n>WxG+Td@m| zVx1zz=xsC3#=Qadhgz$Te;Rp--iLMDm@s6d2;A;xK)(0-&2q2>(zbWfQX}U;&%uj9 z%Z7m_MjlIwLw<$q2^(6P{J>O+cDa!2+N;w1tK}Z7Rh`R@A@HgUA$Oq{Xt4-N^`bieQ_f! zHXJkSkahj$T=(l;1>k47ap7C0Bh;?dKQi0AN|e%4+Gbo*LeEA9RjEI5UQ5#qI(r7q zcV*honvPt)qC;Mv7ZKBRA?>%aLrU%wN43JS#>Lq4Gd+RcjOr)V_?=&S-rn?8qDhO< z{^WJ*YEd5DHH|d(7dC#D0T(GL3>I<2=%0ijgtHlqC0L+YaeAW2i8wtmsYBZC0ech+ zMhozN5zA`wNQ+tiDrqlNUb5|M_3O2iUEN{EjXSekO6zaCpF28)26S~DQ}4qp-J@qP z^n%e|z_LzVnP$6IlQm7UOJX1EOh26K7*NfI6;>yA)u$9E5rjveAZ*S=94VT01 zNc`|J==vhj_Z@hw{}4`tQS8bN+&g6tb;VKJWbZ)iWnS-$bkamDL2R#v-d$rC7CcBp z(g;J+CoHlW;IgQ;sOz`A7T@|rJKiTZDY`y6$6Cevv< z3ZAfZyLbOL1Lka`W|;7);^jznJannOI%q%xT7ybFH%*dvNX1c!x{&|i8%35P9_ywk zQl4x&AGYPuz~$_wg)*rx1-V_Iy1I;xx`h}r#I#8^Uwi3a2xWLN;F9p3d!FeaaB5-# zXe{D?VwkBBn4c+{k!v&b9%tyjrtns_g6!+4s`$tMF$tRo4=se8oLFWa&&yiGPXCv3|v%(upPXu*$3Vol4 zS9Y+;1gN~dAOnm)+b3yWVJbJyuEezTUtUC;Br12NUS$%+FF>Of4wH+|=`bHW{c{;GYb_ zB?z;=CjUPYek*D< z2$=w6-7+qNv|dTlH{U!)up!vBoVf(t(6s!qfZSYzbE~TLjPM|!VMp4ANccP*4CTX2 zrMs7#;uByd7SAhT{lH-RNSZ;NG*pSZAAPU9wHL^pvE-&=Ww`UCiRIeYjeuC27CK-J zcp1wM>fq}U+0rys7DoLs*=4&c$%I#87qd(jhD~#>QYtT$0)CyOGI$&$L(#QHd9_(` z&^H&R;hK2;wWTxs=&1q zKS6BcAyXs2c2u*okD;CI!k7dFwlPH}AjeSrHsVe6@T4ySJuJR(%WWwsU88nc^(0Lq z$CeCt@t)*vLXNMX7e>3-Hc)W#f|EtrFnxBufp|2qW=Ar^06|-4t-Z(2<_@H9 zXY_yp-}g`CyUyS}?NYn6T9Wq_Am=vjTe*<-;^Q}cGrB!Gz0^ysg!AOiy{BLN2WqVi z(@bgXObv%4~!SR`6@2OR_yu!p_4Pp{EVXLa>??+G|3&}UVr6p@VPG+l%0OjT(Bu*4v z=rcj=855^F@-*ABg+0iV1Gf&7WV@&$Q75umkg|G46}ggj%@+o0KqukbrKf?}=!@@F z2?0&c4xQSChG3-cn$=)|f|T50uI$dZx&j7<3db5QNE@qaioKLrAgXFwztt1pGkwYJ z(-A8#;JOMrWqz$Q6?H&c?kA(^+am=+Z<7Sa;P3|I{tyGx+YVptnsJoLuh7B1e!*_8 z%h~{LPMxQKj0H1z^?Bx47HrH72r{rkQj{-o-Z&x=Q-qm88Zg$5jEh+EHLw%IF!M{7 z+FlqxOVw^bGmoAfdFiJ3aRyq{v=^hSW{mHJAFRs56oD=P|3B#RPbs*MtB;%VEYAXP z;=%@#G)OeHTmHa(71I-LxJ0G%>3nnZ=0^-C_E}^YbAYdWU5?FCx_8=b{X@!vgFJt@ znLoqRTC|E>{e$+e3b=q(8CU-RrB6Nk2)G}+XxPdz2OqqU$_9rtcbpP}t9YQjB`s>1mg3w-H9O=ZVin&Ac9i)KC(*maD|!heJ)paR$Tx|*4P{+)<{ye zLhW4Ek35SsXmh8mhW1d$KsF5cJ19FIn}**Vc+^Qf&m2F71X~@@`KRD8o-&1``Ry=n5_tbkB_*#apKTdDKZp{i@C%FeFuK ziA041Z&tz4Lx!A(j)h8^1gsUHz=rHBLU&#eZwdtyHw?B!ng2k{sE@TwK3-jy5bW}O zZ70-SJBCNn*MSum58i3UY&eolWet$X8gWH8(@(OUHdA>^$UZEUjw57zn|q;?ow=)A zM+5sn&}2q%nSMF0_VVg&Eic9*@;}L8m|JX+cxc-Ft_-CrMyuPD{&Gx}F_w>39##PBj)NC29Bg9cu2($Ieo>9=T=LY?Gq@)j?Rk^mEGj zw#`^6P8)!CN@Z+X$mk3U6E%x1fVVgmG72XT%5h^<4Q}-8@f38fiUJ5~UAeLcOSLmX9 z;y503A=t3ZQn@qEB`Bzdr=E0-sh%9i*;-KY_r}g>!b=_DZsv%C=*h|u`-yQ=z*MSd zYn9m7(c6_I*IWPtPopkE-0^Kb5j+LUdGiielq4C?7S#C76vbG4px>3 zOAmHHU-l_W3XK$O4G@`LxXsSCq)a0Y7A;t>)L>7fLXxBoKaki_B}pK4kdlY)QRN+= zY}Jxx!LpvhnUgdsSNRiRi%1$63~qgs+3S95OqHI!zSHDYm#UV4HcjlT@qMg>9R&yg7BPB~%3cDD{ zV zX~$Uz`GE(9B6vly%U{96ZU&!4C4)v2hR5cChn>hEWUvX3qK_k(WZ|0T9%4^A4@Q?O zATzf^v)~pXA{&2htu&IF$WvAq=mLa|LehDFU)W1R5$B_~7o&2Y0VTq5o@MFmB1He9 z&Zd{!1-_}_DxqetJQDcG2kLAO;?32@aCtP~Grh&Wyy-~rKVBIH&7MNig?30(YyD;O zg-3)laie+&GP(Fdu(QVVRjjurs0WQ5K0EHdo+1X=|!C_<{Q0^`?l}cwCyKTwfj--t^ zX!_&45v>!qJO*Un^0c7jxrj`tL2jA?a!3?IPsZ>eDc8tBN}_W!mb%sGa}YR=281lR zjXvS&KiEEH4CCY6FG`0IKc47W!MYK+Wgw_9bi+7uDjC!IzFJKTv3iYP1k;5gq5jKZ zcrLA+mdeBiX`PJ%lXSQ?3f;bc#AJz3ug%f1zvai+Xnbc~#W; z856eTE=vmLqZigf1|~r7W`HO1aG>rrIkCp?u^o2MBbN)Z|07`qFfcI~Hso z*mOtiQa}pO#6*X2-^Efn8V63O22U$?e@cT{Dne%IFgBTuF3xXT5JTzWP^qv~55bW0 z#=$rvsX3z-^ygFzmGUf37IIV=F5}2lR=$iGdOJJiH|G2D8sjbMQ^tBo?Av| z9+C;6uM2L21u0QNMPLg(;q4Zk7GIWK5no`oV0JJr-T)6wkav`QatJ{yx(g?$>sceJ zM^ljs6p{^A!vK%$A`ZqLj-NSXeN}gxgYRGjeF1}KYkeO})pa%et;h7TYpA^%a6XJ| zGLZpq1xT7C9o9t2enQZ8KJRb8HqvkqKMWh%jqzCQ4>rkll@NhNoQZtf?&))gZ4Ce_ z`7fs;Oe%S^butI}@64TLf>czi4$V-xui;)n{(OT4^_4!&g0lbPhh7yLzlxVH@)3WP z!2`3RksXjqAVCLMYmZWEohll^pqG`(!lYrp);ynG;c!JoQsHc*SPzFZCh?_Sl5E5c zOT9Z$^JiKFx=JnGB%WQ^i7&C9fr!+ZV71dc{nSumbwI;#PD5(h2faH5RV}?|*jg}D zFWg9aOH68se4B0g|EO%{fl=wmDJ<8ia0?nzp)mkwTBsVhf&p7cHPr19&_ zNOY8C4ct6?`0fqpdZ?4?b84x_qLG&5 z9V0QuVF%AWdPhcoPQADguy1zyy(@E5cT~%n-tVdC2YNi7qY5{TU<-<9)fKs=tn^$r z5Aj)5ZmA4 z*a=!}E#2+(J&R_Y5W;9J9{-6yrnV@&Gr>97xzE_bQ0+;}T=sQ?Lk4dOVC7eM=R=>x zGz-ssJq)CRa=wA)U0{NActbT70c6EA9jVTf{^JAj^Vb}Zoh$iAJXA@_mRBV zGSys`;y-!k_y@g>*787V4fvxkP|JzCRXfzvawruw@`Iedan2sb-^W$wO~pcT_wL+h z7%Q5pU6imll*X`=>JEFoyE5|!N>9oop8FQ<_W7!O*9y_Hf( zd$#2Xhpm3LrBK$o^bz4S>$yFny;f_d$~62RM+WUJ8K-YI-qRjf>nU8sNyISa)-&Kv zG9!=f@eeDD{hjAsc;t|foDh8}OZO%0`^H#XslR}H9nekU3ZanX0C_hN9Kcm}-|e{U z6%w9%8&ZG5f@KR?1(4ZQ*Q~w8*4lKtNabZNjj~@adM6MG)tSlaV|>WqTEq8GeKv6r zZr1Rk;NQN=^1U4yBPlhNRFPfZEDnqM$=o$*Crpjpy+}>$W`NT{L z=0$YmV%N2v=v4Ez{By`&*3sJHPo+uYs$R* zGlz{^N0zkcnf72^RUfS?H9!N}aMP6|mo>NgT{Nf|J*Bqk`Oe@O6V0+1_@9+lDW~>q zH+J2#9kXrrNrxSM!pbrEs24^Ri~%)~HSjZzKDX=9SRpClf6_Un53Yzh8j9K(1JKX) z>j4OtYv8b1pp&Q?CHiH?mlFe|bCxz>wa|+~=cmNr^5!LNK;aJ$$*z^yx+y~R7;S)bN4!>(Y(uW2UAA>Q&i1( z#n*ha+|>Q?pTAceNaR{EteaX%2`?IhR-$1_KSqpdqZ; zc=l^QwfoD()5JF~z@$@e>2CL{kgXk+PQnpJ7cT7HxjXg|P7m}Z?d#~kX<{~XoWIr! z(Q+hDE;>#%EGwWk;=Y4P9w*8iT)(I^=G|)ycpczsA*rvc zTiR%#XX&i{RZ;Z$=Y_5hTAdE7L>US2~ z?Pn_uq}iO5ds-h@MkQUZ4}!x_kNnO?tfyqRB5J4A(tK`$he#y0zil##`*Croa4p?H*l4 zw7l?w3;{d&J=(RcPc z2dWsZ?LN5%_^L*LFLU*=F_GXLKu@p@}9!74p&EasD$iL%(kKbJ(n?Z7>5Ho@< zOH4f_BZxpA_R{iHldG9_{KcT9iZa_SBiqJ>VB<^?)qa(@z3D`| z-_eo`KM*{~u3-HFaoaU76D0_A&AZohCiBC8%{hN;AVPK=sVv10?7e;D;LqiS&mkhC z);w1MFz`7lo$b*8d;DFXaPAcWI%2|KC|?c5gc~0^?Xq@+@&t$Z4}sx! zqK=Z%Ixk4)!sN0433&aha)J6?bJHElkzuET`gg~(_aQA&IBWy#4{S--eQmGRtyb&( z7rx`DdC`gOjyJ*sWvO8fc;#M3$~g-;u}T2UsEZBYwmd=+QI(%4I#M1Z-`$VwYTmCwg@J`KUWH1Fwo8Qfyq0jG4l55P*2jT z-rnnIwJrI3)p1r@|Eb5gotbvr-FOCB{VL=zMl7maplw#dL&*QsQ8o3<9I?1dcGYM`?!a?-D7S3A!*dOf{~!xGY^Wjh zggYO053*^j*|{b5T;`rzetrXQ;mRG;Z!gdJI%?XCcxV&_#$!A%9vx83rdn`>L@)xs zq8AF}%W|8Q%&M7GU#C7n(VQ$;!5C%llBZ#9?nhr+HzD}OSjuV*xxXSeS@~w_-F7?t z0GHZdemF)dSXLl6DIO{a&{R6}om(rk{qmxRTVfNccrjK%IzK3PdixY)9ryoW6O07N zPUbsUOK#a=Tk7`%{x&BocIC@lE(#3S5rh1R-J})6CzvyYU92;MA8rqM^;1q%OpKJG zMAwbflkPMx4LD(4yNoSmj?QC~Tp0BVFWc2Vt*dCxz0{*)G%x{kxs~&JsM$k|YUT@DH4(tIcG!V;|M-!0--(x=xR zEv;|ReDvPi#)m$3=#ax0O|Q-{oe;(tD2rZyZ{-i_zNRw|QabIT*}5t0G>2JCn-_{T zaf9{N=ja4+yGQkACrVXvyTUW)tM!FjYcePD7loMyp|9jZ>3p9Oc`r*ik8>8=i>`?C zAlXQh)o-#tX!3LA6q*$F`7TY5GmqS){K(u+{yhc=bZxv5iYdLzHp_l#{Bp3oj4`4fg9x~RqAsjK{8+Ui=8-4b1y?9{OJ-XHv za%-P?Q&ye%JFev(^^ojlSRXy?`@X~Hh#K*2GL3>2q6edI=Fn-+}(tqJI%cFU3HbHN{xbiBElL^}UEV{WlTILh?cVJ)!Z@l(DGZJ?l=z3tEl; zjGcUPbywal%4uE+5BX$-94I90?TpbykQb?!TKC-|ejh=wZscQ)bNnidT)Nn}0fH4=QzGH(qH z_WH@I&6E)1qWU(u)Ax3X`jcA>$1TQ)-$2qHaF>iVc_pQ-zZQARyyTIx|1%GiOG_L% zj_Qh%9G}Yb9R(%OC7|jsyuf!TYbZ8vzT&M`?CXAY2mf13iX!F*&X+I@VlfLDP?ve` znucPl0}1AAJ18Y3tMp{$wg_nFu+{?etbMHwQT38{X5uwHN+QLUA)Iu{Se+GnUDwH4 z3Y>=Kz?Lds)lIm3@=(COyOdJVLdd7_X4{vYuVmE5&L!%Ag#U7`F7E_K&SwhPR7__B z*ZGe+Hi;ZU5&~lY;GzLK&q#H}&u+yoCJLtY+VfD|l4m;9!Ir_p)c-8NoMVLYz#gF^ z@caWE2Y9^{M;u^|HI#H+XYp8kd8il|C&NN-_@z_Hl9`4h#{xRh5`mVExzR;-_EsV^ z*CorQyx{?>BF@#BJy6IouiGHeaTezK7f3MdaZvhO*AoYr+&#@#s znAmruIIg&dOJ%pLqAN8;mX8gpKpB=;j%=$HU%>`4l?I>?t^U0!A1^q+7z3_j7s@bi zkL0(7-E4SdnYq(b!Xing?#?xeX(uCgXQ|*_Y0j z-DtYNPtEe9noO)A_wl;bT(sM)yio5HJ)7PBRXIx3ofpBzZQ748dqTfW;9v=1629ar zWwZ~z&%Z!?Yq!&3ldsq;9vhU>fNr8&F4UUaRE-QuRzyIv9I-!n8gu%FtG+A#`aU2+ zb?DSqbqoeW20G#DyF(Ad^c>XS)L)b&`<>;Qe&JQ`zBiUH$%vooY{K^slpy_N%U|R( zXZ-q?55M9Uz9US6KJ4yOh&uMm732$Yh4M%FiNG@W{8)L>^-N|_13YxV3RF@B>q|3~Zl6+8($gcFX*RzFUOaTiiNK?ZeR}GCW&hv>euytJ-l{ zm3rRfR>cUh%%tQhuH@_25QcM*%~y2KzHd{Z8b_*|KcSgY?kkzyRE*5d?XLu*^K7S3 z#j@8m6^ITyDU#z@rzcCqb?`0xo)W;6ohWUS0wkwZ_9WQ?gdLP&wvwJ+%4b}gi z$~|O)4E_jXTX#SX=uHDc6Y;6{Fz&*uy5U2DW~A)GOg}>g5Y-JxNL7T(O<2S&zE<{! zy23WqeK**nnln=gT}p%P>;VnF>+X;!H{f;iv*v+eslK|NYpU+yb=s%0cs$G{j6hS_ zt$?awAavAda?j!P7i*v`6xhw^>!dRCa`?qyev|^wARFra_tbQicW=Tp zt6UEiK$pdC)4+&uc4B+0xJh4gW6p5TohE~Tq#n~laL|-YYBfe11tUjIO?EzNGm&m^ zGQUfIJDn5SdSxL-he`wP^q^{|yh^El)qf^jRQyAOLcoCWg$#L`0!dT#T50kqAm#;r z8}9*Q%v9yuH6v()1g%yz*pwTS-2D&~lW0PvH@s8k@Rg8+}Akh}&f!QtVXd`1WQ* z4rBq+7C$9j=06Cj+tnfSVl@Cg0VB^d${d1!oJ%`)dA5!&yo6aKa3&^KvxXcy#Od- zjF3fSkdVqQfF5fhbQQ6OhmV)T0xe!aB`1Cf{pKmOQaY5Mu@+hPL>kn~PI@nm8NIuOJJ;xOrr z7e}*U`1QWw@ZHHv$XT{E0?;y6%96XAEx@`9mwZz~1RLG0k%F0E@=VTev*~k6EBb9D zqAjN}e;#*)hkKK$ue~B7m3e*IybFj7-S=KmofN4K6dEnOy;6K2>{7A)I(v0Jmv#rW z1V>y`rP~7Ibt63Gl&{BgMfKTk1_{)vT^aT{L*^x;*A#<${Z;GfQ>IIQ(8=e9_4EGW zOdcA<(f$b-DG68pO7;GaIN4iV-UO#HzsBV~WxA*QrWgn(sdgNWtNST5GB< znAIc=`u0;V!4Jp~vHQe6`Sv8SZHv_IVM_=gN^KZKdryQ7t}QQGeGlYOjz}GE8*Xqd z&b;=Xxr2QSIm#3TRRBs%r2hcNs*^eF&6KwqpX8R71>*eL2}f2$n%h=(wgPVs-(C1c zA{eTX<$xyzpx#9#2RzdaVAL=dZ6SV?nL}+4Mnh@~za|sE%kDVMG6z>SsCw}wj75MB zN2$}ymhPY5|Er=lZ{c{S?q3zhZR*t%I|tLddbgShB!Tk-0ioKf-&y*9{<>qgwIN*p zWpo(#L)nI^zvZp)beeA3R|oQxx_VG*o&_ytEGA1HRo0)pi)!#99r|B4G>ijk`+?)T2cN&S|GVYc z9tqBn$QDDX_Omi2Q4u}z%*2wTM1dx|P}=d02z_=#)g-=9l3lX?{@!HAvTasv8>9Sv zd^KF{ya?lH3vA*D$gZB-+ni=6qWT_&bu51I7BFjNKh~_L#3H%M!?|WI=6GSK>2pzL>fXE5I14#@i~b z{4o`Jy&+toiu#DVB+S2q) z%9=l-E?kqBe5pQDVaxBD3WtXYMewlxCdFm>&IBOAS z090T$?TEbtWr=;IIP-HSWuFDeZwfn*2WJ$71kCB*Uz31(hQz;rZ_z+9TezUWe(oi` zBkh(iD}ohXZA0d%wx_BFg{e1J)%4W;5{ncRYG7)N zs8!4`&&0=I)mvffyl?9GKe*f1&tIoQdm>D^1_ej{?W<))i&n$~>`cQA0NgFc_{r?V z7#G7%;M!7lPH7}FMe_Eqz&2o+B2&T-zkd7i&e4;QB~GV8wt>h#qikSRf*oL|h<1}5 zlEIsPX!FzFhtaDe{s=;Z8LD&^t>-?h6N9lhKF0>l>;*1|iOlX#Uwh{djz1wpn2=rU>zH-; z21y$rDNm`P{HGIm4-z{r58E7DkZD2P_d)9omab_RX~jY+AOJqsW_fm;)dmE^9+c61?=5y`ayXK%$gbdP!F#H^%Klhjft3YA~v(M)z z;_X5vqN^6%g}J86w;|o~muo-~hwlrFzvLCjHc)dgdCKA;pF`oslguM9z+RBvv$0Gg znEv8+bXRGwHD*#jwA^t#I?GTvaQ4BKKFyirrKO$S94t*v;Bc zvHwz{>Ryqs$P~~eB4CD_5r(45+!(}e5FQy~9q`i=Ch0|zQN9m2F3abOmms%QxL9`X z(5zTVvV{4cM3`>S8T1^RP0TRN(_C0)tg?BmG%<{WHO1q=J3)SG-rt?= zCA}HG=K>MYqAVHETAN4l<%|Ezop3%~2$U``0AI?ZFZQ+nFD(PM^4fHkAM{#y=6~bv zov+XRr@OOyj_gUVWhoA-&LgN_23PONp#pnl4T{Xc^Tjg%hv#Sc=YE_t zvH0u%e1cz;;onKlE0&0VgWDlZe;(#(`GOcw1s)+`$o#`<6m5Ed2Y!XVSuB*`Na1jJ zGm#P&ohaue%aL?}{?|yw2@?wxE*s!l@Gn?dz@gX?o)OH3wXiG}(g$5bMni9hDGNcB zxl9>Vwy`Ync{3gGFj{JBb^-4ja~es)@ve;*gw%Giy+gN9onyd2-(jl9oSa@_j$p zLas*22RPu+1@=^7HX7riomP<0c0mNTiyH7?_|KD3-T;TZ68M*zWE!QG`Y4OhS~+mA z>ZEXh<^vA2iQw7TjEsJ}Yz?3XcYRSMeyB*@fXucfKO8334lK#KP<5|3pJ zGhHIG;Qe^f6*BEl#dEjT+I8^(iW7@@St_1p<{Gb=9zt z?Kkb+hPP&M)~Xhxx4y35@6|{=Ld@0me~>l_-fh~+SkN*2DOX&f)B?dZTI|{SlQBAtF|FDr=~N(44ZE4x};7pYTIUPp`q|U0Mx;2 zYjUnu9uN$l6;yIWul;?4j3Ulr}6pK$$1hLE{zOaEz1GR$|9^XRBHLHU^D#zuRA!c6I; zqcLcM&dLo$GI92Du-u$NOMAkBcogVZEn>sa21hULbCH+&rR67*JjlxsIOYE;(5d{z zZWch5LAFHSZc%F%nKcuogz(~vUCJV$m{xXM_q|{D?;%E`R1;;jS8ekDaLWm}m%RRB zLwlj};rp@~1$#LRY(*l5QD3ScWdZ!BveYK)2V)NM9-`%^6s5Lc9tp#sqDgz1id)F6 z`6y)k4p3tn2DGunbnzvWRSfP_Lx3E~xE65=K6yrSQP_lGlfbSB6|&N*b3-(}upp3e zh!+B{PNM5T^mV2V=>NkoM@K_e6ht*Ry|B%UB_(L!k{M*ox#8y#7&ZY(Ueya^^PpA!tdtP1W14}2p0fS5dcMjZK=Cxz)J+ zXFrcOuW>DzQ@%QP>ks^A)e+wOuS)LTBeVsfK9eZXSe{f(UV}JI%QUG_5k{Mxl4_JP zQ0qGGJXHYn{j5GvUJMKU8dD{S(=r(gfi8Xl?zj*=1OMesJW#kZai&jrpc74r3pEv zWG-axE13(K3n?nOqM{Na2?EOc%?v-T)xMd`1kKh6wO=aCMKm^%R0EjK#mu7SyO$*4aHxdjGxsmd6AK54fdEl zB}lR0E#6I2|8HF^Z@6QcFYz4Gx;RP5S-C}_ElUl_U1y$AXE^Ctp$N8(SOLhtF^5`? zHItDOU~AeuhesF6^jW8rSsgf|D(CC(=xxMJjP1v{5+W&7JRSDijp=9|E)Dk_284M& z>cNwCkRCZDdx$x?XO97bzHwE zjzxrPaV<7-#_I&sz^)cbvViujx5Hohm~pS0#Vm^bx#o5J9h&ufny!dP6_dUB3#CW1 zR7baPYNx{)hD|pehB#h?Z)0?uP@NKSw4Sk&W;3lcq z?t!Ekxpx-z1Mz1G@lXC*MpPj0zjaU{Htp1)xLn(cW^=2I&^l^}qufU6L(^HH!J>7V zaP!2HNQmEa@d>w=cwXXP5fpa=8JRp#^LQ4cp|#5Ak&^BGU%Y^4urVjiVlBQE#UO#b zQ-{hw2P3*g)SomNpJyA;Agg@vR`yE!y0u*a;~cTBqDiTp zpf6Qcyf66Ylqa_?;z+3S%j31F@?)bOV)RO@&inALpGRhzN0Rj|+GfoW9v#2|4r$VP zY%(}qm7(XGBKJRQ{v~99{gc|ant=o8(LkCjbvGO0gmYs&Sok%FVw-kPi z=%4XEJ(}xH;n~Zta42A^6%sZZle#>G1vh(@V*9^i{UdeoPQmE{m3)+w%C2?mOy@+d zH(2*D3@Jo6;~3{HG+1upA|07p_j?XCANu$XNZ7Q~I%`5AbgpK$)FhPnWt(a5 z-G6lRM=8#lpO&(3cy$yt9DW2fD0>RB z`8)$7lYMR1E}di0xfmYG6B2K&U=F)1H6`@M8y?k<$X2psARJyQaBRw48c5&Vy~cr! z=~Lv1bDs;I_|_xUTa+nAQ_l@cGwT~Hw}gTw_!+Iv8hEaqK1?mWLoK>UM9DPKa_Ss(2DhA{(Lr!Y>+l^j z*n-i$*CG2D2Gb;iYwT`Wlys$)d%$uBwaBQ--{+*yx%giAcOlKQ&%-mc3BPEAUpW>r z^18V-3`b>9a1pZjcvrcaM=0jTNg~FXh*!lsLv|nOkMt6R!X}tfkEe z?-ms5@Yk?W^2{zU5wJUmRh^lu`)AZFwfX$Nfu?IQn5(@mQyq;NmhoFuBmTMhD>&{? zYp59CYc`z0Y`~g)V8k7$OF>n)(ljgFPGRMm7Q;QeWU~ zV)QzytUSO4ubO_d%v>h;$JTyDdocJbGcR#xVSD{K-|cqVA0-j9mFAzaPgI@Lc|q5N zY5T7VP~*>|%abr}vc~qF?7rFx+Ni|r$ftS-mDFVa`9tVzjUIs2MJKnEugI+8wqJu|KTj6D>MT$wr|D1IDVIFaXc>qGqW%PR+X zon0qbt@a79Jt{@|E)deSJAe&BnfxKiW0mV#8M!^0UEa*$2Yjx`Ecr>6P)M>SzqQkc z+Q5M91|nti?)#`MIbC`Y{%INy^a2#SuGtq1=c0M67h8^=sW&G5NJ*{2kKXBwO&B@0 zU9fYrtyFEGbYpJvy0u7$=ucaX-)wH^gigVK`&jw5L|DwIU_;(H9 z*%lbqEm*DOP9)FDKTF+(R^3AC_NDT8lCJo$Wrb|)V_!)UZ+^GYhcY)5nrxl2-{uTU3w(3BMWY6G@_{-Z1(dpZn)An zHMFn2?HzXOXzy~Ad0ifx0stgV85Z>+1-iBLmvf7H`S8sneTSV5qwVfr_J1KFv$bJ_ zi~I~W`HV=p1C#P$G4#NxT71bCjaGX`28m$9URZvB(8BElHWVnu9^y8ni{*owaY*{} zI9XIxoLVzft+THsI6n+xpNO z1_!@b)rEzn-OSmyP^OYMjprTkQq^m%y?H2HEpgyZ z{*?QHl4T8Bjg@u(tvjJn=Y2k6>j{?C8m*vv?iNiFZxASr{i<)*PUf^NFZV$&tsG6g zGJ#gb>B;4Tqi!x)es0>T_dZZ_)KZeZmDN3cHJ)v(X?nxiM04+z$}Kko&B%bV=cQ#c zoY)fD5*Gsjqm13vO3SdU;r&PI#;f)GDJ*VUx$;x=M^1(Y<1v9SY4TnXIXm8+ zAUDych@4-Dnqlt@ki?*l{Vbq%nDI*NsD7wSlGkJma!Ng3J^$D$?;}~aK0ENLayg7v zj3SXnT9=bo^qwj+jvXQ)Lg*U@8Xg!2dmPO=Js~d8P$Y$u;LWqy_jJ*_wJsdBK2aR|BjX?X}1q`3dc$|sn zYpq%oEpdchBR)saGzOzUlJU!-jw{yYs4f7MAIE%qHHOP7&ch#t!}b`pw%!A+jkw8u z`)p7CQLSu4Q;!BQGBTr?U@MDXE2-&oRK6NJWxit74FtM6RN#4BZ|jV)af~t|+2Tp; z&(LAt46i$-7g~@`LGMQT{A6K;L1Rjp5oU9M4${=?;itFQjb^nnhMb}3#J~j+7?IkX z$ACEXfM5MX_F>Qd_?3fktk3xHSW(38d#Xmj-QZ@HN&P*q!XG zta%6VqfmROe!`6_8Sa_w%EB+GH#2d7@O7njnIYpS!OOM^VkLeRos8QBf0?oz+*3yp zY(cC`FehH9F$nYku|lK{Sz!Mk@&6>)ssD-!2)Bt)Y9{>6AIgsFeK(HEH`(H-!`j6r zv_#w?91B3Ye}t;$(74-iul3}+@$$7^eA-d9P_*d)J-HzKX$A507$ z|JJ&PYqULk>qxIl?;n35be2DI?m~w%5-DwDJ*0QhEa~Bku#RWF@o*bCDOUYtlB@!F ztM30Kz${T*>p;{tQSNJ^99NcVuHj1mktB8`SQ1=%U(deHTKQysU3xstgZqL7>(Y&2^ZvTqvIHod_Vff1lmhR+uWTGl(@wiBf=Xr}oO*X|0lDpn;A zl8}FfV<#N2_Qv}iZpms9YU1Z6Gj3*D$@q~79dE<8^&V&a-U5dn{lzcWzJ?b$o-%07 zSY0vwm~pw}eQ2PXum>=bysQKF>^NwTz(ZlqQqkHR2&9PG z&QXFM&2G|$7!v&K8s7SQB7yAc#>9x8pnNZ-K#`O%rT*Qu2k~C%U{>IK!N+Cs`l4QS z(P{Kgi8kUj+F}GXsI5w{HTTp+%$Y;mb*MLOZ6Y(kBPkd%{_TI~|3Tv@_#u&K8IMK| zlY7tZvEnl6=`o9FXWP?}xpMEi14X`eT~X!dDsrPeOM#3BR-Kw}u-)imd?G5d5OccL zEuOT3OT;HaX?j{?S^T|YEjDI`;PHg5v+-MoiPninhJ3Pej8-@ZKU_uL4*oZoV&feF9~aA_ z`(kQi{^~)XXtH>LZ}6K-4x|ZiBbM00tyFQ>neuWYZpL+mEDn0`-l#@d_|NR#*@Gyz zlw|+~_L?i*Gumdjet~Xa>iY8mR4FdGt3X>eBZGD__=x-n%g3=(F(@>{5CS>v;7u3v z6ks$Lt1Vj=!f3=ZYp!pSGx|C>5T`?6sASHMLtj94tg-_TCVfBbKW5H9~4;&{g-kG z&|91BQQf64<2SKxSLm&Nr}Wkh`~w6QB4PxGpv0%!{j(Q}15tr7+5S?Oa)gQW}}@1O*q ztI&hm%F64?GrUy_@TDb*ktJr4=`$SyV)i0$4AzZxsw1DpS1>R)Z<^Fe?(%L`)Ayi8hIiy-vs9il9xr~{;Gie?;iar_U@~$Udkut zjuN|((KAZtO@;2d$)yje*J=b9$vLd{g9HsA_1tq^kp%*%)`#{&(z{^tyl!f5rY$SCsflB7WX+LG`%mhag9B?`O1_g0`7hL%<-s+Zd%B=C@;uh_nU&l-0gyyarzkqFP)4B@t`^+mPqj}$%~(nv^V{Y7^iyZ*1lf01%l=#U z<*x`B0&8re$KL~|!cx_sCJ~Qz<1!23oTZp_kcZ$tF*npaItr;zNzyunUm0%;#91g`Leu3$Kyg}MNPQVxIuoY; zwRQ~=xDDim-L`8M+(sD@6b!aHMc_hhwP?snI7!A}bn!BLb!LBL{}0oN8khtkhx|jr z&jQ5#der{z`i0ixcgu5TBklL;Iv-%U0A3E{`C+EwZN!I~WQx3YQXHr7K^sbfO=gx% zz3k;K`b0olyY@lprFP>0W$F6>xVKJ$XV7%vu@Pu}^rrX^xvHy(4rUd;Dlm?r=vhth zM~QWe;L%RpwFI=JWtRM)F=?T)Y;h`azFqn6nA(j|&Z@ob5#EtRW-$u6L4aM}gK88C zmtUwSVwWXR7MqxPhpwCPm2vn8i2yS+8nAI*qWAPw$(x$M#1hjSX27)?UTfc)0)JGX zY1uUs@mHa{)=4gN`I7e@lk%2u3f?6zdy%hOkbQh^0wOv$!#Y|&VcI3&%*eI119cz> z`vwP#b$MF6hH)vF$YoGQTD!{69hv#&RSYP)epf<1>j$=?9#E>IS zJ9lwaCjkI>Ry#>TRLWrMeLit%xI{A5uM?H17rRgo%3S<$9%GzYAfhg%+(%6lfg^eL z^VOa_Yz^;<5pFOkE`4=Z;$hBG&>5DIN^_>u+nT$*o$p=JVIX))Jmzlz(YA$%o_ttX ztkA!c*EQ1C5@AIWdmm|>>_nB-Bv!O+W6LsA1n6CTb~Wf^bIkbjEY<6RIKN|oQI%-5 zu`f6Fp^hpx%YW)ATKqgIVY>pHhIZeLT`+x_pdSCj6y*X=J>h?RsGYY%M`1fNe$29t zy4+c>4Uugd0~*M-O@hS92{umOP~HAzmlcvdB=cvED%8rmkpX>HZCx6wD;$Q*on^N@ zf^8IG2PSc9v9DUvaI4xI;L>CUKv~sK(P7~>qWXs z6fsb^*VE=0>>Ds6Qj%)deyU49)eVXbNF&TqmU!&>w=>!MafM=}h@&()(f;vyjHNHu zYW16jK_nFj;~z%{@4AWDpU|pEw1&MI1D6jW6Juv0BHLz7{7h_Tfq%|Q%hI1g@s20& zj}JtTk0_zio$6kJMJfTum9fj?bTYdyp+JtYM>4CHJOB32TUx=ZF*D};=^6H9##pO- zp!~*l{GkV6OowOWO7d108$XLEqs-Y?efy+{FTafMB%i;N$$de{ubiS()bDKL%t?tV z0?p1DpCIX~rk40L@MOz%I=la<_M660&_Jjy{L>lni^>m36NrcPNtoIlJTb&>YRo|@)?Y^E1;Z8@;9{JLBtqNSMaB_@}l;TcXj-@ zR?@9tC%Hv*ft;at{?QFQVgpL3BKAHn?}-g&z*xSm4BU>yPYq2y81V#n>HPxt6SztG z;%*gce_LR|V0UTowK_pzWv=`K&Vs$KTPNNiX*s7sUGBbh_AINo!K`!Oe;HyaA$B)e z%EogQDd$KLK|d%ND{EkohU#xD*^we=K7f6o_AhQB9T+xfn93r>Y(iEI(&Z+T9AYPY zcc^5qDGt2L%-l`k*pJ(3IsmZ0p&=;q0JtSLQb9TXQ4w6$axZ9OVjSEIY79cwz4>^v zc~HKQF`GOu;6;>aLZ=OGIgBe(d@}bGuK*iB9E!NI>~7b?lR=<&3)^ZQBU|M%m<(`N zx=|l%ynzE0CN|GXBBO%~kF0{nwY|qa$f?a-*pGV5qlUImwJ_hWDBm#GNL&V43=Ww& z24U<{+b$BGY{0ii^jL6=5XpvitTjx13Sdq$6>{L?{HS-k4enD+3uSb9fQjLVk2|={`&%Lw0rft@_ou&y${(C3IgsZ-a_r&p!qY{LC+_bJQQm0TXc%zuVgFR%RkjL; zZj1-M31C*UP=0Gw=t)sd{L$rnQ)6fGdbR*{e6S_BQ#-;bte4pYw>HPm$yj`{iQN0v z>9aQvC7xBFol$nUW_M14b&{-H+vEH~g~+{?5Wg(h3G9p7+Si}1*t3uESRle`)vexVQyha^zM;eG{hu_z5>1@&#~HS1ot%5j{>Dp zj@IIAki+x-IzekdQ(DPx7eY--U3OPguCsREw^*b4omOB1)m|Kz+a+M61H*gD4D%sw zJNC_@zM;kkoB>7fOKCV-R%&P!U|ad*SDwthP!+xZ4`JYSU~(ZnR9_`qE7f<${d zB?;d6mC7P?Pu4J>IxHz^Yc;rl>q4F)%#2)n zm{vD@(_j~+x@yA9?H2Y%soFz=e!zaTsUDD}sj`iJ7rdJ>-O`Uu1M#PBnwuZCAJFT( zk}IqAO7ek$9%QDFgJTPG0FaIVIDH^GqxG--o7*uqRS+2%M0$j1p9Y!kW;(3- z_td_R{eS$vQMz5p%v3VrIw>4m;of%3$hDdA1Z;~|3QNlH1Dz%kny;fkxCtf7mnq(S z=hMnWirM?{)w4+-rf=d5KJgpW-IG8e1T07zzFVJo?}gn4I{nQDscaotD^nNHs4tbd zeJ>EqF`l4aQlJiO-qd^|&gt%GI>T!W}&uCN{Hv5%-(3%P&ADv#-+oQ0`|jc1EZEk z$mZK49Xe@wP$>i`IJ`m)Wg`$NQE1=bVgh2!o)BV&>Rox;5bYQj zU5c9cUI#u?-VJ>M8=^G0aHPZPEu%ugPJla;F>=*Ba9DBhG)3-*rq8pgsKq!wGld1< z9q)UdRF!k6m9O7Q+N(&2o8?N(V&s@zOUx^$fBvkDF_>OkW)ku>>UOkbI*#lZdYODN zFBmd{DYKB$z6IO4kYiB_i~J}kE}UppYU5mBnr~yXMH6qE*Z`VT#D%@_dTGT(fD)tV zy$7Q!b*%Rv-BZpWaADQ?g~T5M_SR(f10N8(2C%PWw4kK}-wJY(I5~oi?-9v12*;1T z4lS2Kg#0)eSn_&u#R>>Pf58`n4vr7;9m6H5 zE;+k^u>syT10!JZ=b#iip{6Lz??@$apFumEXuW7pL26tIJwn-sp2Q`rvg#n=2!2nP z7?lz>FALzWReb$)2#*qnVd_^)Mm`8}a*#2p_TjdIegk|3%iUv_hXlE0D zbPd==x0F~Oo&WDtdtc@XM+UUrV2=gAse7CJKLLzoA@QMrHshP>kk`HQhN12illZW! z-k-~k=r`ewJxBHoF2P_bk8oS1jOl`#(5STr?NL22+idL6T;Ey+{-Cr{%o3n+;(o-x zgN188G6Jd}wOw-Y&?#yrmtjO<3*oB)%X^8g@?0$BFZMPAz2i&rciWu>jAHkPXWA;C zgvH>=GK}(NxSAv^t_P6`jFo8C3R|xIUyUif%X8x};u&H_>2!0@X;n_!3FD5%5rtfu z_b{Z6R6=A9!FdPBoLlP`&cKgWm8bQ){ggEH3JSrX|44zL>1@=yj4DA|myFoCzHCQk zJ4S;taHL_byBf$1ZyPz=y&yDi6!zhcBpl{<&MUhfz2xwvGU@}A%75l$0M!Y z;1}cNh6&pw0n$j__weS{wLcZestLUbR-p-m+fPq~r2GnnQY#NPbIr&W0h1 zJ~mHWR<++D;pp-EPV6t`&{vZUly`ilSo2{fJzA+D3Y(sw+syW=U%UOjEF|F(6tw^7 zUgH~#O)&lbhehzTuVDcYz9Fv)dy!o7c-C+m?eq}hbXDU+dAI7?+slMVnks20qb}0h zbtu^2{Y#|5kM>Bs3s)wS#Unc6mp3lTJ~9%_|CepjZ#K<3x|R^Nn26WuH|eQ3`!PpX zXO1v+uh=<~2A0Fto4u}{U%U?lakrK-+DQ*DRTn;x^(p5VP6t-Pitu82iXf{p7PqBh z4`I)vIEky6TwavinHb9CA-hdXEaG3)I)xQ)sy=k~=8mqzO4K217T>S|m4V><5>v;c z@X27smH~D}1SucIyVWWSea>h-4ZZibkV7v$W5<$nuL6Zu-L`wcd$BQ2lNdH%2&*~G z#)^q!pV)sMQc=(QJM2EV+04 zg)>tXk)RoW^B4cWb$i~sR9#x4FV?3W$SMc1i*q>SIEki%0&$h3c^TuBs%#i+t*pHH z*b67WViiI>n?`C0^Xi1bS0baKoUt6tQlcHjZ0NsrdkaBqJp)rJO zzVc>d{sl&02EvrQ)k*R1SE#p0y#8#9Dx7 zA$-AJ5v_8hf+3DjseXx?)A#P;R~+T@ML3`i6v!iQqK`yq^au>VSx8lw=-TIX7Y?>7 zP&*c*QRu~elmC|?^nX+Sng?K#N|+cl@}h;;A~n}5fB}LRy@^;;pvt||BoKn@{VvBW z@A^~LUI&7H-sT=TMVNtd0f*#G5-EZ4^-hnl=_E# zg;2t==IdVMqv(Bm8&Kb?NwIrF!j6H0>=oUL8k2a44Y>L*{I%w;50LJ?A1*( z>@|Ppc_a|zrGCJF#;Yto85`}JhY0n{fWhR-8S@#cyAb;!7%$AEhB-oZ!JkCfvZXEk z{Uc#EDuDHbn2V%=Sot`ue1(;gLFY*2INxE#c;0E(O0575DGvJUszeX#8CBp(=4)UF z#J~Dw81xbHQJ`HU(!L;3kep((7`6xD4E)A+0Wlyek7o2YY=G~l`nC-&VE4eRB8Fs^DPYKZqV;v@LiX2zt6W8vwTh{O@JidGWIZmYQ=B z7})33bwQs^w<`Bb0^Xb?2XDI-mw*VYs{7vKw<}@+L`EK7PC1XgML)6fjh75l4Ia}j z#NFDNzA84J(YS-!v|nLZ zl1Qf$vW~c=p_1!wi?31ksVrA{8y)h{+Fz$BCf}$;d37ebas2XS<8+M6V8zR-$u#W! zzl4NejVYjjMa+-1sD1GLHCc(2`b)1+4Q^2(q0*$6H*Xi^6RR@L;Ik2)G6#p&wD#5? zhQxW<9p--=ii;qiS@@O1zQ~e+4>Of6`7Mt&nwn_MWr|R{X47$pf4K8u=54e-`4J!% zmRR0`-$`TQYnx=U1e9P4=epo1>8G2}8^18BHOmUDyWec4-HB(%1@Kd4*hRhK%GlQ` z9czfc6)V=u%EX55LPVZfXi9q2GT78aHf8}A>~^V_ig+~Y51cjJC}PbAPs^od&y^Za zr|0kW9NZdkZ7KZO#sAiIimySwrGmvoEq-=bQm!4*w2HMJ$-C-(eM+|gJVIp?KR*2q zz2=kv#FyWjedOF0Ww>>8%+p`{moJ{F__{jV!~N#VzUn_-&FcO=YDpvEmY8Zs$O;;G z>+$Lb_XT#n!A`R%xZQAy?rM9(zlQYbXlAG(c?@j9qbD?}iqGs|fcgiuI*A0H|SGQNO z5=7dm&Td?6^-7xAXk=oT?=M6i)mF{E%qMH5bzKo00#Y52_BGZq>$|<0U}zD2eXQz< zMBR1PTkJn+7+%{`%2-!!S>si8InaF6v)gH_23NwS+gA2<%tCN|K;>Xcw#_aV=bQzlk-T zQ8vp%LiQ_Ib>{`vx_Vu;_EXo_ZM?0WZn818mMA>NOqjq+zGBqxy1}ZCR~#pjvwAeJBJ-2FsktrLu8{P4HJ~gayw(BT#7R zy|&Aru2_kWAv^Kml!6K0uF!xE+@zG}du@(?DFfTqt+e8NWQloa#^&M@o*gxyftu=~B0Z#&PG8avGugaC%h=_d?h8`i%$Tj+i@afvbYA z#3?5!JDUZ?kN!O)JXu5(VdD&$Y(vOSLf+U|D@V4vThn|=DFO5~>i6pv z;K*mp1>l3Px=H#_=z;vT@!K9W)e5_Nj|miZ?oxL_`UmRbm!wo?Y}n!?ucCt55z%jQ zfM%W*>20~{qY)BvFk=k*3=%YoAAEe`B864)^FY<)-(w1q=yfyVh2sC~d+6Jmopmgj z5{8n55@V%y$FywT&D}$M{Q30FNW#HeGJ_0YNEj-X&48}zv+}MOKh`w+b8XeEmkG~u znsnb3M`zgvKUP-0HX>*byhp6)BMqiSv>#h{DWAaKleMeA%U4qnzbswP{$#e5iyaYP zM@xUgLg=KLM*$aC*B6l&{!mf1P*zH`KTQ29`C%Hb0VFN91zun6e&bjFIL3&>*DdC- zDoVdg0-KX$ZD_P@hQY%MQ*TZ<8}DxnR(m@C1e-d=v701d!5k);nZ(GjmOCFa3Cyy|fc>Y$@lLRb{u>hr__-N=$ z&nz$P)GYBXPJ>>-o(m$Vfhzw#`hp7CM<0mI8gV3xCBjz0&uh&# zR=Q-$dY)$M1(~{cpkmuv3`dpE^TLY}zl@yEoe9T}7gHwRlGPqM6g{bG8mLHf5}|%< z1+`Y&2HYm}kw#)W0)eHpk9hy^?_xH(BJmk0yZ(9b`x7f<`i~KP31+|>emjMyMLHQ% zf(4cw8j6$G)-ywjxq4ZvNinw$XD0nUPLNFeU~7I4Gm_X#{}tJJoN#*JNz3W=Y~e$i^jpWKKV5th|G47{90(6{Y5 zD9K5$UDgBwt}7$E!A0-T5mX&WT%RYwyvHuJl4@seRB=P<#APM3@1CFT{+jKY+V1DI z0!*!~LZUykY*uW=QsDJ$c>s1_eAfsnfc8K`tI4lslm1zo`TL3$`_+RD1{)3T(5@Lj zls0uR)p5T|Og!`2r}pu~Qkzi~UPR{Cv96RifwJ3d0}kD*MCB*3%Hziw$KgTB^h-?L zT08T$n>%J>tJVS1gH~InXQEt4$Z1xi~&$27@LHAQ342&^TRCa!HfO%r5Vk3pXy!AIy(2` z7r!*qHB$TDlBZ;=`s>rkfa7|RUaPJ7pra@)uz8Q}OxVMmdG7lgDO#tW9!g-_wJ%r* zFyEe)nQCiQc3$iQNT#N@XLRHrN;L@9+w?pC8T72%N*ge&8-Q9K2fwGzw8p8^Gr_w;> zUg_;5Z`Xt#Ll}f5nhisfzyw>#RfEN?@`<~)Zh;oRUVr-C%+pq?u;OriiHK!?g$%eb z!QjB)dfTre&Cgs1SP8rK#^aFX)IscS^PF% z?xDmCI`21*A%!EXBa`MO7jdQntSNts!Pd{(<)LuCuwQ38T(~y#!6X=*3!W!)Pf0om$Il0w?X3n zP1orACYuSzGZhckR?A|MqtJYglt;58(u!`_y}6nR^jdTR1yBDH=;iQJ;p0pm%~2>} zjGZp`+{&;$w)(9#k=D+&*LYAa&n-Sm+&U=zECqFR{W6{ZCYP!>$7_C8$@Uh~Rg8Bk z(j$DTdIE|)`eJ`q*hbK}mUfN&&lqAFHp)8C!!oP!ZcNXk`Irn_}6|F=#{8Eo2GrLLsq z);9f(3wVC|Lg!7KVXcn8fv`XP7Y!Am!elKH{?(6v6rrU^5V&{wczy=WdBR?Pi?a3p z9-1P<=pfGA`o{pY2&=$*#je_eAld1)D5zn6a~>^}2daZcG{ zty5r`;tXTC*(rLp2~!F5R{^nq1RBaU$mie)nODTJ?9nuFn_Gd`m+RIGx^p^CA;!uQ zK0u5n%U9?~K^CttJ=(hjfis)!DckJY|UNWv25d$D0wfon(mI z@E(;F__xsBVh##~rlQ!)*WElOa#;V;pMQWQw7*HIS^*g#ywmkWn+~^c@$~Y#zJ1{w zau&-0mnG4Fo%`RqA4+ETo*)@lLttIO70~hPmwJu1rQKi34>`Ev=G+|?Q&U&xylS~c zrWtyi)5a!;;RsW$E&Cke3y71fd*ZJsXPbEO8#9t`msM&r;dwvcY1KlW{YHsZQeTg8 zv3M1Q0crsE&+|3rMk7zZa{iQB4YZFu!UVY5#*_2hnZ?A%l(1RHv(M{!4A9kU2>XJ( zshfsyQGWyggBb-(e8yc^*3OpxB&4;*!<0|8M_Mj;ouBKG#(*mUHPX7KoikH4VLWUu zn!H})6vmB~g-n=xI9YkNYMg6nDvcKH89D%saqt{TqFpm%eS9z>er+e82ge7LP>Yz` z>(jdtf(&V!phfc$4@)V z&(GK3UG{dKvjbC$S|r}5dY3l7Y0|6qlG3=cWi+eS)_;x@>di3eA27HM#0;O0U3&M4@kjepsB3pU+<_i^32 z43LvXcmcbz8;f53)&7~lHb$}UVNM0<{l(<8=^C2TFpDOi6vvBRI5F%dQQ$3RFmLA? zUIi?bFwr~L2#Efj=Ld>-sF>oZQ0C!zj83fAG5^}b=^#((n9}4nec`vByV!5I7TZLK zSQC#{fV)>t)uXl9YQGT5)zF`vF zZTXJkP%{@SE;CZMFu4*WS0^$e8#BzNpcev}5z1WR+JkkxXY?GV;7MX~b`5&WXgT!A zqYYEKl$O`tk4{#~0=QJ8;dz@nfcHMoYgj27o_~iYPF(tPKa2GxK)Nb(pY%f>o89Qu z5|H$M5ICD(vCeO7bvy*+({j25&cCFW2l!M2i919qkgboe_-doQEOrX&r;;tTb?1N+ zaQjNd1@>wcpLQ>Sxpax#eAW_CU$=*bM&MBlDT8g%H_4kIgbWYS9VWc@Dm1JO?e2|~ zcK`1_PDn|>*_y+sl;a{SX8p?9QzxxDuT;4*)QYt?;hHQ{gKKheDW4Wb8LPDzch%Gn zGdL1c3m#TR*#@uzcs%)WNwW2kWi=Y!5#&RCiB%&`4RiIdli!hg$4-#5tGV)yQVul&WgD=J|9W}x$&{!40@czVj#btDiffK4&)>J$zo;R4 ztx9GXurt$RXvH^!o&rkg9@8lbUBpw!I@C9!fS8YiDeOL7Yf^_5fzZpWN=}94H(Km z|G<|}G`?Y}5qi?Q50nHu!HUm>J7Ed9LqmsrAc7T4{3v>T6?{@LFn<>t)mJ<}aRH~?*D?7);E)brvG-~Zp+kB)Vp>yA0)?*{H@#39w){YMHICpp%=ASi4VHbi2XM35t4@hDgEBCA7j&a(G zSfR@kbU_&%F0w2GwTpj4y{`GKPQ10;o17CP$QR!^l!|&TZ@kFAdCQ!?QGR1QByNd! zYoF*j@>~@VfXPxG-Qqw^%Gj=q|55wwG;kB(fU_bex19vue8?k#Hj*;O!V~xX8Nbcb z`x$2~hYznTVjn*Jot^romRazKG}a^M*eiv!86uT9@0l&og+_=%UfUX#>oebaZ&Oig z1Wy?W8@|zvnn#`j_;H*@v2&b=BW0`tL0Q;~%Qq)}ig*ctc2u4+jW_AI#Q1)u{GW^UCvvs9$XBMO6PUR~d^w zefVCDP>86DV1a5~s0wdLdznTV{kHP=+2mz(i`)r#;;S&|nGAe;I%6q8tKF&>rOmHJ zX)3^XubHSVKinBMY8xsuS+%3zsoX%(oV(~3#=J5)+*oF6jB!<7f-jWK!$S{;rl7)q za6Js+s;$Ob1DT$@XZ1IME$M!%HP-Iiv2NaU>oBS+6ebeP!S3r!K)oJ&cH#G92yj4} zFHb-+8Sxe6T4L}YIkR9sKW>+a(B!a|V?OpDBfMDU@-U-{h~(sJA7Yh1J7{`7N+{LI zZHIbMa%3)KvMYc2Uv8w#@(!5HQ5H;;3^kbh8LkkYocCgh!Cl0q z&EyKXqscae&GR=nXFoVzlP;lI{;c6(Xv4JQ0JT z5|pSOjOM$=23+** zyNx`yiu_IcgO%h0FTDF`;eDrMi7ial|f_=*2@#G>s%J5Pz>Whe?ge4C)6 zjuNlU?os66)z*}4?vH0n{oj1p+APCS82%$kcFCNbNi{pmrW zOS!Ar(Q3*kkeY#S`n2-m=#L4KPq?lcf{aTKPNWuoTsd+f$$E~hVrAE26Nf0jGB%oa zPam`urB8)S1m1JzUjdF>L^Op*^y_JBu`>U+cFk^n66Q2E^V9H^X8N_exKqRA+QSU; zjms}Y{m04w7XA~U`N;k5hb!i9+-i+gmyb-PdVX^c6EGY+l!kg1LqUnI@zGJORY|;n zHzIn&^2nHL()}OT@W!^kIHM70XS)`YLi+r`a^}ZJ2_^BrMc&IeE`p<1TBuZVie8yX zF$ZT_vB98mm14mWE{_Zl1zrQs`{!Fd?q2D=T94Rwu5DJ?2zMvQG zlO`El|D~L1HuAQcoMoo6T;pIO+eOD^%^8MHY(lP@6k^1Qgh?oF#Z5@YmH{Ig>dd?;CgiYGbu)T&TKfAfJ;M|klI}pjQCKj_nLQ7s8(HT0 zG}~OePn9Fkpi@Q>#ap|Mt#UG~$RxWRK?r^t*6!~edEL!J2XMV8l2m~uC)J!u%?Nyj zI4A>F46yCKcVFZ|SrLc-Ti4*y-oICgHk0KeSneOlpHa%v1T zx{9A5Eb$mV{BPF(8_nLTe%g>QeymW-gem&65GtY^LKR2QR#-0*gP-I$XCZW8Qz{vp zrdyoi^3ONCWr1E4Aq02EzlRn$*Hg>0yQ(2GZlvYOoXs*^p$sC@-v|???kQFkHe%62 zLsPuVRzi#zCbCW88LXdXu)%`@szNl}j{ zb^TdF5T^pTbPwn4+AZt2?*0!~_JiAiFLNg@fjZ|KP<6vl?A*}%5zww<_?s(t+5f*p zAMnTNQGw%_2vl)Kb}u4FY7flj`a&`$8QcMgk+8Q;mWH73rle42Ty^TF0Qqv^X*l+E zkHp^0bK9y>m@|q9eo#=(O*GYM0xSy*ok3}RdaKo)t^j}rkx@HEqk-RXH~yJ7q3A45 zLJA4GlCFekIJn;8rWK_f-+l)yA)DccCMOpUN-oW?x}C;r9-ozgmd2tlIQP}jN~t+i z0m?_HLm+d@u6%RS4>61CKla_TgW>BQ3v5*_=9nbk_VEgcrt_8Ld>)VN4Z4`_PqSV9 zOnQTf#WVocNV~N%^82*eHl}%fk&^P4W)BFuhx4fzQqbIfQPbp=m92i@DXH%AH((*y zGRAQ0R(>mfX7b12@$z$s8f6Y_%Y$Envbi0R6&suFXRm?&0&Kw+*>>8-)azf!WpXpW zdj;??_y>$OeNVeJvGi#hoQkLZrY90F(7(a-;D})A7ixlmL1HWy^A__?L!o68a;lp7 zBmCJt)5%~%NHtBb>4(=|0=(o!Kyp8JSaw@IZXNV9@?=SI>1*$P%&$5jMlUu0(J0{z z;att^1eqOkH&b|MhdUSuf)x5oc=m7*7510`oYtm z*Zm}C^9|#oIGB%&rA&Ezf}=7|9PG2ZqF7*j*EAHpnv-my-!k&t_*nJAQ^XSC(E4?3 zowgq-#pK&ijdr`nn8s;soZ2vtC-wr|K25Vt;C3qD#s&Dlr=9G&NW}eOqPQo>`^ux* zY5H^hubuN?Z$Pcx03wm(xIJSI7VV}1_dAY_b2l}c4D5FuvzMXX+Zl(02Kb8xdG1-! zN!{aKhd)+Y-LG=oV@y^i`8AfgX<7W+*dDz$X?E1I5u=|nw#1)2E|MuB8~7|`y6h?w zH!&tU3Hu&FsFH4k+r+JjmN5*oYz$T>=M|w`rszg-mvgiyH(i6cU(_ z@s+`YIBSl-gW%P{PWa6%gSQhwE)RDTK!sA^e-8>nS*bF)edy5*+r8~FxOOE#T4I2z z>~t*z%ocFRCI5d+y?Y?j`yW5Yx^i1`nT*XXw_#?OvCZ!1`|A7q{_*=4v&;Lv=j-`=JRcX^C*Kwi zWFr%nuI$GNyl~)jLs3X>g=lZzIo#`MR~(HpJF0Es0{&FI1~5c&(7b;H@U>yCT1f?n zu2nKP8rH|A5z75tDD0S?B-~8$<_2$ zVyj$6T;q8t|GyFu8Tt_yJ;oGTCW01v2V#e+7zm79ba`T&8wc2G(UgFAH+)G15#jg~ z%C8mrkZcA?=PU@RfAI>!lx`(h;-sMFAO`LuH2c#)t`$|Fv@da-mHqHF-0?MH-#L%9 zBUFv&51jr`HeR#oA{(s#4-~!fA1t0ckH*}ua@-e|wh5EVO=9stRGKayPBEd;t9*_G zM;;2Zd*busx$Zj{=c1MNfQs4_&~IAX_+kn%00pIJaJ+Hid~$C_hVlUpGK(*XDtzvB zH3Iy5+%qLcK4#yfkV}r0FL}(ut!JH_y!N!Q)Y{%`t*B6Y4`&;YkMMfYtUD1{qF zE3B4;WJvN6MwU(%WcztBd;I>fvegn{_bt>|AF#Ty?Z$gml+~&XBo}-5t6-ZIKUvKiNT|ss%e$sf!TXY0=IXK) zKTqMl-zN!b)K(_;qQfcnYKnvmur{NEd+`NXwh5u%2$5ODVEIjL*00F%%X&nmZD1g_ zOOZbcjtG2zb0M8_lQ&u^F`3U8jR;q0DE5pq*3MUareb5E2~(*0@%<~yx&OMgs>i)C z?@OzrYT+s-%Gg#~XwSCDBm~U6>Cul-SH>c(Ek{mozV-5&a*qb6{@q3zyRr1_6zs^4XHO~952Q_ST( zr2K@qGqFM3+mF(YD3)Duj8*8${`!7Dxc7u$iN{0bTZh$XF(0(4bbk8n8F(X9I#Xrc zjM=iO^=~`mUfq44Srdms$xk|NyQYNrw}g~c!W(L2dKwF4DdpudqwrW&!!hSh*)YL) zmqzG+Dt`=pxYBy(RnDwL=h@VL7fNkann!Re1_-iAX5%sb`~&@RgMg{rzljtu%;$w` zt=L6FkytrX|MfzS%agl$gTj5kC3NmHLee)-R&{~hDz%-s+oippGoWc=R=F$n5n73- z!QnP6=34{FdWY=^5=hcW>Re?Mv-iD^2om`Qy`R#Mx7(~&l@&KNA)kB|2k&dkyJUYN zUY+svq+a=vs$0k0kqeyxWS3Pg^Vd7KC$h9yhtL^Ra&<75Sz@bVKEtM`L9`((BG;3h zvAO(h;cTVP!3{q$zt`uZmDfwnO1dvQ?q8>E!WlCMQlh6RkNs|B-g3_4X;!*9-lHQ? z4WyUSap-Z^oNL~u?*?Bl(yNK=Z=;wGE?JJLU-=vkXKB>T=WK4wueDlF(@sXhKdNGF z&}oBqVqTD;#(mw5H&a+Tc|y*p6njev?yQwd2sLbX)S3TO9xAnIzSBXeH6qr|n_hRC zH>!q9!^%v0D^(p;wuKye9Kf^Ge^{H_c9*Nx3e(T(GU?$j*J4$|8j_Wyoi| zWia+^K9AfH;p3QnFJa2jBplXDw0mP27*H6_OWg1SpvBqkPMOwDA)h0eh5h<|O4UK6`pAV|0SR9?J_}LVa^mKe4A!jeIzo!j;;8 z`rxEtkm_;E{~V>v1?PratY1eJ6-;l(Ien}-KH}C&fky12)5#R!bYs-C&#{IVzAyo+ z^ejzx01G|WfHti;8JXcARwCGY1=?0!TeSZ6Vak=Ef*~!fa%zI4+L;%!>?&sFX}~3h}gj2T!y2SEdQ(S(ycy_~rONmd1!)mX;zKHdC@6 zP+h+Cdjnx$_T=j_rL0YpK$#9G&I^`(zwkTsA^i_399}FuZ8x~_Th?z=r!2K;`Ifp9 zT&fkB@6HK)~+?@FGSKP3B>%FC?Z8eF!+x0{)<+0WQ#iL2) zM(eAYTZi9Xi>ILjgFw%zC|Qt_KYTzS-aFf}V8-dEDupH;=8v0)u_eT7m2}3Qz zyl4xJJ3(V$`@sS0q^j_3=;LxHaxM$~}T}vgCXDpUL zt>3h-S{z_ruo6D0Eq5cfWgZ-D*RiP5TYzl*>z7R-w})DtnfJ$j{;=BzVZNvNnxY&r z`8K?aBV~T(JC<#kRa~1lw)m;EVm1i!y1(;qz@g0as;th#fWY16x|p0; zwy*hTvi!*3Xp~!vB0zbg93=#^%_$VqIU3c5NQAEB2CQ3G9#N^v8<*B&(#s&idh13NxDB%$MNB6V15w!UL8mtp^q2x5hdZ_1Wq5)-^#lrdz5qi=lx!0q0T!gu=T=Mq>c`V0N}cZw!jkodtc7h|>rr@W zvkJIz>KqQQ-305^W4M3VOlCT!Vn9$A6wEOGmLL%UKtN_a;89}ZUs5GFuiUYY*w@0+ zwKKclS1il0xLB2Q#5xayLn_NBmDilCuwBZUl_d#Z8SUadd-|B?kHxXmODQue;x#}( z)Ld~(GcvGk(fMBCmF88LQnY9oa8FL53Cq_cR3lVEF5e+T-`O?S3?mc}$vzhq**$nBa}x)hfDeWm9LZ6pS2(` z79=ltJ*cW%doPFZI%jK0Q$vCxIw=uY9J8RV*fvx}e4Xq9wy#-598fUi7#{eZn-jgT zbWbePA($cZ*kxMlGn&BDXn)W!!*~lPNW*5P-TZMVDMw6QmEspOX0vTfa1~B#Rr_XD}3V*6cqrTlP z4=ot}bnEF~8kbqKYil$uU#28@{tPZ|qH-4p0t1xeJW6XR^j&$Ky~>ee-z=U+T%f_b z8QL|<-sUpG^*CqO%%|rhSx*~nDESG~TE37u)3Q37rl4YX^}9#gz4OYQ0|Sa@otsL9 z;iJfB2`xAcPIZk7Gs-o7{{@e|8z=lNwbC5!Ihmvgmy(d;v%Xm?U7=bBF9nHkV}JjB zGcP#BH!t*))m#&~P1@Xq^HTs}OmA)KVS}y$ROP94yYi%nJDXVin+0c%woJM1p_0?i5WS7$pH=ZdG7Cx1d z8ReF*4C8!9`loZC!@^*ry73nyLf|zT5>UB9emetYrDN$VGhsO zX62}h#Yz9Bf4gywvg6gB`Y5eb8lbd~P=DAs8@#Da-nqUHOs7(+T*|mw{qgMaKlahs zz<(_@N`gIjQjAE!W+asCKn^s$H$)_CF1=t9pjzX&4eD#yEgM*~Vqp*`;YuxK zyO@2ngC6Ik)sv-87R6ls*zLS)8#7$k>=J0!(6ERxvVSqy7H!p%F?#;GVAy?iw3`#^ zX`r}It)nj3QWAt@J*Mf}s7`_*z6;Tffkd%ld}V))d!91Y*#&qfi)Pw>c8HZru{60_ zRm>HZu|~w&^~hU;G3Vc(Qw1W+F-2Op59LZn1Z_4CEyev35lvueA7SxbJ&I6MZC_pU z&T~rlZ~flTFdZ~bUCOg@hdP-SJ7og6)f4hoeknBH&re_Uw&?A3o&O8OZ?=a;Nr82- zq^k}0D^|yE36VQ(bEKI@lNw8Jqb0ubb?#bL@eLe?C;<{~c7NmY+MgDvRqCoXjs}lh zpQF5f0D-KIoFE;$9h~yRjw7tq`+m|0%8qX&BcB#F7AGF{W_8-D$0-}!)qO_HkjY*@ zW&Lq@kOrn=uR7cB2~0{A+L}fU+IUCwudCZacE%|M1K|U}2(0f0x;kr}pt1U(|eP%uiMu` zbe*dAypW&L-OI|7rk&E!Jyc6@wSR}m`cc2mIUH6@)R6DtF41Oinu;r1K98Bie#}pw zGFs$4#WM`kQu@XDhNVb&O*_L1c(8CT)7x(-t+Ckgi>U`o%(QpC;bH8zR-)ptKVHUsrd7l5LsW1my1HQC&gIYjGX;*93Il&Vzk`_h zI$bhM2r17zQJZv;$Pz1UeNjGBHeHFArz5%@j(j@wtYP2M0wlj4SNt4*a$u z-Tsmij?)wx+R7(}TaT~S2t?FFzSWpS_DH$hF;rui(QiEAIff?UXnD939R_p1&%KZi z(R|FB54_Fdgoih*QBbsXSXXR>z0p)o-SZQuy8KK<05_t9Z|%n+BgOhp#)7u_B))X| zV}tCw)e`Vi8{76P+5?vyx}`DzXFk7}p~S5Hm<48-ebTs6{NyXmK%Z;J$NaB|xXbr# z>y*A`D=v7LJ0j6+OX(ZMfF5^4zT8sOgQc`ev@cvcccsK(IDjmNaJ|0#r()3P&o5rM z+8zpVsKuf{V5aJB>m zs0ulA9s9{bA`4aIy&|~(fV8Dw(NlfCpS>cw^}?s(1Kh(&lU&oW*A2rz*?mZkkWP@? zhVXcyEA1|hxQbbDhi^RVEi*-+Dx-B2!F0}qehEf@5;6=GJr(C4&WW&?GES`uz}PF{ zp-8d45RUi@oaLutL4Tp5inYIIY391vYSbz_H(2g^7jD+j)_M3X5f@%WeKr~V)Z5Cy z8+{FIUye@9#C!`+SvC2jyiuD>vsf|#z;=yfFB}XF3q80$puZp{6NpgQB@x_bIw7rb z|H{|Fr)z?5#N7dZ`@A)cnb(e#QRy3#6sF=!U|9NFfp6S&%q=1HEg#omXm{AEh7r1R z3WHc;Df35c9ke43&D=L(P!JvBo=?}e>;LZS>aqOMY3T0T`gU{1$an943@>z;P-@aD zU$ey@I}*Kh94GH5$05=@AuUqg)1U(teU+)mYmK#>An!Xt)-3uX0j)+~UAk!{T)8Dv zb|uC;z2~(Uhn{k@2Iq?`prcg=aq5knA>LIW3vu@-J8adkG}QJ+>nsqAqud5!YT<)b zWH6~zR+7~?K5n{usiH3%P~J;4ecj<_qr+|s@d3pfCl$+<0v-(+L|2!Dt7G&IWPw;V zqpM|+_YUBiZt#t{4gh$w7~HeZCUWG2U&_6X@R9rY>c{p^=Xq+yHydw{Z})bW zl4T~K|Lr#94OY|UJ@5}Bb{(10tjf>u{vCaIo8Hk0aLf3$;|BDD>ZzkpozT&F zL>Nq@J6ehiI!$L1s#sx2-7?*piw_>Ca%kAi(dpao#W*rcgvP%*m|m8Y=l!me@QgXS zDr$c)ax*GUK4$=>#HR0n+X!@C(e7m`Pv5Mycr+!ie*$p-yT&|8<+&w`=y{<$Gp$s! zE9-iT#8Z>eS{2vWT>jc|92wnQgIUKq^MnS;X9tWo3ikn3|G=&ZeeI{@zr|+Z?*i6W zRo7fk(Q#Isr6s(wDp;z~a{jyLREFEYjrh@bd&Dz0V^ePW#QtN=9EYl6p?5TI<(cPP zxS0NvPWYrIC7p^7~64=flSDn@XyiDNk2ybB4ynPs&>bIpefF&56keyUMc`k!Jz5skIfY1_r4<56x)jYnQj?59+XwI`xMOOMC# z=cAeVp5lX--bFUMEQ9sp1p#}NdWrCEXxLBW<#99e#d>cvR#l(F%Rs%3I3@6*tuCJ| zCZgeBuQt`~-aZ?FlBz}ACTQ$dRs|Gu18~pebuamWT6TM0X<6`!Z>ZbU2rkKAU2N;KHrAqrkA>#C+84MsSET^q_UB z1QNkSKx02zBAh@?To3wria-9fN)tte$!oZo3(bFN7woP?QU*;&UAYy~;wmM!_kHu8lON(XGR1=xY)hcbWB6{r+p-$?o<=Ao^wcU5v zS>q>s3#<5I`_u{7hRUox;-C_g8YqHCZg}n5HahGnffk9akfy!0%njSjHMvLIZX8FO6M#Rp&V8MnY=}z7YrO-tMUKyH)^^Zt6jdP?ockfIExKsdjJ= zuQg}mmM_W{dIe2!T9wX}vUAo-F1PmJdy+vyCp1xE&8Pvxi(GdqAW~2ESG9Bx@g7rK z+%J}w#)C7C|Ei<4LoOI$7#gS1QF#eYn2XoY|w+!OK2F~}#4RKrn3znRIzR98h;t-Ck6|MYZ zp!%N|bCHk0%Onnf$>N7Zz2B3w=GOVoPpW)X5}U@xx0Lg$N48NeuqH}R;GI}7WhjT< z_O%i?XUhV}0Xl`60>0)cQpoy3J;f1O5(9rfzaqwVTsn4KVqRM(((TiU)>@aR#$4gM zx9>!8vzKnxr65=F=nO?C$29#!hZBOt z%-}2yJtA$rU#LYn*?#-lf(&<8kUU>#Affc+HEx)i(>T-{4CC!gidYy*e#3_!A4)+o z0!K0RcgTGqE^Fu6r{~tdRvtlL?LB%fZNGynmWxo}x@wiN)dod1{V-Xu1>7Wc;zEeF z6Q)ipjNDL?*!rzPf)M+bOBn~>YN#1u%sA}1$ikk)ER;zP!UICmmteJ=vvX%p%>aT0 zv(yd)-xNmscP--+0QM>Rzzf6Lc{|AYk%sbkqwjS0%AE|(&h6&w^lFUy#GY*P=0ErQ z6S~Uk%Ab?YC;Pq%mA%0JD_BRMy3z{NS5fUlA3F5Pa&509zzZ&8y8mbD`&Qm%! zpT2C$znX6iDzIH~q2j#*F0|fRDtQD*%c-m3pO zT4?AR!ikjDZg;i#Qu~c}&VW-dCjPFZQ!4G-do(5|+5&fQr}vaZ=KGI?5cbxVzcTF} z_Z#UAd0Yo?viDd^H{h#%5>;@_H9Fz8f$=eCPO%XjpmE00k^^8ZdZfpGX=j*EvUOL1Nbt4YTC zlciuSI;2Z3MbnA*UMgfcs7vd{Z+FYpb|&DfTR!oLsX1?$E?HrhusGrz;tLODEKa)i z^Zv7x+3)rv7?Y0Rv2ae>xKLo<@zZQXwgM@S=HQ4D;BJ62hEe>Vy=AX6J(RHMC}u$> zRgslF{-4U}>4=P-#veeHl;9NDO%w>{woA?muq>_Nafu$Xn@XSldY;5riEHvSjrzS` zU}K4!t@C&q2}hP$XmwP_N2SPkseYUUSPKE0k}z_ z3A%FIJYf-qA!XZs|3it&4AH659GKO)pV67UCPyH;xgo3e=lPI}G;OrCYj7YvZod&svLS#Deury{&*ow<76ja{9&_C0%+uc zl)g4QJ}Rrt&CX20gDip7#pd%`&wx_ojmXOk>s>3(@Q_C=2Iq)|;bU`wC1UaiOOHVM-m$F5N!% zwylqCTv%f!$iQR4EwY=*4@Vu~4T`0_g9J67-=q-px)ceYt zwrFuQ4|sbJxku~_5$8pOJB>N0wl%9NhYtO0w*)=aq46{2_Z9kQCykZX4j431uI+qX zN6ob5#;VcpUo5_s@4e8qE3U1t-TU}|Dr=C$R-faw*N>Ss7yBw{!s~jp!P@n9t=4wj z_7n15Z2}7GP(jkywF}86E$(VsbdAjEEQ5uiLgiw4M58{V?1lRszB66%ZVfqtIxjm$ z*%mrqm(ZrOo!&`gt_gr2-r<_$o__f+DV)6`sY!DX<%52t=!L3-V%p&UHla5}*z-#o-?&42E$aJ^Z{ zGz;a{m`1?PwGokxNR=g5qyy3mI-5=XWb7l;J(u^Z0WOzh#A`$uO+#^@M zu7n1F6>Bz>IUP(@bBA}A)!o}6Q~>kDwFTNRMC8^e9-PiSTl!%cQ2|zC{r5_v!xpWB zbChY|=5B{>gZ=LqPj96pRrChLL0|q)#gSI406C2!69vI^A`Z1(5N&mL2_VL1$*3jI z%kv{_V=yIRsXnKu9*|Q<{qPy&j$~w)$5?z+9_Ly#NjSUTvY#u+nQegqC-Pd(r`sR=oZ+Zl{p>Iguk*=6`3!r z1%+?B3Z!8`Y$_zbH}yO4bbFUDK}(?` zVAos-x9q|CD_fQ3bQpRnHLAa5ZAnAZ_$hB`89@}YB`%z_XN5hOTcN(Y5zR7$R$3j8 z`-PY1Gn!(u2)|H$oun`Sr0}O^w7qE5(@Wd`>-$3co$)Qz0KE+RhEhVm@G<8WcvOp= z;!gB2^J?$k9)`_qOSgW;Ov#XFuG+jX4l!WudbGPw#LbgNvEE6wnBO#a#3`PU6ls6L z`f>ed5#4`dBBX=K$&RL`6=x5u=~)q171q&fJk)G+K!W$oQTyn0P zv8Up?z$*NIm%c7s`|Mpd;o22>xz$@%nI7aMZ7%jSt&5u^?o@lR-W7|#adw|=?QdEb z$c3Cm*q?V{l$yW(xU$)4+HPX~sS2ODA{Pgg1IF9-QLl)s)itL+)9bGp33fx0QS1t5IW9X_j8+!Gx6HBgOs{Lc= zuJyO!5%H_zLxDPn-_QzhK|JwM+n1APL-9{g70o3(3Z^+duAZZ+kIb9S`pV~`$@97x+4&{M)JvSX(zdXIBe<)8Um=0yC_tI>7 zy&S^#h3i0ctL?1zZd?OqvjKsscP>=0EPs0#xkP9!#Zuh(N?oX z7UPL^$@LY#p;WFlUJX*xlQJ{X)cwnb{$lLkerov04QxeH8_oia)V|$#I+YzXbZcNg z&_j&&I(2a^OBf?}D~%PT2~Z3t%x+t$*||^-VYO{oBctZE#BiL0^mSQ{7#!vSVFpthJg}O9YoSgCPV(kT2N=N`H zs-miQ_iQgAw zS1zQMGPBw1_~M4B)I6imnXPix6CQf}!R~a!O(RgeS(LT;Z?$ zRIkSy_L=16z!FJ)H|uo@tV>I=uM(OA1jc78cXp`e$_RCncqcSX(rZP2hVbdxJwH*Q z@reuDa9oTgjeQUO+*|Y^m`Wxg7)@*{Vt3<#mF!lHaRWZ1#P{_b=Zh-(gh|ZD`D(=U z^|zccfEoK^a~;-gf{81m9eY_~e7n=h&$q6YyDkikAMJ78r54xP=%l|(KgsWy(LPjI zWmR26VUcqDeu)31+-fopwqWe@cq-;SpcHoAdf`4U8unUmDk&e0sBrlvH!eVNrHp*v z!g= zdqz6stH!2N>>^9?9;=wK(?F_}fX-V%Gs&=Rtlw}q#Hs>c(&vHWFn4O@eet+n7>Hpy z;;tV1e8~vGum$ia3|GiLzY4MnHT;PnNnl}Nf5y=Q@^r% z_5a!Igt5k=$R$1ztZM<=w_e(*n58s)v8vxl6!UnmcLn$EaKK%!8{HNp$1 zTf)~|x&S)m^-AZVH@+uZjwW(GgF+&tF@CEkugF?H)d@rQI(&j&q1W7XafJ1o`ClPz zTFMP`Zs1l^bi071XMtuF1ps{~Jkz%FT+PjQohD8=oebtEtS5b7EDF+mwQ;!nqfm|s zo*;44<|^N0MHfGv%LdaE;*{hn>efLI_WuOy9KZ#NZ*JZ4=U&T!w7~%X2||u>XUun6 zFMlYh?s?Ja;piyKoiMUZ9&40b4PV2b>;G7_TCkKJ1p+%jF*W+VCSg5Rz?S$(lj{DT zA^E!!_r=pb1!@V|7S(bo&hy-}_Lo2P1}l(O;Kb|;BY#7R^=cL~qGj$%y3U@JM~45Y z{4$ZSya+?G42TjzpJ_^FSd!hAGBv1UESRfaFxtc|ANj``4=u&=OPeEFZ^{TrJt zR#2(1(}0PQqs$9be*f2#STlM@we;m^(FV9QR15NmZ*SK9aeRC4?>DUo8b;F>n8(^? z>o%Kc#1o9wo^+RAngs^W8o(~~nBE@a+?`+RN?w0^gW)B_sO6zM&@P5u$BRcVN*N#o zgS>vhSP|#0e2wQlXuY_CdL%HkX&F)J7eIH21DukP^pamE-CVExNiTkynf!h0@yNX$ zP7dTu zL-}42vJR{{5qif$=QoDXra-hT8Ljy(@4f?jr1p#Ho&4wf&s*M@RPb`;Lgky)0Qs{{ z8mGS-*YXtYY%WW1rA^+5y79IfxEt5O8J<<;1DUdP)VWGM(&v|M36;Bu@A0rmx=L@LN6%S~9{S_E=OEV;b)qw`^6W>sQe|%Re z)C?n^U?Q8HY^2ODN)sU9n#3|Hx`IQe5F26+uV5P2VPhWd{$Bb6P5`61^uN$jBDsv* zS!c@m{D}*^C0I$MU~je^>{~1^Z(SQfHIq@cDfY)~oO)lmFa<+=o~!Z>0BhKjJtpsY z?uuJeq^B*n(jG8)kSsex!(VMj)dcrf*pRrHj;ZqNb0*5i<*voJ1!Lp_drXrp-(v#` z0CRFM(9l*tBDggW&Xk|WRm5l);_@@{HYmy(f1-MXST1?kEZWGZVnboZ&s^K@SFxcyD2spbaKLXItIQud#U z0B51lV{nPB{H2KvRvUh%co8>>F&VckI$<`Gv_;+rZ)MdJyxJ|Z=`u#^lzX-QmMbsq z%maFtxpqyZkd>g;7wl^fVw@b~zLvjOG}4zDgK1>$huipZ%2R_1188ZtGM1^*OBj)Oy^5Gtme^l9m1;w(psq; z3JTV?FqfC!mOgQ1f;$T5i>==beidVdtuTZ1TahB9 zk?Pm-x=em}`|SYJ?sC_FAFE&n`b5iAb1^$EsQW7)&U+f;=@*Vjl-o~l4_boqg~1=V zZm+&8rr1olsF=u7a4ae zeP+5~y2@H#ig$;NFQHi|HT56txLoqEl^#-b%*FJ+_}bSTy1O@PzoF^J>a6M&2SjEpbCDSVr+1X``jxVNdC@0HQ zKg0etM0QQkh2U|Du^B>Z1R@qD_X=b#T2+{pG#v`TWw z9W?v=7db|X_ZlB6wLP2P)+e!|aufhk{PfIyd>20}Zh91F%?Q8}faad8UjFXRP&O?Y zY`1{7j+?yy!--+%!&4@1mU-|%Lt*ZloTXx1D(&Oc_;C=)buJ?42gB8*Gt_aj$mu^7 z_5^>y8i(4&$EM2a@~Hq1V=9Sm($|hBMXqZ^FGN;^^k>9BWJ|v9lY70{;o%^gY)Xo! z7Gms9y*lbzf3)O|+`%9;@Xafkp~a9a33ev2$ms+7s$9-bW#ks<=Nd~Fm8dSf6Nm+0 z#vZu-hIrtsRxp#i7Y>e4%MU?m8q#(~UAUkBJ;b-=sBkSQGkqSb#V|YdZ1==uRCJoP zQe8o69Xs(j4H-|J+xtdQd4=Jwm*Jo%GwtULLer-kBUniCm z2!Y!%QC0f4^jcRC)cq?W+!zLMVhm;LYBYZH0;8hU_i$!6RrzX(VjC+byxJZe^zc8G zo5&IU>A3FWVvQ+eit$yV#ZpZ&F=hvxPhFEThbVx@k_rY&GtM!d?e7u1(<_0m+KVi# z?g$a{v`7W}^Pkc%{Z(`-isJPXunmSTNOWe!c#4h^=ECjr? z;l=zNx_tMRQgtHph%e2o7=!q@QZz+bA@34;=rRLtl&lk!ek@-d^qwmUe9HS3Q($-p zta^l~^Gf@*&4exDDL!!L;ftd`K_PO~bn2h$N;rrdI6r6%$JWYm9y1u9e{rAp;sUj? zy}i74uRSXhtzX_+-hl;7AMguL!%g3`OM#t@PFY2K-x!M;oOp6~F-C{+KzvzEThrC@ zk!irCJI6jR9FNe|RyN*fz?^m+G;^>3^Y?iEgUza=%eD*^(Yz{le0)%H&sR`BeFVI% z6dS#%luZV}aR-=T5~fRhV_XJZM4r6SfGA?J(XJMs;#Hp`$HH{#gEYVe;^W*YND=D2 z;*t@dB1aTR7~=DQ(xSc6K@9ba=KHchPm}n!%vkFDbn?|M*|uQLhXBM%x{r=>FI+Mh5i^Qj@C`NOz3{{Hdw#a1OmjkMh^8pH*{}(Gamj3Jk&l z#zuBo6b9+RKT5viX!Lhnn$vfL?iBeA3d+Z#lRlwIiI(r7OXr3>$ZBz4%U)cqKb#3z zTL3t+Ea8?=`RA|Zo21SsQ949LjE~&f zMZfg>sgRj7(BFq~&@Pd^_m z2=>+5<^xZ&;!49$(dMCTmE|w2Ur-j06-}7p zt_P^yu596w7+&1-l8X7Ym@Y_s>orkov~$k++p>mk6uJAa4j`&a zII5F_>*hQ8v7r!>PVo**|>d-qW*%hWYfk<#F z7!pun=yf=$#mf8iZkK;X6-2yPs82eT7Ijkz8|*?pxoyP{jbyhDrJ=#1nVk=1P}Eqo z0(*Kws!4Zz0_6Uj-zT}nqqgE3l&X_Wpb62?NN$-0Zq~-?NfSPjUD|?J66_j~h$nk( z?P>7#TIZC$DhV&7&3!pkvq5oZ4NZ8d0_F5cL-LKxJP}Ix1m5Fs-&h3>!5GijG58tb z6dkQF8TvVDGNdFU;25dKNzPuCV&f?<-cKLtFTVVoLvn!E$PI%$@j`>0i6pywPdG;h zqSg)v^~6*i9TC^Gb&uX2D2+$wZ2+#6+F-|x`GqA27Wpu46TZ6M3!2Ni01?iFETB1{ zhH1*hnpgDfpQ~v3sOIfZeH%=5qN)o~i=)Mk(8OQ2{Px@p91n)dybx}h377M!9m|@8 z?72?{gy^G^tPRKV-T${D_At_4C>ox2M=IW~w-m!yIOg<4>xf?Bm3ZCHL1?EKc`vkwlVtYgC6nc;{zgwx&Ix8tbV5^LM z>{pixCZuC*q5Ihj4XfJ0{$d0D zaD6qtmt_gsVcR+(6+Kg(W6E$#Gk(;qZ(DaL1^+iX@4hvkBTVmH+m>x0RopemKd)XyOUo0ld64f73G%%ei+XH_#dHQ$el;`8RCh1_-= z6k0ve_9e!b-!L62_$Z;{?%{5^mDDIU2x9nD3Bpa;R}y39Q!4gp&rZimEo0!3B3B4v zZJU0E@K8z!_Y+rcjP1wnt>|mkjp&aIy%RVTQE+k9&|Z!Wevkgbp<@42$;7(1Ygy$? zmdma3e6POJygsh6XSL7|=3X=C1(=6N5TfU0{XsV~0*j$^=$X1nv;@D;N7uo*`(t6I zx8YNq^Le$G01Qd0kapwdHMSDF9BH|4=uCUN3@=eKU=;{ znnh&VN`UI8{4@Dz#fuNVJ^!g(`692I3F|nC`+_*Dq}5*?scD03|BScZpBju5^xEGe zcK<|Wp)A^Ji@YCPn7-z3cFyXy(UOgSS$}|6s{0B(Sa#G>)2yuS4QSU~a&QYqzbo?_ z;o*LJV)I+)GE!}jw3!{)rr>!K4(;qv#GzH1tW~sFY4Aw6{5`(VyOSHSay#E18tVXjqmKHXl@fH(l%$8dS0<90Z_|?#Z(sDS}Zh zhY3eOFAS>IZTXS=34Vd-V)j=V&3x&`)MF`lrrh9VEfFSCqMWRKwXpUjq25zV7W3e2 zdo~eET0(Tq-9mXR|70(rF%d)-O}#DPS4nHvs(cw^4-VQgmV8qPlMo(6W!i!!b6-a^ z)8gpz7wQV2d6VCFu{51CtCu7KIi%_L1%yRY^5hBtCeOdf#=i*Mf7(-@W&M-N2L-6R_Yn{r*x& z(HTnMbxwRmV3R2YTi?{oS}4r1|H31`ZCH`7~Jk4m1kFT)}5=wQx7 z8oa*C(a5zx!8@`LoRSg^wv1SV2^f53*||*SQJz>JSU3y5r;Rf%#_!MglExf&Q#jBB z@6j~CRv*n#7@Muo5>H~Goe>#NnIb0$3<&Wsex~EQJj0_XV%1J$>VcQj#olG)QQ2m? z-$D+Dc}=0)5qf?@08L&lpd!2E&$vlzhR%W3UlBGJ3BZ&V_r@bdheDnbGm9cv*JICr z6KZ>L*Uh6G>+0&X0iI(?MRD4(+VY#?@5SPYOHDxKcO$@Yqvw8%g+1NLk|R&UC=B{0 z5s(FbmXBLJ@&#hCTLXL*O{A4XbAw&v!LoAHE(h~m|D!$C7+d>T>fAV^k`ukv5@TC6 zJg;)N zatXnxk#V5dZIwh7qK>z)OwMuICrsMN?+Zi8gZE4PD+9Qe*%%t7YsCtyQv(kYvFLIK ze!#SC1sXO&N}enS_hhg%1?!2wXGJ!q@Nbu#Si2_=dhf_%lE{C;xwMS)168WeC0-ZI zCvj9JlXRD$B*+=h>vwyhq|W6&s)|MdLRlKYc_#i(#lidJv23H%qZbQf^JkxQ9e)-0 z%^Qtm^l+Iq16R7suf1CZ3#U5UJBq^4>s4xSU8SB2vk$b$tx8+?eN_rGJ#zg6^r5Kv zZq)M$ARfTaM-5Oax4)~Z0G%s_jVttra`pjSFB_T=h!~bBVgHAycaLYff8)pN40G}odVD=hJEc+dr z`FCFekg{D?C3@$CFUxwxLb)IFH6CSvF_B$pQCxIo0(%zTIDa~0C1BlYOT*_dFL{4{ ziN4L+H!u-M3n7@(S=HK$yk@I#tF{eI#wt7lq$x|J$8tuQdkeha1O!RA1pyyR^9cHH z#i|c{^nQ~#vSa~FngB(GeTs<8StM(hb$p~)iR!Rsg^sVqjDmUsm?{#4C@Z6~Y^*_j zZfOI7$Ko@U!e#eDyN$Eg6F7&A2TVwGIb3{mbcYPTu2%PQb{_mR0=ySH*$EKYnUBsZ zP+Ew9aONVIi@|4fP(oId?M9Th{NRdh6wqb)Ry#qii5;9jq7+2(#ncB~HHnYW9QjS> zX0g9hwv7STijf$TNmmph?NAJg9<76q_8Uhe#{Y}HdFaPZKM-+-T{7S#VAh3Lqs+)@ z$DwMpw~r_HeYn0Jwbku`lReo!L$IWF zQB6X|DrNxlV+~;wAGO}h2(x^n29yg>yTzp%qBDIZ(BuO;7lvAB9L2@A3C88MjAw!L z3!JL^EWp-oIm+n)_h@sRX9T(vYx5;j+~(lCgxwW53`M zOKg9%7>nevZagktgb9f)m&VrL@5vd^VDqK{NUV?LVKyWj894r7pD5%*5=xoKKcN9cEmOc2j%N%@EN>!Y^-zKs(GB|s~d1JkDCewh3 z!BEVe#TATR=5_OdL#VS5ev}vij3cRlU>L_Mz-^*mdW@K1p@%9Fcozx()*zMn z1MZlJ*iy2|=e(x8kVv7K%OQEPiTC-YoFkAUSIHxax-Tm56LvZ~VTh@OwOvX&nR4ZJ zbN|+jM7o0AKLYdzpT={Ho&x`1NQyeMX8472h9z{aKSD!TIr{uq(Nl{(k2+YJX8 z6q@tonj(6EpEo9Ag5oTqI}&-r<-FQVOuY$=Cr+!(-)!3V?}XSIkB1mw<5&Lghx&)2 zn)K#^pc}pwG|AHLYpIW&p1}2f0xln&$iW}_{tfZ-eI7Abj!$dqJsvkdx%iU7f#a-y zdYDf+tIHyn-VObUGLbNr<>NKMm!zOOD7_~>_U%wU7~e4c3?~6HJ8*Mk@MX&UA+Z7@ zlPyVj$}v_qVNYX*!mH1Cw@&i-6pdA;RvnJvqg6sHuZk}f4yZMQfpc~+3h@&WB334J zeaplPXHb^P#8gvru1Vu(qTrgq!uw z5KvP^E+A=WA{-GfxD*7Fs@&kfO-V+Y$^6ERm0A#YOQBvZpB*N9p)ljeoFfczX!k4$ z+~T0iroVnXq!ydHd2uA+^qrOFGIw~bjzTTAT6#rRd9tnB$kxN!kh|V-BsOQ1m4~tu z-Wucn1C=G%^<7Qh@cYD=ink)dxW8PzWx2pT1Ym|&+fGskuGgVi_NohPS1-&OhE;1q z8Y%8yU^z=(KWn0Mt}*D5@AX>FyC)QQDXCi7;%n+$;v0dHZrw5R6!GtH0d<56_f`U# zM7RWQR0j6eo=14X{pE`VDB&@%k0eqtpWM|sDqJ^_6fhk_|kl3RgS@N^EPK$fvXrhG>I zetwz9l#?V>y}QT0#aRI00SvV>b2-bkeg1Y_tD`k7Ty=RJWpt>6lDl*@j?{MRYFOyUYceRC&t}9g28_G}X5c z$OiM=6m&${XL7mQn36X=A`;uk-9r&6y8yqbunZJ-=P4WK%BaU%EW^m~TTq}P9rzpI zr!yBj`IoX6Xq+B*J3%!P6pwjmn$0Rh@q`OLDUa5<0Q;-?WB}@G zdyUHPvf@yrADhXVu_BnI94{~)B|xN<%A_V{dYmeI!n@CyQ%NM@R5rjxOH5rUOu6@i z_W0VBC(Fn@lx8XTs^v2fzCprRZVOoA>48ge2HO?z?{^28L;?bEvuVK0Y3+8X5k#&@ zOu9@SrsE$VxSKq^&KIIvbbTy=%8rb-#5;$$&n0NH@F!Ft`HrPs6D>uKO!N&} zU-kSjYCI^SqbHvfA9$P17EzlMLWOHG93KC-;>zC#0h`N@w#Zsj8w{OS>DC(+KH(Nd zoC$SM5&s95gO#jD5lZTP^3h{zRZ8hpyvMuhyU<1z!~iv7`&6*={~ww+@ICqIp3dWm zIu`KXev4wdUhQ@mk&AUJWSA;uD&x)LV{TrmVl%*k;-g_jW!ju|p)uJYDg{w?TDl7l+mSsK>w^k}mB+Gf%kh#kuDi~Z6neQbc>v`}A%IEcj-QNmo|dyT#%{y= z*(HKk5xBTLTd(dRy)S}eNmXiDNk0x;H9bFmUK3nBRO;qv5ckHDyNh4wHPq*;oRFmN zmXTsUf4J(<+!i|%yN!}Du!kr~SL7@m{U8lZk-;UC5)gp`Vn8+1>EnX_pzpn{U#b@P zv9Gep3h=PsBCH~GlFMS|J_xMZSlP8UyxU?Q!e> zfIZt#@!{*?dgtiyIOyOG{FxtY*t%myRz`|C>jNV=BvH6>6l*021|?Q5_+n;A;NoiY%>>xYZH2G*@JO(r>WPmo2l$ zjqh0-3nmD|*k^Tl3PyY}tY17@c}Q zg+ZI}k+!QwpN;vf+{aWJ`Mp{3%W$^z)HAJM;^Kqu#Kl`Hbkvs(lL$$=r`vJ^ zW_)Y1c7MFSy-Vo4?Ol=fAwZ-5JkD(9Tz}%}JD{bV){fCi0(JrK1vP&*mZzmtlbXi~ zkfG2)>vo4ha(l0{`Dd@sWwDoXJaXN(@c9l}p=IV?S1RlJM=s9LWcv-3n~gkG1#_Xh*n6%1jKM}TMVFKDrc9Et&b>;Zd9m%IIET|6DH(|MnyKR?L-Lk@ z&1FAdExP5mq-H?S87J)kh~+ssGfY-|UU=THuD?M?d$WtNkbvlItXQti=s>b|sE?wY zP?ssV>%0Gmk8DSEjEVVK>=LB?IuxcWk||Qz*jN;$I`-mGEdZu4`qI+tYKZehm^}-? zTx?cs4_^Y@krw&PAO6P#>Kr97ln>UiBA|L-y=>4kuF4}aC>EC}@y{d>tLvb}&;NLx zVX*vvlE45mZW{?#!@rHGg7%^ z5KaNkNL_x z+7A5;_mmeYkG#)^%fdzABto8qW2%=(UATk2vQf_~_T|hduN7Q_>#g;VBi49S9a#Xz zre&Pg=i=>#Bxmzko1$f&Dj)3qobRzKVp3_93BGTRTb?c_&W5iZDzijpU$tD1%FUHn zOvvTnw{yeq!AE8Hi;K)_pb#;;Eom-Azvj_Yqd=sF@Vb|3H& zLJLodN<$p|u7WPfoJ$XBNx$xa*8SvWbdci>JazAaFV}+zra|wM3UrYwTb1+Qic7#U z5U`Y}B~}G*|Bo-@P<6Ia0!Fb6LcOr}LtPxi00@l>cbcw;JvRc36eWc6dz5*8FQ5g{ zKmHwj2D5VT_vp=^`~ba3JbgQDq5klz&bMgW^~I*=<4}k|>%d>QG=MIau08$rM}6k% zmnlo2ZqTU)dJ26US)kY0Bn#!#B<%Sb?2dM1EvZjSf#(p)mP~DqKw|BTng^o1V(Czk zZ)pRswn0)k7gHBBsJegqhWD9>r@q(5gK+B*3gdw?pQDu1oQ32VlJ2ch?`HqHS&MEm zMZdwOoT2?%cz&&#F#;VQ3F9B&=AXW?rFtz}=s}-s6uA;9n46JXlZ~LN)1d1R8{U=x zsw7|K-+D!)>7QfdUUDS+{cH(tFTPej!<0>C=47TmQj?fGx+b3tr`vHkPNhvO|yi^k>astNoTKsV4tM zJo#KNfg*21t_MaspQ3J{B4HdCm~|TAoN47;=ru}TeUemD>SoLi{0t=5Vn%`-AIlIk z5U0SRlaNrrnn>sg(yT@3iyjma~BC!n5a8lxkla;oY$_wNKG2bB;VGHN8Bb_z36vLxO3lWITW z^bbVVj?%ZyzZ(qkCY1K#D)A%zMOI7Yfgfe5PXe~3{rd(mcM}1v3M}-Z@sN7qqBl$+eMgyzQmQAg3kQ3nU((|C z4hU~H4qsjnp-y6IWwQ;0GsH(fIuxa->}4sB$wy@ZJ5kS<-sd#bF@!;cDx6giU)^G} zLe|py_%b3(O00nBOkiD~5+R;}RMDLoCAu2hOAnT-y4P8?I)uI~T?&??I|F)soc#{u zAG&$$vBm@A@XNIR>opif4$%B){w~uIOjas7>RsRb{=oFl+W%IZ?qH0VX^NIvqg6Mv zPKWXw=u{2^pfEOyfa&c=9_A0*z6!c|MbENDwVhRMNR@EO1<}sf$y26tEJMDsPHh_V zS?Ski2536+?uKOjtcYgcN#@$u)t50Fqb9@VZlZdLtCc6gVUE4|NC%wXq(dYN~10!i*&#-fysjSZy)v+BQeZs2~2yU$Jdwccg!Vt%3%aA zao|M_EzRIZ=SjpYOsD~FQ#AGBSo--2RhR9YmXHL|#ih9#KKENMsd^uUKmIIV2h@|7Jh*{nIzd3kTz?32yt6F0bPjG zp4~Efm{~ffd@^a`h-&GB$UUHuKhm5p@4e0iq>$Iig;jt-g`a6W#;8x}A z6eZ;0&Q<|9u{sgPm@u~4Sn#OMmjzhbJyQon*7{dSXB1yf1ev+4sI}|W&uzceweLWv zQ>gr*WR9W7@02t>pB6g#C+q$%mMdgn!fnOWNP`!*3fxLHNLo7gUY4C~#{0p(e)sBP zqhHqh8C6K$^9w+b+k%#PqFze#k9P%0AGt;xLQ&3@ceFVS=;^?vNE-&RZqBWuwT!J; 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

    iFTz!Jg% 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%0DSsfIUncWO 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 @p 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 D0VyJX literal 0 HcmV?d00001 diff --git a/tests/data/humanart/3D_virtual_human/garage_kits/000000005603.jpg b/tests/data/humanart/3D_virtual_human/garage_kits/000000005603.jpg new file mode 100644 index 0000000000000000000000000000000000000000..21f551c3248b316f8b7a9fbed70b7ba1d6bdc651 GIT binary patch literal 225722 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 z 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 z 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�cW2SF`t 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 BuIc~) literal 0 HcmV?d00001 diff --git a/tests/data/humanart/real_human/acrobatics/000000000590.jpg b/tests/data/humanart/real_human/acrobatics/000000000590.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15efbec533400c7a584993738b7d0b175b7970ae GIT binary patch literal 76762 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 k44aW1khmbX&cqUF Date: Mon, 12 Jun 2023 02:12:48 +0800 Subject: [PATCH 7/7] add test Human-Art --- .../test_body_datasets/test_humanart_dataset.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/test_datasets/test_datasets/test_body_datasets/test_humanart_dataset.py b/tests/test_datasets/test_datasets/test_body_datasets/test_humanart_dataset.py index e63484a4e7..dcf29ab692 100644 --- a/tests/test_datasets/test_datasets/test_body_datasets/test_humanart_dataset.py +++ b/tests/test_datasets/test_datasets/test_body_datasets/test_humanart_dataset.py @@ -74,7 +74,7 @@ def test_metainfo(self): dataset = self.build_humanart_dataset() self.check_metainfo_keys(dataset.metainfo) # test dataset_name - self.assertEqual(dataset.metainfo['dataset_name'], 'humanart') + self.assertEqual(dataset.metainfo['dataset_name'], 'Human-Art') # test number of keypoints num_keypoints = 17 @@ -94,13 +94,13 @@ def test_metainfo(self): def test_topdown(self): # test topdown training dataset = self.build_humanart_dataset(data_mode='topdown') - self.assertEqual(len(dataset), 12) + self.assertEqual(len(dataset), 4) self.check_data_info_keys(dataset[0], data_mode='topdown') # test topdown testing dataset = self.build_humanart_dataset( data_mode='topdown', test_mode=True) - self.assertEqual(len(dataset), 12) + self.assertEqual(len(dataset), 4) self.check_data_info_keys(dataset[0], data_mode='topdown') # test topdown testing with bbox file @@ -108,7 +108,7 @@ def test_topdown(self): data_mode='topdown', test_mode=True, bbox_file='tests/data/humanart/test_humanart_det_AP_H_56.json') - self.assertEqual(len(dataset), 118) + self.assertEqual(len(dataset), 13) self.check_data_info_keys(dataset[0], data_mode='topdown') # test topdown testing with filter config @@ -117,18 +117,18 @@ def test_topdown(self): test_mode=True, bbox_file='tests/data/humanart/test_humanart_det_AP_H_56.json', filter_cfg=dict(bbox_score_thr=0.3)) - self.assertEqual(len(dataset), 33) + self.assertEqual(len(dataset), 8) def test_bottomup(self): # test bottomup training dataset = self.build_humanart_dataset(data_mode='bottomup') - self.assertEqual(len(dataset), 4) + self.assertEqual(len(dataset), 3) self.check_data_info_keys(dataset[0], data_mode='bottomup') # test bottomup testing dataset = self.build_humanart_dataset( data_mode='bottomup', test_mode=True) - self.assertEqual(len(dataset), 4) + self.assertEqual(len(dataset), 3) self.check_data_info_keys(dataset[0], data_mode='bottomup') def test_exceptions_and_warnings(self):

    l7=jn=1cm0pytV)O6rpVjg4B25}Sz@3x*j# zpj9<}aOK$h$J#TVvCn&n~QaY?$8&P^m&q5ECozt$N``OMM5MYx` zw?mE%4R_B36THTIC!?qCA~dKQ0=|Y0ltaJ4YHU;1s5 zI?RC~bX9Ck_-FY212gu49H1IrDC~#Om09YjSq3m$)gg{p!W-w^Wl-Us0~d zRA>f_ls`qfv`zuXKW{qN6#vp({r9)QaOBc$9p%PKfb{u)rjDr+Jh#CdnxZr-wjAW| z*J8fZmNM%l@-TKLk_cBLPvs-knw0$frirP0RSKu!8mtictL?`DT04Uby?NB3h=AJg zq%82cg>G9DW57%-2<6ò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 Oy$BhxYbLSw~-2gy;(PTTlK#i4#44krn+i3 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

  • gu^sYL*?G-~KQTBs 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 D?+jM< diff --git a/tests/data/humanart/000000196141.jpg b/tests/data/humanart/000000196141.jpg deleted file mode 100644 index c23a98bb6ddde294db1486a8ab055d850a8fdb97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135345 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

    gu^sYL*?G-~KQTBs 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 D?+jM< literal 0 HcmV?d00001 diff --git a/tests/data/humanart/000000196141.jpg b/tests/data/humanart/000000196141.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c23a98bb6ddde294db1486a8ab055d850a8fdb97 GIT binary patch literal 135345 zcmbTc2UJtd_VAsA-g|GML+HIL9YQA%ItYZ&dlf{bOYfognuOjF1(DvRgMtN+4hjMy z=%XM0?^^fX_gm|Izp_`>tY7x*IkRWaoH=vm%%Al?p8%A4+E8r(@J@t*!T`XZZBi?! zhQ9W;09X>yH35VFqyK+JR0#jTU;qGUa%U~&f(%03aoiny zhXwop)t}ult+Ur(2I2nYz&i);nDH;W{fqC~c4zZ1R{hH^KE5t@Hh+Egckyxg%OiK3 z7#f1SV;qA!P6+ithTZY<9rJjH_;}p$k2|LIK{^Ei0Jx-o^}$Gl`yGqlF=?PVOyiD~ z0RTc$xBp`2|Kece!#h6#01ZF?@IVhY_h7I9LJ%yWpdb&{MTU7JgM&p(oDg14fi7ST zKOcW5-*5onUv2(d3PAlgw&1%U%StH7%8E#e-i80)@_)?yx7Gg{{`T#^EG|s{r_X@& zGyl>3r|f@pepLW~{MB7-GXJAP5@zd=R#dHaO~f`j~> z5J<4d|9ueu|1S7nZvB@Z!Z4&OG7#x|SCz%xDD&`jyX$UW7mr{MKVPti@Bglc|9=+y zFCYHmzsB_)(A4|}&^{0aP`;rB;GE6?aA`;YICf=sIlzDSn*osp;P0Jh$+7>haev2m z`TvvtF9|5)?k_0F!wvjbtpPI!BSHd0|MJ~E@i)N(5CbRxv;ZamJAfM?01yF40^|Tn z09Ak%Ko4LHFb7xz8~_M_JHQ7J2nYj20-^y4fD}L`00k%llmlu27(g?i9nb@K33v?{ z155+v0V{wFz$d^i;23ZQ_zw7aH;)kj$$&IKCLjlp7bpaj1j+;N0kwbzKp4;(=m>NJ z`T|3Mk-%7B3NRa31gr#NfNj9%z}LV@-~#Y1a0_?{{06)Q;ebd%v>-MRA4m)&4^ji^ zgUmtpAU99|C;}7*N(U8ysz8mPZqRGcG-w6%33Lp)!U5or;Lzi6;)vkL<7nU*Ph)#_7Wu$63PpgmZ#(gNu(#gA2wL!BxW5#f9S{a076k;HKgh;i7T7 zaYt~MaJO*JaDU^G;j!Wg;VI%l@vQLN@WSvC@bd8L@Vf9u@mBD5@xJ5ZF4B0T*2eKdJG~}Y>P;wXYr{u-t-QfI|YEU{+KA|k8d``JWc|}D-B|&9Or0Fc^9?})l z_0xT#$D!w=hthk~XVACPuhQQ#ura7HAQ_Svni&=ut{GVvRT+_t$&4+GD~z{HU?wdl zFQzP}9;WxqxXch{Q|2({GUid{6Bb$)B^CrrGD|zlJ5~@YgcZj6h_#w^hV_b#olS?$ zpRJH>nC*m}o?VsQlRcMxfc=nzhT|TG2S+Z)D~=;D9as(Q4K4tWfX_HtIdwThI4e2l zIDc~SbHTY{xLUa0a}#sRbGvfqau0Ez@o?}M@e_(n#qt>2(w`9zwwrc?_L+{1&Lf>cT|8ZV-7MWTC>s<3#X!&W0FxJ{_@*YN#in~O z30Nd-+>FNTff?59ySch~hWQ3u03HG#vY@cAv%pwfTWVTnTYj<A>vZ?a=>#;(^nH4o5skOGm8ZFDGNCDyJ)F zsB?+)8A1b*k2rQwb;)%(M5-XOk^8PHuGy{!ZYpj$Zinvo-SgZ}JTyFtJkC9JJ zy^Ou;z5aMxdbjux`Z)SL_oepr@*VMG_j~BK;4kE#;QuK=F#r{C7N{Rs7X%El59$r3 zy<1Gpgb0Mhhirx33oQ=)5oQtA@sR4F@57mJNO)5CeuQ>J?IYYrh(|+_oRQIyTaVQq zS3UtgaegxNl>2Gi)7>bYD0DP&v{&?OjCf3T%w?=)Y+oE(TvXgnyiR;W0(nAU!rC*X zXXS~wi5`h_Nm5CLNxzd_lBZI{Q}R-Nr6N+N(j?Lf(*C5orq5-_W|U>(XZmKYX5G(1 zXH#WIWbfn{=5*(RbCYu~Q4dg)dD401`Na7l`JW053VI893Ns6T6}cC!6ss4vl(3d0 zm0Xv)lrEO3mNl2Nm8X>7R(MpbSL#%DSMgQlRpVEOR`1nV)Qs24*JA3J>r(3esrRk_ zgodF>TMQju56)iNofVNhO{2FIkv5~>$eYe$age% z@^+SV(R3wu1G~e!&wAW@KJ{AnE77@Y?^{q_7+Ac&_1v~JiTJHvakwYU0<_X`?T(|e(=`& z?fJXVcRx3xHt{x--&4NN`@s64>Z9PtmQS*u`nNQXS?Tt=YPJXUNBwMUrJvN zU71{c`0n%l=XLTArXT1V`J3@u%iH~*VZR7|75pRkPv39---N;1iM(lai7UlaP>+Q&WMR(k~2-^JS5 zUbu$smK48LlN#03&i6`2M!0<(G|p*171?I5sA`pqV-oN@n~16JHhulYu6W5?U6>_! zn$#e=_DWuT$R3QzGl+@TU8i2-O!!3hHHB;;?ztdtYlFwUE#_)eZ64-cj83zrd_pZN z60_(EOG3S~iLlxZMWsM*tb$($1juR|3>8mv)}>MFdWylZzdBmEnLP8UaCx5cx|J(c zFOeq0%G!Z77$rp3ZA2_qD|r+((J9?^u48RQp-{jEo!?G+%ug?+Wj(VYqY<#&zGA7J zOJG14^J^f#TlQ0|2J#jaLIMq}G_QsVr+)F31*V<9Cr_jQGq0)L4d$M0c)jP z2|RfwzMjsnvI$G@arRl&W|xMO5D|I2am;{xwkkSG9-?-d-iAn`?xHlzBu6G)4e8;@ zZ7^6R3J&6rIt1EHl`GfAH(<8I%@275@Z$S^oli9xUcO(JwK@`SoiN;6&OJw>e2j?W zlsr^g1y#l>@bH3c_rLR8r^p3+XJ7lN5Fo~HhwBal4rkcJnfisMh zADntB*Hir=Tb`ByQotZXer4>30Go%;r1l}-@M5yZn-!%6f9I8HgkaJRikX|up*%F2 z0Bb^a{x+1kab|cd89E92<%!+0=@L zdfeh@sy;Z3uhE&;=|)x8aZ*`)In$EMZCyXzAYNPyjH&?JP%+uVC1l_-rDhie-h&sBSK09>9&JZ5yPk_}7dlJ9+f_zv3cCe$pt^r{gvO+i;8NXCr_rhaIQ zD7Qc3sY*`Z*lL|vs2l9cXF2~Q^V~)R=b+1x!r@m;Lf!s!A&T?KiAZB8KfB^U!+WRS zP^(uQ+S%u!$T?98$=RA)#EaN)+L-g+YpUdkXXT=`*?6?xTSbGIn~(#rYm_gH3vQ1U-$O+#eN)MDoo-WwF`-x)8RvyWD~=SWD}WSCgj;FDq_FRAeUS? z6Yy7j2X1fz3#flaM2YkD;fnqlD%I3aIFP*+Q8$ngvEPt3v{ z%V>`*Vu|*YJ&8pbb*xv9cnZR_h4vz<=@8%ALil6M@wYK6L6j%LkwD_9T@VK0VP5iG zNW5{)6P17VI$zYe@?9O+AnEkUI!b~-rc>9`VN$_`){wL<@k3o>TD8A7K_sskOl=;# zy%hp)N;fZqh7m{Gb zJ3KeHyEBEOsIcx+^pe=`9pMh&dC1qjUoKC{=^!)veKZ7?&BG^r%a!3K3HCyXL|M39 zA<@p@iVKO$;b{%uMgW`H)pocAtptI8a7_Q3+Osq-8yDJ45OH5#1W#wx*fsr;_zdSb zHbs|jN~JbLqo!ES+m5sV@)}DwPk<}&eDfoEEDAoU8|`h{=r_Mb(h|&f4f8xT1J1WJ zT7h0o)4CrYVCHKVT}%3mkLcfI~);p!-2)0odU;uzkJX?4P!hWsVL)vD#*U`Gi@{n9ujAU@mji6OHL?w+j^}d{3C7XD|V+mRkzA3 z*$c#it<}x4k*n~~N3n--UX$%6yBDy){MzWR(M2Y_DvS~_-L|shCL;`eVBC#3!<4Uw z-pYJ&XzR*yqgcc;t56Z4-Y0U*yFL`wOW0Y3yXR>cj;e1Wkf@g@BF$#PPz4|##<-xA zb8ar41mImUI$B3}QX?%Hbek~Nlbq5I9+4N2d2{AYnN#AYF-Dm^A4#d3O0LA(gs-QO zC-pKmS3@Zq{1thWFS|l?9BNl1V&|PTiukh)nu%cz)Rx)R)mj|m#vd4V=xwEH zOclbJ`}&-2x=8^m2MK`NN{&&1wQ_FCx$+tti3xh_L=?Dod1iB%m(i-kIfutF2KIsy zAu?=Srn}Q7Ie2;7hl}eo9HqN8)&LiD$s%+w*O04t!&&>Y^KH25R8;6hpPu5Bjhd1m zmBJ?5*JOw93UA?lLC~m{n+H^{$X!guBxGI{0_6lGMqA_I;(-9r=xlK-K({o@TGEBqv#xy+=q$zK=QM zrjp?&i1s*K4{PE&Pj{?91-PN)k5YxKfVnuT_VxQC??f6b zO(^W7+I#ha2(;ei!QNbJONI`0GUA(f(sEY=d>huC5AjrTYkBpW1hveUp(_DvbiGV{ zmW;;cu6$N>E&xR`IforOndny#ta(I@A9&gB>-y#B5>TF3A1V39bfnNubF<%EKq(~a zk&`N=lf_So_tUH89>nNZSHoK+GFz2#0D?FFNVrj@j)XmC&;am`zcv>XLT}CR#2F+w zt3k*=A;z|ufA*5leG%WSK^Dg+oX@(1C?kp({J^=$rQpQr(pOvjJ;duqd zQMTi=B&hgYj5d3-jyiIQKEtAR)!5Y6FJTf7mEvw{tRMWaRE+FP5McDGS^9jp5pr+s z@@8jl=O8&FTW@d0yO5Y8xjkYEyNrzzgfdSvpIGjvS=r1W0(;+E8&xDiTJ#kvX1OE_ z>CE4D`XT-aSa=kn=YkjR>)3ST!vlv^2hvsg>!Ka7@7qSv*JeJmW7B-a)sl0N8A-+8 zu=dP;(grl8uVQ4sHL;O1VOk9^ z&WBTHeJhRX$s7Bzp`KFyGTzI|4jpp!ip`Q+@di3Dw0=qEsy%3HvspFuDDI&;^RFTL znLSTM3(nk+=YC6(LFW(GU`_|c1=x>P87QNGSHvct&w`vWQo1wJ>+8UODBdtV43+s& zWn)X32C1v$w2)LT%I@oPQeNFnb7%D4+d&-md>eP}(lEpvWxod69eErY3fJYKJUrFk zo?N$q#y)&JPUpt5o)*R@GT?-$wv;UC-jXM%s9*m9*oCf3ku){+YIO&YX-Z>1hE274 zg~&IyEjocnrwF8HcCh98cKn8_U$lj5jRg$GvZ|6JT#GE=PBp;{AJ$h%iG=hmN%56L zv!P0?lwsPi>S^9Zmn=r`!DI1eEFVzs0bwuX3ERCd>OQUPKQJ@olAlS`B+clqk}O>_ z6_>^KP9C2>mc{>tDOxueRh(ie7?FSbn4Hs*8LTM^WwhtIwfW~~DzucANUE1WFQ)r2 zK1o15B09FK_|X-AH_*F6?Lkm+L6{;rZ6_ekI^c+*IlF3g={S*DJ&G2ykF2w5LUMh- zlm|mm4DLfU6Nf+GzVG_|?fuQzwdB1hCti1=o;s}C6{%BA;#hJmF4HaZI*d5aZ*B)0 z0sW0&t5`h>iE41lBgZ1G;i7c!cwd{OV_2DEUlhMV#d_NfqQE18`aK;Rqb#vv$+&s~ zF63fL)UfZV8yl7HbITzu5q>VBK8D_96@0;<4tXBF5W~cGYBRDD&Feg)30OvwRufq# zds?aq5W$HM)ytM7}gAf|ytJI@4k5=PbW-Q;FU@MxMsj^_&! zZ@VWn>z~SWX-_rvxZJ!pFWC!BCF_!k9G$0m{6@yTJg-MqZ!Mk6Pht&-GYhmq#tJjyxqwDS(?vM2s=Oi?*vJS*_J^kc@Q_v7AH z3(UEvl)f(rDZfp{XKpwhCal37PhsH?myCrkx#^ZAZ35YhB$$o7FyvP6HRCx|x=T%LoPX zKxVYkKE)TqMy;c`5wCN9i#h!|N6SadkY6Lcjy={I*`6j&t4T+@5}eI50LA}wJ)nq-6bi=`?DIaeJnL*-Hs|V>Z|7v` zmJGJ`a>aq063Czo5@W%tb}}t#j}ek3u8Ix#Zjw_ArHb~Hfc`#&yw8fJey&S{bA@cf z7oR0cn&9@_^Q<;Uygp|Fc0JbzI#hy9X;EJz8Q5ZS9`VD}?Zk02ABEg(1q$X(XTRtW zhd}T3x+ZFKhK7G;rplX%_1FI4KVN{mo-HYgU#KEZ82nKa{H0il&4T|)f9rgzcXADy zM6ySi{`6~d$%p0IcG_z^A&Vc+hFhf_!aE?2mVW@-&D?m;BI+uVeH|))s+EOhJa2#A znl7;V{d7Qho5wAzKi?Qc7yxJO0av9{Y@JtB|K%0E8-0c789e^axjS!sP~ zYF*;ag3SrU7xWsQjcHVqwXiGegle{X3GskA?(cuUMU*=f@VcPaA%i7aY%XS`R~#EvjJUm84|HKFnPqL^x_jq>D|ni<2&iA(P4 zZ2P5D`f46op#VzM#?$Q22#-SWT}3XPhSV9j_l9Bc&v58k@APeV=*89k}HZz)TByeb!OaMOCwFF+<4kks;rea*3$sfX?Doo|nEB zrPUXsY`^q)h3SymcCGm(-C8PZZyASAeksgcM}vfYqRP(?PX#(Kz$pChquMoZb*N1* zIBT=Zj9)m{U9+8=MGSUXHr7Ck#IfPv^dVE{RNq(1;x&Z8am_$N)0F_lNeumN{7}Vn z4g-gwMQ{TPfjMZ&&@8CtHv7@`;$E8qXC)IJF7=|GYi`Zas;O^p<%$CiNB$-IPMr{$_4R zY&dE9GMw}m3Ay?5mEHXU_}-Mw{ltVC2sK%Y&#OEk#GyD14EmL_dUFTw)r0ovX3W;^ zvoGz~2|M;W6K&Bq@ru$naTWKA(&>W9dR|XVKB;ZxCnw##=jrlPhEpcgRP+ILvnfwd zgVnP18mWrN2H+J%wN>P@yT4*Zw!CX$40dU3?6uWLI>jb&@5yt`7zS9Hkk8Ibylf$d3e zt4hMDXRE^}Ok_4Bxv|IGtkH|Auk!90@7iEf%(m)^VGYd1H}y(F)8VK(`7$i(pS)>p~RNbaj1(nTvRn$;B>5#F;3u zL-3cwx^`#hkjdf--=Z0_p(y~slKE)+W%F!s;Cr2tDTV5JO0SdgW{zqR$vCEVb}8Wi z%&tArQAFgqhdZw|^|L%EZ!Vjr$Sr%p!*(u^ukITOldjz25_LyC>WmPZWDTe5hMqTc zdvAHB(yR((qvVF!Jwt2d{!z@F-v1h(Bw5OAGAQkdHEBvbw_Xa_9F9=o0ipZ${L*oJY#IR>-Y z+V+0rc=jePxYw<66vJE1&5=3FhcWIA+gk>PBL|6lp@`VX4YVp8A&odiuZy zUD+XKUot)m#i~*jI))L*ukOA9C}&#ud{ZffHo<_BmBCxp1o@vA!kq!tPCj1oAVraBj=dDjfW``ZujEZ#60+RDQ;gHL}{k9}O+WkUy>2JbV! z*1j>6v6nW)k%_fE+d8Xx_L=Wsp=5;4regZn;y`7ss;twa+nst@+ajKt6_?9z27c~W zBry_>;h>|#=nx`n^)~sq7{*{fJ1M&mJ@SKyhsE1;mT38|v8f^NdZ9($db8P|({>we zV~-6{DpQgQ)1azVwzJ*VO5a@tN)H~h?(tU!f~|T!NKRgbe0}XAv&s{4fjPWnG*utc z(~wPT#zn06Fa@maStdn7>m!`I0z>63q|gMUex>kD5>1dGdRxe1O;EYHJ@eLp_JST- zE`Z`pZr5k5IbcBFY>m3+Gb7AzUU_~F-o-fB3T9a9-@UBt1;$-#%wB5+7e{ayh*OKk zudEHp&xWOx(7NR63+-LL?)(F|U<+VUh&m-sZc6qAM$n9VJP|vk8X**OM3ZGy@U7P; zavUj#Hg^L&ADK&wMJT|O5>vv}*pzn0S0oKuyj0y^E{z~-=Z;;H2$6*uhZ!E~%kLNx znhzU)e~ZC1qp1>$0yX>)#}}iYASO+`nMrD)Dn#;NqV^bBo!!Ee#7iju`xpuXw+3B< z=n(yl2|-BY7Zey{nO3-I%`%^A;@+nQXZ9@?h$zYtDRJ0|^h9XDPu=N_$6PV$Uq+&| z)-3G=qZ<6l7Hq$j{7xWtNy&Y^IAUk@6Om(+vUxJtnBgIrK7E0ehwzkHy^{-QZ`t)7 zac)F0bJkke?DFQBH6x6bR?PDP?;mc{&IrC-Xf(J zZD3H>tcVQ6x3Ll;geQIX)DbR$Dtu)Z<)-Q_d%<3CLh0nqsb{iJkw3~iSC^#_k^A*x zOfgqV9do(ItFB)#;mZ5Iz~P#|S&VkXJzXDsloDBENBBJ3LWI5QAH(nLKc06}(rD$#_;-@3LmQyK zH0s#LM)loIZ?rwmS~%TJqt$V!j#IC!*eKyLxD_K&`HR<&HmO<($V1x&vs;9(5uu15 zQLk~Ot;NObs;Zb7r}}ExgzuZC&V?64HVv9IPF7H(mg6_YW^Z_SC9(N^VVp|oJ8YYj zVHy@jQ$=GWz-wgj^4?I6I9f~(1;~aT41WCiPrx*=nbP8zaxt8us#(@mSK#m(nIwBe zE*MzH;!TKGz+)b4ZPQrTpeNaup&|WtoWFPCfPcUbEJ2@hBisgw5t$h zZx5R@y~*p9z27V?iBj~LB6czW5;acCluN*q-B-dN<27mv*BhovE|xZuF6e%S<1Rpr zS?d(k4jyHA!|h|m0~WYn7pfx{Gf5?yJ_iLp7E9sqLIt#H>gP-6!-5ajZ?{X%LyTND zBfv>J;5MAKW+J9k3~tpAN4WWZXYeIMSvadlTHk|@4BdqRr|=bkq+R0^(cPOjq;6+g z#p6?`oxXVf0H@=Nv7<}7`NebUd{V1J9HgrET(G583v-X{j;MB1tF&%RvwLQmn|=uW zYY}4Y$pw>Dp+K42;K4ZRvNBDf<@D9BNdnzrxOJq)Y_vpJ(qhS8MG{E6 z!(Ol0_G_W8nzX`(nuJgnx}UQe+OEe%o7rnkOS`QJAEi4XSqd6a#umqw`YBC) zPs*1V7I9TWCx_FIx(ulro9gRrTr4dwdT(~BE*4q`EJ_B6EWbb|58Z#LYh~I;;c2iX zeIKVFOAN8o*Ht+dV%I-ux3R&vqKbHl7>{2?Mr?03#jknkzBd%%HrBg%2~G?{JZ{ss zClGvZvq}TOZ*y%db&)`&Rtoj_t}in)uNwg71*XiE_Z&YsJqt)AvY!l9A1&I)Y;HY* z>E%qeA4T+eHoMH_2qUY_VIdJ8@8*dkb5TQ>miP0IrsPdNJfVXVtVBwX3EbKscE&Ko zl2htijZ&bfi2?3JQ{hk$LH0jB^Ue#~Ki~^c>@vR3R3#@-1(4JhO~uErlx_WVEHVtLm2l@X3l=vv6G*a)3X@e4hq4Hi zG}c?CM~fq0*$LO8D*q`ttZq2pk9JDFHS(ZgDc3JQOmNJX4UaEtJ!1NBufh2|wBx}$ z?xfE?CxdnznvBC4Ql{gb&1)3Y6yd6$7Yh&f7iT~i@Xo}_O@3#sYsU8(saBvUs$@0aWbQ<4<% zGpOJ@&Gc}P!L8q>6Cv1|5y*b|mB({THI*!TBPAjyc?Jh*8jqNO&?6xcm+2BDf&hvTC@L39dHa8vqsd3O||sM?d2x2LCf7{3NY94Mf9P~%H#6{bmUW}?&L#Ir=YKEA?19W&~fYk-QJ@?E~USye?EyoG%Ije1k zb_=`j6@=E!K33-aI<#TgyqBy1pK;0rRD2i@ zx)_Zgf@Nnpt?4dDY}<=3=OcLr6W^Rlb|Nsi~>wUd)O0veP}tzK|~VI(cICB$X!$mWNkVT(mn}7Dtv& zeJY;%+Ttlu;BEAHxIsz&JTH5oL=Z$yoVvr=Wl@|y|NBr~xcsze7FCTY5I6eqN$)Yj z7?z(r8r@Mw;e2sUHjknI1L$Ezt>xAxThLog{s9~X2*<^xn`h4@Ri;hQcaue#&~XYB z5u+>6q=|%WLL0ONG3v=WN>qXl4~hnHyoqh}WKj=FwY!O5IG>r(>PDw2@@vGS?A}9> zh0-fqC|RnM?5BBB{Wp}}% z$|PPpo$Ju_Tf6(2;}mf>sn28S!#zlZpwADxA=SWdbVia48D2$2M3k@j>Ndr1Kgk+l zXY-fCb1xkSCwSv$C%W%mk?jT}CSwyRd!7KBrXd1?!I}scmJ4o`#{qliWc~s6ibmen z_EHg64eqYSLgKc~wO==wY;-xTzQ-_>^)_eQ6`>n1C=x~d6GOX|d{n@#?H4HEjE#D1 zI7F!MGG+6DkuVwQ3b#jTW>TS{p>?>?_Rv~?>t3&XM5^dI|* ziS_>NiUppiDgKx|+EUf*$F^CE9|}gTn;)eZ#^~Twb-J3v3qR=2nvv+>$C!M4gviml zJg_)onVOsMTH%Q9eUc-GMSJe=E)M$-uYF{%=CHr?=v-nDYOtt8sO?3~xFlULq0x0t znjABaY?oLBI`asWL-LXXZ9`~E_k>-<$DW*OXKi@9lc7AH)ykDXHgj5W2AKXqvs7`{ zg_h^}63KQ$cp#}l8P5v4?h~K06#XFWTvR<*JX}`ecD`qo_7E|goHkHafwKMf#Y>55RfLOD+t;|d!9{z>-jax9rhw-WCj@i- zV2?4-icKo`tyrOse*UzP&3S2GiFKJK_v0l9esPvJ^=WqD0&kb>a6pW3p@ILVpNd+P zfavxFv@0DF@+H|za=Ny*i3(crg2mo&a0GubM=hl3ac-c?(@p|>d9QCr(;J`D;;T)H zW~ln6;h&?(KMRQ^!H4`h325&%S)jc(-l~oX`+ZTV4g2Ap#dh#Aj-d{tu6Jm;Num05 zjUCqXfuX~R%=tq5G0kY<99zr2^L@KVn=0#s50rTrs1+)zV5&=xwyzmiaCJmB0*<=YP`^0+NLgso9K>WZVoOP+C8%+<4B+qP&CR50uoR^YAgyYFprlbG0t;~NYZaR zAow;+&4P^^!;sO8awg?#1cSf7rqqmE9&G`* z+eXSfKF>K)FHwh|&+zWtQ!ro)}-+gCW#MZy{=fPdR{ zyA=T@^4GPJA$~iYqlRBE86>Kltn_FnE0J85)AeDRdf_(H0q-;lqMoz~;Q7u`aJK=5 z7$&Z&w^YTrB*m-!0aVvUB$j`D@L2ZnV!Vc_&t3>Ew@iM5Z+l2AI|uYLr8c3xtCz< znmIf?(ZZNXDq_mu)R~S#*t5*xA*t%dfUGl-uL=44pV-z}T#iQ&GV;K0Q}oEx=6|@K z|9&{)a5@m}O-h(ta)!UV_-*pq@QnGo6fvnjC`x4Hwq)@+XP7kwn2UbY`1I8SJDVT? zpD3zA-U@v*0B)E;CR;BuxU92rd`+(RYme+l>-~ED0a=*k8`{-+D!JrB;wKq{4J-Rb z2v@(NA8yrENrJ}WNzE#;c-&iu)!6Hsj>4At5OR=vv9$T#1#%$@LpLhgKKjDt)Rx9t zT-T$|6UFIV><#@-!UtojxUD$T<=XB20@9xdrg?o%vv|il=VyLU&yAkLhzW=1A`?Ei ze<8da6K=#;wY=+E82<%=qX283-b6m zg-p}4PHV226(VJXRtw@M>3wL)QE~NzXaltiZ3rE5wQ>c}U*a23Eip~q(Hp2^x;PBI z*MkQ7REYG*&wOX-9(4^7q?a=q2MveBID)fUW&)fdVIKMH-PnP+96VdeFTABIg7uiR zn*bEcI+Yh9-z*`dHu;&8t|XmJSy|mPv6;?qYenNwiVRKn;4~+0t(Qx403`wGiQ^jy zLflaN+mtK$ckhrR1(wvz1v7zqw}o93ZDM{xKG9isdtr+vv^Q`#o!%V6!s^XUw>&Nb zVcbpCaU**~jGk3ne@k+y;V@Dou8>6MtiS!vAlrL1R-G;`MfTH;F2hiF@$@@A^ihwm z{EjG7(^<91)M~eEa6v3{Y3|1X-UvTw4eMFY3L91_VU|P>$x0T+BMbHSfH6JuqaKs) z{uxC&vOM!igZ2>xA1W3Mcck5|%X^D)?ZexXbk9DA;DAydzdZt~xEacQdzu&gq?exfdS-KPp zH!p`_zk3vlI_+4}?(w|L{bpe>7<~h69rLy>dcqrVkC`y0g^9Gi&a8m>iEZKz@0Z9y ztIP3hE>HVM%y~5y6ooEyOqhll*N30Lc~l%DTK`C#U@UyZ-#H)e-3;5KELLTgx|Fj)ODC2flUxLe!#b4ec;B&@AAX27k(sC*qE#lg&?yk zeBzln-+qyV;T4MB_juSY`CW?*IGhZIl7WOXoyBH*o$H|;YrnU0h+#XrXssY9d)>1d1@pDZwuR>eA{zNE-grW)TIANA#myx7TveclIP^Fzw?q+A@y%{VckcTStX(7&&gvVzEG1>Ty0Mcg z-kB=jK!QuC{)Rv?L4kb_3gkIDkmyZqBz$JC>KdGuFKzMovjaB3Q102({BWU+K8pD@ zcVkhiBX!3WoPhaIj7G9iwj zOdw7qQhGR*&eZ#;wn4rwy9=h693Yz&c%0gK*5V}Up(|LLEAyCCE8B*if^Dv$tl&Um zo^xv6hd2ZZH^&lumepqXnB;}R*lY(#_$Y;U4JT+Di>dXeUaH@3eQ0DB^DI{BcuX3&bux5ny{{<^)NN%Qfzx{N{zGZJmXd+9;$zEQ!WySY~=3+Kj{_luT3zYR})U*7*>=bjqh zVF#$}51lpODw!e-$``DH0W&JO+X+)_kJr30N&nvBUgYtri|y z=I2KG+FQIRDAxzmN37cO=-;Dk)|HAcy)Pt}SM8mu(McXXUzv8CKc05nk zM7E2LJVl*{Qqfu16WMVMhPzLVD)ZP%>k&1<#vbv;Jewl#BW`XkPdLOkROzX*|Ht^> z8=}RY(Qfu?<}U+R3#+U0APA>{4TM6~UY99M3~2KWYfuGYsw^txv8F885!8RcBY%v4!OPI!)`1@M$nHQ^I=PuXYcNnf)0}Ky=(SD27*oS|uxtj%Lfgs>yjTV5IKeOA ztzZ4h_vav0weUjMZ;B!GjEjI{#%qDuJiZpb3KE$&UR!%%7OJp9>9L}kNiG8IcW+t; zAXrjDfv%x%w3j8O#Ht4#bb6RJiw(w6IULT(=^}6SMFQYwv$Ika%`rGOLI$(iX!y40 zV^3sAyh0t%W|G}NHitO6T3`!1MY*^-jeFcZcDIfUgplg9-JSng_2xuZ;0M$f@AhP^A#TimPA^K^ zW=39Sp~89}CP<^)YHF&gr-KNhK|SDSi%;p-FHZ4R0K5@J34&BCbQxx|xqDsFLcB!< z{lnd9YT7EXf&fi1;6lPC7begO$2#*F|5k?eOxhRqhW(Xaro>(Vw@zaKxOl zE=i-Oe1}#U2J7|}S}%h6CYGna748;Hno_ANS5Qi@u5sknhARnp^jeC_2wPOzl%${b z&k4IvhvhcSn9ZM&8*3ut%uBIQqpTS$t28NzgtM8 z4)@tDty=Iwx)I}6QRoZTix;O2Unbfv4--IfA>{{fUl|47r+8Zj1??7dx8I#7y&^(K z!v)Ge9>CbMrPasPvX`d9t>e=1KjHoQSVy;ve(?toG+%pMs-871h3BJ*K_~UK%0B(- z9eDKVaON`FWRI!UaQ_vKtuAPkC$J^o^uT|)b*Q+>MBR1I2gTPTMkN^yBRoa#G_Oi$ z6o^ERq{J;EC+rx|+7HS&s#)X(?6ji|cY|{y*y@_=)kBFR(r&lwor+E!=tO7yND51& zo76MMc?>4TzFn@0#WOmx>OPETDNuA$=d%vuFJ~_+4S1^g@eA><_elY!i%oXKix-sL zTmBi2^yGw-BC=*z&!s~o3%Pss?Lgw$YwR6Eb8EdP1C{8yWZqP4`cVjSarDeX(F)R?i!8wy&%JoT;rVOnym5)5;RB5>S`Jw6F|VkB{jM@XxHm(17!> ziOW!n(Xu(J$dM49CqMSOOF0|*=?B+5h+m6vkiQ`w%&>HM8(C_(R>%EOYhG%QEjjU_ zBq*c&S+8ref=hODt8OER+_cSM@B6U0i7!fpxK*)&p5&!S_GhT6m7rH08gUcObMW9I z`1CLZaw$^(2f*_nOYd6w=;ITQ0iLbjY)$BFYbnb*yv|B@-HqkbXuVR(`@8IzqU$u^ z^>($>7CU>m;KdbB&^h%N@7cn7zi)I&>iqve9 zug@JBa*IE_`o%l99V{4ZCzH8qa^W(!lTd*HNj__-{R4QlfnO@FnGgK>Tq39laS~rQ z8Mv3BJA+CI)>P_vnoqpv2X2Tig};bHUw9vt)k+?4XKLx~a?ZYZ z=~y<1S0&^5tYn1}1pF>oke!D-^UR4%k<+EG1;-5gkE#qj)GnN-;28<6lGGEPYLQ4r zt#CiKIVmMD{{D{y;)4El3bv8>X*!FH!K#J0j%2y${{@3Ue7~ptKc){x;Nan~MUf>` zWy^C)tlcRVjx$i+QjvmwV-`8ji7>PP34y9IJ_F(iYb9pMSxif*mQkeJ)L*yy;~Sx* z2n9QXgn|f0aW-EfRv?op69tUi-=_ZnEHMJs+nS}Wfn`wRyqX-Uk{(?FrgtBV`tAO> zYh@N!QzVoX4Lo$*Hfn0J$=aWLP6w2qY%2?IDma<4taEwvwQ?vrHEa)Ii<$De61(RT zk}fFAEx-e=Gq+e)ZlB9@Iobxh>e6k#H`000RZ)N`Jik0@TDWDFo;tXrb!UP05&(Bn zM@!>DxFAILDl(}I_c&VW_MVoFDJk7R5SG>3sXK0cv1B#hw0%`g)SzRlJ9$^vY)*}Y zL279!=Z=-o$t;eldN3EpYSdcZyKIXdU1F!Qn#y&dG|+@9jGpI=*Vli{{ZugdY8S`H5~4Y%DwoPGE{LS@Y1|6tUv>O&Fy=i*BbE-hnA1B zrhw|osH87nUa(79%$0!}*lIZEml0`O8imX`pB8CM$RoA37P-Y&b4ZnFB4x?J!*ffO zOEhv^s5WK!V=L)AHpc3?ZgNhF!Ni#)lGRhi2pZWgi5^uZ_Qx`y#8hrpu%Jw=&U#{anWGDK6Avi)>2mHUGs2qWN@++Qgp6pw+PFNY z=${lipmwX53-E0(5LN7K@?G9pwimwkzg_Q+GwQfTUtJ|w8~_rf^M4AW$*(km(JAb^ z93aJ3YoeoKdlg+%c}8%T3_fR^OC&Qx&8J(C{Vi;CsT!4pv7sxA1&L8yOT-lUd{sGI zB_&A>+tU8nW@mn2Kt<)PZeUeohG;44vtT8phGZbK=<8wJV&edHfV!Yo4=@)ve0zQ*C@%P6t#3 z?*s`;%V-TwZ0RczXx34xreQOkI~Jf0P%3jwCn_;nL+asHUkUk^^W zyF~l#RMW3go1$#CU$XvdO`Y+zT}>j6R5@)^8*gJ^KAmyR!PDrm1*8E0t(Ax&vF^(u zF-JCOnM~v>8i!$j{%0Jj`UTv;{EdZUj+Q3Nr!0#ia<0Rr#yK>{^#^+H)^X^aJeFZT zM-3$M)rewPXJZ;GHtTGAN7QXF92&ekWzHjIB}yWBA)=f&(Oe+3!!qHRL0YHsB zGBuO|<}K-Ot~1u7(cQW$X;#i4gbxE`(Po|@Wtn|sEy{YJvP4ae+uPfw8w%Fctkye1 zh9Tv&OM)Lg%Y$)ta}r%C;Fzcw%xQ-?(V!(=pQtBvH1w?`Euo1EzSu)dlK}~UqwwK1qy$+pG*Q%^SOrlo2tK$_+`Ibdx?50T7T;l@B zpp=1$GTejT(;CGvH&tdRvpqaiH3=QqwSXhHTvb(}qFcIAtg78gv~8!Y_qH>IsiiKS zCTf)`KM2%G?S=`}--KxqsF_jJ{6g5+$mi0 zg(?F{GovAGA&KvWrAkaq)h%==8mx_8iWwuRA9ngw9jr(GalFwZL#ntw=mS{?kUQ*XBmxra7iTb84*hE{kAxK?QrUuRRe!~)QHXMtFo1+ zT_H+&Nl|{AVJXyLi>7h8UEz$kmGLslnr4SlM>iUVl|R!Lf*jcHS^offj^nswioP1C z;bMnVGT5G$?Sl6R3d&*@br%`&7EheEVU$FvF;Nk++=G3s`r|Gls|W$huY_ex#niRz zT5k&H-XL*h9d3D^feaL|7!jl)UQuqgA1iy?7#obFDmM-U@7%f-uo#C^ej>4e+h0q?2fCn{~%SCSn(!VHs9oZ;9aO|GI13AQw_I;HjEyoS zU~MO6vV{Kt(1nd8_!SoOxJSbu`D=@^DW<88bMa}l{qW3mxKA{d zfiz0FasL1V<;j|6nT)fvesE3A$3cwMv5tN!qZ-}Ua-R-kFwLl4+OoNGN6Y6ml(Bup zcU5^8@eh_a0Rl?o5((;?Ca2;me8#CKsibJ7b?Sqz7LcUz7nC2EDa@yc%sFL55F>IK zNF|c^*eM3+Spg^UV(x524|Wl{@?&?>1JYOY0ET{Ka>Q%fnb zfC(o3hA21?1To%f?CqPVXmUwlsFHc)DNEfzOR zP1>XrIiZDB;H*k%bd)a~n>W3&xtK>&5F9+!eI)Fwd6foVQ!2_cNXw3*{c%4=;e6p) z(-?vi*-mUSn%0szp^z2ObZkf?3UKvxfK_cFrc?YHVV06(24b|8@<_)`fYb@;zQ+J& zVAc=2Edi}~f)%qO$#Z<#tj9nm4G7m#$Qh%GJ8ti_fHwM^WT{e8} zH$E=3L4p8}s3iFXX3BgA@O(W=%9;6M>a@zTfa76)VO3nvH|zZ*1zF6#&pa;;O@Hug-!{rB424=O+{INL?nS=sBYSPsYWW;m-X_;bcta8X zoQE;BFtyB)X>5-ZVikXhycLfi;n7uF%Q=RyBaWQvhN3a}+Bpr5rRvJS5G`@IIP_HU zbZam=m!UKe5wNN5ouM^pVREgC>=oAE3Jd zw*J_y;+|smi@{uTm=F(Y%%zi`9FK8!o3G7@$Bo2o+`VQBz$-RsQuLf5Su|jCbSf#n z_x{E(;f89>3#W^AS}v7D&*5sW5z6LR*^HCB7g4dXIQDM?s(aUprh3Izs9>+ACMf1` zj@pO-gMaCSs2UnwIwmdxN+yz`vVtcntjC%QGYvxhy5klYip10>!BpGatsaMtYBS80 za=NUlgOai-S>p1@2HJ} z*pRaI?{!S#T$yqXJDQg)L=>5H%Q93e09>gC>UZgD>?|3FPzO_P_`Ff5`ep5JRBozudTn-6RkOrAnxt@c zL!Qv&5>Y|QF;rCqv~nAfao@LJTjM1L)oi?usoieHI}Sq{)7IaT%xH5CacG$WjoSVC z9kIHI8IOv?SLH?J*}h#BN=-5_C`SZrze`J)Lvj6kX5wwkIa-vsUd6H_@ud~tSqbzaIsKz3kh*|)O~SFjqa}isVuKF zN?QRt22+1fKA5qYoHbRsqmr0h#tgf^;g{=NbkYolR**Vw@f$bsSn(gVk;loog5Xz zY!p6lkU8obwkPT7e|lfkRtM!mw+rOZ%_TSSc=>W}B?jPafN<=H4++J3x|XP%(}gLL za`0x9^#BV2(;1(GChTx4RXj=k&4pa6qn?hX)%=$L0=)>v7gBXImBDQf4iXlJ!Wn!y zbyXVBIH;;D7^4e~M*9(twFb4J!KHHRlHxNfj|yaURJpccP|F=OljTx{67SW3(mnR- zdkj}iztgE4ht(}Z8E3cXv)s-)tg+yVbuqG_8;;f&0~ua6TN`m?ky5fyRC8TO2udSj zG&dn62|&nj0ZDM~UqMrmM4I&0ASU1D9-llbu*|5;%{^sX-0=J8pfha2W|Nc{ke*UK zv7U=E6PalYfjg$wG5jct4d1BR{WkhzSt1mJC^ba|uVP5w-wS6ak`rwRMLIwx-9N4& zWSCGnS$OXzqRV69(@zV;vt{Ask&ok&!0P({08#S6#)zszL}~O?;f#y>xmRujtNsaD zTTfJZVO+4+wXx?b*38zt1qp6a&{c~*;%vTrrmY&WFR=i3u)(2P3>B10J1gQWxiZ=_ z@d!Td#f^oC{{YT0hd4eJt_E(L{{WdNjOUY3vnG?MF2dFW9h!9usF~FUiFj5zj}tPu z^7(1yq^Fa}R2$rj++zT#Qgm0G!)1?WS>{y@Y;aPjGt{}ZgRtKfI+bU%y~4qCID6d6 zzzYJkh`5d{>xO74E98qSd7G0IY{0XqLQ9{S8+&0mRuR?lG6aFYZ!ZPuc$Gm`hF6@W z!~yp`$|k;|ig{`wATf=eK4tc66VT(+aSk1ez>buOXEFEWzI)QNxUd_AlKA0M3)E%N z!(vr83-Sm0<11WUO|#m!Qk_pF8OLa}ycv}gUo$S}6wrBaAr?!Yb)QlLCS6srB%E|v z@;N)tTqy`819LwHVq%kngkK@({qa$v~>7#1W(y9@h-KZM!8f!rbDVn^a8S)6A4IY(1Gat$vc z-B_v_QCKr5HYHZ%`W?Zu9`|%bxNODQpowTE$C(kf>m4RktCu~2)(jtf;L3&ZI&=pKUXyUl7=Ym7Cs0nY2KtWk-mDa> zXa1P#_L(a+;m9%$Cd{X%imG@XI82GD4Vc^xyY0Rl)x$ofMv^tu4ZKz4RcmG3mcimT z*`f{<;0_MsIx0z_im_2EMO50Eoc>@s0eye~ZEmLc^OcWFMAvNC!O}0JE%fuVD_ywf zzxYvkkB94B%d3n!N{To47{Kg9fr76M-4Zg2qRSdgJ6As)gfTRBF0H;J2vZ34;z( zDsq~;GvSEsELKXPvbn!r_~`;b%vU<2Db~|vHR61)HxR@$n=A{xv8~o4xFn+3YI}wA zN>7J^DW^0wF)?MH*0JqljBm`x0t|%3nSx1G%qE#7w5(stB8vh$Y%!tWR1ouJKqi@% zs=tUeP)%D;PYebF3}8O@1mlNQhMTgL*rM#?FbIAImMA97o@XeZ3|HsAG+}IBf9WcW zOuH;9{&AbdP(?f`_h9d~=M>Xv)FK#LcO_P4f@$dg0R22t#E31YZeaDss$j6`3Xn4c zc`CyeXO%4r&M78j=oq2Xf1Wo7-E)g77euI9%D8Hp@gPO%Y+enO?Q5EsO;KbDk*g9r zb;W_eAX;W+OXT@gOVYz5FDyy^6JEfdLyBp=xnQYNFg;z@qw=2|X*fTD>G)rUU>_8S zJ~J|y0%n@lcd*=(ascS603Gq+adk@x3=8xJ!<-R^C2UKqBHDk8_^S0R)ReJO+GVSj zXhf2P{{Y$~5?6h?Ti)Q~fLH+&d0%s*ihWGqv;%I@Yuf73!+FgmEV1)s=0+P+Aw6$v z{Qm&k4%ppWT)L}zwky)KxsQZz!7nt8Sx>}7g+-AEDnaUd^!+i^4xyBt*UX$a{{ZVU zh%|jd#rT3uqP9H4F4ZFCRZ7ZY5?!KUy1ZofPTsvb6N>3#Iv2|{UXvfg8OAUt3yuJj z7mJQZuhqgSnA$RbiASoU+&Ea$&TtzO4rP_saYR#oU@S0|IbR76JO97Avjm7V6y8N-u zq+3i|eU+xl`44o?s2=qaSCq^!_Y3b|P~ zv9<0oQ8eDtIVT24g&)P4tTR&6tp>Otr50!2?sWJ1_s2bf!K6y`%zGJDo3dC1Nbq@t zo+)ImN~jY%YGHBsTOF(q{Ouj<&ErmH6U>jQn9nljrs0bE^_E>T*E;DU%V2wAnrHfA z`;-J2P#HmJsog~X01U-Ttb?f_Y(Ib74h&vlSYX(w`s~*>ij`F=^~rO6NIgH;V29M3 zpQ3@S3)cP=We|=A%CdUexm@NH0(zJgtgPhRoj)vk3@vIksRp&uV*TsS<0w|6P(9)% zEWb?%43RP&Iub|^d}HJ5u&R&bBS-&W9k{CBwP--isbDq#LlARZ`acn(>H{U z7FTW|uKpzSiq~FD3m6NxKn6Nb68SxgoX)FMaHmj(fG6DGKnP|fNj_GqNgV3hiC@E@ z^~If4K&W$NDmCUuK%Avk2X+{iD)0z8rPD?Y^(Y|X!3a2&KT*RD`BXETH9G)yJA!Sn z!@8KN*mBOw`CLF!8CO3gmo1*2)bq0zNfyMC18#nU_QiENIt?8c%tiZ8_*x~^NDk0) zSIz{htITK2qpc3}oVb;FtXTQUEImHHzdU25nY3O=y}!ss?FOS7G`fJ}T(^igqLVA8 zk0_R5NgpjGR2rl~-0#?bXBg@}NF*&x8Eku18$QXaa;h|1x*6%_(nE6>sP)Bpvr4-# zFgHTd^W%+WjfoZ|LX&cRabSCzB}}b0D7kz$;tCELqvE>gK+5Y_h~HJ)t%DKs?bj7a zYr|c-w^qo}N#%SanrB=;Q&CAs^G8f|%)o6JC;Iip&TtJ9vx}JuCOnd=qM7DOc^E4I z)*U`x_!+}Z)9NJx)ba)=ks>!wz;-^Ev97vHMyhX(9KyL^R+6SAqya;MLV`LEVf`_7 zEQ0rLsl(|i(V6fh^5&~Y{BdNGplTDzwXQmTqa0vMXvt!~D+}Nh)cy%(u}1F}X-!aw z3s@b<8~Wn0QKa3FtjOJnMdaKYnb%TBV;rjq(CQm;T+2^ zsH#aRm1AWEbRGA-zm_!6b4?;jq0KFI!hquL8q6rN*{kBGk)lZM>>Kd>{{X)DTrE~r zcw@C%OH2|%&2pM5jK+B8GPG!h`tQCytqd>fTL#TopIf5SRifm1ReurJBw2kuc5_^a zSz@O~mDNVYtU3;u?cu3lur%`s6K?f_wMzJx+{sn^6A?kTu?(rAj(| z4@_sTjv0#^cDQf&PRuofj-gG-ndH?Jkj*Qanu5EB7t`&JoMJHbsnsn80^1HC5L6!& z=IfkgvC^%TQM{lWH40CrNhLcPT4bmtkN9jeivkU{`eUxo_}rte@TXrVjvf{j(v4NLao-5h%|VrMR%1;^Sp52mer}|d$N-WLr~n?u!u&maAQcF^xMe_Y-1thcTE0!=+EZ``&O|6at-q$)oRfh@HGWUILP>i_y%PGs;j5dvc90JakwY8G>5*EjW@PW@UlIP%1dmuoX3Ro z&MM+qC~}S)sm!O90!7PFV_;c{W*`6nB$7Y?5^>jkYIMmC8xGyRtDQ}xfCi_Mre~Eu z^1f+NmuEREQB~8*(Mc4_0asm!xY+$LdTI^;aHTYOq6Fo_OIDw2B>c|?emG?1E|5=h6F8=uX;PtzRCL2WE6 zs!iaomIb{oHj_{H52^}|wpuydhPqtb51u?VLMn^uzd~T^KL+6%D;{6OPEe)In%DIs z(;U~dh3~Mq);q1bnxW5mR=Fj8FMYe?A&|WjaV6r~sh8rD6NIOn%@li%VK#g9+qJ)@ z*hdm96_n}+g69Y)UdZ~&kcWw9k)tv>kp|4fh3##JZk<1#B)P`rQ0F$7C8Fex)ueb+ z9k^4)%{5Xq_j3WeyhX=mpqf&s+s0;tw{8C62Pa(#kXIUFk-8g zvn*Js8x=Ds-WJW~%f&4jk)wuJGAk2cYzeXc{V`2CIpBj5w?9JVs&MXTxwLc5rdZWr z)2I%l98}WgJDb+jPfY18U&*AEL>M{{W14g?QsRV~@iq zVCTEd@sFt(eiNwdJ%>T`!m$4UNuc}PC=#wkSZq7kSlh1072&F!C2Y}RwPI;E9YvyH%?OVW zxU+)tYKn~a{$!S}zPcZVk1km3sR^~1_ifGl00H&In8Gmxkb8t3IjmeY{{W?UnIPLu zyXATMxiaI!XjPNkf*cj0{6fm+w5gdqARXdSWApSl)G%~o=ej`Ga#k(@@iT@p zjx0Oe`JdBp}} zHEiIzQ7|MR7T({k{Q=- z3=n1Q6ime4+U#%o@A?clIo%*aL)8~nERQLr&NGoqUz)>|)AE5e5`snj2m9k|%s9z~ z$*T9$rX5YWii@hM6w^yj5j7FU#a2*15cR_JpoMD~Tmy}i{{Rc;Qq*QJtx79Ws%ho8 z*pHvn5w#i&!m6zpZHlt-UR{y#4Dr=aQ^l03MiJnM+!8vG`girj6$sg9qS}<~>!?WR zC}`x-LSO{}vTP8U%eTTUrsh|)6` zK43=1_TL$?4lWZHTk!t?G%c&_ZNRd4kHmTIOIa(}(I|!WU4!pnJ-0tyKBESibMTLi zWO@YEdYFdCBwk^e*YI9@K1EeiEj3LwL5G;#O9SO^{v=q8a7}uef>Tfj5a>4N-l%>k z@k`U?)sz*d;vPgHPLXswbR)Hf-z-^9txAo8<#41~P_*p6;oQcWlZPn;lyDM}hr31j z?cdvcSo~9ivWW8jR&s9%S+|Qd(PX)HRX$lwCR}Q{%L!5t-1V{A$8G(wdtWXNEf()u zIzFreuVT35-X%kp(@PZ|TM9u??97UMq}T(0ZH2G?xX$X--D1^UK~jn9Ci0&U^4y0s zNubN(5~(F(U=FMG)IVE)=L#xQGDAv6x}-=^?ZgytL77W65;S$Z*&z)dnFB8S_4NI5 zqoiv?SathsrgsA;bN*CJ+(k)Q;Y-0+O$%2=OUX$}*o4)w2kE{27uy%(Y6n%;<~CK( zC7?Io`Bh5ZGp4SsqnVMA#rT0+V-+f{cr77Y1Q0^AN5;8)u{tq$i53RkHpK%J)|-TH zs%M4s1cnOB&U7;prG9-sd{t7rGhcOW<3(lomYSZl2^pCo2U8xOi~IUxULK^STP`K zy#w}i@s69ojxn#!vkana+M2GNDaukfSt79}{%wu#`(t)L3s$jZMr}6GnffgBDuzfq ztkdlQ#K{%!4L{RzsEBY{W=h$8 zR!>DiT;XY?Hj%GuZI2@MR5+0KjTX%r1vSRp6~h?@T)B=2agXJkEDswzG>$ z00O`qt+|$apGkH85j;o*&Vl`L%w`6d=BqTBs;y>O_IEf`_bp$>&KuY#`FEgndU{{Xc2hne#kGhPm)td)r-X=7O&l5R;Sez@OH z5%F~vhMJ9ZPt4Okgep!K0PPwQ;_({@Ppx9*N33iO@x08FK^cnanFl`ptg`7_J1gUw_r}k%}rAAw}d&iT*4Tj z%3egXsHfQc@r?Xc@rD`Yy%i?|{{Tnwo!lb;{$tDVphR9A&Lty=a`7GZM$6Ry08DN_ z8~jKh91S`D0Jr&6{{XV#PyXY)hv5+hQ@|Bz%ctU;wmzSaFHX3q{CV*mG1kCS{{ZFw zQU3sB!ksER$-jlluMVgxSgjWwaM)KH39_^&^$ajs{-tq7kLqyY;1Zq#MCn-h1u2mD zelp12Wa8c%nrR3`YI+4h?g-bu*wo+kKDnmw`~e0n07UlNMV!c0Fibc{eUF&#S&Vd*)cVCvUsE5c zP) z?wDOx5u7;aw+{>CXnY0nI%DQw(ZIa0O~H#$8++=;98`S~nm9cfaD=SfyH)Jf&A?Xcc?pg=s|95VVob8g-Hc-0~;U~X)7_s6l%MtbLKd9NBA zTe_#_`7uc327;!VMN;}?h_1sF)@~l7A+A?3=5ADWSC`3MLa#7ojDc@2OJf!v57M%8 zLeo;9VSuOTa~#ViP?S|KAZ5~Hbk(caTN)jMYg^TQ`&9y{o7ojt#r3eju)RF6NCx4d zWxICACGE>+$D-EAa8cY@RP*qwJmrBawmjgVctf#4NvZ55vsF zsJZ_D4CAMOKh-952k5h6{zmtOKgV^boF4@&Wn49Eu3FoJsQ3C}ns6A@UTx zN&qJJ+XcqqTHOj|*O@KT%EzERkEhoVB~$Tb^V9I}V}b#hg^cMyP`imMm>o1J-H=m^u|FNyTwQK$4i> zy_*{uT9oygv$~V^Dt42Ja_YY?CBw0{$En7)yAJCBv$?Ns>(IU$eT;lg@i&92_@g7? z$9$#+8bw7+aZ6A%mTpvRZp3+d*d1G6ag5b#QKMKRS4?ps=nyxJ`V@rVL?*0lQ zx9q#(O*Gu6;fY{q_aW+{u=coP?T(1U=N1K5(~xe%<@~C58~97a+$*1Cxn5_LH9c)| zw2?*5SGs`rHytgdkI>_rUkjS6X|x$L=oab~U}hpYcHR}E!QbPYA5WgvO&Z3ei z(pcGb1=4PW9gkb@>OPA{4)aSP1WDVJdzD>UfzJkZA5wzxMxTm!y1q>R05+B0yZ{Z< zD0>oZYxTK5*u`~tQ>n1j8uo}*(8U1gzxYrz947~iyjM+^W!3c&T9Ca!cnpRzfNB5@ z&5ql9V~W~FlN?Bh_u9Qh3_CHELuryEN#Ds!Rq&Nx49%Wo`OS4T9$}S4p<;3`G;A)m zAFaSQA6#WEWm;mrJNVX;p@IbW@8R5|cn*wlLdOna8J?CXn41sCKPWx7 zBk7G#ab+uNU@lHJv#7H(by|;v*)I=xfu2-lapb}zqo9zeR^C#!u^%N4ci!jaebn%D zs+G>DJ#n;qf2SuFgh0)`}cDrZDR)pBED{*!~}_vA`T# zV8vff<7IA4gE7mf@B*oegRNN;nTg;h+0bhL}?4;pN zC691`fy51h3Sv1`YSn8SOqvac&;4(Wv@uMkZryCDbztKvw?jtoQJ7}T)lh;0k#I&F znnl@wD?r59O3SOH{tuhfMG4jm`CSKGdz>yXQl=#m!B*&x`K5#+85xw0#AC4DCc+@O zXEmvLRK!peG!jC5xw0iKg3=^ed)R-j0jeqMDww)eE=H7-Bzc4@_k!do#2BLL zF3OOYaFrn*PnS)p7)a^`yrAulXX;+t=$knUjTUBSYuiS<k-J=`g3IkB$k4kie(q`FiX`JQ8Jh$PhVP<8K zW4GixV_p@RYPMavrn8A;Lc;6v^{(T3#>}Iho{j2UvnreQ+Y4BiRCFE6-AsnkXe!z` zZ^MR(fv(I@+woZS#s>=XEqL-)Hl;YYDk5x)hM=vZY_B(xrcpA31j}oS{IO#?Pu@aW z&t^g!D@x7$`MnjHt@mm*Z?(odj$D9Yr8VLQ4pB**HAgih)S}@!pYQg;szaV^o{=HC zsC>V}bkAv8XlH^O>;t`t{{H}MWpmoo8CBv=>Pv}uA{r`cRzXin;vkH)t}P+AU4XUi z`|nfsuww>Qfl~ia?$doX#==Ip!%M;b49VDQ&fq%nasFfGK#jYmWd=U5KyTR zJMD`qVQA%Wdq&$NWq0NQq^jLkMa0w-7@nT7N%aSOVf`Kv->@y8sH!(8c_QKn04yrd zbu2*`2Z!MuY=J?Fs4g5*WzO@OWq zcoEAaWFr z5V_W@8ZDz6{O@&HuFNYZnViVSQN6UN7Wn~eJ6TK(7j^tc96%K+mmST%h#GwAilEd$ zxtjcZL|UA}z)ASEg?n1-q#GMv=Emz|sNtN}2bS4!>G8T%@h1q{-Ea=j2^zE*xdKVh zSivdyYgtGpY72#XMmI0^(J{D(GqQsM=b%k}7aawGy2%DK#&x^#kGM%K8q))8uB%PLp;g8w^ufqNkuc?P7Z{T^IU@^~_#$%4H z;*QN`BS_J%#Q|mjf^JQ*$KyW@JBs9@+U2kgVA5dTM2*PiSI;3}?gq6T&dG^1X(k z=I1(mGLQ#?^n5>uaH@kPN@d^mIOX)Tc!0E(`$kPckaMdzYbdCinQu`%RN^tG{{Y@- z7XWX)w(rv(a}n@46|>;656X5XNb$7xdag&r9}c^Qu;TE;H4$<(E$!`ZZrk%nlkIm= zm(xNUBg>#NN2(jGhMR3|v12|9;*?wqYtgJwz? z%7AydSm$ACnR6O^0(*x1YVfy)vjbg4!gTc2stRuklWz9($3qQY;@lg7{Z?_w<1qD9 zI|+k%kxT>Fk;T3+cvr`599h2%i4|DOsx{I{`X6j*#BmRcYg2()t?q0n+y)REvV2u; zvOfYd_T^V(mC?g%03>h+=y8Mn!{ZuaTZjk1eifqygFmy>ps6yS0r*QfhcL>r+`!JN z=m45Rwj#t>oOE!UZ{sR*<59Xrz};0-hv44;wE3y*vTp$MiXKH*55pLUmQ|?)u_TgB z{mDPBIJk^&#%v=lB$3$);e^2pbYVx14*NW3ay&1U&z7>1W1cCbT|XmxV&C_ljWF=> zSUNT!AF@B7!MJ>p;(sbD{{Zp-0KvMJdWwEDuZ2rp5u{UL*c*&>Tk)^N^r5f9H1o0i ztY?Jbj*oEi{3fFC6T+6Jng-+S$VV>CW=npWadG(D;zsF%XRqZq`%WAP&hJFIe#?Fz z@f9jAS>h|jqsto9#*Mc79f83=>K_`SV-bJ^b`n1-zxIkhwxJ#YRCE6TuvZX#D@l@Z zW=WbWlc65*ll27u04#NIpX!zh?8V`p!`XG3rv5op5L}T z1_$E)4Ua8tD$reE2q2YBOa>vJvrbo1RX!JMdiA{eCThrBKt(1Ar1WlDUngRx=S}KUG(t@LP%N>LY?GczLoAs;wv+{PBvfAHdOR zd!1mkHibtR0b4kS?4!oKIZl$xHdRpUx{OryI*9h%V}*qH+lFG?TF~G*khVXE)?kuH zn$H`B>#}OjRaAVr(m=eiz0N(>6A?zcI(9p%7cQ=5bqKnDKH%)+*E7eL)XNb7sSA61 zVJhSBj;Kp20uoYVg8(4_oFBw$n%5_^^lzjC({{a1!V+~LH2coCvyhPc(Wd&UMrw~@87qiz-BhLxn@D?`$ z=KFe|TxWZj2yia%{ohrxofb6ZYe1c>my_m=NlR2?sLWcOpIgL^d7|U-U%l^!sgyFA zB~NhahC zhw3oqwLGP!#@@dF04ZIBuHatLA_<=8pCzT%=2W={hcw2Og+6moyTYTQ0c~FAx%b00 z-DZJ!y62iqsM0EHvao%Y`1dN|oZC6ib4rNm>Zp+nFxu?G_bdnI4Z0E75PdD#qll-` zIqo1v-HRPcL^ww)clLIUN*l!A8giZ>tIcWh9v57ur!b$HC0vpYYc`O(n{GBF9ggPs z=2XPfsLZTvEsbl;&8NS|x>X*#F>J1mo(@2&li~SemP*>-U2pvRb;f$3wO+>dg|~*| z9mDFrpb{L?2=h^%B4*Vhyk)C9G!0K0SZuvN552m6n7;jqhocUdP`Z+|3{dXu1FqqR_Ig7|FPMH%T5EJn1#- zNmucGLB*LVvq&K!adxU##C+;5B;cyrc&OHuD5?P$j3EGv{{T!bA@fP?>;-12rf$`S zP7OKxxf~y3Y;ePg*;XYaX4R3E{{X3&DC`{J;!`H%&1+qU-#NEJ+u+0qO)#wdC*qcU z!f+U<{uWeYawdmS{c%gFG~eu)RC7g&nyK-_KB|xzsHhsk+ENlRQK3lc2a<-Pv_C}` zUB}s-c?8iUWrpmEMgIV7FF`Jwagervxd9B}Oh-w@v!H0Do$NYv#W}EzL!H6InrXyxa+-|&;qaj#0Gm0~*Guk-oC6%I5#FtKoNye&9EvO{!qkzi@T<41O1kP$m z(&~=G%$M(oT{HZyaq*S#LiuGP7ht8; zEJwZ^Jd+R=ZzQzcYqQlXQd1*RAZ82Z2KMQ`*yuW1Kp|wFtS7UK+K5$6{{TdBrgz}eIbLlhNbLau>rRvk_&%G{65*p=>=i9zSwAro*`LS~~f)I}b*ls8XMaY$pj zN@c$+6Wj!zN5w;Dh?jmEvpv%`3kumt52)2N$UbsNPT2UQj7sA7pj?~=OIt~>~<(YUgvqu+x2o)3uAs==Q9ywwZ-QK*KtTD8j-3WmP9i38`}+v9iYb1*Qz zMDd`zBSlJ^#BCv`R!hB5-M>Abd}y; z9z(DJU^{~SF@wX-9?iHamxii1e=VuuxDiAdT(rq0JOMXAh`@kW`!L^ryPR_=bd#7J zcUiM^ZVnoaKFh^FX-tQQcqhh6{F8-*bd+#XQyQu$81m_A*-4r;Tb)0Ul>DsBHt0Hy z((CNM3u3W&j1Fu=q-HsJmiF_!$7eO2WPG4To~*$i}l;3k8n0Vn6NrDUeqE)og8~dk)^#$Ew2CIDi~=0t)<{@m~RN0OC%kNPkAB zS)GDz-~3I7{Uj>i0%bC0l{M__(waz2z(zOJ2m>7kwp!`gcxsNy;R@M9;wKwqxm0xd zWlG0J@sP;TYS{k(XBeo0cZH#~h|yhL>YTyMJdn}@aK`r9_r_y`qD9y|lM3z{ zIHGtCilZ~*N$K5cDyb5lX63tg3%Ar8V^$LdKo=8CXm(WB#6BC=I;b8Xsg{bV78IzX zU`Sx?*K>*)grMfbm=A)mRCu^0OHkEAlTg7vV=Y(2RE}a1ay0hEIF1`aLqk9v$ytc1 z>*gv_n~idHr*$*5ZhJ7?V*sE)U%!~{4Mg84T3L#&-5giX#MGwJ#apQW8ilX@{{XfS za7r#8DvrkDc6yAjsNC?ihyX>F{4uc+;FlmRTlIADKeT z!|9BU_(u%z<35tMGmAVxb3$}|q;uE^yw$3I?Ws8DyWre8&^O6z995@QdZ>;f@vAn^ za>;2zdX9{5qsP}iu<>FmVvAiglJVKo)BFomLJ{~0sk+LZ&qo4-Y$Es%- z;>=a}E-dwECcH_`xY?XQ-M)mMDR81Z#iW9SR>1aTh!=!6i`a3kBq>7l+;) zQ24W!!<$s`H9kpP$i_GtHPVP~2Cq}S{V~Ghe;VUBZX=^^8#oq_P5G^OZW_w14$lQ? zoHzDXIlUs~xgQizPnypy(n5fjdvxot*!@0OvxNM5?j?$&!~XzC@b?=Xbr&bFYEHpZ zUxgY?bzx9geK{&WihdGTcx%L&j!#*h{{Rw}k4i}Jz!6M^MxnoJox9`oRuh8K#LyLL zRX5lV%JGlKy|qm?w&Qh#Q*fNQ*Bd@r1xbY@Vy`=mqXVh;IPloY4Z+r_Nv1xvd=Z(!}LL)WXQhdxi`Jhq3p^ zAY!V?Xnc{h-~6rssMlYbkBf#fR+0d;7~O`M36hiLO! zgi#D~OfR97U5M&-9sRJMs&g7#;{jgWt})F$#$Fg^nJ*8vVOy2fW$?5fSDGTLBG`BA z#@+3Uu)Jpnjm1-=LbF~(NNEzPsfTqIInD*PI*)f*uZwgqOEm=2O&rEpkd9E;05-Aj z)Aq-xty4BGqfW~u7WDyMu;85j44$!FV~;MCPTaw_(*FR{9wF81Q@9cqtTClnMrb^i z;Ys7geovRGOs!J`F3%JBetK~9_<=fwz4SvCSK|kayfem-)5n@Z?NJk4iJ>=BZlLr% zak%0tRAd0Sc#O2&D>zCX37RH$mKRw(!OVE%UJNvIvb{T6GEkux z2H)&3SyH)h))1DR*PL@nvhv$FePd}9r&-8S1d79(9R|s zJdnhtK=s2isUiqI5TR)cXW|+>qmMW!(s>Fq25DnJti#_FV{19MSC(t)vQ`#Z+xRQP zhD}k$B#_twN&cAeXNXkUWiI8S>v%K6T({-HFk#c&V1BltI;G50Kl*3G=)x%JoZqoc z#wd0!vC+v3iAsyZtcH$PQBNaVt>eG+!n+k%?w2w;9uCP$vaKjbCtzbc<2kQTo0Phv zVd2_nAZ3z;3XjZV#eF42*9SnrCuM~w=BJef5p^8|?pP+B`%4l31% zly01WLls4yXp?U#wSmItaW_mHPN<}>f+>)gl4et}M7TdJNjs+w8-*uPQ%><21Rygl zvt9Ge*cZN_vJ7vWS_5&yZrUTsKva(s?dVm*v$8kx9#KCv$DiENw@$M5{8j z+op#OP{Sa2AYDZCu<46BdXe)KdMVv1ufwVW?K0D;XWZCa3|=vnsf!hFLRu_?{{WEW z%gRkov=S}vrbGnW5Bl2inrF#2SBs@)^ft;X1i3y~g_Hv69h`fNYrp51eA~mNQRk3?hjmgcU8#iEQR7B26B9!aAd58O=NkVHtU8MqU)5Q?Tdve zlyG+o=86$(eh`c8FI*0old83%o3tuTyd}xGAk$}5uEgwIj3B7@TsZ?s9UP*w?+vBO z>7tz~sa`da7?|8#i{jP?ld7%MT+mF}L}#2gSyRO`MNi9>j7oMrE;?gnZdv_6!Y}>pYvU2Hu$6a3Q<8dr4mg&ELCnk9@7)FMiV2IttkZbeF*a45QN~rM zrck|nm|2U;sI}UVxtH@(BhAdwvOVpjgZ^A>W51y5?uPeKyg^yY;Vil^nnOS?M^3#l zuonYJ4G2M|Af=a742=(U>)`=^X zz8+p;I^1F@BmSTBYtQ*eI} zc4Pgck>+BfQ09R z5vy^NNbAf3nnTv!gZ1AVsmwc^EVYQ1j?@>9Iei4x^wLplLZ}RZfZFG;?~HUsLf`5w zCCvk;<;N;!A_TYh*xKsE|RILSm!AeiohMbgGGg7hrA< zG4##`^vczge|SLD_%oGFGo>Y5YBc!)ZI8Y!{YW3MgqaD^!9`bi7z61Q5lG#I@4u!l z7?u$z7CabL%*(=gDRUTdoe0%4s}*Jav1@A6eKT~YJ6-~=aSwv|rbS03Wo0X z)5^%|$jWVEF;{BWm?I2&U_g4E$+jU-T&XOj*wVr_{{Z%j-xtyvDk__l4SZ%?(pvyX zJq{`&N_JVOs(hj;(^Q0q8*F>w!vrW?RP7ZM5n5Q?;y>w}ae%vU4genml7ZAiO& z;UI3BBq{n&5-4fughqx3b|+M!OF_Gc9oV`WMYdnvZ=DCqo@kt`hqsN$D!aK57WWab#|F98AO4-$?~^~=5Y=s z(zhuVZO?ANc;C@Uah%mWZCziPS2N35SuvU2hUWb*?`sTwhMhLiV5Z#y@eMC?i`}W! zUjEF#WNfdFc>WCk06L-0{8H>dcNr=&!RmY43)ZDrV7Yjzzr$Cq^{WiEE5Y!v}?4Fd9~ z+hdIA{669wg0XU1I@mLKC0T^X0B1rhN6ZuYW8yy?d^X%wdRXdCEO`VtjpIUlV8rqR zlJxv55=nIjK@lQ*?!2!*jhr2PTac-j?Ya8%>Cj*G-FwQjIE;cJ;YSXUCY&oaiioL}AH{drO zO$+83ZC+es7FDE`;zaoYwZ53{(&HZ(;fZjp9#1d|=N=n_h!o?vm6=mbQ7{bdN`La} zkF7*#zDJm;T3WiAV9OOmktp9sGjG$T5U>*~OKa6&fa4wO=TlRy=YyE!TJ2&^9l6Hk zA$!frE}khWDV8RM0z!He7Xudbl|YFpv%HSv^;SKZm^uMM{w*- zmd?Ufc2pXOQDq1F?S#e{!@s#?s$sLTv&EiLGo*qPm2JJq7WBu@GlBtyjMQeZi#$t} zND>yMk}G~>-rp=QNWo_{IIPVR64YhVw30&Xti2ALFm*oEL+OKLRVjx-aaRfhyN6B3 z`{Bc>kz%b6XEeIZub(PBbubNEtCa)a4J>x(^-0w%@YI9{lC}m@(jrFqY>hjsa)WtD zZXV5Pqc6&eT5EZ<8;~#!5poh1bI}V24Nq8EmXAIiCwJN53kpwTjAQYZ%S7Rl<^FIFqIGz=DP3LO~+SJU{M5#vwc^)$*w*~#gK96oeC+) z)XY*SCV>D!w3}nlWMj;gm`k}NOD=0xj=|~P-~R2!ENwbqmqBP$hNTnydoYuP zGb*}?b<`P3ZUEZD1i_|bm`Nu(hT}Fr!g3`p7gaK~l;Ygb)=1e_(lZrbr-^4PO%!bP z59LHqS(y7M+~OLH2Qf}M?t!YjaIb+JX`0K-o{(_;3I727oYeA(9;*<%jr9ZPj!rL& zVCe`h%y|p?uI&yFio`)J$~l{QYP1MA1A@Ferh2T_sPQFoZe*_kU_l=-4*;r&d^?1R|_nx~Ql2Jz-C9j$>C_QN(LeIddHt0b8}m2Oip!d7D| zelX1rZW?w`3k6jmoxc_+Yv3zN()gc=Y4SKSdU;jJ_&Cki(@3@Prn7*2b}Vc#E)Xzr zhFehz12l-teA<@yr#RA8vb!%6WyvO`s8T{%R1NQgnY$EZCZOWVB@DdhQg=3AOg>O- zrs^K2imAWmDk`pH$rK>@x70pZury>LOUSw}i+K8jG|4L|8md+jrNWSUkMH-zB8w+5 z3c%-RO7k^*#(9}-e=*;tA62oi0=MLO+T<0qm9lP-kVqo^u^zzo!C9I}bhTaUJY?be z)Cn$IN^X3`sm1>QTyy^bNYG?Bt$igzAcQ=;d%<%+-xHI-&UXb;-%Km8?gq~(g+seS zujcuu4p-EqnOy*M z50p=-=i5e(YRcY%|J_}w(M^)h%JPOH@O#-zh-pWLye%Q11KnW}= zypA@Ij;HW1ELcR#9<@G`Za=^4g*du;T{CIaSxMRKdn} zND~Bh_pZfW1&75qEjM1o`?|4kKML^c@lQWGu1Rv3r4q*+OMY++ERAl1NZ;2TT7MMK zsZ4_{J)`il*7$Mk120>-dNV5Vhb2iVa%{RIl~4~SHaPS~mpyuWe)z!NA%m{+=T!vu z*m|np!m)Ij)u(RH!rC$#tiLg$5>QP|m_|E5LDG78fIhgO)fFz+Te9I~G@VT4c!T7; zC;tEwjx5P@EUSfbdJ;2EC!?*JqNNlNDXGk5Y<=0Z+vIUwYGLCmn_#ksO<@N>XT}%j zZC4V_6~x(dM8enHkEhohlQ@Q+QwQ08a)rZ2dj|HPe zU0RMJNl)at?HwHpLCTgo){@-l&c^NE>DvhW9V|_Dij4$zr)^45^rOmhlU2$G!;)YM)xVH7LIrP#&?d`Qb!Dfx$a1Y^dUTdBX!>bhlrgCH7277nHM_ zR78&iKxgNFeXP*ybJ&hQ(LnEi1^IoWWJbj*#G3`y!07Z9LX zv_8t69d`XjK72qutB)ZQMsoVeq`S0H-ocdh>xm4ML>rVubW{mardq-yYuLxRBHi#h zHqNQTTQ@1QmYRaXj;2WhpE)PC38vHXl>nX7(o@tUh(0tlYPa3GU>1-yMoyB3YMH3z zS7|jKfZKdjT6F~hP>s>w^DSvAi7PC6ZSH+BCBsxrSCOjiFA?T6jd44x^Z<>p3*9mb zcGY-JO~o0sI*hd>C$~fM!v{R>tu>rCPr;u}H9EYLXbdhl+~IRSSynajF68QF6>`D% zMmaSd^|wqgsZauLwFa1w;GU(Ht|u8Q>6%(FJ-G#D&Q@_80`MKo7fr+(>aqMAtj)Yv1&q2q2?O2*yB|! zQz~1MIbbAZ*^OmAX-BGfbRi&_4`GL>_O=XaghDxZgFbplCxWhNqafUi8(}HdrtNh? z`y(>k*0#5aa>&}TXOBpg^+o|x>4&3<6&~5$dp4 z?Q7gfDL}AG%Q)y}3K8fnr&ccqyh6SRRn0wuWDFAQ2oEp45QfxY{xms0? zrso*}JK)b7@K1@E)_YgPP*i1^MoUcsP-M$8Gta1y(oHxTk3nQYy?qA$e~aSkP!!up zbH2X$=)D&V;gqo%x=X}%EkQhF%Xo1mhk>|0nua6RsbUJx^O3yA^~aE{UGYbv<~G>&p4}&c(PVzm7oXz0B)6TPw9%9>LWoa{F!esy#2>qMI?Mo)HO5DGts+4 zQj;^SrdA=YJL#|+?R)KyM?#6{^TbY_%df-g)1g(hA9LP*)+ma6<`SCAsVDU(6dGn% z)ah{wZf;^zubslZ{(#|fm1)OP7bZ$=v!#;ZZEtKs!jNMc;{i4*tlF=Co&sT3@=?)M z7G0X&xK+881WMI>1p7I0KiUV0z5^&xMV3>QY{NLIjhY%XJuU@{$in(#1QXPiP+J;k zP<3}@ZkwK8%JV#Tj^X$n9+J0N?)h6cJ*SZE@Dh#jr|i|mzh~Yhp{CEHr>o0rrYk|4 z(7oWP(m^Uz`J-?MC0KVhECulRj5F~1+$uOH#28LC*BVmSv`K0DgP|V0!maT3P$RD5 z0-#0Bfs~cr-fo!h;OdgfuGY))E@NV=k>u4>#F~1(r}M{rRnt>`tykw8pla!>8*Dx7CN{}CsciUQhYRy^mJ4G?8*+iw|nEMgsj@F%sW+YadpudSBB8> zB{#;3?n}E^s}7#{%~ux6RSOERRmve*XuKX+P^#A%TfUXSZZe!oLt0na*M>0DQjIy2 zhdqMZZ*T9m8}(G(X;4)XpqInf=yQ1yh`0ot5n7qi$@*55T|b9)DG*_v%dxOf+l)SD zoeDYHRJ0ryn!=+_c~U^$+OP;t962B&%j&3j>Xr$rq^X-hJk~ch(|laUhcvgnDRewI zb}853yyGaOdg@x&r>dS^F~>|z*-qmA_w9xM0BWgKunds4)8cGlmWWbxJU`-YNs>Nv zWUb5cpb6(yPoq)xLUr%*wkWB=s(~(OTiL~(vy688`YG-S`$ch9MJjxHO_@ZUgojnJ z$Em}MNf1F@Y8+G_`4^=;FY$Lf@lVE&58>g;sbh+fjdo!+T_YiioFP_?*bgu)R_fkU zYkT8Y3Bo(|E_?I<&o0jU^W9g*D^hg;HIfKCynD5cwLtx^*HT4j&r0s7lvzqbEI$d3l^C&y0{okmd7RgF$cEi2x(P|JzgrXe&1D)aei5s z)74D{9WzHEYe#dj2Nuw6Ow!|IUiRexDV)!Sa$}WqDB*bO!X?Wlz-kvecidw=E}7ND zffBBHrYRVmKgz4|c1tE>n^jEigOsYJkly_V>xQT%qlw(1Ov6MidMGMHBoi`)J8jn= zGi^W@oQb?7J1siKNxhBBKKOj-Zwb?tMOmfMBVyl}cEx$~DYERDH^QQ^m2{JRAnl2& zOu*`em88_E3bFuqV0z(T3!)2FYvW}y>C2`fOIt&i^~bB=&jqe(>)>226fcJPNk$mOMU=8`H88&a04#j<&}}P{2nJ<8O$pZ8Y62;}+fLX4%>*ehY*%Ne z5g3$AWw&rFP9|ZXKqtjCl(5L$*N!IKs5_i6ww6zDAub6Js4R`k0^ziq;<5&bPKdbb zCNXZI$K?(;wjjQWPc$?MEb~2}W(TNKxWp|gYMxP2uE)+}Q@LZlCQ@`n2Wp6DDkfl2 z{{X~4frap-0F087`CUUykuH{%R`xBh!3{bobW3D&QNofmu^wv$D;wW$d=l3d%%_6X zxteNKD@?7aTz%s;u5nuhPzifemlhadNqpxxMUpAqlwRYOw;x{T8YzSYT``+{M1F ziv8HI*c+P;q~qC9z+tPgwO->Vltd~9nPt;OO;;67GFHnh?>a*V!=lC*1Qq}wvXQv3 zy}<*$^lCH=u6J_0H0%{GH>Re{D(a}IT55{w%{pL=Yhc6h*bTt-?TYa=DKt2^tEq=r zEd#-C4r%g9KaJ+Ol+aZNcurpsDz{T&B`kz6zfC9Wk1LA}#REvhcANTWw47Z`CtD8g zvDbSqN@ac|!Ig5MrlQK(cQ+6&t6QbWCmeCZT-&q)J0PsbiQ?X6?j;GtA8R^(4`{=f zs@O1NPnQ8JAk;q{h*kCk-1=J!`bx&YfVx;}SlnApMpLld_UY!lVVY+V=b7bgV=0W( zPbB=KD>Ge~wTmz&;`X_@KDg}VENb`ocQM&%oj?|tpGzi1RMD{CO|}R+0fZnGxKyaZ zCf%Hq<1v2V{btsT*=$He%E+& z!rVXhZtznqqs}X6vTU~_p-D4b#$qE$DvFMLta`INgn&0E%A)%WdbSF9S}<$|tMdLY z6N=+_=T&sRr9)x#0CE9&!|l<;d3TC_4S0XXc?p)Uhh(S~)U}eqBuvHKVk*eM6}Ts; z-$Ah>t{h}kq8>Dn>u`jX(CvhyMVcGe;#%aV^OtXd8ca#SOvJw_+yuQI$MJP-KzB zQKPWjfxYo?!?C-e0#Fm?^+G*uFHVH-d{`+nR0~29Z1$<({{R1rf~2_zcT9?D1ed?T`wBqjuaw7(K_oXaiG=nWlY zlmCM%8541MPUC}YhX z8`BnnOf<4Aq%}95@rG$nM#^7uZEIm2MvQ2kjcF>o2Nq@wl9uQYj+jr=QW90Ap(Z@s zP}Rj&!0*%ySyGsNEU80p2#T)|U776&Ce{VFwmJU*qG;VXXKDg|Gpw-@Ok=-WVgCR~ z$ww(nE^9VnB{Y*tWOiaMani%nZ6N_x=9{Oe8!|F5rg;Qloq_3!okg#9Xj0K7S?DuN z>V>?O6DxsYZ-8hp*o9dLO!Gg@0Z{c41_0p=2I&a3s=X%>W>QP7svi9=M_dkpoRygY zPsPM}gkOfCu1(1!2xzyGV8D(}GR*0NTBlXT_U(lX+$oSFI9E5R%s8egrX{7&+xm-i z$3l$23OTU75yMk0JuMDpO`0Tmo?TTLjwBb7G88a>PNa(;Lw$}t*9mJ~O~i?l_zTbC zTxpS%>HdDINaR_U7-oW|qABZ|qNA481xbuM9)$iC8~*?-cS|VH5I>d96<*^ra<5z& z_EFCGi-_|22Fhfm_=$-4nG|S9Z@b^2w)P#(hpsu5-GysSR{&vjX`D$p05@Lk@Hgz$ z!QW?GpEs$>qFC#zj=Id+u0eiM-IY59QP#t$-uUoU>$asyrre<1j@9VfnT(3BkU7PI z{I>BY#0st;4$06T6I;|jdNVnF|CtQM@tYSj_qt*&>Kn4N=YsaDbM+#YN*y2VK8cC=16^y z;sfS?Tx6$Ebd3u|K`kmfJj?2;vpTL+G8jP?1Ow1o{{XHk&fLc_y0$&Jj;dZ7H5toi_V7P3-Wu6Xj-A@!}lhD%Ush2*@rP{^F>0ys?)GvvJ-X;R{MSTYm9i`0AdRBvzzV|HuzxD5rMipL=!-~$z_eg^alIkqna?1(;i3ovhvrdQEPvD z;cv1gN=$VIX&kFOibr$P7D^eD(AA_#qNfOa?} z9SWJYQgCMLB^+K;9I?4#TWfk^Z3R5o6wt4pR~i&4R@HlMes{zmkdjWzveZpc9=|V; zbkkyRkW8s0>bjYv+DbT8ftRhWewb)*?nX>P8d{kNLC`z|DzATBAp|7=jnlL_RdscE%d*i^S(vkFijto1BmV&LQF3vnmJYpR{W@g#3wfpv zcA1vB!(V2974r&VS(s#VJME=OAon|+_un3m3yKxl zowgb)DP*W6ij4&IHFZe@5+;&#vi>b1{$^`#J1# zMLk;AP4M}|ZxT%-#08^9Rs=jdvD46&B!Y3`IK5iJyI#jYi*oJp{uig=*m_kc5Jy-W z^Xy)h;T{+8bBJi_B;h=_FX4GA9LYQxbuclPCjMk^Fa!Ldw2r`IjaL-E-xW z)ZwikC6#x@4iS%qGAgr|&%*UNlSitKEWtaah>5Ic0MVC3%=`r1M zi=`1Fd`#`6en?k$e{=p(^W5UMPs-J{jzBtknrt^cr;zWt-Xa_q#2GGY6iNnHSp{f?R9(4J ztd`jC zPcbn)ii`G!;9vbB`x)@B0!f*+Y-np}DCVr03UdTVUw}K2f?f@Rm(fSn`z^kf1i(dtrZFR!kKj5V*VzkjofU z20~f9iq`4d1Y_y}2*X8}B=F}U(H)>F2T-lCx3(B#>I*0u-Oz90o)$#c;G!zLKFG59o^{sq!*&UKi~j(B&jpyuu5dBBkRe<1eiNqRX;QXOW0*j(=s$#5 z05|%6_~~M?j%`-}s13A*622AXkRXz2W@{LiiU@gf0zS~1HQ__-x0dx8d=!oMu9 zD={nhbgsl<-NXpd9+arD!ZE{NTOHX&Bt~JkuVap#JV`91?qxqn;s?=vZ|`hUID@xI(iIVya7dbOG^K&* zX58Tq5O6j`R)h)QV4+g#$9|_44kYbKPAe|2hmx5iMiGT(05@TS{^OYuSd`OnR8-SE zCNSh15tbmS>61>v|?II2_|$0DkZrEWI*T;s1szIsi3YbxCNgq1;$HO=x& z{{TFw%X29ZOF2znmO>BWBlQ^VU@77%FuIfCdHqqUX+uN8zvUh-c%KgpR^>S!X;aKsI|l0EQhaQf|hx#6uQE@b%&EbYZ%fFZ4t1lvgG;pVj- zG041V$ap4}qlkP_995A}iB+=r>C7!Ey4vzR{Q5~21bpv|)$qL)GWWkVzqKoI40!`A z3FrJQANW0MgB_w$wz1SyW0RS?E{IE?hb!rj!tw5GSYJ@K+wJnjf$fAKp<&A1xKA+& zE{SR=rus~ypytWNk+mcAx~6`u*XzhMY5z)6`N!kx}{g5;_NS^*>+N9)AT& zl_FXi7W$MJ-5QzWkFxIy=k+mGM?xW<*MEm{n!aFl#KrKsIEZ*`9?N|dO{Gp`g+tB$ z%G@nbg<1)DcC$vZ5p#|~zzTM2i1Au_3NHPst(kp{I1YHx+Mc{>{E^i#vHftSi4FOW zqCcgee{ZUR&3?q3HCC|-Ovf;$AlNLE764+NiR0yWm=cG; zZ|nT=8BvDKSj{p|%7vbS2b${>h|pU}aeLy(2W=H(LKU*5R6Oo#D`3xj;3cGHZ zph!w`ky)lKq$w6S2faWny7dso@<2j^`IMYYrKeRp0_^a+Dzp)*DIbJwe@qyVj37lN zT}4{7%n~AOMy{AQ-9QY5-bC?F8$jkl510en12yb{>_}9r610KThq(yNxxyD-Qr&$~ zQCS2k-0K25kL8BVBUDK+xm8m1Dx}KKB#UzMSy!3H#3kT? zy*O4H%m9#vUj5CiEb6z0MMJ7<0&T^nwM$#I=oY zzct)$3@s1Be9y&h5zOAJDdH2rk+?k6%Oi}|I(JgmBoF>g^v5F;##%;JU+AW6H6wE; zv-6_Xvkoq;;`tzxh_ejOJ9fR~&8nWIn2!2x5Feq(ovV$+Rk3sq#hl|{{{TsWy{6?W zEX=6tT1W*<@WY^lTLl360014ahpJsBR%cdqXG`8szk4X!WX{(^4%^?M}d_*fEi+37^-%MJ{wJA8{camn+a}2bpKY~guvI;b( z%IT>}sAQ(3iBzwpfZqyh)i*BjS`H?&h$a5~6gFqTxkXiK=JZpXqdJL9YhRZH8q;sO zmL>%xUt$3pSd3aLW?`pPW^dED>I&C};#KgD&rR3!p2CQ($s((r>oSU#%B#_U3SQc_ z_3iRIV*r+GamcS>gZP4$BdLh$6TaWV%`<)m%&DtplA~MJNJ~4;F7h7avD}}oJG3~n zX@JlmF0D=<({;nA)j`QcRDjaVmWhv7an`BC*;0`aD<&HQUk_YWrsC2!9`sS1 zW8tKkW>%TLUnr=fW(y=u{v-tSzhb2Ae^LR*7Y~eUozc3*eF2U*i$pun_kI?CEhOuE z+8{cTan%oRda3kkj>J3D(`!|ds!1ecZ3*l1#hKp{*1%ZZN`_$9)h;Jt`AGP13FStY zALe3P^uuR6l${7^IT|g@$w^Sm&{fV`7QxnbYwid-XKCD5TzR4~mq zaov8;eUdY3P9FO-aQ17(JYOAMSHYoqDl-8((jq|*E}kY}2FN33QK$!Y^Dr3iQ8_7$ z=e>MSiRE@F#*I9!ItYmbm?U23=@ttTs`0ln`$>2UndiJ&1r}eG)Ny)2mu1vZH{3%N z4>h$&ca-XxE=U`OumZq&+--WbuzAP#ZO92-UOB_4a9m3;&3SaN5>GNsqhVmOgy23B zFi49r)Z)iXg;)-we0lMS#4tp!I@3U%Qor=)hw9;DO;gBi8brw;xF73^+ls8ynO)IQ zb-_W__(clQMj_3mY1i<(i;MpNd*O!=aCDT%49J8IUExM;Nf<~g>Ev+woU+{f#w|QT zPgPU;QKgh#Vc^FU$5`ep(kUsy)ME>4gWCAgIEx7D1P&7SP&vnjTxkuAT9_{OMz}pO zeJp)1+^T*S#6qpqczeX@n59JUR9;^x0C|7&jYo)5iz>fNOSDs2Hdmcx;$+OJDnw>N zP}ttst<|a3xN?4hkB~)zE^4`Ahn(^@v}^L18<2mWTr84oRSv=pT2fz#;*J?V>P_rR zFG9Z9zaxoQT}8sd2~U~TlzD@K#Mw1BQFDR;(Jw<#UJ*;3)Tk12qSI}{^)~)j{n7-G6&;^TnZ{ z3#%iUSzbfMw7GAHHQ9}0j$DDmscQy1+o#hWinbZmFl=K4!e~3IVeua+f#Z>85-yvO zt8Uog{{XkwHp-JJLPg@fUkXaTS&8V~ExsY))wgO8?n@ zJJ}5vh}lFSM)1tz<$m~cgQ>D$$k{yHf5Y)GF~c*t+@mk;ipCDMi1cB1hjXYZYqM&~ zD4Z;_1c<8LgB06upQb$?8w~eRr$p*Xh8WUL(f3F2?*K0fPe)%{3{^2!Hz!NPvc`e=IhsWaTB6{GUAF!TQrB49STviL{$??t%w&NL3}MdM7hP= zAG!vK$^g3ezu6Nm$vB6GD{HFgpv^z(B8n=B6IPYvAu11Hb9-Z-#Yrv&sqhRC;O5Q3 zrufqnP5vmV>ZDluR!m{{R?_Dvm+vd!P2lmu&(! zUCgBeS)8@1>2#=l!v0YML+E{FjKQ%cWWM>C$%^ zNe3P(m1i)@^p2z)A!&JU8LfN>1FJ~G@QilpVnsl(I+<#N&g7YD9?3HAeL-#s#%w^m zkX4lQg%I^-WhB0i+YRx6kab!^P;XWi_GW$dHtC89Xwg_2P}0tlt>x7A?b{U`r&Re+ z6{$@$i!;(J%mtTNy}j{S4I<$jqg7eX_;QyuWARjROowZcV{B6P2kH?tSnD}cxP!qQ zk2Rm-1eH{-zy;;VbOG||gvh|y0v1=`sXWf=i^RSJK~DFet4W9XWHu!GVv@kk9I#d4 z%|9tw-f_Y?&kxi@veC>Uk&1O=GPR|g&3WV0Y*N-B`{J_z+$Dk&4^LAqq}0m@ZP>2BdmI1> z(Fiki?Lx~-7LZn0FQl`jzPMl@bxo6KgA|Z7<&}j*Y69wEWf&2-OB=2hrl45^1&!qB zx_7o9F>s8P{PKSt6!0w5|9Vh#E&z`}W6A1Ba(vmsHR#m~1ysCt$VT4>-So z_(q>B;ylwRpyHgmww_4l%bl4ffHTk@9^Qom0&#or~5L5{O79bv$ z+Y0L3Hia_K=eQkg){i@tp_p84XXbcoPkATo6&E?p{7>VTsEVSpJ{rsF9GRj*VCFIE zO0Sv8xw$vKIhDR4qlam27B#)UGrY}*fJ|_hdS^Bwp?7B9K}O}C4be~*H51L62K+&f zE;sie8=qayJbojJ)T(-x?KdjNW5Bg04W@R5WThi1jtfo>H{{VH-aHd9yi6EjW zYN}FF%I8^9!5DrK>xKlWnaML|6)EM{5o=rxAcOP3E^+|E7N(+OBFwQN3*{`EDBr#q z+{sc(_;Ce9XzLP2S;_oIaD9d)(amK29P_LuVzA84;E6R@sr9#@!oc~HgCP-_=kh?R z0F7tqtbTv{uq3IOaB+03qAHb2s(phjyM;cW^4ID8?qKG2)ODzyA$h= zTYxe1$vVe8#|AF$V~?zTq9f6A5g{Gkbe{@D7$t$S#_I$Eob>??+TuG^(`mC_uz1RO#2IDr+F-E1_EuUeQLFiR8a# zzQ=wUW%S+wa0Y3aLX`z_I9fV-nN~=ZULmSLibxvNf#&lMHp)rIZioe;=T-6Ccr3)! zWY`isiCG8QZ-uyT!kmZ0&H~{GS1qK=Bdg37o19)o=QL=N%I9}>DJ6;gpa3i}!Qzdk zz{*UtNrlhiSi1Pyy*?$<nR)^yjKQSe)2q&km5(GhlfYK)EhRo`}hCM>fBR~m_1adIa-EKkm7(m83vkBW) zrdb4{C^(}zrl3WksRhsiT(~0E+z@*1f0hxn81Z1PZYH=Ea&j*eGnzWDy<<8A8p&V6 zPs_FsK-F-@VkQZdKK>}x{4}y907DrJ6v#a4eK5v@PL@`Fx~C-eU*bhP(U~hU;{<@} zAk4bIL;d|R1r`f9dZrlDxI||DA!N%uVI!WP6&k{ouv6D;Tp5Q306vJEb6QjeW0>&W za+bAha70uTMpbiidV6DIKTI8(K8a2#r*&4$I2S9-(yYN1ThqJj##Jsqy|JV9bSa;d z!X?0hLHa7LZ{h81brkQG$zCN=bfmg%ZkNWIc-$Lx1SKWH2rKA(D&snd+BU5)!t1k} zS*|dS;ur>r5>x`A3MV-51B=Tn+{mhB9%RyPPAveXKw7`2kHYK-OVK<*g;LG@4C8Pf zNonPpO^HaszWChSRvefHd=Sd%k`!_KI`O4L7F@bZ`nv&qTJ9x8b!9kfhRH+h^~GVG zJ`(p*RfkKCp!?#n#6e4u+>}*!g8W03!p~CB!1lO}p2XX(9lS&rWfG24xJbzOMcM|A zvc5Q;_UrTh{{UQQtBi1Hh7v-ow^Y2}EL^+|8K*p`wY6T}*rJ{)y+>V<-m3tW9hh-; zWNFrtDL?6evVx;f`r~eV;#>l3fk8={)wkxjKG?Ep?$p^~HY=toHrv?Z%(TwPW!ZHr z$=su>Uc=uIvYcv;M<m&?vcM1i!B zz-&k8G3a<@A)BNo&C|tm@sG<-FEwxRc8KKlF=jHfe-jg|lJcd|C}3~qjQL!9jCUVV zq8?z8+Xu@+xb%i%Sa(>*5^QT{fHH(_2d}WkJaB7hxxL9SZ7-+~f7CBO&k%|PYXVq>2dCF;dAy@V=wq=9R~ocjwo>Zl zWAfVO=GVBxwX)&-Aao@U;-N^hN_tz_X`n!Cd*Zr~_c)TQrYy6njK&0e^A4`U-uS4s zyw;G?h^MNL;OWa>P*6?9yJ6rdmh1M3UEGkn4_n_KH5G#OSrq39P)nTGGA($cl0CwH zWAATFXr)&(qckk_Mp1CIDo!4#jwV^^g-a9ot!rbb$GihK@mP#(f}eva1cj!qF&6x~ zMl)2&GWSHQL*1}U$-uM;3%cf#ma!tr4*vivVxEqO6Q9vAs{Ttps!;79{PU=M2Bta2il17LQ z;1vDvWlXY}sLLrtmmoSZ!knpcN{g)FOs2K|`jRPaas!Kt;&oD*Ejuj#05JPMQ06t$ zRYN<+GaX9`FjXI1P+0AZE^GL6980BDvp=)OYN#biJmTb~?|(sj8f>WFon?0m8p@&P z-W72+QA*X-d2+=CKX{z8o%;ceVZtsJM{xSAVR?mHMdAvXB9-8%hLvAiB#3oe*7p6d zI(C3WtU`m%vZU=IN#~fy9+KK5U5LVT!1${AJfwn}rmR_=-GGu4u?&{C%i9w;)h|bB z**adG8Wft5Rx}1fBAe?crN#*(e)O3E*#lWcO{ zIn4N%E`i`wHMFF%FGA{it^Iltj*berpi5nFeG2Gc>KZR0`V~aWd@JIant11NmC?KF zyv=s$*bH@!IgHZlrBe|>w)SB#S_%IGCz%V;TK3m@W!K3TZybJuZ>W2)4xXFgU+mFiTPJ{ll1ijrZB%}FPf zikT6vPBWI6(PD5BaJx#h%}&vdb=Yc9b~nTg>`4G@nny7`J?0eQ*LIh1aGMEG>j+x+ zNMlznvpYE&)p~p3w$&+wL^4Ea!&8ve41B?X0N@Lz7twIgR3qz_VHqb%^4j(um^&y5 zNQRhNMn_=efUH-(6pm;DQO{7Of=H!wj#q2$wo*O)?}onRK4%dM5~D9NNEpIeL?-1; zmA%KV4dUf2m`uk??I=S$kgdr9g{_GyN;0OFX$qT{2)aNf_>zGs2QLs%gpvZyD}&4c z*e&`If(V4br)%MgSm!agf#M@d5oIIT;fQJ^YEaWYVNB69jM2s|q<})O!ekM2BrK!G z$Rw)GDC%TwVW~tn_f{s~qYQRoXK)U<*U@#TxX|jl?HUoQd;P*$o-39zDIezz zp#6Jca=S=Z^t7f+yg`HGvMP!ht4--+mZbF77V5wKzX<(tTgYhZS!}~HrXc?S@Zh}m z2?NJZGObkH9q^DvK4Dn2KpkgD)K8_a{PBUkX=|7*f9(*rHQLZMx&DQd|QBEG4IWW zJsXL;wVw-l{gm~89%p=cnbq-TaV!;ij%iZ$b817NZV?fCh}9!hQGJzuXB-;U9Qvj1 zB7Oe=h+i!Dy_9f#Oki;T03{YMcak#_dr3D!ROhwS^2i>JCWQVt;{bpO+v|$+MzM9` zg;F-vDxW!;no(CZ3REgg>F{i$mtfio`FXY_0|7Lr%v_2WFA3xgt5%j%Y!vnK$8MwUqmRwjqCH_og)@ z>ttl_6&Vh+lB@+!m;t^20JHx9j7;5@@I=&sFo#_6B$`fLBrNVh52tZrf7b|VMaHR3 zQOR|4Ux%uQEK$=+0kgzE#QFVyo-64bE&@YTf*}o4npD-+!7PF?XqZ|Q&@ zTy#q6&ICf7UM8-*3q4AtGdU2lJ<6YdOV|%=9I_z7ykcspx?Vf0g14WpF)+MhHrNrr zd=9WVhN|(6cruBH#QefpSw0RD84QeFw2eKD&MxUH!~hcvbIH*illYYhc-FF)l!t9l zxNVQF7o{MK!^voFJP)0!*_3f5CT>i0vLuB`eI!|}Y+p|h`iCn{oYz8?dR447L1r93 zmuJ-MYN+XXj7{z}ZNFS;ZYHbSG6Jx$5NA~lQ{dkPRm6=|lOs*og&=@^ZH-OD)?kuS znpERN8~8E7d3Aa({IN>9X5JLfrJ5m@ib(=_TAb;z_4GKlo+7hs9X;rpbk53yn|+dg z6jRNT*1=s2X3|4fbtixG3~U(kL3_09RrEpx8BRms1SXz&b3Pk*3~Oz0$*Eg@ss<{4 zDx+EmcBzPInQE-@KZYD0&c`yRtD|zF>?3tQO|fMv^;mMqMcp3uL3nk+4VLjht;xih z#Rgp5%F0sQsa}<=rQ;-7id-8GmhF4v=o}z9*ili!3y-HY=5gj*)I}7LAZuxG<9v5IM+#Jbr$IFO!gDRQta*~) zDwdOSy;ZV-y4k!9nx>rQ6H}6bSv9c#04<2eqQMernLDl)HUomtIQkm8$~=;3-Ku3u zCW%jba|yTd$2*HvYaZHjct?kU)^~@hrp`fu2~Rb^1P|-m9FCSu1=dbb#%nl(C#MJ_ z*EYB5W>wp$_r;W)3#XD=fQI*~hl&}B)p0&&Dm}dA2d={zGf0xJrWSt$uNxM0FX%w& zh6IZRc^s495%+AiCuT{;b>b2MMQ69huCMa4Pm!=fsHsz+5pd~ai`L^Q&r)2A|` z)mrCY-Z3SZlXHK2;=YZ*$yR0&3ymm+K`Wzvfp2^QNJS2_LUp?6B=5NY09;p?CWY2@ z)Eh#Z?Pb9(ofL$UVU&@`ZI4^q2QcKMax04+EKH3tkRj+l-x693ofIVOotZLqwW?$W z`-VYbiwmghB`;kJ`Em(ICa3Pm{{StqS<5|FTe&bNaF;e&C`Bt(8y=cVVB`^J1Sa-Szp7cInoIVGc)@( zBdy@hrvN32xCFWR_Qr;@DC(4s;mkS`tGVCV*0MMuT6d_dWmB!DYe(!C1-Zhirw^FR z>Zr2#VZ_-zN5h<+qFMk5QdC&}_*~8cNVjsp{vTF;Sqih6<$1PTvQnl|R}7@-V9_yA z=xzoq4rsfU6Nab^7L+WxYg0`auZ86d0}&PW+qgT7G_Zi+Qoe~{xKGcN!COqtOD)2s z`fj*MZnCpEhea1YUnEqqw2JjA516Ud^2A{d(A^G1XS=$?Wjc@VDufF{{YzSg?I!&Z>%eD?{zwv-B&4Z{{ZKjJLK6<(eb`>7z$;Apsm74@GiCaTl!-g zu(XZDj}_{0{{Rv3HVmcBbZARJBg^c7%=4KlL$uRNQBXz6W3a#X(+^IDSb+g^v7ANq zWz`;B{{VjBOK?U_S;U#WB`q9pRa46|HlyWFLdT-0^~E@Yk)(xH9Bm9GF^I)J8qp?s zod6v94tDY3G+2fG(7dHU^0C&WK zMbe2d34|QAIfXEiNp!r7Ndcm`Yv94v86c)1mRaVf=F%4nvE-(mOnrTN{@58bB}h+E z*VjMkAf=JHkk1g(>0xGHa8K83 zVnG8-Yxz%OvWb}_sD+jqeGtZ%aME1$>wfpbK{8=iB!uexY*82`pIv|@Tk@Wx2=XZ_`nd(%acuJ>8$Y%&mB$08m2SgFCV-7tbKl=D+c(oi ze`eT7=A;DdljZ2l{{W6R79l*MJ-VN4GlNNjuCOvndoQn~p{6FCrWHa#X(M57oBsej z46OnNsI}p@o2d$3C~8U4BxVW*<+mj5`ubvr(|el?Ft)QA@Yqr`ejv3aOlZu^H0X06 z{9|l0Dp#f=Wmw#I_ao)vD0qfN5>&+t7637F2pzt-Zj!B6OYF3Y?Ww6#v9HBT6jZfq zJWRSs*J2yj=Z%ax%rVybEiHRVhLjz9=2UY>Pd!gPTktv`GTYYOv68JytvL(ipn8@j zQzMA0GWcF8f{;eRhf~_#_;%uIHdtH=tT>HICM?%6s;!i&kqkfvUW@(wu+Du~G`Xiu zlS7>8Mpb69RKilUM*Otq6<`<@wa)(7VP2_*%$0Lq7H=MH!}-=m4MtT?{OM)*O2I3l zzzOo$DFl4FA54Ag2ZuE9w5c2AXkH%?Q$1HYH7Xm$S~~6~;0js;OIto`n9UAfPc*d* zDT5QdinrNxf==DAaqndcMx*T-lBNx&rBMQZDl^0nvwLv>bxSxr7qKmO^T3L&s;8 z*LGljxcPn?h`P2jq<=UI*;JvDnS-F8B}nipiU>G*ddZkA+`g9X2Y-BhI}YrC1?Dkh zFDS|mVh zRlvA!mtL6I>|=7sLC-C*PQQgYr5d60qycAdnBfGS#5gn*y$FNl?`k$b<$f%sUMuuhSS@!MeCPGbJD0vY;clBNcRg ziSs66jfxf~Mgwj3xxzweN_uEz05puGZ+^DI#E3>=a!OiRkby8RPWM~e3k~L^lt`jL zpW`itz^K6u5vr27X~KqMH{l&EhK|%FB5BK~E14h+Iw`gRaTZb#5l<*{$*6Ou%2oW> zSvwR!9Fm_iJf?9d*B?=Vn2ky~LW|G1?vEj%Y2>ScSyNt)Vbpzxz8SR%5(=WFN_4K` zv%J&oG-8G+DDuXsQ*hr9_BI_l4_q*-Q*-Ba%6}224^gtI`M;0cVVOlDr8ONQw$XBz zQz$;?1ijA}aE|4X+(N8NM0%?1-Xd{y(=$t%Ross$wv|!-xI)(RK5H|vc#>x_`1qB? z3rN&Uoz}D^u1gEw+Wm$XAQ}_qll7I_GUia<^VW8FO+Xy)M_;&bZV=kum|AsODzT)E zN7V-5sz{K$oi;;Jo>ykemC{Ki7GF|m=gsz_aJ>~1iil3-nFeKNr{0c=`JNboWfu;lW|7?ILSXqXZtXxUZ$ zZK}Zhf%#!gPz-DDv0YC9_qRKNV@~iuJ;Bfqa6QP(pM-M^_IiPrpv^*&s#<0RZ|F-} z#>b(?hBfsetZ5zgj}^cQY;%%by5Jt(^vMP#N+eIPgl1EGI1<4=27A4UaLJ29@MDHsYqcf_D1}5A5yJ1KK z=!RKM)KpbND#cQgm5r^+M!#S8!`xaBh_O<%d6YEN%)0Fgx}6N$-`DlR=`fjgQqNY* z7?zM9GM&C(JU42D^F+&21i5q&xG{x7heK{o``hdL;PjS&6HLHCLmfC;hy;P7euet2 zzE~N~;VB~P=wPUVs#jW-X&xZD(!~6rq6o)ms32U=j|c z0tqSlYHI3uBNY-sB!rn#+me5~;M+uD(GsJxXUyi-)V7Mu2}A>XUD6J;1=dLO(dJI zq^oG^X{1>tXxGf(5(w+l<<}DxpI0BmrLTlfq)ab zwUu5B=3SqP^Gbpv@@~Gq$bs)nEuJ zQ}G2r{vlP;WFMmRSO*4Sm>Qp&zLK%lSAw0IGj|FBAX}+8^Hnhv-T=9cmi~}9s2c7P z;e7s&;wq>inHpkI)h%K=kLQaUiRi#BCO1%Ja3w`&ULWw5bq^~qtgXrF;5J&Ayvg#? zakiE!jWSEYAf-7?+hPzi_%}w1Zg!x($BCd#)J;LTV_Wb~fpZO(gAQ*|Kx*Aw|*xk$k{Xu}5scp2kl!4-w4B#Ng4WjpBq;ddGQa0zZLhGlG8WFoTPeBesbvf< z1NAyi_(B=tjFcpFH1UIDA~$lolZtYU)8;Ghg@)|h=^2RF974vMsUs=)#-t*}S{t`0hp0K65J3d)CvnJlG~NfIrzU;Qz7 zVbrcET$(yF6e$Grw9LQ+Qb{-8e{4*m5`Zk8s(Pwu2o)>k0G46C-sip~HXsEYNZocB z!@cUy#8WbPb+&@-^yzFYG#P{plh(LNr)po3Zop9c$TKR zw?uT3Fog?|86{P1xi;<776u&xPnt|4lD48qX-!lpu9pcSt=3WQaHg1!#R)bLhkVj2 z^2{j`lc|IQ@qF;2nYjfAI&BCX&UKPjnmr8h?5L*J^tK)ZLR`jWGAhb5mVxCV0Xnze z+YpIFyLG^!-HJ?6&9tK)qXNfO1Gh*uT!~mX=3MN5$+z{woouFHbW%~v6q3`a51~nC zkUr%4dmJ$)EUpy>g(%R{-tx;cqdl}Ubo9kpi5e-GNR&LauvFDC5{TJFnJsdC#wK{s zAY2KQ#1Y3kIz-JIzmvu2f^Y0`brw3MM$^tj zpQ&3JkFMeyo3UbxkkN27Ikh53S5B3=gw@Y7qRSoJk1CP*R@-;6$G;Q}N9Lyv?3g}F zuqp~|hZybDAz;cN;#lNLbzIUkv2{v!kR|$D0BwsOK#M+^2-B`v)~8bah83rWyb;PX z4Pw7DucTy6O-VyXP_kQXi#b(Jqs&x{QZQIzZ%%v{VZRXZdQHmAQ^5ZKx>j}KN7=86 z^PW1)bIuFkeksp5G)ok;($dpQQ_9kaW`(s9<>QfMQV#tOaeXxC049?_9IOxJaq(E( zMk(dks)g?6Nh{D^0ez78f|5M{05jt3y03>a+|CTQFv{YFc%+tOWSmH^9_m}fx3(4u|^U6u0r-|AsK1-LAQ+cH=>c+}$e?e?{UO!K( zNziu|?S#xYb0-ntj>-Ha@Y_9wYN@K4MQ{m?s`Q=uZS@%P%q)n^e8jD-!eL$|xA9XF z{hv5mz3)dn^y&{t=2zeAi?YqyPnam4ABQ?wM^t^7=;mK0V)2z?RPxky`E|mYbr0^3 z1ySLYNYzFkvW%tLWzVB|N!ewj0YLQF-v}sG8b8rf{?|@EVwyi>`I>HXW;C*bEYWf- zr{CKXqO3*SJdpnYYh*@bzA;3;gR1XSv#X{8m zoj9olsq({B5pq}u0Ni>L+XzXHtvOU48CO8M{{UycDv1oWnRAF6aEJ>ZdyEnc31T1Z zwPN8%#o+dB9HD=PS4KZ5Fg3oO+haL=ACRg}0;ticoZG@m{GC>LC@YxAEWuzV-u4}_ z1G%(>9f7O`!i$f9>l%#S3ZzoulkQwMzg#(eAYy$LKc%QPOjGb4V$V7d*rFZHP&`!3Wz2I-rUs5eA-kj@EYdyvzdurO^k0Q32a1)V zOuz}tx~5i%;g(AT)iY*%QB1X2oazjfd5nN05%wBS;2U*4PCk|#%ri--Mq{ZzPQ}Tn z*Hv(BA#TLy8HM63<*R8PmaY~eG+Jtea~M%=>`!l8d}oVN#$z#WuG&P6tu|dY(=^&7 zLeBh9q9=v~aZVaWs8w_`1|rw%W7`&dIYT}*&8*mloox!{yD3*svsPzWm~cjAk_po> zqM@%@WulPoBXt8(`e|TowYwaBR)#@O`er~URnEo(o=Da|30aP+?Dn=upGe0*S;=oM>J&xUd&tC6N}<5V)AN3PO?PC(1fr%>_#hbF1+1ZF^`*t zJwxJ2_?V`yfXz4JZ3Gko{+}#p6<~v`Eg!CvBwaXsT&I&go}f}c@byE=jx-i#^(PS5 zCE1UL1-&-GG89ikP+^xtMy|aJ8(iRrmY6_^Ppd}i%2kRJa+la*!0DSI z2=%Pya^i{7nnWjJPU9A5n`n@ZYGRtIT4+*FDIvDA9=^D}q=7b7mV;$x%5!sAy2~+M z%^>gWanz+-GRWp-T&l_SyXbVOZOB-#d>_GMy z=T)ZqdM#{lDyZ;=s0$jBT#)6h_hTH>J1sJps%e);B)LJgl`dNpxE%suhgwH~kY~EK z`{JU=-8eFrO#;H@3&_9=g}twc8YKy`b--wCrQJteL=lD}5R?Pd!%s5=iR5p@su%)& z{#Z#Fq9ql`C7Pxi)Y2?+6LJ;q2>IbgbMpxGM8b#8IB{zuk~sp1TK!k>`e4CTxq-oA zoK@hyWfer#G;*y(4%aY331jbm*s;2ETpUIP(p=R+;!LKig=7l!s`U%!Di~@5w@$b^ zh+N8;dX&r`MH5S&Nc0UYbWB9U$rFRO(*TxfD?AV`jTKZb%gm*?ak)@`YzT1@5FiwV zf{Jw_2_>e4CD|=QK^@2KjmyJr4E{|Xd9S^PXT=NNRG)sJ?;#Z1E zCz3q?ubRrIxgCxjt^~kV5F!af(*4Adz-oce3j||!vD>!)0ImU zS&fh(!8P%bXHzoG6H>}8Wg|_F6v#JH`YCuRbWw7mn1}?TMn)Ss`SvFSnFd9ak}RSt zV`Ds#i9F!gmcN$@U2PFVRINdEF}zbS0037_$Ik;lYG_ha6<-k~sU%2@rEKec>^tDi zkdRX~=&LI7Nk-FhK(_tvUMZRA6a4dl^msOih69q(R(O8hm z2pVnFj5I}oQQtL+`}o?V4oEJFPLu+{dK=&n>429o8z~HjIFh!qn1_k=)US{YzykOE z0pA@g4i)w50ke9?xP8g8(T4@q8wmWnB%#fCreT;#Bs8%de7ZQflFHZETc85>H|uM6 z+uu`gaJ-*<*Pw7CNM4AO#WtkLsrmVZNF@UqDh@iyT1JR2oULjBgbZ zq6MgqhK71{Z~p*pN_eGM*zM**JhvXU2ML=nv6T4?!B;L4@ljh!M$1IywHC{m#Ty#| za}(m^LYu=4z55t0vI#;OS4xc%_)8Y)V`KG1o7 zQ5XCG;N~&4llPXXO$sFw}7DH{c@=U?I9V$m`a(K9={2|OPB0JVxLqVq}Z9Vrd zGsT|MDj1qsJ}9+>WRL(m-v0ov%O5^-ZWkyVw+Z?lDa|sv^msE$+C~@IC16SXqSwLb z*l!C%YSm$o;uPe5Dsi91QzLODQ02M3$Y3qr{rh5NY-)VgkJe%V`PJ_v`&98pO-B?p zO$KG8TbU$wd*7zret2fR;6QZut(5qkP$9xrr^0_~{u|BM!l391u-nJN!qU*@w!CVDBb#=dMVnIPSHBnTyvKV)@@g(z6 zQv6f#K7+zO39aI6%uiIYx>M5S)Z_1Ks-z@E0&Hwa1e0T>QH_m&FHMenfCt{^!2)4p zkK(>@o#pMERM%!Ptg>i|47y<)0fp`$WN85askkgokO=^jeH0l^tNJIpTyL)2;@j9* zcFwA*?x{pb7Vh7dmGwRsR&ELLzB;(5Y4dEpqce)3ghsKF9&!>}PNf71RB3QnXhlGU#HFVK0{{XZ^wo*aqZnwonuGM0xgd)I5QP046Ra3BB zrdmZ$G=OUBZ*JJB&xwUl!G~(q9aG`{Qo=M>WGr?7kZ<+Ehsn`W{4)imN7e8IH1fWd zlshfKz0JYH6B{hY4S5AuGklCtQB_q*T0R;GnrXlvfGD}S{`bYyhf46#skfTUXq}4l z&ST=_AH^rEH0v#Uu9&B)KjBB|9+S62(&XE&KCyzTFgS5Wi~w~zpT~mJ`Wwry9!ego zJ)zGDnx>LG#UEml24JiK^Xb37?YTQ#?SkUkhFlh)9KisqFAQYO!dZqtjgk$O%P^YVyw4Ek5aHK<4x4wz+%u^$%qlGT0C}0;O9VEH;dnEe7}h}W*!`> z;Z7OiDH21?&jbcI5D&{7ap+P(xYW8;tSl@wH!;=TDor;S9Q8lJRyPfpb=5QM{o-y# z!u}%Eq|f{!gE53t{ADDL)b#T)w0e?4&C4u877oF60(R-q!to5Pdn*W?2 z*d0jRY_v3}j-=E{7`&oJ*CPuZj{AJ}$H?9!$z0%VWOUhcJS!p~0PfZu_x=9>(-lD3 zJQA4{F4|dK78fSs_P6)@;sQ2Nz^0!mcQBL5jzXmB_5T1)xUxqyAf_qltMdAmiPbp{ z31e&<9npd;pQwXedLpvOWDyWRDW$Du7Wv?TB?w-W@S~0-&I%q~Jv~LaZLm;O0bnid zjDOT+NHN$~ufo@LQJ`C86zuRT@(PveM&M(3(?!$mNy@XRbJnOaMB$=s4b4Lx{#P4} zM$`{+5u#8-g^`dUDdwdimiE&nz&|`VXqe0Dn(5jWsERh`M-gk@$i~2Y{cu|%WPMaO zM^e;8!Z`#hA?sk*IB`&H62~-bb+ExlFFKxD&B@ae*xLO7_Qk>NXfh=sX*wx9vpES( z%A`pkxeUC~YY*#<6sqjNLaEH=tubaIrbuB548;lB*MCutn`)B-b(bt%Gh3E(smzTW zu`>2+kT9=gi-Hq1&}^%P2a5f{T`hNHsm3wVUkQ50)~yuGSU6 zg&!pZlM@*djVE>_9ax~SyQ_6%!WMjvYC>7(cT(Do*bo8vbix`XwcF|8zZ zZY+Sqb79{2s2jmPpLCTe<{eusbBeqqtfHXi%;duynwgnMRNrzpz%>gd8}FLoSHU@> zGfJh^QBYF_F;(l0q`4?MSlIlA5LT!JxI*R-$+BjA;zo=@u!fD;B$68sFZpoo1o)*S zkz~C&WlEyQ3aOQtY79o9(%(E-NCj1qr$B_R0vdX1Gt6k2cVO2m?Q9^*k;Ld!bu0wc z21;;Ik1dEx9l927xC9arE+@H4yEMwmK&VAsHU|2A{)ZLijS}WJLW)Vb(ZwtP2Gq!H zxg%>IOf;D6P$W{pJsSxO@d(RbL-y;_(%4MU6l;!>n1($}wU&-q5%-Zi#^n3;#LP~p zm>MYxs+v?2M|RNv0Ew0}bt8V5hQmazfn*I{PX$zuSI&}U8*Fsi!uR*V%_a~a2vL#H z)5O&6O<3;AMBKMql|G*13nC>fZV^jP;0Y2$O^Ge0${3E8#F^a^)2apOs-i-YR6{nV z3$pHS+vSF~#Vin+8APb$G;zDw1z!4z>OC;>LDeWtRmVA4qfiv9>6t@sVc**QFhit5 zb15|DIfzG%o+}MV=Jp*2&jdNcK&I+%gdn6!nu8UOEUI5%4x&e2O_*cdV6as%GzqGD z&Jsr;Ht*-lMb*Kw0VHZvo?l-sM_p9XS6Agy+ny4dhnvidlV>5w1va*z3hZ~=9S|JY zJ!^^4bqqK~t=hdA!1)Iac)!Dt(PnvV44ITLC|b;}sI^3UUvX{4_tI`U*o<5pA7cem zb{kn_+<)MI5cpe~J$_eI%|c20;H|LqYYv{oVu#^?Iq4W$8(chPctUX2Wizml#<0%2 z$dMl-5A!d!3kf>vqkvoIhx|}uXhoUakN~}upL2}>td45S{?wdx7Gas?3qd&N)CH}W zbPiB*MaQ9F;HJ~xPI45dB4V7a*07PYPMSX^>V9ZV)fg(iE4Vz*oM1Luz_UO>th zB$F@`wX-bMF$sYn*r>7Dhh6;-Y(8T=(@EVkGeVA}!r)4*MwHxj@81X-4#?(TQ9}yT zkGy_nph=VfN6YrZ27nO;5$};kTJKvCB$oj9vh=YSNxHvz|!+ zt@>ZA3V3oB-EObY5r z8N!V{t!}ts0@;?Hk-X7xR-{zQT2yNtS69>s!~lSvLI$@#5Wg-tqY~-_DxqtyrSN2I zfqXA8eZH$EJSX9uS2$EqN5#wW2qI|#CJ!JeH*dor1Gyx3#{3zFJ;Pk5c=g-7TqGbD zG#-4X(?jFpvmED)r^xsNAd*ISDl4;-OC;4bOHdsmS+x}?0;3@z8%in*E`U&ji#T|5 z@eXUhXyieI2KlsV8~C9fX8d@Ji_4IUyA;vX0moZgdY{prPN_Pqwb>=xDbckxp#nua`+HL5S0 zRI{?w)@BpWETk1wjl}HQF0H8*7%hug0o>unQKyBe3}#T`29_j`wwK**qf(`I0^=kC zdq4--w##j*ql%$XIjshgNac{fL+gy0GisVbh?gO(h2?5|!btV6l{FRw{JVWIS)@jW z5{McV+Jl;CjLB0@Tn#tm*@^Zi1hxC0MDk-)s zx*s!!lBQ*jN=c72X)P3g%#Tbffi@z^vo%+0{2Sq>jrCJX(lcukJj_ZTQGS@I)LEn| z#R^-6OU(Qnt;!{+uY)v);UGqo8o9It01`_vAyff#bFjAfq|kxYDxcD}Y;3%F_K)#j zFB9Zm6I8C(@E5yxFDE!=8TaBKkfTpx$iWj>m}%w`An_V=Hnzi#y7N5TFlyn7I(mqTBk4z;K&!d7=e5cCW6-*kv*wJ$DBQ_WFC(M5M=xB+5f zMx(Wbwl_8(L4pC@69(Z*<(aH=B~>hXWVk;Nwzo8FF2rtZcJ?+sY(`?>`wbDx7gvKO zX~eR@FAwG452i5?H1EoV2mlo$p}6c${cU_>W)h=`8jgPc%WJU=4Fs6%L2#8P$s%WL2oNN}X81VS)CqV9%hFIcbvgXINdD_%m!!5Wf$t2TLO4gWI z0d--2t~p_|qRyFTyDkY6{lAw{b#xx5wb5LCqO;b3K=}jzv+V*SxFyNW8 zmPJRL%gh|fA`UlDR@VNQuvB*CA!y{LC^Ol47K&J2LbnWidxLCfWoI`-s;Sh$Rw{b+ zs8mB&B#uZ9M0;HP`wVnx)DDia%I3z&Rn%`$6rwo8G61E;tluGrdr6Ql+M`c3ORcAn zNilw0WAPg`g8KZi$9qiP%X3JD9W65m^*Zwvmg-Z!Gh{vCSs^sh89dyLTU>+J`Qp3s zOrxrWLXgBp6z`?F1BxA)IE5W0Ra`;L)M7;gqz|Z{*ZE?HIqlR>aZUqHg?&vAH%z5u zg&T9s-|1{df^I=qNuMS%sBNmb)QvO>(NB9bdPg+U}6^dISq+a;tO)>i;-j?89?IbfAT zmz0H!Xt^MczcYaViwzRHTZ9!H(AL(xA>@V#;b(R$Yg?_))M0Xw0y(7*nS|_BB_b+0 z6M*-1iL|pR7ro9Xf)2iErLX}Bgsoy=1_@O_AzU}(ZieT+8!R?Tud2CGl{6lCQRQ;v zF|pd+K|KZ|nqm?bfwCE@;&w=&ipk6itvXoxVF(~0xK0Yg8%M25F0!WM%*VCxm*$vD zte=ilXCxs|#epot&28^*+ZMtGG)z@PN0`j=M*>8|=+=$8kM+R05KtqMh|Mwy)#PaF z8cKDx(d-oT#D;?kLEQ-xv?}pc)Tsahju&u6{{Y(%fG&U{RE+tZ9bGi*S52y+;|)(! z3W&*Zx0qk>+WYmv4kzdQd+kg}CgA`xHxnpISn33&P{D9DFzI49{>B;xg#zwMH#N*e zY~d4=Q6RL4r~EP9etToy@O~I*fsDisx9uFePj4<->a@_MoaQLb9e;<(t4;jtEF$`X z>`M{3*lt@L=eslIb=uM)Yg`@TE>_uPHc7?YHAS0c^z%82y{e~&@@tg=hRdLO;-X8GJFo!d)@V_pjmZ8kKXBK3+-AuW4 zdjA0X$fR~L>LSIFw756A_d7E^-Eh$1%nSJLs13|Amq%e&OrPyFNt?tV%pgdqaYqZ$Jy^~12_uf3+gXVX&=d2%-LH)VhjoHRxad?%XNkf^ zD!jT0JlV;i0T*XaH%>-nrk5M5S z-LODzpeC0M3OMoZevdkQZBk0s3dt)0U^-j-?~1a3W)-5XLHmmBH;Vj4N~y@r>*JO= ze7BXg18vDTXakt>OffaKaq~di{l6w2};q?sXD%)Gt?!#EeTAL=mll8+QGSS!&sP zQq%Z#9$S|gW22{?by62D!GtajyWhxKM(eOFs-SrM4(!;3b3i82#F&W=Tsn!v63{6+4S9R z*syU8Z80IUs1v5g`$sd{2C1mHQxA2Cjm&v}apV@IQTCJ1GWs|X>FFz~CZ&pXt*1hZ zF=1j%f0Ty~qz;94+Su}yDpYM(v9^Lm#r$?QSnFcnLD>ifKp^w?q3uxlm)b9kxlye= z)Ku(J{z!{68y&5EzuOh&t^MAM8@Po{00<1@$1XF^hnF?@7}TSeh9$Z(_TRTm0_udx zarz)})tzk;*T=pvr=ff2QB4up%gGw`9>>#jiJAIl`X&DWaIG4sDE`p=X_c%Ju4^qu zxe78(AK_c>cHY=5&;7+lFGUTGvovjMUFf2JC0#LuF*aXNrm zp;o*~@wYwkLJEAXs-?*?TIyGz%wwQMerRbCmB5e?KxAD=c4gGJ7rr#nu4v6ii6g_` z#L0DV^y6R%B=IL)-7glknroVsTQ_-r81cr)Ls7KK0 z_yHHy>_>2W;US<&R~y(Zufe_;&N#BaD%4jrOIRFKo*J%V+=VU0?q*++Vb;-3$)jFUL1q^8WxbO|FX)yL*7V{LXK#0{^x zzp2>cd$5>yXg`IOn3|+qM`E#fHCItX$GL?TV_#`t%fh4cOBvSDg+wQFVWfa}3clF# zoKc0ichfhAesBEtp@}UtLz*Bhz{|^t`I9Rvri5k}EN^=ockPcLK+$omlCe;*N7o!> zPLsWex2^yM0~;n@6q*@z>sE_!5bk~NfdJh}L()7->*obn2<%PBKDaPq$j*rT%1K%^ zSf-0wu~oYeSoZ7s;Uk)|X6isInJ1P-P>R}B6a^rFZEJSLt*Y6$TF4^nO7PFbsd9)7 zETwemF2Fb+FbDO8O64(s?rog@A5a*dQlK_y|j zxNrvhi-z^Ju;VbXK`cizy0W9ZXYpKFm(s(&4fO~kY2K=xfZvwC`;rm*SYpAL0JuO$ zzgQc4*#uNIH49-R_EWecVn?O1dt6SXRzT#f*=<|IP>S|NJ$!(V^~U;dBlnTuvbnv9 z%-)1m)5|QRAU0b_Hu>M*8Y(on7dWM9jTJhhF3lcoFwu!)MX+U<5C^sK$aN~D^*|%N zY!7OMtgEW0uMo*dcT=b<1E+1TZrH}+_P8{KZ~%={@xt>YYE@oC)mg3d_rwH|eNaP; zl&wsVBb)|4V#1|2qA(fol=}7mg7SZ2=u@K zqQEGc(=>+WpU4G@qug8E4)`}Vg%K-7PgzQ;!I~!)$FV-wf)_pe|M;Op;5qL)B%JuvE_!bp_|tgYHvM z1Kp0t-xW6(P32H&G-!pJBdCX$Ek#sv$Qw(WjY__~It*AUX1FS|OwGz|vI>e+Nx7vd z!B_ZlmS+_o7c3J4$O~aAk$Z;g>MiYo z16jIk#wS$PLtU5B$y_U^DAC?qErQ2xqU?Oe#8?iy`eB1_2Y-J}kZ1(mJC@p07($R4 z(V8iXSy+H?ziyrI8VMkjLrK*EKo<1L= zjboB0s*!xEtNsWZ1AgTH0KPqs0^uUL7`ozEG#tp^xO$$zt)|TCs45G}8LoG~u06G9 zmtI$9n_w$<4ymik^E6m~C78rHH?ezaHV4+%x4t>8d26O)wQ6%_1WFq!;ri_EW;tyw zWh@l-GFMgBLrV=l#Dy|Q!sLK#i>Z%ciz}D4vt6tszh5h*VQy%oT|LU<;qTgqi98_Y z<#g3lHI#w$%@t*OR8!19{{WiC0s8Oq$33~l=nHo^`4R%s<}u&$oA?h&D(#y6pgbt! zif(>$;mc*2n-9FrxJqZC^Lmh~$m9P2njfAU^_8@#PJ8{&s$bJVmOefBg-?@>X!w6H zdae@BGid2=cqsE>4NO(aEvX@?g-|5G8}cWGLt4SXBJ@-~H-KULooc#5w)&7-A5Pw>=cSlMCxEhfLlzJP$cb~>@;IF2v%6+jNNeS24)$JFa| zO*R_${oz!9iAzq&46>`lmU02u5_(_1`(v8~-EypsugqhVxv8O)P5|Y$y{+>ft`s#( z%0zYW%`->Kk!~%d`INU{56bw1mg-(pvcii>ph+r*r!7B_1t#XeeJ$^TTRI{%QEfuz zK6!J?79{~B-(mXUMTOFt-APp}k_V7-(4%hl7WEhRvE1N*Kt#@}KDj04uf+vTLqIVA z9`@UROfzk&8Ix<6NLmGRYYhdXAG!WmaywB6nj$)g=2n)VC~&1wmBzbUxWF+MM%ty) zSBY3gurRp1k^^-I)8Ap&-xfy7N+P)_goUh8K@FrgYj^j;$WnJuRe5a5BvHXo+{qZb zE2hAXmbYtl!%IvfHbc)(GD}dh6qPl3h+FQ&Y%vLLs!7#Scw&y1#2+4D;kwQ&mxeMr z_gXPs%Z_MLx0Y5k`^gayJduSjanN73JyrsfSwlOU2g=%sKC9DE=>{H~9#3)FR=?uE zgPd{TWejJ#Cipf67YK{boFFi6d<9N)_71FI3`7ADxKjcG1?$#iSAqwTsS zjxf?9Kg#=s{6d#2Rmhp8_<767%T3BhmzyDS12E8~!@Ahm3)t8ThOZ`&aRSh9F>dSX znvLpZ1m4Cq?&P!#zc&?`XEv&FOeiWPrx8^#Mv+4eX%A4$jOOWk`H32=aptk5kE#m? z%mMG^J{lfNnZzhNqYo~)kp$ia?at)L*&*|n_?h_(>pHm8AW_oRzrNjZgbPaG$rnw* zU;IX;7o05mgX>Z+w^Dn0VC3FYW;z5jXK>QXI+p?UA1W@-b8i0tEFfV!rUWSpIYmuC zsE(TGqj9WU9{qdatl3jlBodM!^UWEW2PFa>fE_Kd*y0xmAsD=cRpb2c{zlBXeo)5!hz7?U3>_+Xs)e;l0w&SeJg&6i>GY4v?UpT@@%>(N;r%{C zUzF3(LqhbF#;GP@s6>PS(UsVdYm!Fyu<8eGxJI(MuEVU`U3nkjb*Rt+w@E(A%_=EE zRWiif)E}8mz`gBqG16DXY00O?TND+Wu%RdrBOaDw+?ODk(JDlumXINU>o2Igz3ue_k!klj>o@wjN%n9iosL$6b7+YSzH#J$L2pHV6nMQVUsT1eY_5r)cw(Q~ZIpNOg| zCDPJO6t_o=g)W@{WKq{{*g1oVZZQ&k$`KetY83r{{Y_`wIHsjAxW@=Kns~jW26X{E@(q+yZs;bfx3?o@!g z7^9BfR=D5WzB1iiV3?jaW@FD(ACxHztJ?Ue-%^SNsx4B=WSFhDAl(PlVxsXnpEU4N z146E$Uh8YLoU%ar-+WBKLJ=radZf@oFh(j^#zp>H?TVzEAEICYUoCWK6e>K6ARs!$ zWw`CW_?e?Y*q|KKpwmeLJVlt?9U*j!k>3ZZLYG2vC6O84IOITlhzYv-pVtcmbr8Y@ zogVSOI>lI^vk)+%#S#>Ah$-GIS@U0{%aL={Nle+Ives&l0fQ=mMw zg$fx5aM#}$D`5IVnX45{D;_SX`OgAT(?6Tw9)|0xvUPSE+Q0OeH|^*9LhN$hGYff_>VFX zZh&;graL%>g;iK-gSzQjDIhV!9I|uY?xX~$bpqe{+ZO!0DxrZqlsRKlFq@o&Fh!Cz zB1y<0<1j6Le)X~9R8%tFOIKa@y0Sz1W1-~}in|2ssc?|}A`l*$m2Wk-X z`D13oF)JMe-w2j?BuhC%VRTDx+i|%4Z~+9ChiEJA8Otq6NV_HSa{{RVJS4;P~9mwm7 z&BSX5UAz2NchNJIE%He6z*FKU%pyd(y8wO_Yyh=B>xSkHc?i8dA;_rAkycQ{WDIO>E{5XQkL?cRQh*0H6zOM1a&HT6=} zPSUXtbI=QZ*!o+X#kTe7@@*edtIk;PeLbbwFHhyi#Mh<6pH#O1M^7BX5tXjQH_q|S0E z*EG)fGlu*^$s;#>%7-U>hcSS9nQ6i>ANL+&dVz}G+)G5Y`Nt;@qIPsnFa}fDR&m7{ zhX!U}0awDc+4f4c4JAHjmuHp#02ehoY1V=@5u%vNh8ph8djo5NeAg4HPofgsj-Euw zjX{`+ZBmLqtUYY?%I`;Oo<01dtI<>GD!zTVa6 z3r5NbQ67((G-H&9mSwTFp}${S5w-{Zaz6lUyqjbWDcos+@wbFj9O>4H;%EHqmPnwT{Ne=ZFKM zVGHV;TH!PD#qBk_wd{{Xk=+W?Y6P&ug@Y}C~jrHTPYpNPn+d0>-sdt8CB-`~>& z3A$~1sp+SttY&F%06IiRP`fRzKiJ?Cd!wz;;-a#KXqhPuMUcwuTTo$XGxD!pLH_`#qQcvgZxQ)k(BPl5{{V@+H@fH9@apM8tV ze0SiEd%zq=Hc7^a@YQA%O8>^we;*$PL%|OU2m+{Q!k?~w%X5c zzSWNpMAF2volphFu>>CbdxaC7Q|5ec#WdVGm(vD%c!e}{(d*>XsQ@&RHsJsaUBAi! z+iPQz%8kRZ*owv{wr6-8@28^ld`A`f)-w-E?O~fVHKN&c01Y?sxmVs7hCH_=SBX}h zIpvn8;o`q8F)IdC3P96k3FQN*zssM9bKd)%1a|nZnDH8osa%E|Hr<`7$dEv^W~{kK zF44!RT(hVIi~0b6LyUwL!sQTkNEP{PrW$yenCPJ|QwZjkP2CtO z3*D`L;CtT?xQz;z(LY679Xwp;sSv{&^G>1_KsUK8YykH=Uky!rr0wr1Q9C zkR!)Vu}Z4zv&PJ*%elC=*SA5`#(m=m_ z5&;tBGhP!*G<6ja+EWjl6C>^ue!F$UHG^dfmXE?d9cCHxIa-=kjDW&)Jm}*ag5<8& z7aM+SfH%iK6{9tYx{+6|| zh_r#C#c+Xy<_^|KnyI7I%pxYh0oUbh0xhC|a!n<5O+4|kA&QPi&>a%y*6aHJ04!E6 z35%f!+9!%ZSuB&7oSw}z01-JKPdcXsuFS5u^Q&CSz6DbT?meZ1qZMOdat-g4) zynN0Ys~TME61A@jxU(}8OGbo9%0=X!qemovln(y5#^$+>>Rx;8{(g(IgndVKe(TT~ zEpe=9Sf~Z#)@MR=7VqDDUeawo{r4`_%9p36t1=a+se(Wn>ctP?^dlMobo|LX(K10O zB1pdp?zaSdg}23pvSk@XLro(?9ENBNq}uMEDh?&aGunJ-XT966Pb$!iOT*Z z<_?{X8zYI-d8wEwD4M1i{vv7;=n$z`NMZFCzAbKG1EWq*klxah9O1)%)25pqTXO~V zdRyBNI1_LbAdS(=<|K{AmXTJ>3xdPm!?rEW0u^y}Van^_6y-Ub%lU$(m#=btajun6 zK?;{P3T+iLK`Xs5T7(S~MJ&MRBeCs!clX7EE6D_0cKIc^(FaqIs_Es!tz3CoZEl~b z#$!YPGL2QC!EB9%=gA(+vu&7 z1X*JWm(f^TuvTDn+o)fzGnTX)6!MyUxspJacXk(M7qA2R;u>m7awii);iHwtotKxT zkG}n_g^g@}>LHS`CDe^gQiWd1uAqZ&%ouk0;#ZGZ8Fel#X7B$+cmUH3M4IIe? zF;fW?X}c3*O}h)59nScr^xESj4?lhWi#zBtdaDP_JUgz+b0?!OHB9fR+Igc9sZd3N zT$}vy9Ol!8n{w@5ezqLbbTxJwtkrVEMHJD`3qLoMu`iZYxYMlqkER)w1Q0AaeHK#3 z27sd?nrcd@-l|thb!)hd*UNLgkFURM15i6o^-CHPxn6%kRarDIIi*o|3ZUB7u;13- z%;H$WW{^&*$wQk$5}LAf5ya%Q(X#m~2n3E|f-UB^PL>}mFspvH-o4{OH2(l9If1a@ z{!~s#Gqz}9%hquW(le|AO)KXkW-YNI=qWLHR6pwns5IAOMke|-ns=P&S)a@Zq=Ic9&0vn zRMN;zzX~nyrF}oYe0@TdI#@bFg&hZ(JkM!eDl~`^R0)LKHLP()FWOb2+Y+>Y> zErr1y869j1?yc%U#^ULSSoSM>$}#xgt(PM7O~im@}05fnVV&ZIwz9( zGD@nPlQFNRtmacvOC4!}7zoUTysS`*H%omna1|WaIBoAu6^&!u*Enc3@ljI1)rj>n zi7DqS*92@&UB7L+VKV?Os3UTuQzUA7M6RfvJ0J$gsHz@$pq5EDSj>-Ot6S>c#@lxG>x!;~NKmOf(m_!& zv1u+!nKn=s_fk8P*7&dgs>!VWtH@m>XIUf5WkW|V0YW+(D$|&lG}}a`w6bt zAf{egdf95K>YxI7m^^m!BELc`I*-Nu-xH*rQ6^4em6u5trk1X@N@{v_5Uoscod)~q zay^fx+hPHJ#2b4XAnR)<5!1{iN}|J*iET$h4X!&}Y(7}5gF2vO#HO1&mo5;fC8=FE zRF?Y@dtcb~7$8lK$wa51&qZwi01bF#V`2z$I__=iNAnnv;0Y$lhb1FS^tnA$Rn?T{ zn=p;k^X#O@q>zkHUnq0avp23Sr&ZL*B71)0-zC%G_`lNErstlhHyc5*J{CR;TH)^) zQFFR=pH(GFsaY5D+;_iAe@t$B1DZ>2zOWiWg{o8M`8S9#e+bU<>I~+Q&4N}$vZ*9) z%6h4{bs+oW2*gyPdZrcb!#1N~;#OV8e`Agp%j?@b;Atkv>wqlTT}@LxGZJsADOi~z ze!DqzKlbBAOjyJ-B~kCY@VNNCABgDZ0Q|1^y~z41Ox^==ywzG3}P)zjI5c5Qf z6v4=3E|*=bMearJFOO|c;LbSg8!_UC^xOdlGewS;CPeKq>b&d0Wm7@JtTz6C3L3AE za#$(qrsqa#qEPQo60k4nW+L5so`dul*-PL~Jo>GtR*y$FIh@|8=0ux!P3&Pn;Nl3- z`}P!GUE?{Oei9tL5~f9A%bHEe3QC1#169t~KDM^^$G72M>DB_ZXHdstU!Dv!0Mj-g zhf9NjxPcw1D>kJz=WIo<**BfU3#z_t#4X2yj+ZcL7Aj$RX=&S+8?ZJGM^bET1^l)) z>T&c=8SqB|r%;M)eC`X(c5N}dOoKBiU0S{v7c`6LVo!FvdW8shDwSsc02Zc1(rp7c z219;4PF0&}vX+~4hy=H{{Y>pmgoWJdw5Oz`F5vbsm}OT zhvD+P&Z+X6sMZ^W+^j-NtB@4n+6Z-{&)R+mNkXP2;ETmfk8Edp9U`GMXc zY{TOz)O(BC1N64O2Y*7Q>Z!8sE6iohBIjj!y;#vLA&}0Jor!p4B$n6@DY;v258^x; ze+*$pBAq@U*HUTz$Sr^Ujxq-_-~{s{{V11ZlP;(8rpd8 z3L2;y;7d(*1dgGFuBP3H$B4)LE5vY4{+mr!U#!4Lw!~`F%n{s5=~LnqYT4aVHa}yb z9ic^`oT8P!h3H1s?~f?*@eO|3eOB<0zd3AxOCn#NOUxumD?Y-uUypM-m$2L9OIT-Ei@h%fF+^Yg7;x zc?p?dkTFsfw>pl%A5o4304!H1b}p`AEj*(D^`&%$ z+4<_^qcE`E_aCS2gV#Ev8-kZgkks=6ID4G~RGWcrzQAG!I2(jW8z(CAzGU?BQOxEU zQ9=N~vE1wb09;(xOsGP3b*hUp_=>V!lq!KDf{v@QfCpaN91`O_sE|nqm)qUdqc*CJ zo_Yx>S1-=m6xWWL*==>XCx|FVLtR4}4l~Wgf&tRZ&z%+9Lr*!>Cn$3Zhn^A8=GC^ zU9uK($U3PidRc0OYP10$V{Y}T-eAH=keSe8iixu4M ze*XaPiYic%@9L~=NKsPKGRj7hg?gV~YvT*4kYQ+RffhkcO{PgXAX$LhN!XsYIIN4v zRwgA?kr7c`$Tn?7W8c^1imWW61f#{}dDX0J7&?Lnxfre@(wQ?(HJMc_>Z^ z_<#eUQt8&q)gb)$b|jrPWZPiA-qHrp4T;Yj&|aADP2VqJ8)NRNW2y9pY_K&fL&I`{(kv>9!zj9aJSjSMX|2 zQzW^IC04l$#*xvfXqQcjqYcLP-1=g-(rGg5_zz9TdP30cLaAn+8qie70b0h6>`CS! z4{^Q7wY@%goe;4a_Uf?I!!VVRX89XYNXzi3@Fb2vjxwRI+>`6u6&5vssWLYFuSgj)H48BuqSa-PtrY&eXxY;R_AxT5Yhc$ZTSmB)_ zDzmI*NZ#y8@7J#VF{z=>aBVx8fgbslQEPJ&vc4kXCeG_;ndBxi#Ddqm5`Pi*IQpg+ z3NRG9Hg%qUXLCP+x0=3%7LK#ED!EYT9WF(h_BZZ3VP5A!JeN^`OeWSecN>nE3+s#z zsNfd1wn{%P$|SC+NTNdQ#>%QMd~>SR4GU8#l2xqa@nso&(X5=xf^^Ch9V=_>8@UGH z+oltT;ssZ{4$r#BR=p~(=;@iusNd!LFOph#Co3p0H!?%Sk~p1 znN3co(#>!Q<-BD3*_hbK-`gG&k5r6M0O-;6E16tN?Z_;Q!<5xaRTWNIO$AwqtZZDPBdcFib~hIr z`u4Uw_^9DC@84?8)wqa9O^{H{MKq|D)Dgi9Yso}1B+^(jIUoQd=)<_%w)k>fM3$cm z`01wcuYzdmlGEY!Ol6sK*3;D(#VZLA#II1JL`}2my@?kJK()UR2V;b5i3D@^+E8l= zB{CzIGI(HZp%TUCLg z4JF#-G1v|7vl|~=K+@*`1=PrAMIB$1a%i-CB+>jtjmuUR3NQFU^cx&lCd3rEcPKHJ zJqjX64M31Ru`U4z*M6Vw zaFMc0$_3#;P8M9bp=byQP+8FaBfqDi!yMh{3t4?UHDRL}WfKQDya1^2PC#vL*SkLv4u`Cl6YYcwXw65p}TTzBvNCUgNnMA3lEN>Gg5O}9Nuj$9-+X226>a4@lWok|?!jsi-9co1C(m%Is zyN{IYv$e&}G~6Pf)Eyi-gY1pQg$0;U%SjA!oibCgymc^}p+1-D53#WrqaQ-EDK@yf zb!*yWPky7g!3#witb2=ecHry$_lqf9n>cAElA>!g>VaL4Sq1u^du@+H!+5vq2Txkh z5DDknuwroGtrXd&-HLu{&O?ds%%zsa*dN1wjr|Y4J!|UpCAFJ&JJE6*PcX@&hM#fx zPfa_-SjM`OQEiW|{{T(S%BHY5b&bE}lyJF|VS^m=7%tE}H)S>M#Mu++Og0%^}F|8am!&#n3Q#TYYX-6EU zn8sSQq$bBgAiRTcwjX#ITV@-NjnnvvoEsBLg-VVLs7qS%Hx~itNh3oRi}POF3Bhae zj5a2-7!N?u=ZS(EWEV7YY<0WDO03ppc|6%%`OO%bS?SeYwvJZ|EMPDTBCygWOR}jZ z%$mHwsnk7{PA7<{@a&*C$627{)y6M*Kl`%4U6;g3rlg2q};4)fbROql;BHlk@w7j#5=yPb&i=4D|QAQDIqg9L@KZi<-4x3nX#}AAAABrq)GljL) zDY>D=vo#oha4jG?z#SaWZDZT#syNbng-&|xM%>`{sp#H1dRZJ?$d(WS4uXKj?QO3g=AO3DB$FTUS9z6zf$DLr)}QlgkXJnX6z`hn;=9 z<1cMNBK?b`3vMIda+Ll#4qzqcC4`b`cZ!@v8<4w|PJrKUL4xA)PGie&dIU>@rrt@0 zpD(<0$xA1cf)*>NxwvLG>GBu?0hfQ3Wx#-?_#V2KhjS*HhDKL`!pw?v7E*c^I}$yy zDzLiX-&J-Vr$*^%UYOy|Da&(wo|dKusZlkRW|4taK85`~z{2#6Ad)okUY?u7ng~`n zCV`vEuPw>*fC%^B)8~sp3et#;;gEzRBkf?X)O+o3(+?wbA`;+ulBmZCkQKWXb!|O5 z{ICH5)(FD+sa;k@<}JW#%>um|Bpa;FX;@t8zO9g#NTyqF#jT#xHjr6#L+^?WL`dh98Y6llI8T#EqBI-{s ziU`Rdge*p+P^wsuQ-0XJk*DL|f0;W9gVN05skX_+ime?Xg5m|rs=DinS9d9 z%cuM{k#|2MzAtTDx}Q~3nK~(mxQZ!XlO$53X}H&Y?bg=Y_r~F0FaU)?WG5;qzCHrx z3T8(ZQqBu%+QVyY?~6zk27(VXputhuo<{|25HO~mjzv{FwYE#td+m!-h@ zb^id)6c9|Pftn#*2DsV4{47!Qj+>sJ-LY8!iA)lqq@@wBnAB?g3aI$NdA-Twf5L7^8ws2u+Q zfuZ7BX_mdEju@NBkjtsG3vPYxdJIugh^z>yr+=`ksZF&+IaX?X7^He~wAHUYIdD=5 z3u{n5WNNXw$3OkPn@qLV<^1lmI|#zFPAlNA`AVIQT+&q+W>Be4%nqAaZF}E;m9eAr z!K4e3&2#Eu3okNOTD3eyoL8i@aC{_fBc+)%zM*Y_J$)`L1~d^)pH$g%-9^wG4!=}X z{{Y1dQd7+=CNQofNM7fm(!U}8xYfhzFk+bDvHK~91l4O?XWoj7S4r^Tj$Cpf?Ee7k zkD#`+kC=nlyC$4$3asXa3Uw=0O!UyZZt<%SzWu@duZYY zAcW?V(?d?uYBG*W%mETD^sq-#Rfj`sh8Emon_jSo7YOdse%>K#V={nA)1NQ8(PcFm zRIf*rKQ3^dd3j!U>@?rC`*+&-@)(Dj{Ze2qMl*;PlS+rmHSPWsrfryJImA=TSE&%5 zcO=HB5!sFZ01n-;)ZuT6?w!ZoX2HH{I(Pi1IBm;CND;_%o))t1+e)|E$9rSfg1Qb{ z#$M(+f)3ylxm`cChBPV_s*bMOZLuEsU{V!|__I?>U&l4B)bCSM9YhdZKB$avpwy2a zRyyu)s9bHgQ}gaCQLo0ha)IPDjs1?*&8r#7a)_hi>MXI^nQILrR8=vktoUwaH8^5H z0yDdLbc5#F{rmG9RjdW9Bm! z0i{icQdgz>VE}P}@@75%01GRe<2jAc6il&E$y5rjD635gZd=HWvCwxNx9EK^rJ&tF zU`l%?%9n~WKZP}-1O@FPBgji>Hbv46u6Dm|@7DlQ4s=hX`}Zm7H#?$XLz+sSRMWjY zDyaaeFC{=mbuXl8UZt;pFI#Vf0l;cK{reSgHw%xMYM`WQdMcP2G?88@)LcreE(N#J zLkoB7d^u^IR51XB%%3N&&1vfE23*1_V4|g#ajr7gDiSbmMXz!Nly$)r^8<1BL@~~3 za25!hs+O{!E*YFNH9aI#h|-~E2`b11!C`$sTK;aA`rw%i%`iLR2Ig<|2HW9A<20HH zsM3)t9aV1jR6F0VuY5jm26JSfl5(LJD1wrCW14iPP@)GC+}Lk+I&b}ucHYsikuwRy zb8e*Ls*b9MFEsMYO&Y|@R~)Lr5@5tDF*mSf18#!dFzp2Pb5ksV34xzfWsWIbX`Tv+ zL#&rqE?3GlIUZ5h`r$}-%F|>ET*H)$r>c00p~A@2f(eu*hvXHrdqFemi?08CPAJ)&F}v!#!~VhL?J%_p(JNz&ytl<0IB z(MTYG4&e0|BNVoDVZzG>@vkEP0GGIqDxiQS!5yN-+HzY<_NJX316*@vjH`z+Q9$+8-*Yy?Y9GL>YIYDrVNIOu=y zMm=DuTjBco>2>H-8XJc}SGeCRK|kGE0s#HWSBJ&(oV8ci}f%-y`>yIAl~Qlp!dl?*#$vF}CY`G@eW zFwWl*md$=#*8Df>2>xU0F@6UecwrQAF3*R5%I;nN0Dm!UD6LEN9cBoqH6M?$@G8Yk z7>X`aKDfZTFgH4T8~*@YdseVDxn@Skv2kAP&dm^aTF=?*?9IgAYA!8oizvF14c02aY;%sBmX1wwvS?tFFv*YdjGg2U9P z;_4?T-EaON_*;|xk32=B;B3=0tIoJqvXUIjEX*^fME?M&a>8`xDu9Gch0^5PRf}AP zKOVzksblc(Wk!y($%EDda4&L1*xc^B`Rm~;inwQ%xCrXl!Lb~m=ti8vqw!zaPmR20 zeA9}&F5!tY>MxFX^BAeKT4zBsAd!qsD-C6}hLLVSE-kw-9h?Uj!Ek3%4--x-2E_=KvZ4(>OPf^1BG*SxDgYNs1W{s5%CNED z-yEz>E(yh}vl7bv9Y(}x1cM-!k$dZPXsL_Cw6~+o4{Z94Je8nCjTW0nRZMr&pcDtx zSnZFYv{J+{XyNYTk?vd^#5;Do*Vk2V;SMm5E=8oTi7H@HS{Y^xaq=gh&TfxX;EF6(7T)nI2T5Yd|$~IR^It0xj=vt+AUc@{uwI z-tB)?)HRP(KX3Ant7NLGncU1|jSA}6+o9CUU^|_LDSl_T7k@vCCpm85gsP=xRaYFT z^oCUc8w1mC-w+77_wSOE)q*aGK}jtOK-3aJByk2U8|&u2!&~ZKD6#x2wl>pri?`R8 zy`d|d%^_GgKaCqHucOQ5l6bPmaAini-IJo}2H@wj*vQZ+fpn4V2w0vgnpYP)grG7yA2?h6wDrQ9INy zHe!mzi%Fv2PoJ(KL?>XCC5wBI0rD5$uGSbK0-h1Dms`qo*c&$CeXoWMl_e@Eqn=>U zs?w9i~c();YpNrD#J|ymP%ybbShedGfAoWQLzC?M_ZP&b+HG%jxKA+>Z*%(QmLA?GeQkKwF=wn z3;|z4F{!n3-Y3WCsVtQs9V;nj)Q!$0=!!{SmTWd8+RA=I8i8#_nb*cVd3Y*}f`XeY zO?UWdTqqU*2Dm<(?{4^|)JDVTtPVRUS?DPlo}t93<#$2~g#+6doX||g)$MW7MWm)V zkVPb|8#T~4vA3nIze{5=kZroSTqY$#vNtkP0-wal$8-GfutvW{5K*P|Sb@s( z73poqUihdr+n+?z6HrRaBaK|OP(0kWAEmZF{qb22pWvntkyLYcLeR?suu`b{8%57@ zy{&|Bszr~XOfv4dPge21lTwu$Zmg_U*8=2|>)zN_l0S6Ece(6P$0SmhmOf#KB9I9@ z+v@iiuuMt%rC(^7WxAr6nRR)TSnu3}bBIHxMxF{;a;hhm#Z>BlA!uYEsJCnM!62Vy zL@iAN%CWYTR)Mapt9SJMErcx_?dFW9o{Y3=5nee(!FbM{17op2EEohu{)k;cXL)3q zoh0!JsoR)8_U8m@I}L#K^}_s`|t8&KCNEhS-a^wNZ}RTkD8w*H;1?~S}Q*>O!A{{Rb45XDU{ zP@FA3T8|Ap?&7KDK&ZpWPOv~HYks)*t$Si2bspDDt-^rbrIe4%cD}4@-DXxAX3-+O z&Xn^Vudv+y!vvVRP`vk;OD2C+Tbc>rh}ApPE3BGq&TcQ?SC|X`0H!`oS?;M()f{z` z=D6hMxZMbJNlj4%%!wRwi5cuHtfXpnzh*tXhAIz(bu|`3XF1JU!3=FzH0dQQNeFeg zSc8*fKa^@6jrX^<2qq!geW&yMAYCE~4wo-n!%DE`UKN-Xis$iphhBo?3Q0&B-Ad&( zD4~v(WnZV2t~%CBC)eb zdy#Mnx26~nG$>>mjXmm<#MHHwmFrgxTr`=V!$n~nta-p9hm%n~TWgQ|w#B8v@aG%* z`lcb%o^FQ8X>)Jm&=km`&0%>&ki>!3Qn3TALm{{pJKv|SB{n(G8Z#bU-m%RqCT`iE zvLh17~PU9HO`fI_O4^9zz~afWOG@`L6)_m1oHOw&(Ci(f?& zUxw;vDQc8_Tgf4MiZLXRJrE8@CR1-SmA9Quu?P%;1ozLEZMXDEm92xXz57&h%^Y*j zEi{!zd6|5gKu`eEqUV1rdu{;5P6Ut$Kohp;yrOxs>iEJRh^dS>DaZwN4aM)Z`htJ% zIDKTb2FSW~s;i=iNRgvyR$^^+4XCeAU`_r*3wcDwq#)Dc ze8#BCj_Da{WhV0>DowW*_9vzRguSq(V3MLNxHU9MNfd6vNbP1tVdguYfp3UhV^mFy zA}h1H1ZbtGX#~v_V^k!dYmX@kEq%Q@?TXwYBKF{9mJ2K&wkL91Bti^^F$J> z<9nsh}sLSFmKI6r1ZZi>7igjLG(XlfJvR9bI zo<@nmF}GFs^&a^9ZXXwtnW0o>rtP^NW0Cskv^kPPo2X1vRLz%EtdU5_%5E7=jw!=p zYw*hbHWm7M_$GTBUAZa+YRKynx=Ce)qovGEhyZydweNNGJ?+z|$JF>&5~IYkK7kbL zm@%`Xvyt8|H4D$;=(>mvc+F1zs*2Rw91doU95o$>bl7S5bcB&wqb|QtEb!mk)AspdlKe*l zwMLiW`#xq*+q=;;GaGjGYI+szAFz+wWQPM6 zj>CD6CAqk&IEszP?zQdBYJc#<`$@%1nM2^z`87W(uj6xiT-KUa<{5mlNgS~eU<%($ zDHhNHQ+-(1@lOCW@QmWksWX%j9q>WlwnqA^Fu07>9YnSvYX1Q7Ap1G+*A{qToA{p% z^1dtK>SSqZAYU$FPpwczFz(B)=>10OZVuW02;-QXCN-Qob5g2eC*?ofKI4A%R}#Xq zts_%$@89@d8~ZQ)i*wJlC2nO=1%6kPaQ0VFl-0R~Ts-;pvTF+zAPq-J2JGsh{{WiA zW9mN=d_{xc&22i=x<|N35F?ez`T%?v7XgE-h#eq#YkLX&uVrVy@PqK0rz3_epNKf0 zBhF%vPw^zEiba+G0L<|6)LZ`4Dlzf;Ul-S9Q&7-g2m5m{j^fkx1$tLu8s_CDd++sL zHSz20FXD&U`Wno}yD$F$oH#y|G_Ay$9A%mafF!j|KjVx52`&RD9a|qy;U5}cu|!j@ z@(KRvpF0P4h(GkNKZ)VB8`h*eHt^-#ZQ8Pa8RBX3nBu3BW}hmMtb>(iU_DTuW7DV0 z7JO6iUk~`1hY?OG;v&x)JCJxEF#iCn<{hHTjY|~zB!WA~zhzx0tKpKE7}uFR(XtB* zt1A!%z4jlzKON(+c%C1Meh(DfuVI1@G4%&fcNbmeIj(MCk2LxzVv==Nc)sjJ05-dK z_r@&ZZMtoc>6S*57N({J@5y4GXCQ(})7SyM{jmWteLo1mHbh64D>B42%8UepNk}$U zTOZtB-z+Ri))auRS$%B@rKOlp6SQ)ZB0yCh=VIIT8(j7IVy>7F>#ec`5vqP#C0Jz4 zmVQMq#PVnV0IWkSjNJfB>MQSScE$Nx;9MfzuzWfAXsiw(PlvzCb`+$k%wkw-!^;|# z7DMFj>=WJBkV3BgJH3%s%$SN}wo%2}I zT_Kr7T8g!-2U~UZ#pE@>W+@u@bc1!P@UMw=bk#{sT@ZRk8ouRjT!4F>g~;vF*sCj= zWu`{!yNAW*>b+|jK5n^%4K$laJjtlC+1LL7hTfOl;n?{e{Fh7+Ks?dh#hz8=I<}BO zZD4LXe95*RMCzXF=_Qy#flNs;Hr7{SJJ|fO492%nJsUH`Zi2|fHlMt?>_!K2iPeD` zRdYE7x+{xYZTkNJEJ8)4Mb@5H4yz#PU>NECV4M7~;lyr)B(+TOg;O%Ik;;IHZd#tr zW7Dqw_-P3rSS`hQYAVwLka{lqR4Ckb@Off{#ZRE z2+W36(NPqr9hy-h+<>WeZHX4&4%3>%p%9ISHj+v(WiupFD!qsdR3BX={@AsZBzODS zA!wC1lx7hXXylq%f-p8^B!EC5F!^@tjWnMc%Bk(-qyW4?L%)qB49oI+=3Tv1NXA9I~v^OLkH=9Y<4b&u-YUtm!m1-=EXo z$QNZ*r;Zn{c$PJiWl^SfKvmCW9ra(+9QQS)*$RTvbL^CW3y2U!Zu97=nWx$V=o5yz@$zi<&;G1GHHqK_~vszuGs zz51Q7y?=}i&5dP^<3*lN}D>_!)RB8QHSnk8^x6EPM#KvDV*_)!D38 zShn(nI+**Nw!#<(u^Ym1Yv^jx))~=cORF#~acsUeXqU-qGd8f!m<(-Q=SF&NX1YQ+^Hk4?SNz{ z0VTfXn5Ci&#^h50a(kWZ2E!9KYLKGkr%(&VW_6kL5izr|)ob?mKK8!rW}!Rk%U00gTN+AAGKn%?Db47Fia8Zh#u-M$YBoPnZ)|${ zPHWf<6;T8%*0PFN*qEf`6MrZ-jlMwNN%q`hqSvw4c%I!4jBDN%4r_&ia!3h5SYH7rJIbXQ3X zY{15K2Lz8W9YD8VQVu*;LKhepcq8)aSyD>a>R=JwSS6oUhhwR(qou&vkNRTDE_*An z(IQ8Lt0+GuKwZsOD5>YD&5>!~lBPr^PF#I#yOK{}Epkph>j5Qqod7RM<*?IBIFg=t z=0`Uir_>Gi0{zbYG09W;Y38j(~tjkXsiGX^Ifal4LK1Vu@N^KM_t)7`elgEpjivRU3kRaK)fp^55Qxdq#>e<1;df zeQF^K9_K-A$xvJV<6-gx6~UNCH#I9*^+uMOqNbFX>Ktg9m(201DwYTT0FY&{^us-_ z00Fu>2}ESfGa8kH?`i6#c*Qy+a@`5-dx5w++~8!Bl#WT7=`a#1VS=uno}LOXzfc5` zf#r{I3lDR@Uw>Q}B#R{vQ5D&Aa>VhdG_@-gn?emP{a7DBqfcXRTtd^&M9pvp>I!;D z<0~u=P{pjy#E(l_=cy*!+xcPu=7_)1tg2WNC{I7BU0E|H6$pZvIDB4J7YFavUmz^AP$s}zPFa(kS zy58Q`A6zgeSWf3lMLmK}dsj5Zc^UcYS%Kse%;t-E+T!D(ANj%ugVj|Vp>jBK$@9_t zO2~9$S~@(nTQ3>gr{uq%we#NFuV0x+pu1jkY$zxw%7J zH=WaEaBh8xvW=(We6BhQxGVD7ddg{IdSqznHC z0Pi08ss%5C+#%1NSZnKQRz?v;OIPKNBG$FpY|KEtx^x%5JvsP~8v&pOozA|8*U@P> zs)PU#JWb#hRMe{3MrzSj$hSypA6#1RZdrXGgXni1J8zDr58|r1!*LA`Z#IGtmgut- z@858-TB;hXnzCwYh@J|Hc?vvk3cPL&h(3fIeKQSHI2CBSv=MJ5&?T>EI)bHXv)XLR zHK)vg)HYelgSY+T)7)d|I8Hl58qtN~z)sGAANdcsw{qju!aj*LFxqnbeiX$$Ec79H zGZ|^f+9?jSBmUOv2e$b3G%(dLUD)Ol0xOaqbi=bhjSJ_BY#Ek%4C8@ zs>-bsxA>H;{v4j($KUy5E4Y13GtMW4^;~sf`5pfN;&~8{>KftE;%)|qarslcIO~~8 z(TH?PisEW{lX$F*#IW=MNe8CG8Tghuo-2h`dl+*F4q^G4WLiJ_PKRVE(RDmSFJo{< zgm!%j{gD3vhhGKc`A6A9!_4B6gDx4xZeKf1np0E9&yqK+nn4rH2BW9SrAgSOyJPeJ z0361gPA%b&CY_)XV0A{@c`sv0fudsS!S?3jxVU%hy~k-=k=N%jW;8FBmZ6DVXxddF zDrUI_Vn+#fP)H?q0Nh>h#TQlM7;KLXhX-EM1QG`_M1VI`;@{EHamzMenV)9Qwf_JZ zeVL-oXmScHr!>p6T9vA(rOl#~QISv}G0Pi^c|ZgZ-8*CNynEq%C&UkBXVi0C(E=cd zl5P)wFuax%h}6O}CRq#7{vrPW#UD7&cnXm4wnhH{DDhNzgbys0FBW4%Jup}1N9GZ_ zvo|kbx3%oRl?3Rv!ypX7fN<=n8|3C$r)#O1Yj zPIPvLQG2AM?YE&}`{RfHr2H&6t`PBDD}Sv-b%6c!$K9HaZIQ5C%oTo*s^irs%aXnf zq8hrj%aUPA#%SH=lr@^>*J}&f_a3C<@{1XoB-nfZ01Lh@Lq_SEoTgqKsHvA(jzbxg zL#s;;x^Hi7?eFV=M0HQTX|CSG?hvx^9VC%TB#DZM(PNMmC3ezC+QYf|;@C4Mbh1W@ z__-cc6u?z1W;l$KBTji{Mz-4lxW8lRiphZ-*IA*nBq@BRf{ufiP}J;^pkov*5}o>; zAn$ILzpfO$$8}~<0WhW-wwO4M2;_xE^W0j*0pw5y5J|+9{my|rCb4JPGZX{lEP@f@&nKiqT7D>k~H=^ED*k_bvc~0^peyV-gW_2Bv`_4 z-sF$1@gT&6Qm8pupjDDcCg-4#FecIq>_^uWwZYaTT`>`LH9WNtL#gQ1ih;TnD}O)< zxW=r`7J=#XRlrD!MJRz)FME{=e5csn_usAez?1)Ejg#nCq@mCnSOtG9!8mlvH0U~-F>fN ziy4SIkE%yf&U`j-^p6t0_`@k3)-^*FNy8Bn26mWRZ%QBa%3s)vtCZRk!MX zxTd8Xt|7oHTHr*e=b(Z){vuh$l{7JFuNYh3@RML~jODE+cUDRkwt6~LQflcV)^5Dj zxNDnS8|}U+dzjHA**FD17Er5AuTsQ@;FVFaw^By-`C-K{;c%8=GPzPbGBj)?E&%2R zB%k!e=$dp#F+&({UqBsc+`#b8H;DAv>We$;?gj7dYv4Jtq9CS% za>QiQI|p4ZtaTG_Q_!Bi*r)Wsg3gG7H8h zj5sTMuCNV%ihEQ)+b}%t&Opu)oVr0iwoE_2u!;n zInIA21JoKEy{{%=Qu1<=Ds?wv?dfs=79_C%0&(vt5m0rk-Ae7f*?Pc9IxkCjah_%Q z&PkO%Lq}beWf~TRGpS;Z2h1cvrIslJ8JKxZ(g?#H^*W2=pvUI|&^GPx*XTK{4{2?j zZnfOMgED`FE0=KoQ9!yIRYgv|bftk-k(F+@Ah5YQjsE}^G+cjy_*5I%uP$-F32|44 z*{ijDE0xA+9)=o1tPK)4re3Ahg4Ei(X0YpTcPFLbhe-fNp+z+|^m*kpbFu$9m{uC#p+$0b>4CaR`%tEYxT6G12{U?FaWi8gD5 zW2H$W1$96%Oug-@8;$LqcrIP$ukfiRCP6DUcYYEsZL%5;U2<4_)!Am8bRB`vfFy6z>d%DxXUo04AI znh4!(++#ORJ0AWmJu)&q)YY!5~&Y_7GIUg^c)|N=gP~=!K2da*? z>TGdyTE;qEa4oKf?+JhzqNRjw=%R%~{1Z$iN|h3Y`=X&F-s@mZ+T`0#_6Oe;h=A$S z-ioV`V?;4oxpVTtq<}^Qu1QsnLJyHoe<;1TJ9}ZQM3Es0FkwnXET)cZu``NUDGJKT z9JN7GK!n|t-|;_CHZ9k-Aq;irOYiRK$$08bgzlA-OIqRwp`+JRNSxHDfpzlAjYWVx zfZUUN0D9j5HN?w4z@-ulghpkPW%-j(ftE(KGqV}wS%Vx~jO6ccnusnC_JbSP-{ORyG=tToQLD)ZyX80$eA)Qic)$Dl%#W$*IL$ zNgXWaAj=$D%Rs^GbT!77A(ZcMRjt%w09!Y|yGj6Pef#??W9VWo`Zr)P^bdsV*AIRf#%bz19lUpqd=~0C%($5gCNuEY$2S zk+*U6R#?!3O_8l7WB0uSNqyGRGTXg1?H@LZ`95)|vr#`w#O zVkqLMvk6qNWuB>kWZL4#PSs}*!?&XAi86!xdhjRN=Y_mHY_owf{te6gMVh@**+pfV zmKcd@gs9~^2=xH5DlpW{_EB{ue3lD|@l0kRwO>`v06`}52^~{uH`A0%h+PL#q|p)E z<+_dk0EMn)n&cil=eZqbaU^*|j(Ccz30Jhz~J3Nxh?>LHT;G8+u>J${vP;A{9e0&_S1>xcdbfg#7xAd3!6)I+zy%#GmotWG%adGc@9uAci?n zK0R+KCi%4~T3IbT@Uf1f8Av21$_lUM?a=(O;#)Tpve;W9RdX}S^7(5jO!WN85*PcZE8BN9t9N**;r zKtRL0>Tg}GY#??)8*AJ*`zPoh1d$Q1*-K?S3z_B_QIa}pnWc}Z+Ba7q74nPeJD#U~ zuo+W3quhJlTl#8|Wc;~JbP&bMqOUC^noCBy;}5th!~=E!kbbzZItJvAuOr*+BowOX z2LAo`qzH2rf+=2Sl8$B3%h0I2v9V4j^c^>+9CC+k2i(5Xy^hpOhNqnb)j ziIz9!MIngB3J=V}+gZK4-+Tf|F&_8#-n2HJjsjNC!&$a%nb1bH)Z&^7KoQ>JHkbb6 zeTeC{*ih$2U5C9_Vv~!+y2V;$o;Mm9rGTP^3?cFx^tHV`aeRU;KK;tOMB-9`JDyp2 zN@-j6JxpwGG&y4mN){(WY`%`G1ul!{{Soi8XJ^p%U`V7NxZI2mqgOY zh|z-4*dTk`{_P}f^TCFL1K)yzQ11)VMq!2P+#AmH}8Jyx<|gnQ`kUKanF_4!N`iZ z$_rVHj~ci)>FR!a<51|HGK1a^yp)ONO?P6mCyl{V|c$ zn{olRw)_p&faAK0k}S4YK&+6Ka>XZ%!R98~6cJ`U&--ILnAw|&JAyB52v!Fb#ttdK z5+g&)F1j|;->AK=J$A(~InTX$-B#1s zG^JD4Wwo5iQo1)+KX!H85n&8+IEJ)1baA z6(Y^m2uxH}%~KYkAg5O#{n;#35DkbwUHvxefLvYtd-CL@LSf!2g3*bZJ+_bn5P~{` zeaCDmA=X9^^)=rH9vW&o+02uxNVI}BEOzsgtXVemTz0j$!a4b*HM87B`*r;JA_nQ# zsCsskD^*PB;7I(Usx}rNbR&M(wXo7bFb}_e2qq?lD+uO9YAMmgs?}+I4P(0B(D(H| z*dz$Qs)JPAvc@D@S0?I9ea51?mey7)ZTB9=_TLqjv|2p9k9JH6US<1D<@}yCq^wk6 zm9!DbsDc9(W>ahLZ^AdXOnR;u?9?NX{#Ht&9I$M`eBaj{g+wVH0-ZZG07RCD^Ar!S_ckeKOI%--c%-n5Gv|LY7m#{NLW)i$k8a0wJW(B}ERo~Y8`FA58?*?<>shG3^XGz*s z1J^s-n(fnBG_=D>k$L0Ca9T{MT$8%{mzLN?LR(3yZ$aTnWc$(^A1v!nvRy zbybzM;zk!Bns+5OH~a-Yc;?r@(5f!TJ(fO}^i;lsU7>^TWBe~X_?z~7<9`lmvmDZ9 zq|P$9qLG(4q0|y9+Qw*@7Kq#p&ZXP&-yUld!)nnPshq>t%JbeQ!DW3nGG^nN$g*s= zIi;c^K5bPy9&Csux0OZ95O)i9-uJ_qxi(Mf$bD7QL;|VM9!6m{mE1=!B}1FO}kqQ`ZRO zjVdKha8ai~Qq9?ofwtEMTp|>vTazNUf(qJcDC*U~b2{lPblg}e zV4H$3quSVnyhze{Z{OaYmP0qxMb{~+CpoBwDNwY@rAD1e$hV^GzyGRVqaW?1D> zq_jnd@&VY3wePjfyI^&RNC7@6o>eq7$QEeLTq|%HH+fFXRlNZKexwW&cnG!|)&>Yb zMZ@+G z3cmX&7wPr6#f__%-`z}t@$a!2PAj-uh+8zLl9sv{%A~YYz$S&GC>Fs^!L8BkKNoCR z*R`aU{jb?{t?C^C?@^hL4nQjfJJU%qM`>yxhD|ZEU4n}nh0}BD8pj2VXae%9AOV*B zs>8&Y9Swd>m#sEj^z*7lwQ?lv@jSo_%BW4iYlb7Sy}FTvc1JougU^}ws^cS`)d47ambOQdC zzntow&4%V}w(YlPZ0p#(k>X}(+*RV9X;DuE^mLC_&{9P@wz#R|V;X7)dw`^{{{S|j zkEn3^U+vjiL>B5hcOG`W>$gdb6o4D36s&B%M~w)UnTaMjkaFMONhE{rH^;ui@mJv7 zMLV$S*TG@%Gk(zpQv5S&-P-dS{{W7{o2kuUBz!##5sP`WGZBAl^!Zre*W*vD=)zH8 z8^AH@Ptc&uHbMPIljZhP+&`LeH6;yRUzFz+`6VV{_p@cx^|HYoX zY+p;^%vTX1^+2ZUxvaP@8l0ja9>dHX6%}!ms0jIhu{^m?yg|u0 zey*}OqMnyD_{wjCl%q4PLzs+VLjt_TcD>N~br86}+3`5KPpyV+M=`UuV`C8k(hp<} z_DnGkW5qgvN#tYe`727uKEwI%5pZ2zZAr!a3B?(mIWi#OEb9laWZkQ z57sOytC<#>vIL4`m0Fgew7jTHU}%$7lzD77$4iCa{{Y+gl{`Rc6&Zew)+7)_w4TEt z5kFLwh{RDX1_9rfVf(Lj{{X{J?Qg-EhX&+64A#d!Q^d5bS1lCtFnDt!^GQ(1Ho8g! zw~&GuAu8AMjNcW~7@S+UjVEoXSazfi=T08>nL%S=V(Vp#+R`ejnpa;PqbG)Whl2fZ#wn z69fawO|3k_n5qW5L1`e4Mm_l1Rer>t2=Ry6o5C32&!wBGExgh@u6X z&cn|m17gKOizV7|>|P%qi$AApLmOaP2+iAj_bEZIqf7@9d-e2QME?MZPZs2STjSMD z7F#5fS5k2LQD#bJXGE&gEWD7UkgTyhWQDhy_Zor6)BX!#JQlq-=;HX&@XpxZ3=b-jb$yeu=L{4*_L>=sCLGXt<>I)DD%IPc*&t6xVBTx|A>_KP1L-qp0> zhf7caq4YQU%G7)n;w8(cs;1_wYEVraj5-xyT~D(MADZLmzv_1kZX<``_?fCJ=UOpE0rR`s4FETQ(y_un^)vwfz-~ zIM4Fz@u_8|YAS(Y0FohM)*G^^7a@paVlTb0ONn$2^&UjqZ*$_kC_FLZR-lSThLXCz z7h=+_LkA;!5;yr+6O8Sm<05z8lJ=(#>t+&r)MicLu4Px5$}`NlDMT^dNmKVgkhc%` zcd@v*y~Yr-us0Tt{{UUJ-3DQ=)(YF5_%A^`Nj(ce35*U*RS~x=C^s7hwZXZ$2M%d4 z_AO?B*#||!*_|p+uAOS-ZBB|c#UYbzB0Dig3IOvpzL=r3jLDB;(H>|TT~Z?d0Dq!- zgTu_kWlfhuB$<42zd0gmg-0gjyK7Rw6LL*~Cl-n>E+%4oZRS3(k+eu|U6Zi*SDGbl zJk^l^qhX;KuVo@&}?)npO~{u<;5A-ReG^&Kzt z9{n+PQ>fwEEq8qZLqD-&g$_m$ZxhtURBL4h+`_`+y21bG*Nlj2kQBGCr8d%h!LWK^OwXW9$1@^h#{{UPZq(h1Pc=A$qPo+P_ z!dF3(HaavhCrJmj?gE<)$G#Xe3jyz*=oGjqgi;c*${mNApPz7-JDn}>eeH&bIzi<= z{)i{x*1DOT6^TPMaz2u+Zilej1W46G*o|AN8i?XG1gQ#RKuwO_Z`5MJey|hdm2#r4 zs*<2oQsi^WE)qroRrl&w)c)9VUOLTf{5{W#SQ-+gXlKz9y)07GdBlTPkfA2lWftDu z2d*yz(rSEH>!IZ4%r$}|u;d&9ISQYKJ zPp&gmW|K2`=lrYMP@e)KSfXhDE-s=;R0LkXD<0coxU_0JQzqug=-Ej4IM@(FZKq*w zw)uZ|!jKNFL>|k&$p!n8&D%wj1}{`(mR^Y#}yf518_~6H6@>WkLxE(2z)^ z_PT*>w!fv1zAAG_nPEO2{glG#%2}t(X(E+rWq}pSgm`%+NIeK)w*4?#Ug0IAciZxz zfx2RvovK9h5Gf-J+M0O6lm7t4lm;vR0C&?1ke{31cIeD0Dtd(!v5_P)MB65Szydp7 z`*g$*8*icuf|ySbb(Wc@z086VPuAzJY%sm1{mLf!GZ>r~F(|kiPy$bTSbKc;!kouh zL_)$o)wvm5lZUfrmsyUYYB>WSRzT_<3E!pFhtyxLJG>;_?B7^f>+DyQ^GlfZT9W#@A|B!!cqJUnYLTRxlLRK@LaK4)l_oYWo}W~jjev9Tc-H%LJgpf{{VX~h0r-`*Vcrne7>z3 zck{tsVGj~m0p$gO{cqO{IzVhA$MA)gVdEErd50R?Kg#1D#l%Rp6w^5`Qme8BVm}&- zixXlj1&H6Ng~U0m6zd+SxYtsvEdkk^sa|l+xN5U2td^F#mU>F4i4O$P=w&0+9r5TX z;v2CGJDDlEEaNrHQDUa7k~rgHQF{Y>oN5?|Dx*cEUU+-P3YtkHOzN3x;~)E_Ly_;k z{{W^nw-YuiBk;s%x6TCdej2D_Ieu{A0JkD$6Cn1|`;VgxX=~a=z4$DyVQ!&p883UDRU%QZwzM9S)b039S3a7;07jQ=vmTCzC0v2?kC}ls*8#<{Dzx|sH$^JqC%Op z5Y!{j2{zP@729w$hPB5~O~DxPc*-XSRI+n7V-Y{d-6N?7G>~CI&%-Qpq@6iKR1r5I zutw6ON;Z-<+zYVz?~KmGIj5{uKc+65D7r&67cleViDPKjmnw^D*Jc{WeZd2@{fWhA z5Y~`p6K3kXMAI_{Uoeg^t_hj74d14b zxgeglwYu3wB1D0rmM6VEnuuhfr+8{A46XxBG_J9Sr~n5mWB35Qi+b;VxMI)@0q?`n zF4p!@YayByad&v+(HJJdAs~ll+i_(iA6t5yLekexh~^CjE`>^3ij1s0N;DGghBPJ9 zsZzq%2dF;=Lt&9@y69tNa| z?YDwZ+|we;A2+D0pv@`h>S&uTl47q>138QW%c*2=ZWtXvj`m}V4Kf~D;ruHDo(5es z{K@mOrg1kGWw|#C)>k@z5zHQ|kg$pLiO{mEDm9Pf)G6|gt z*m>>BQ_}{ePPd6zE_cV7hHafE#nnvtd~V3lLIMVjq-S*?jm_BGRqPc0m9O>Z$<+1Kc7N2T%fPlxGJe@jHLbd>tdF?^)Mhk>}j{{XyO*YrQnirghkWk+JL$D_os#YXJo{oXo*q2Bje zdPdO=rBkg){G{qTJUr6r^XGy@8Kojft!q>m#qaKI*BxqHQxSzBnCA6Pjv9FK`YPXr z4+P=g;VNdMC(HBIS=|-R+9i+5%km?C*7)h-_*V|%?G-E24m&tm!<0B*>bcbMRq%%+ zOm=JNP_;QtOm!uTHDHW}j-ocvQkLjjpkfWYz=Pi&Ll^M&BAm2=TAtff1Gh%LIfy&L z>|ywoCjpDs*?;P3oFJYMjkqMDw+Kc9@UT41rYE^I`Tgddd1-exxc05QM) z*!lK9;i_hO4y%U8?l$jT%5{MN?0I{-_fAd!02Lnu^9~BA%yVqsw<67>kI9uumrFfS zmfLAn8VCl)?CPf7ar4U9YPfox8`weR+0Jy1+pTjV%koxg*UmVet1_d`UpbbhsMJk0 zd}a!n6DE*0jdX?U z)SGI**L*^AFQcJNJh8hDdrYlw@j$lSfaox>5J5*()}C}mRtY?80+iCWwYr=2z>+jl z$r+tA?@J?7qzgJHmr4R{=mECmZT)cwBu?sRS0M7o%jF@Hmva-5sHq#=gR%XF5vAe* z)e;7)>5=tC7+Q#7OO{B&ID3FBO|@FzD`54aBevh-=s?vaV)%l*nVs$TXuH@CQ@-F1 zhpq*Vib5_5S;R`3mO!H6fFkDo{{Vge09-U|flugY9^=f!4ME#)o*6~PSr<#lA&xti zb__oay5G01_>sJzno2a9rKWjXmOy1ivxXMyaDTqo7B`zHohY#-q;q0!gYcVsVTb`u zQfer~={S_TMgBo+9f#E7KtU#!c>WV&vXtEE8bf+@>2FL{902wcMbZ{Y8%cB#f}_gd zJ??h^-}&1L3|$g7U1-)gz?A@k!^!xETVJ6&Y&Y8$Olj}ml2}i~@PyhGy{)MJAU!U9 zI@sc8Z@+()GL+2bE4M0m(Tjy<2XwWI20d+S{JRVS_L4wQ0uYo4utJbCveH5VM^iON zH(9sYvFSPw0(T#9I&1hvQ|@=qG;Zw0TMss3c|k_p(*j zwaZ#vPOYZEg=?+7g~zrqmVkMl{{ZvvWqNNepm7_=&8T@#;%OuRuHal+#ck8mZkSl- zufFd@Qs$+nr*@T#%*3;-g|*0+Hv@ZWvDgE1*L+6?10ZUkl9uJBc=>NLNWqH16piM% z2Y#aab=udq7+j8iKECXSav39ETf#}yAk4tTSm=hPDU#csRoXSY4 zL~_R*DCi%b7n(@#=LY9cYg__$Cv$-hHfz5B0D0~x+jQg6)pF%(Ss{7JvTD?q-@jY- z{V*ZNPq