Full Code of open-mmlab/mmpose for AI

main 759b39c13fea cached
1866 files
12.0 MB
3.3M tokens
3393 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (13,021K chars total). Download the full file to get everything.
Repository: open-mmlab/mmpose
Branch: main
Commit: 759b39c13fea
Files: 1866
Total size: 12.0 MB

Directory structure:
gitextract_8px0n4ye/

├── .circleci/
│   ├── config.yml
│   ├── docker/
│   │   └── Dockerfile
│   ├── scripts/
│   │   └── get_mmcv_var.sh
│   └── test.yml
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── 1-bug-report.yml
│   │   ├── 2-feature_request.yml
│   │   ├── 3-documentation.yml
│   │   └── config.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── deploy.yml
│       ├── lint.yml
│       ├── merge_stage_test.yml
│       ├── pr_stage_test.yml
│       └── scripts/
│           └── get_mmcv_var.sh
├── .gitignore
├── .pre-commit-config.yaml
├── .pylintrc
├── CITATION.cff
├── LICENSE
├── LICENSES.md
├── MANIFEST.in
├── README.md
├── README_CN.md
├── configs/
│   ├── _base_/
│   │   ├── datasets/
│   │   │   ├── 300vw.py
│   │   │   ├── 300w.py
│   │   │   ├── 300wlp.py
│   │   │   ├── aflw.py
│   │   │   ├── aic.py
│   │   │   ├── ak.py
│   │   │   ├── animalpose.py
│   │   │   ├── ap10k.py
│   │   │   ├── atrw.py
│   │   │   ├── campus.py
│   │   │   ├── coco.py
│   │   │   ├── coco_aic.py
│   │   │   ├── coco_openpose.py
│   │   │   ├── coco_wholebody.py
│   │   │   ├── coco_wholebody_face.py
│   │   │   ├── coco_wholebody_hand.py
│   │   │   ├── coco_wholebody_openpose.py
│   │   │   ├── cofw.py
│   │   │   ├── crowdpose.py
│   │   │   ├── deepfashion2.py
│   │   │   ├── deepfashion_full.py
│   │   │   ├── deepfashion_lower.py
│   │   │   ├── deepfashion_upper.py
│   │   │   ├── exlpose.py
│   │   │   ├── fly.py
│   │   │   ├── freihand2d.py
│   │   │   ├── h36m.py
│   │   │   ├── h3wb.py
│   │   │   ├── halpe.py
│   │   │   ├── halpe26.py
│   │   │   ├── horse10.py
│   │   │   ├── humanart.py
│   │   │   ├── humanart21.py
│   │   │   ├── humanart_aic.py
│   │   │   ├── interhand2d.py
│   │   │   ├── interhand3d.py
│   │   │   ├── jhmdb.py
│   │   │   ├── lapa.py
│   │   │   ├── locust.py
│   │   │   ├── macaque.py
│   │   │   ├── mhp.py
│   │   │   ├── mpi_inf_3dhp.py
│   │   │   ├── mpii.py
│   │   │   ├── mpii_trb.py
│   │   │   ├── ochuman.py
│   │   │   ├── onehand10k.py
│   │   │   ├── panoptic_body3d.py
│   │   │   ├── panoptic_hand2d.py
│   │   │   ├── posetrack18.py
│   │   │   ├── rhd2d.py
│   │   │   ├── shelf.py
│   │   │   ├── ubody2d.py
│   │   │   ├── ubody3d.py
│   │   │   ├── wflw.py
│   │   │   └── zebra.py
│   │   └── default_runtime.py
│   ├── animal_2d_keypoint/
│   │   ├── README.md
│   │   ├── rtmpose/
│   │   │   ├── README.md
│   │   │   └── ap10k/
│   │   │       ├── rtmpose-m_8xb64-210e_ap10k-256x256.py
│   │   │       ├── rtmpose_ap10k.md
│   │   │       └── rtmpose_ap10k.yml
│   │   └── topdown_heatmap/
│   │       ├── README.md
│   │       ├── ak/
│   │       │   ├── hrnet_animalkingdom.md
│   │       │   ├── hrnet_animalkingdom.yml
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256.py
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P2-256x256.py
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_amphibian-256x256.py
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_bird-256x256.py
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_fish-256x256.py
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_mammal-256x256.py
│   │       │   └── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_reptile-256x256.py
│   │       ├── animalpose/
│   │       │   ├── hrnet_animalpose.md
│   │       │   ├── hrnet_animalpose.yml
│   │       │   ├── resnet_animalpose.md
│   │       │   ├── resnet_animalpose.yml
│   │       │   ├── td-hm_hrnet-w32_8xb64-210e_animalpose-256x256.py
│   │       │   ├── td-hm_hrnet-w48_8xb64-210e_animalpose-256x256.py
│   │       │   ├── td-hm_res101_8xb64-210e_animalpose-256x256.py
│   │       │   ├── td-hm_res152_8xb32-210e_animalpose-256x256.py
│   │       │   └── td-hm_res50_8xb64-210e_animalpose-256x256.py
│   │       ├── ap10k/
│   │       │   ├── cspnext-m_udp_8xb64-210e_ap10k-256x256.py
│   │       │   ├── cspnext_udp_ap10k.md
│   │       │   ├── cspnext_udp_ap10k.yml
│   │       │   ├── hrnet_ap10k.md
│   │       │   ├── hrnet_ap10k.yml
│   │       │   ├── resnet_ap10k.md
│   │       │   ├── resnet_ap10k.yml
│   │       │   ├── td-hm_hrnet-w32_8xb64-210e_ap10k-256x256.py
│   │       │   ├── td-hm_hrnet-w48_8xb64-210e_ap10k-256x256.py
│   │       │   ├── td-hm_res101_8xb64-210e_ap10k-256x256.py
│   │       │   └── td-hm_res50_8xb64-210e_ap10k-256x256.py
│   │       ├── locust/
│   │       │   ├── resnet_locust.md
│   │       │   ├── resnet_locust.yml
│   │       │   ├── td-hm_res101_8xb64-210e_locust-160x160.py
│   │       │   ├── td-hm_res152_8xb32-210e_locust-160x160.py
│   │       │   └── td-hm_res50_8xb64-210e_locust-160x160.py
│   │       └── zebra/
│   │           ├── resnet_zebra.md
│   │           ├── resnet_zebra.yml
│   │           ├── td-hm_res101_8xb64-210e_zebra-160x160.py
│   │           ├── td-hm_res152_8xb32-210e_zebra-160x160.py
│   │           └── td-hm_res50_8xb64-210e_zebra-160x160.py
│   ├── body_2d_keypoint/
│   │   ├── README.md
│   │   ├── associative_embedding/
│   │   │   ├── README.md
│   │   │   └── coco/
│   │   │       ├── ae_hrnet-w32_8xb24-300e_coco-512x512.py
│   │   │       ├── hrnet_coco.md
│   │   │       └── hrnet_coco.yml
│   │   ├── cid/
│   │   │   └── coco/
│   │   │       ├── cid_hrnet-w32_8xb20-140e_coco-512x512.py
│   │   │       ├── cid_hrnet-w48_8xb20-140e_coco-512x512.py
│   │   │       ├── hrnet_coco.md
│   │   │       └── hrnet_coco.yml
│   │   ├── dekr/
│   │   │   ├── README.md
│   │   │   ├── coco/
│   │   │   │   ├── dekr_hrnet-w32_8xb10-140e_coco-512x512.py
│   │   │   │   ├── dekr_hrnet-w48_8xb10-140e_coco-640x640.py
│   │   │   │   ├── hrnet_coco.md
│   │   │   │   └── hrnet_coco.yml
│   │   │   └── crowdpose/
│   │   │       ├── dekr_hrnet-w32_8xb10-300e_crowdpose-512x512.py
│   │   │       ├── dekr_hrnet-w48_8xb5-300e_crowdpose-640x640.py
│   │   │       ├── hrnet_crowdpose.md
│   │   │       └── hrnet_crowdpose.yml
│   │   ├── edpose/
│   │   │   └── coco/
│   │   │       ├── edpose_coco.md
│   │   │       ├── edpose_coco.yml
│   │   │       └── edpose_res50_8xb2-50e_coco-800x1333.py
│   │   ├── integral_regression/
│   │   │   ├── README.md
│   │   │   └── coco/
│   │   │       ├── ipr_res50_8xb64-210e_coco-256x256.py
│   │   │       ├── ipr_res50_debias-8xb64-210e_coco-256x256.py
│   │   │       ├── ipr_res50_dsnt-8xb64-210e_coco-256x256.py
│   │   │       ├── resnet_debias_coco.md
│   │   │       ├── resnet_debias_coco.yml
│   │   │       ├── resnet_dsnt_coco.md
│   │   │       ├── resnet_dsnt_coco.yml
│   │   │       ├── resnet_ipr_coco.md
│   │   │       └── resnet_ipr_coco.yml
│   │   ├── rtmo/
│   │   │   ├── README.md
│   │   │   ├── body7/
│   │   │   │   ├── rtmo-l_16xb16-600e_body7-640x640.py
│   │   │   │   ├── rtmo-m_16xb16-600e_body7-640x640.py
│   │   │   │   ├── rtmo-s_8xb32-600e_body7-640x640.py
│   │   │   │   ├── rtmo-t_8xb32-600e_body7-416x416.py
│   │   │   │   ├── rtmo_body7.md
│   │   │   │   └── rtmo_body7.yml
│   │   │   ├── coco/
│   │   │   │   ├── rtmo-l_16xb16-600e_coco-640x640.py
│   │   │   │   ├── rtmo-m_16xb16-600e_coco-640x640.py
│   │   │   │   ├── rtmo-s_8xb32-600e_coco-640x640.py
│   │   │   │   ├── rtmo_coco.md
│   │   │   │   └── rtmo_coco.yml
│   │   │   └── crowdpose/
│   │   │       ├── rtmo-l_16xb16-700e_body7-crowdpose-640x640.py
│   │   │       ├── rtmo-l_16xb16-700e_crowdpose-640x640.py
│   │   │       ├── rtmo-m_16xb16-700e_crowdpose-640x640.py
│   │   │       ├── rtmo-s_8xb32-700e_crowdpose-640x640.py
│   │   │       ├── rtmo_crowdpose.md
│   │   │       └── rtmo_crowdpose.yml
│   │   ├── rtmpose/
│   │   │   ├── README.md
│   │   │   ├── body8/
│   │   │   │   ├── rtmpose-l_8xb256-420e_body8-256x192.py
│   │   │   │   ├── rtmpose-l_8xb256-420e_body8-384x288.py
│   │   │   │   ├── rtmpose-l_8xb512-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-l_8xb512-700e_body8-halpe26-384x288.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_body8-256x192.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_body8-384x288.py
│   │   │   │   ├── rtmpose-m_8xb512-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-m_8xb512-700e_body8-halpe26-384x288.py
│   │   │   │   ├── rtmpose-s_8xb1024-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-s_8xb256-420e_body8-256x192.py
│   │   │   │   ├── rtmpose-t_8xb1024-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-t_8xb256-420e_body8-256x192.py
│   │   │   │   ├── rtmpose-x_8xb256-700e_body8-halpe26-384x288.py
│   │   │   │   ├── rtmpose_body8-coco.md
│   │   │   │   ├── rtmpose_body8-coco.yml
│   │   │   │   ├── rtmpose_body8-halpe26.md
│   │   │   │   └── rtmpose_body8-halpe26.yml
│   │   │   ├── coco/
│   │   │   │   ├── rtmpose-l_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── rtmpose-l_8xb256-420e_aic-coco-384x288.py
│   │   │   │   ├── rtmpose-l_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_aic-coco-384x288.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-s_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── rtmpose-s_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-t_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── rtmpose-t_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose_coco.md
│   │   │   │   └── rtmpose_coco.yml
│   │   │   ├── crowdpose/
│   │   │   │   ├── rtmpose-m_8xb64-210e_crowdpose-256x192.py
│   │   │   │   ├── rtmpose_crowdpose.md
│   │   │   │   └── rtmpose_crowdpose.yml
│   │   │   ├── humanart/
│   │   │   │   ├── rtmpose-l_8xb256-420e_humanart-256x192.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_humanart-256x192.py
│   │   │   │   ├── rtmpose-s_8xb256-420e_humanart-256x192.py
│   │   │   │   ├── rtmpose-t_8xb256-420e_humanart-256x192.py
│   │   │   │   ├── rtmpose_humanart.md
│   │   │   │   └── rtmpose_humanart.yml
│   │   │   └── mpii/
│   │   │       ├── rtmpose-m_8xb64-210e_mpii-256x256.py
│   │   │       ├── rtmpose_mpii.md
│   │   │       └── rtmpose_mpii.yml
│   │   ├── simcc/
│   │   │   ├── README.md
│   │   │   ├── coco/
│   │   │   │   ├── mobilenetv2_coco.md
│   │   │   │   ├── mobilenetv2_coco.yml
│   │   │   │   ├── resnet_coco.md
│   │   │   │   ├── resnet_coco.yml
│   │   │   │   ├── simcc_mobilenetv2_wo-deconv-8xb64-210e_coco-256x192.py
│   │   │   │   ├── simcc_res50_8xb32-140e_coco-384x288.py
│   │   │   │   ├── simcc_res50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── simcc_vipnas-mbv3_8xb64-210e_coco-256x192.py
│   │   │   │   ├── vipnas_coco.md
│   │   │   │   └── vipnas_coco.yml
│   │   │   └── mpii/
│   │   │       └── simcc_res50_wo-deconv-8xb64-210e_mpii-256x256.py
│   │   ├── topdown_heatmap/
│   │   │   ├── README.md
│   │   │   ├── aic/
│   │   │   │   ├── hrnet_aic.md
│   │   │   │   ├── hrnet_aic.yml
│   │   │   │   ├── resnet_aic.md
│   │   │   │   ├── resnet_aic.yml
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_aic-256x192.py
│   │   │   │   └── td-hm_res101_8xb64-210e_aic-256x192.py
│   │   │   ├── coco/
│   │   │   │   ├── alexnet_coco.md
│   │   │   │   ├── alexnet_coco.yml
│   │   │   │   ├── cpm_coco.md
│   │   │   │   ├── cpm_coco.yml
│   │   │   │   ├── cspnext-l_udp_8xb256-210e_aic-coco-256x192.py
│   │   │   │   ├── cspnext-l_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext-m_udp_8xb256-210e_aic-coco-256x192.py
│   │   │   │   ├── cspnext-m_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext-s_udp_8xb256-210e_aic-coco-256x192.py
│   │   │   │   ├── cspnext-s_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext-tiny_udp_8xb256-210e_aic-coco-256x192.py
│   │   │   │   ├── cspnext-tiny_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext_udp_coco.md
│   │   │   │   ├── cspnext_udp_coco.yml
│   │   │   │   ├── hourglass_coco.md
│   │   │   │   ├── hourglass_coco.yml
│   │   │   │   ├── hrformer_coco.md
│   │   │   │   ├── hrformer_coco.yml
│   │   │   │   ├── hrnet_augmentation_coco.md
│   │   │   │   ├── hrnet_augmentation_coco.yml
│   │   │   │   ├── hrnet_coco.md
│   │   │   │   ├── hrnet_coco.yml
│   │   │   │   ├── hrnet_coco_aic.md
│   │   │   │   ├── hrnet_dark_coco.md
│   │   │   │   ├── hrnet_dark_coco.yml
│   │   │   │   ├── hrnet_fp16_coco.md
│   │   │   │   ├── hrnet_udp_coco.md
│   │   │   │   ├── hrnet_udp_coco.yml
│   │   │   │   ├── litehrnet_coco.md
│   │   │   │   ├── litehrnet_coco.yml
│   │   │   │   ├── mobilenetv2_coco.md
│   │   │   │   ├── mobilenetv2_coco.yml
│   │   │   │   ├── mspn_coco.md
│   │   │   │   ├── mspn_coco.yml
│   │   │   │   ├── pvt_coco.md
│   │   │   │   ├── pvt_coco.yml
│   │   │   │   ├── resnest_coco.md
│   │   │   │   ├── resnest_coco.yml
│   │   │   │   ├── resnet_coco.md
│   │   │   │   ├── resnet_coco.yml
│   │   │   │   ├── resnet_dark_coco.md
│   │   │   │   ├── resnet_dark_coco.yml
│   │   │   │   ├── resnet_fp16_coco.md
│   │   │   │   ├── resnetv1d_coco.md
│   │   │   │   ├── resnetv1d_coco.yml
│   │   │   │   ├── resnext_coco.md
│   │   │   │   ├── resnext_coco.yml
│   │   │   │   ├── rsn_coco.md
│   │   │   │   ├── rsn_coco.yml
│   │   │   │   ├── scnet_coco.md
│   │   │   │   ├── scnet_coco.yml
│   │   │   │   ├── seresnet_coco.md
│   │   │   │   ├── seresnet_coco.yml
│   │   │   │   ├── shufflenetv1_coco.md
│   │   │   │   ├── shufflenetv1_coco.yml
│   │   │   │   ├── shufflenetv2_coco.md
│   │   │   │   ├── shufflenetv2_coco.yml
│   │   │   │   ├── swin_coco.md
│   │   │   │   ├── swin_coco.yml
│   │   │   │   ├── td-hm-vis_res50_8xb64-210e_coco-aic-256x192-merge.py
│   │   │   │   ├── td-hm_2xmspn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_2xrsn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_3xmspn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_3xrsn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_4xmspn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-base-simple_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-base_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-huge-simple_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-huge_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-large-simple_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-large_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-small-simple_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-small_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_alexnet_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_cpm_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_cpm_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hourglass52_8xb32-210e_coco-256x256.py
│   │   │   │   ├── td-hm_hourglass52_8xb32-210e_coco-384x384.py
│   │   │   │   ├── td-hm_hrformer-base_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrformer-base_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrformer-small_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrformer-small_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_coco-aic-256x192-combine.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_coco-aic-256x192-merge.py
│   │   │   │   ├── td-hm_hrnet-w32_coarsedropout-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_dark-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_dark-8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w32_fp16-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_gridmask-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_photometric-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_udp-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_udp-8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w32_udp-regress-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w48_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w48_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w48_dark-8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w48_dark-8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w48_udp-8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w48_udp-8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_litehrnet-18_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_litehrnet-18_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_litehrnet-30_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_litehrnet-30_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_mspn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_pvt-s_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_pvtv2-b2_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res101_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res101_dark-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res101_dark-8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res152_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res152_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res152_dark-8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res152_dark-8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res50_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res50_dark-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res50_dark-8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res50_fp16-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnest101_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnest101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnest200_8xb16-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnest200_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnest269_8xb16-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnest269_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnest50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnest50_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnetv1d101_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnetv1d101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnetv1d152_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnetv1d152_8xb48-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnetv1d50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnetv1d50_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnext101_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnext101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnext152_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnext152_8xb48-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnext50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnext50_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_rsn18_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_rsn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_scnet101_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_scnet101_8xb48-210e_coco-384x288.py
│   │   │   │   ├── td-hm_scnet50_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_scnet50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_seresnet101_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_seresnet101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_seresnet152_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_seresnet152_8xb48-210e_coco-384x288.py
│   │   │   │   ├── td-hm_seresnet50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_seresnet50_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_shufflenetv1_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_shufflenetv1_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_shufflenetv2_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_shufflenetv2_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_swin-b-p4-w7_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_swin-b-p4-w7_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_swin-l-p4-w7_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_swin-l-p4-w7_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_swin-t-p4-w7_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_vgg16-bn_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_vipnas-mbv3_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_vipnas-res50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── vgg_coco.md
│   │   │   │   ├── vgg_coco.yml
│   │   │   │   ├── vipnas_coco.md
│   │   │   │   ├── vipnas_coco.yml
│   │   │   │   ├── vitpose_coco.md
│   │   │   │   └── vitpose_coco.yml
│   │   │   ├── crowdpose/
│   │   │   │   ├── cspnext-m_udp_8xb64-210e_crowpose-256x192.py
│   │   │   │   ├── cspnext_udp_crowdpose.md
│   │   │   │   ├── cspnext_udp_crowdpose.yml
│   │   │   │   ├── hrnet_crowdpose.md
│   │   │   │   ├── hrnet_crowdpose.yml
│   │   │   │   ├── resnet_crowdpose.md
│   │   │   │   ├── resnet_crowdpose.yml
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_crowdpose-256x192.py
│   │   │   │   ├── td-hm_res101_8xb64-210e_crowdpose-256x192.py
│   │   │   │   ├── td-hm_res101_8xb64-210e_crowdpose-320x256.py
│   │   │   │   ├── td-hm_res152_8xb64-210e_crowdpose-256x192.py
│   │   │   │   └── td-hm_res50_8xb64-210e_crowdpose-256x192.py
│   │   │   ├── exlpose/
│   │   │   │   ├── hrnet_exlpose.md
│   │   │   │   ├── hrnet_exlpose.yml
│   │   │   │   └── td-hm_hrnet-w32_8xb64-210e_exlpose-256x192.py
│   │   │   ├── humanart/
│   │   │   │   ├── hrnet_humanart.md
│   │   │   │   ├── hrnet_humanart.yml
│   │   │   │   ├── td-hm_ViTPose-base_8xb64-210e_humanart-256x192.py
│   │   │   │   ├── td-hm_ViTPose-huge_8xb64-210e_humanart-256x192.py
│   │   │   │   ├── td-hm_ViTPose-large_8xb64-210e_humanart-256x192.py
│   │   │   │   ├── td-hm_ViTPose-small_8xb64-210e_humanart-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py
│   │   │   │   ├── td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py
│   │   │   │   ├── vitpose_humanart.md
│   │   │   │   └── vitpose_humanart.yml
│   │   │   ├── jhmdb/
│   │   │   │   ├── cpm_jhmdb.md
│   │   │   │   ├── cpm_jhmdb.yml
│   │   │   │   ├── resnet_jhmdb.md
│   │   │   │   ├── resnet_jhmdb.yml
│   │   │   │   ├── td-hm_cpm_8xb32-40e_jhmdb-sub1-368x368.py
│   │   │   │   ├── td-hm_cpm_8xb32-40e_jhmdb-sub2-368x368.py
│   │   │   │   ├── td-hm_cpm_8xb32-40e_jhmdb-sub3-368x368.py
│   │   │   │   ├── td-hm_res50-2deconv_8xb64-40e_jhmdb-sub1-256x256.py
│   │   │   │   ├── td-hm_res50-2deconv_8xb64-40e_jhmdb-sub2-256x256.py
│   │   │   │   ├── td-hm_res50-2deconv_8xb64-40e_jhmdb-sub3-256x256.py
│   │   │   │   ├── td-hm_res50_8xb64-20e_jhmdb-sub1-256x256.py
│   │   │   │   ├── td-hm_res50_8xb64-20e_jhmdb-sub2-256x256.py
│   │   │   │   └── td-hm_res50_8xb64-20e_jhmdb-sub3-256x256.py
│   │   │   ├── mpii/
│   │   │   │   ├── cpm_mpii.md
│   │   │   │   ├── cpm_mpii.yml
│   │   │   │   ├── cspnext-m_udp_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── cspnext_udp_mpii.md
│   │   │   │   ├── cspnext_udp_mpii.yml
│   │   │   │   ├── hourglass_mpii.md
│   │   │   │   ├── hourglass_mpii.yml
│   │   │   │   ├── hrnet_dark_mpii.md
│   │   │   │   ├── hrnet_dark_mpii.yml
│   │   │   │   ├── hrnet_mpii.md
│   │   │   │   ├── hrnet_mpii.yml
│   │   │   │   ├── litehrnet_mpii.md
│   │   │   │   ├── litehrnet_mpii.yml
│   │   │   │   ├── mobilenetv2_mpii.md
│   │   │   │   ├── mobilenetv2_mpii.yml
│   │   │   │   ├── resnet_mpii.md
│   │   │   │   ├── resnet_mpii.yml
│   │   │   │   ├── resnetv1d_mpii.md
│   │   │   │   ├── resnetv1d_mpii.yml
│   │   │   │   ├── resnext_mpii.md
│   │   │   │   ├── resnext_mpii.yml
│   │   │   │   ├── scnet_mpii.md
│   │   │   │   ├── scnet_mpii.yml
│   │   │   │   ├── seresnet_mpii.md
│   │   │   │   ├── seresnet_mpii.yml
│   │   │   │   ├── shufflenetv1_mpii.md
│   │   │   │   ├── shufflenetv1_mpii.yml
│   │   │   │   ├── shufflenetv2_mpii.md
│   │   │   │   ├── shufflenetv2_mpii.yml
│   │   │   │   ├── td-hm_cpm_8xb64-210e_mpii-368x368.py
│   │   │   │   ├── td-hm_hourglass52_8xb32-210e_mpii-384x384.py
│   │   │   │   ├── td-hm_hourglass52_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_hrnet-w32_dark-8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_hrnet-w48_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_hrnet-w48_dark-8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_litehrnet-18_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_litehrnet-30_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_res101_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_res152_8xb32-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_res50_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_resnetv1d101_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_resnetv1d152_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_resnetv1d50_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_resnext152_8xb32-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_scnet101_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_scnet50_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_seresnet101_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_seresnet152_8xb32-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_seresnet50_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_shufflenetv1_8xb64-210e_mpii-256x256.py
│   │   │   │   └── td-hm_shufflenetv2_8xb64-210e_mpii-256x256.py
│   │   │   └── posetrack18/
│   │   │       ├── hrnet_posetrack18.md
│   │   │       ├── hrnet_posetrack18.yml
│   │   │       ├── resnet_posetrack18.md
│   │   │       ├── resnet_posetrack18.yml
│   │   │       ├── td-hm_hrnet-w32_8xb64-20e_posetrack18-256x192.py
│   │   │       ├── td-hm_hrnet-w32_8xb64-20e_posetrack18-384x288.py
│   │   │       ├── td-hm_hrnet-w48_8xb64-20e_posetrack18-256x192.py
│   │   │       ├── td-hm_hrnet-w48_8xb64-20e_posetrack18-384x288.py
│   │   │       └── td-hm_res50_8xb64-20e_posetrack18-256x192.py
│   │   ├── topdown_regression/
│   │   │   ├── README.md
│   │   │   ├── coco/
│   │   │   │   ├── mobilenetv2_rle_coco.md
│   │   │   │   ├── mobilenetv2_rle_coco.yml
│   │   │   │   ├── resnet_coco.md
│   │   │   │   ├── resnet_coco.yml
│   │   │   │   ├── resnet_rle_coco.md
│   │   │   │   ├── resnet_rle_coco.yml
│   │   │   │   ├── td-reg_mobilenetv2_rle-pretrained-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res101_rle-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res152_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res152_rle-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res152_rle-8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-reg_res50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res50_rle-8xb64-210e_coco-256x192.py
│   │   │   │   └── td-reg_res50_rle-pretrained-8xb64-210e_coco-256x192.py
│   │   │   └── mpii/
│   │   │       ├── resnet_mpii.md
│   │   │       ├── resnet_mpii.yml
│   │   │       ├── resnet_rle_mpii.md
│   │   │       ├── resnet_rle_mpii.yml
│   │   │       ├── td-reg_res101_8xb64-210e_mpii-256x256.py
│   │   │       ├── td-reg_res152_8xb64-210e_mpii-256x256.py
│   │   │       ├── td-reg_res50_8xb64-210e_mpii-256x256.py
│   │   │       └── td-reg_res50_rle-8xb64-210e_mpii-256x256.py
│   │   └── yoloxpose/
│   │       ├── README.md
│   │       └── coco/
│   │           ├── yoloxpose_coco.md
│   │           ├── yoloxpose_coco.yml
│   │           ├── yoloxpose_l_8xb32-300e_coco-640.py
│   │           ├── yoloxpose_m_8xb32-300e_coco-640.py
│   │           ├── yoloxpose_s_8xb32-300e_coco-640.py
│   │           └── yoloxpose_tiny_4xb64-300e_coco-416.py
│   ├── body_3d_keypoint/
│   │   ├── README.md
│   │   ├── image_pose_lift/
│   │   │   ├── README.md
│   │   │   └── h36m/
│   │   │       ├── image-pose-lift_tcn_8xb64-200e_h36m.py
│   │   │       ├── simplebaseline3d_h36m.md
│   │   │       └── simplebaseline3d_h36m.yml
│   │   ├── motionbert/
│   │   │   ├── README.md
│   │   │   └── h36m/
│   │   │       ├── motionbert_dstformer-243frm_8xb32-240e_h36m-original.py
│   │   │       ├── motionbert_dstformer-243frm_8xb32-240e_h36m.py
│   │   │       ├── motionbert_dstformer-ft-243frm_8xb32-120e_h36m-original.py
│   │   │       ├── motionbert_dstformer-ft-243frm_8xb32-120e_h36m.py
│   │   │       ├── motionbert_h36m.md
│   │   │       └── motionbert_h36m.yml
│   │   └── video_pose_lift/
│   │       ├── README.md
│   │       └── h36m/
│   │           ├── video-pose-lift_tcn-1frm-supv-cpn-ft_8xb128-160e_h36m.py
│   │           ├── video-pose-lift_tcn-243frm-supv-cpn-ft_8xb128-200e_h36m.py
│   │           ├── video-pose-lift_tcn-243frm-supv_8xb128-160e_h36m.py
│   │           ├── video-pose-lift_tcn-27frm-semi-supv-cpn-ft_8xb64-200e_h36m.py
│   │           ├── video-pose-lift_tcn-27frm-semi-supv_8xb64-200e_h36m.py
│   │           ├── video-pose-lift_tcn-27frm-supv_8xb128-160e_h36m.py
│   │           ├── video-pose-lift_tcn-81frm-supv_8xb128-160e_h36m.py
│   │           ├── videopose3d_h36m.md
│   │           └── videopose3d_h36m.yml
│   ├── face_2d_keypoint/
│   │   ├── README.md
│   │   ├── rtmpose/
│   │   │   ├── README.md
│   │   │   ├── coco_wholebody_face/
│   │   │   │   ├── rtmpose-m_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   ├── rtmpose_coco_wholebody_face.md
│   │   │   │   └── rtmpose_coco_wholebody_face.yml
│   │   │   ├── face6/
│   │   │   │   ├── rtmpose-m_8xb256-120e_face6-256x256.py
│   │   │   │   ├── rtmpose-s_8xb256-120e_face6-256x256.py
│   │   │   │   ├── rtmpose-t_8xb256-120e_face6-256x256.py
│   │   │   │   ├── rtmpose_face6.md
│   │   │   │   └── rtmpose_face6.yml
│   │   │   ├── lapa/
│   │   │   │   ├── rtmpose-m_8xb64-120e_lapa-256x256.py
│   │   │   │   ├── rtmpose_lapa.md
│   │   │   │   └── rtmpose_lapa.yml
│   │   │   └── wflw/
│   │   │       ├── rtmpose-m_8xb64-60e_wflw-256x256.py
│   │   │       ├── rtmpose_wflw.md
│   │   │       └── rtmpose_wflw.yml
│   │   ├── topdown_heatmap/
│   │   │   ├── 300w/
│   │   │   │   ├── hrnetv2_300w.md
│   │   │   │   ├── hrnetv2_300w.yml
│   │   │   │   └── td-hm_hrnetv2-w18_8xb64-60e_300w-256x256.py
│   │   │   ├── 300wlp/
│   │   │   │   ├── hrnetv2_300wlp.md
│   │   │   │   ├── hrnetv2_300wlp.yml
│   │   │   │   └── td-hm_hrnetv2-w18_8xb64-60e_300wlp-256x256.py
│   │   │   ├── README.md
│   │   │   ├── aflw/
│   │   │   │   ├── hrnetv2_aflw.md
│   │   │   │   ├── hrnetv2_aflw.yml
│   │   │   │   ├── hrnetv2_dark_aflw.md
│   │   │   │   ├── hrnetv2_dark_aflw.yml
│   │   │   │   ├── td-hm_hrnetv2-w18_8xb64-60e_aflw-256x256.py
│   │   │   │   └── td-hm_hrnetv2-w18_dark-8xb64-60e_aflw-256x256.py
│   │   │   ├── coco_wholebody_face/
│   │   │   │   ├── hourglass_coco_wholebody_face.md
│   │   │   │   ├── hourglass_coco_wholebody_face.yml
│   │   │   │   ├── hrnetv2_coco_wholebody_face.md
│   │   │   │   ├── hrnetv2_coco_wholebody_face.yml
│   │   │   │   ├── hrnetv2_dark_coco_wholebody_face.md
│   │   │   │   ├── hrnetv2_dark_coco_wholebody_face.yml
│   │   │   │   ├── mobilenetv2_coco_wholebody_face.md
│   │   │   │   ├── mobilenetv2_coco_wholebody_face.yml
│   │   │   │   ├── resnet_coco_wholebody_face.md
│   │   │   │   ├── resnet_coco_wholebody_face.yml
│   │   │   │   ├── scnet_coco_wholebody_face.md
│   │   │   │   ├── scnet_coco_wholebody_face.yml
│   │   │   │   ├── td-hm_hourglass52_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_dark-8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   ├── td-hm_res50_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   └── td-hm_scnet50_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   ├── cofw/
│   │   │   │   ├── hrnetv2_cofw.md
│   │   │   │   ├── hrnetv2_cofw.yml
│   │   │   │   └── td-hm_hrnetv2-w18_8xb64-60e_cofw-256x256.py
│   │   │   └── wflw/
│   │   │       ├── hrnetv2_awing_wflw.md
│   │   │       ├── hrnetv2_awing_wflw.yml
│   │   │       ├── hrnetv2_dark_wflw.md
│   │   │       ├── hrnetv2_dark_wflw.yml
│   │   │       ├── hrnetv2_wflw.md
│   │   │       ├── hrnetv2_wflw.yml
│   │   │       ├── td-hm_hrnetv2-w18_8xb64-60e_wflw-256x256.py
│   │   │       ├── td-hm_hrnetv2-w18_awing-8xb64-60e_wflw-256x256.py
│   │   │       └── td-hm_hrnetv2-w18_dark-8xb64-60e_wflw-256x256.py
│   │   └── topdown_regression/
│   │       ├── README.md
│   │       └── wflw/
│   │           ├── resnet_softwingloss_wflw.md
│   │           ├── resnet_softwingloss_wflw.yml
│   │           ├── resnet_wflw.md
│   │           ├── resnet_wflw.yml
│   │           ├── resnet_wingloss_wflw.md
│   │           ├── resnet_wingloss_wflw.yml
│   │           ├── td-reg_res50_8xb64-210e_wflw-256x256.py
│   │           ├── td-reg_res50_softwingloss_8xb64-210e_wflw-256x256.py
│   │           └── td-reg_res50_wingloss_8xb64-210e_wflw-256x256.py
│   ├── fashion_2d_keypoint/
│   │   ├── README.md
│   │   └── topdown_heatmap/
│   │       ├── README.md
│   │       ├── deepfashion/
│   │       │   ├── hrnet_deepfashion.md
│   │       │   ├── hrnet_deepfashion.yml
│   │       │   ├── resnet_deepfashion.md
│   │       │   ├── resnet_deepfashion.yml
│   │       │   ├── td-hm_hrnet-w32_8xb64-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_hrnet-w32_8xb64-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_hrnet-w32_8xb64-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_hrnet-w32_udp_8xb64-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_hrnet-w32_udp_8xb64-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_hrnet-w32_udp_8xb64-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_hrnet-w48_8xb32-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_hrnet-w48_8xb32-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_hrnet-w48_8xb32-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_hrnet-w48_udp_8xb32-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_hrnet-w48_udp_8xb32-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_hrnet-w48_udp_8xb32-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_res101_8xb64-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_res101_8xb64-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_res101_8xb64-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_res152_8xb32-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_res152_8xb32-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_res152_8xb32-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_res50_8xb64-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_res50_8xb64-210e_deepfashion_lower-256x192.py
│   │       │   └── td-hm_res50_8xb64-210e_deepfashion_upper-256x192.py
│   │       └── deepfashion2/
│   │           ├── res50_deepfashion2.md
│   │           ├── res50_deepfasion2.yml
│   │           ├── td-hm_res50_1xb64-210e_deepfasion2-long-sleeved-dress-256x192.py
│   │           ├── td-hm_res50_1xb64-210e_deepfasion2-skirt-256x192.py
│   │           ├── td-hm_res50_1xb64-210e_deepfasion2-vest-dress-256x192.py
│   │           ├── td-hm_res50_2xb64-210e_deepfasion2-trousers-256x192.py
│   │           ├── td-hm_res50_3xb64-210e_deepfasion2-shorts-256x192.py
│   │           ├── td-hm_res50_4xb64-210e_deepfasion2-short-sleeved-dress-256x192.py
│   │           ├── td-hm_res50_4xb64-210e_deepfasion2-sling-256x192.py
│   │           ├── td-hm_res50_4xb64-210e_deepfasion2-sling-dress-256x192.py
│   │           ├── td-hm_res50_4xb64-210e_deepfasion2-vest-256x192.py
│   │           ├── td-hm_res50_6xb64-210e_deepfasion2-short-sleeved-shirt-256x192.py
│   │           ├── td-hm_res50_8xb64-210e_deepfasion2-long-sleeved-outwear-256x192.py
│   │           ├── td-hm_res50_8xb64-210e_deepfasion2-long-sleeved-shirt-256x192.py
│   │           └── td-hm_res50_8xb64-210e_deepfasion2-short-sleeved-outwear-256x192.py
│   ├── hand_2d_keypoint/
│   │   ├── README.md
│   │   ├── rtmpose/
│   │   │   ├── README.md
│   │   │   ├── coco_wholebody_hand/
│   │   │   │   ├── rtmpose-m_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── rtmpose_coco_wholebody_hand.md
│   │   │   │   └── rtmpose_coco_wholebody_hand.yml
│   │   │   └── hand5/
│   │   │       ├── rtmpose-m_8xb256-210e_hand5-256x256.py
│   │   │       ├── rtmpose_hand5.md
│   │   │       └── rtmpose_hand5.yml
│   │   ├── topdown_heatmap/
│   │   │   ├── README.md
│   │   │   ├── coco_wholebody_hand/
│   │   │   │   ├── hourglass_coco_wholebody_hand.md
│   │   │   │   ├── hourglass_coco_wholebody_hand.yml
│   │   │   │   ├── hrnetv2_coco_wholebody_hand.md
│   │   │   │   ├── hrnetv2_coco_wholebody_hand.yml
│   │   │   │   ├── hrnetv2_dark_coco_wholebody_hand.md
│   │   │   │   ├── hrnetv2_dark_coco_wholebody_hand.yml
│   │   │   │   ├── litehrnet_coco_wholebody_hand.md
│   │   │   │   ├── litehrnet_coco_wholebody_hand.yml
│   │   │   │   ├── mobilenetv2_coco_wholebody_hand.md
│   │   │   │   ├── mobilenetv2_coco_wholebody_hand.yml
│   │   │   │   ├── resnet_coco_wholebody_hand.md
│   │   │   │   ├── resnet_coco_wholebody_hand.yml
│   │   │   │   ├── scnet_coco_wholebody_hand.md
│   │   │   │   ├── scnet_coco_wholebody_hand.yml
│   │   │   │   ├── td-hm_hourglass52_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_dark-8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── td-hm_litehrnet-w18_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── td-hm_res50_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   └── td-hm_scnet50_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   ├── freihand2d/
│   │   │   │   ├── resnet_freihand2d.md
│   │   │   │   ├── resnet_freihand2d.yml
│   │   │   │   └── td-hm_res50_8xb64-100e_freihand2d-224x224.py
│   │   │   ├── onehand10k/
│   │   │   │   ├── hrnetv2_dark_onehand10k.md
│   │   │   │   ├── hrnetv2_dark_onehand10k.yml
│   │   │   │   ├── hrnetv2_onehand10k.md
│   │   │   │   ├── hrnetv2_onehand10k.yml
│   │   │   │   ├── hrnetv2_udp_onehand10k.md
│   │   │   │   ├── hrnetv2_udp_onehand10k.yml
│   │   │   │   ├── mobilenetv2_onehand10k.md
│   │   │   │   ├── mobilenetv2_onehand10k.yml
│   │   │   │   ├── resnet_onehand10k.md
│   │   │   │   ├── resnet_onehand10k.yml
│   │   │   │   ├── td-hm_hrnetv2-w18_8xb64-210e_onehand10k-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_dark-8xb64-210e_onehand10k-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_udp-8xb64-210e_onehand10k-256x256.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb64-210e_onehand10k-256x256.py
│   │   │   │   └── td-hm_res50_8xb32-210e_onehand10k-256x256.py
│   │   │   └── rhd2d/
│   │   │       ├── hrnetv2_dark_rhd2d.md
│   │   │       ├── hrnetv2_dark_rhd2d.yml
│   │   │       ├── hrnetv2_rhd2d.md
│   │   │       ├── hrnetv2_rhd2d.yml
│   │   │       ├── hrnetv2_udp_rhd2d.md
│   │   │       ├── hrnetv2_udp_rhd2d.yml
│   │   │       ├── mobilenetv2_rhd2d.md
│   │   │       ├── mobilenetv2_rhd2d.yml
│   │   │       ├── resnet_rhd2d.md
│   │   │       ├── resnet_rhd2d.yml
│   │   │       ├── td-hm_hrnetv2-w18_8xb64-210e_rhd2d-256x256.py
│   │   │       ├── td-hm_hrnetv2-w18_dark-8xb64-210e_rhd2d-256x256.py
│   │   │       ├── td-hm_hrnetv2-w18_udp-8xb64-210e_rhd2d-256x256.py
│   │   │       ├── td-hm_mobilenetv2_8xb64-210e_rhd2d-256x256.py
│   │   │       └── td-hm_res50_8xb64-210e_rhd2d-256x256.py
│   │   └── topdown_regression/
│   │       ├── README.md
│   │       ├── onehand10k/
│   │       │   ├── resnet_onehand10k.md
│   │       │   ├── resnet_onehand10k.yml
│   │       │   └── td-reg_res50_8xb64-210e_onehand10k-256x256.py
│   │       └── rhd2d/
│   │           ├── resnet_rhd2d.md
│   │           ├── resnet_rhd2d.yml
│   │           └── td-reg_res50_8xb64-210e_rhd2d-256x256.py
│   ├── hand_3d_keypoint/
│   │   ├── README.md
│   │   └── internet/
│   │       ├── README.md
│   │       └── interhand3d/
│   │           ├── internet_interhand3d.md
│   │           ├── internet_interhand3d.yml
│   │           └── internet_res50_4xb16-20e_interhand3d-256x256.py
│   ├── hand_gesture/
│   │   └── README.md
│   └── wholebody_2d_keypoint/
│       ├── README.md
│       ├── dwpose/
│       │   ├── README.md
│       │   ├── coco-wholebody/
│       │   │   ├── s1_dis/
│       │   │   │   ├── dwpose_l_dis_m_coco-256x192.py
│       │   │   │   └── dwpose_x_dis_l_coco-384x288.py
│       │   │   └── s2_dis/
│       │   │       ├── dwpose_l-ll_coco-384x288.py
│       │   │       └── dwpose_m-mm_coco-256x192.py
│       │   └── ubody/
│       │       ├── s1_dis/
│       │       │   ├── dwpose_l_dis_m_coco-ubody-256x192.py
│       │       │   ├── dwpose_l_dis_s_coco-ubody-256x192.py
│       │       │   ├── dwpose_l_dis_t_coco-ubody-256x192.py
│       │       │   ├── dwpose_x_dis_l_coco-ubody-256x192.py
│       │       │   └── rtmpose_x_dis_l_coco-ubody-384x288.py
│       │       └── s2_dis/
│       │           ├── dwpose_l-ll_coco-ubody-256x192.py
│       │           ├── dwpose_l-ll_coco-ubody-384x288.py
│       │           ├── dwpose_m-mm_coco-ubody-256x192.py
│       │           ├── dwpose_s-ss_coco-ubody-256x192.py
│       │           └── dwpose_t-tt_coco-ubody-256x192.py
│       ├── rtmpose/
│       │   ├── README.md
│       │   ├── cocktail14/
│       │   │   ├── rtmw-l_8xb1024-270e_cocktail14-256x192.py
│       │   │   ├── rtmw-l_8xb320-270e_cocktail14-384x288.py
│       │   │   ├── rtmw-m_8xb1024-270e_cocktail14-256x192.py
│       │   │   ├── rtmw-x_8xb320-270e_cocktail14-384x288.py
│       │   │   ├── rtmw-x_8xb704-270e_cocktail14-256x192.py
│       │   │   ├── rtmw_cocktail14.md
│       │   │   └── rtmw_cocktail14.yml
│       │   ├── coco-wholebody/
│       │   │   ├── rtmpose-l_8xb32-270e_coco-wholebody-384x288.py
│       │   │   ├── rtmpose-l_8xb64-270e_coco-wholebody-256x192.py
│       │   │   ├── rtmpose-m_8xb64-270e_coco-wholebody-256x192.py
│       │   │   ├── rtmpose-x_8xb32-270e_coco-wholebody-384x288.py
│       │   │   ├── rtmpose_coco-wholebody.md
│       │   │   └── rtmpose_coco-wholebody.yml
│       │   └── ubody/
│       │       ├── rtmpose-l_8xb32-270e_coco-ubody-wholebody-384x288.py
│       │       ├── rtmpose-l_8xb64-270e_coco-ubody-wholebody-256x192.py
│       │       ├── rtmpose-m_8xb64-270e_coco-ubody-wholebody-256x192.py
│       │       ├── rtmpose-s_8xb64-270e_coco-ubody-wholebody-256x192.py
│       │       ├── rtmpose-t_8xb64-270e_coco-ubody-wholebody-256x192.py
│       │       ├── rtmpose-x_8xb32-270e_coco-ubody-wholebody-384x288.py
│       │       └── rtmpose-x_8xb64-270e_coco-ubody-wholebody-256x192.py
│       └── topdown_heatmap/
│           ├── README.md
│           ├── coco-wholebody/
│           │   ├── cspnext-l_udp_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── cspnext-m_udp_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── cspnext_udp_coco-wholebody.md
│           │   ├── cspnext_udp_coco-wholebody.yml
│           │   ├── hrnet_coco-wholebody.md
│           │   ├── hrnet_coco-wholebody.yml
│           │   ├── hrnet_dark_coco-wholebody.md
│           │   ├── hrnet_dark_coco-wholebody.yml
│           │   ├── resnet_coco-wholebody.md
│           │   ├── resnet_coco-wholebody.yml
│           │   ├── td-hm_hrnet-w32_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_hrnet-w32_8xb64-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_hrnet-w32_dark-8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_hrnet-w48_8xb32-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_hrnet-w48_8xb32-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_hrnet-w48_dark-8xb32-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_res101_8xb32-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_res101_8xb32-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_res152_8xb32-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_res152_8xb32-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_res50_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_res50_8xb64-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_vipnas-mbv3_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_vipnas-mbv3_dark-8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_vipnas-res50_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_vipnas-res50_dark-8xb64-210e_coco-wholebody-256x192.py
│           │   ├── vipnas_coco-wholebody.md
│           │   ├── vipnas_coco-wholebody.yml
│           │   ├── vipnas_dark_coco-wholebody.md
│           │   └── vipnas_dark_coco-wholebody.yml
│           └── ubody2d/
│               ├── hrnet_coco-wholebody.yml
│               ├── hrnet_ubody-coco-wholebody.md
│               └── td-hm_hrnet-w32_8xb64-210e_ubody-256x192.py
├── dataset-index.yml
├── demo/
│   ├── MMPose_Tutorial.ipynb
│   ├── body3d_pose_lifter_demo.py
│   ├── bottomup_demo.py
│   ├── docs/
│   │   ├── en/
│   │   │   ├── 2d_animal_demo.md
│   │   │   ├── 2d_face_demo.md
│   │   │   ├── 2d_hand_demo.md
│   │   │   ├── 2d_human_pose_demo.md
│   │   │   ├── 2d_wholebody_pose_demo.md
│   │   │   ├── 3d_hand_demo.md
│   │   │   ├── 3d_human_pose_demo.md
│   │   │   ├── mmdet_modelzoo.md
│   │   │   └── webcam_api_demo.md
│   │   └── zh_cn/
│   │       ├── 2d_animal_demo.md
│   │       ├── 2d_face_demo.md
│   │       ├── 2d_hand_demo.md
│   │       ├── 2d_human_pose_demo.md
│   │       ├── 2d_wholebody_pose_demo.md
│   │       ├── 3d_human_pose_demo.md
│   │       ├── mmdet_modelzoo.md
│   │       └── webcam_api_demo.md
│   ├── hand3d_internet_demo.py
│   ├── image_demo.py
│   ├── inferencer_demo.py
│   ├── mmdetection_cfg/
│   │   ├── cascade_rcnn_x101_64x4d_fpn_1class.py
│   │   ├── cascade_rcnn_x101_64x4d_fpn_coco.py
│   │   ├── faster_rcnn_r50_fpn_1class.py
│   │   ├── faster_rcnn_r50_fpn_coco.py
│   │   ├── mask_rcnn_r50_fpn_2x_coco.py
│   │   ├── rtmdet_m_640-8xb32_coco-person.py
│   │   ├── rtmdet_m_8xb32-300e_coco.py
│   │   ├── rtmdet_nano_320-8xb32_coco-person.py
│   │   ├── rtmdet_nano_320-8xb32_hand.py
│   │   ├── rtmdet_tiny_8xb32-300e_coco.py
│   │   ├── ssdlite_mobilenetv2-scratch_8xb24-600e_coco.py
│   │   ├── ssdlite_mobilenetv2_scratch_600e_onehand.py
│   │   ├── yolov3_d53_320_273e_coco.py
│   │   └── yolox-s_8xb8-300e_coco-face.py
│   ├── mmtracking_cfg/
│   │   ├── deepsort_faster-rcnn_fpn_4e_mot17-private-half.py
│   │   └── tracktor_faster-rcnn_r50_fpn_4e_mot17-private.py
│   └── topdown_demo_with_mmdet.py
├── docker/
│   ├── Dockerfile
│   └── serve/
│       ├── Dockerfile
│       ├── config.properties
│       └── entrypoint.sh
├── docs/
│   ├── en/
│   │   ├── .readthedocs.yaml
│   │   ├── Makefile
│   │   ├── _static/
│   │   │   └── css/
│   │   │       └── readthedocs.css
│   │   ├── advanced_guides/
│   │   │   ├── codecs.md
│   │   │   ├── customize_datasets.md
│   │   │   ├── customize_evaluation.md
│   │   │   ├── customize_logging.md
│   │   │   ├── customize_optimizer.md
│   │   │   ├── customize_transforms.md
│   │   │   ├── dataflow.md
│   │   │   └── implement_new_models.md
│   │   ├── api.rst
│   │   ├── collect_modelzoo.py
│   │   ├── collect_projects.py
│   │   ├── conf.py
│   │   ├── contribution_guide.md
│   │   ├── dataset_zoo/
│   │   │   ├── 2d_animal_keypoint.md
│   │   │   ├── 2d_body_keypoint.md
│   │   │   ├── 2d_face_keypoint.md
│   │   │   ├── 2d_fashion_landmark.md
│   │   │   ├── 2d_hand_keypoint.md
│   │   │   ├── 2d_wholebody_keypoint.md
│   │   │   ├── 3d_body_keypoint.md
│   │   │   ├── 3d_body_mesh.md
│   │   │   ├── 3d_hand_keypoint.md
│   │   │   └── 3d_wholebody_keypoint.md
│   │   ├── faq.md
│   │   ├── guide_to_framework.md
│   │   ├── index.rst
│   │   ├── installation.md
│   │   ├── make.bat
│   │   ├── merge_docs.sh
│   │   ├── migration.md
│   │   ├── notes/
│   │   │   ├── benchmark.md
│   │   │   ├── changelog.md
│   │   │   ├── ecosystem.md
│   │   │   └── pytorch_2.md
│   │   ├── overview.md
│   │   ├── projects/
│   │   │   └── projects.md
│   │   ├── quick_run.md
│   │   ├── stats.py
│   │   ├── switch_language.md
│   │   ├── user_guides/
│   │   │   ├── configs.md
│   │   │   ├── dataset_tools.md
│   │   │   ├── how_to_deploy.md
│   │   │   ├── inference.md
│   │   │   ├── label_studio.md
│   │   │   ├── mixed_datasets.md
│   │   │   ├── model_analysis.md
│   │   │   ├── prepare_datasets.md
│   │   │   └── train_and_test.md
│   │   └── visualization.md
│   ├── src/
│   │   └── papers/
│   │       ├── algorithms/
│   │       │   ├── associative_embedding.md
│   │       │   ├── awingloss.md
│   │       │   ├── cid.md
│   │       │   ├── cpm.md
│   │       │   ├── dark.md
│   │       │   ├── debias_ipr.md
│   │       │   ├── deeppose.md
│   │       │   ├── dekr.md
│   │       │   ├── dsnt.md
│   │       │   ├── dwpose.md
│   │       │   ├── edpose.md
│   │       │   ├── higherhrnet.md
│   │       │   ├── hmr.md
│   │       │   ├── hourglass.md
│   │       │   ├── hrnet.md
│   │       │   ├── hrnetv2.md
│   │       │   ├── internet.md
│   │       │   ├── ipr.md
│   │       │   ├── litehrnet.md
│   │       │   ├── motionbert.md
│   │       │   ├── mspn.md
│   │       │   ├── posewarper.md
│   │       │   ├── rle.md
│   │       │   ├── rsn.md
│   │       │   ├── rtmo.md
│   │       │   ├── rtmpose.md
│   │       │   ├── scnet.md
│   │       │   ├── simcc.md
│   │       │   ├── simplebaseline2d.md
│   │       │   ├── simplebaseline3d.md
│   │       │   ├── softwingloss.md
│   │       │   ├── udp.md
│   │       │   ├── videopose3d.md
│   │       │   ├── vipnas.md
│   │       │   ├── vitpose.md
│   │       │   ├── voxelpose.md
│   │       │   ├── wingloss.md
│   │       │   └── yolopose.md
│   │       ├── backbones/
│   │       │   ├── alexnet.md
│   │       │   ├── cpm.md
│   │       │   ├── higherhrnet.md
│   │       │   ├── hourglass.md
│   │       │   ├── hrformer.md
│   │       │   ├── hrnet.md
│   │       │   ├── hrnetv2.md
│   │       │   ├── litehrnet.md
│   │       │   ├── mobilenetv2.md
│   │       │   ├── mspn.md
│   │       │   ├── pvt.md
│   │       │   ├── pvtv2.md
│   │       │   ├── resnest.md
│   │       │   ├── resnet.md
│   │       │   ├── resnetv1d.md
│   │       │   ├── resnext.md
│   │       │   ├── rsn.md
│   │       │   ├── scnet.md
│   │       │   ├── seresnet.md
│   │       │   ├── shufflenetv1.md
│   │       │   ├── shufflenetv2.md
│   │       │   ├── swin.md
│   │       │   ├── vgg.md
│   │       │   └── vipnas.md
│   │       ├── datasets/
│   │       │   ├── 300vw.md
│   │       │   ├── 300w.md
│   │       │   ├── 300wlp.md
│   │       │   ├── aflw.md
│   │       │   ├── aic.md
│   │       │   ├── animalkingdom.md
│   │       │   ├── animalpose.md
│   │       │   ├── ap10k.md
│   │       │   ├── atrw.md
│   │       │   ├── campus_and_shelf.md
│   │       │   ├── coco.md
│   │       │   ├── coco_wholebody.md
│   │       │   ├── coco_wholebody_face.md
│   │       │   ├── coco_wholebody_hand.md
│   │       │   ├── cofw.md
│   │       │   ├── crowdpose.md
│   │       │   ├── deepfashion.md
│   │       │   ├── exlpose.md
│   │       │   ├── fly.md
│   │       │   ├── freihand.md
│   │       │   ├── h36m.md
│   │       │   ├── halpe.md
│   │       │   ├── horse10.md
│   │       │   ├── human_art.md
│   │       │   ├── interhand.md
│   │       │   ├── jhmdb.md
│   │       │   ├── lapa.md
│   │       │   ├── locust.md
│   │       │   ├── macaque.md
│   │       │   ├── mhp.md
│   │       │   ├── mpi_inf_3dhp.md
│   │       │   ├── mpii.md
│   │       │   ├── mpii_trb.md
│   │       │   ├── ochuman.md
│   │       │   ├── onehand10k.md
│   │       │   ├── panoptic.md
│   │       │   ├── panoptic_body3d.md
│   │       │   ├── posetrack18.md
│   │       │   ├── rhd.md
│   │       │   ├── ubody.md
│   │       │   ├── wflw.md
│   │       │   └── zebra.md
│   │       └── techniques/
│   │           ├── albumentations.md
│   │           ├── awingloss.md
│   │           ├── dark.md
│   │           ├── fp16.md
│   │           ├── fpn.md
│   │           ├── rle.md
│   │           ├── smoothnet.md
│   │           ├── softwingloss.md
│   │           ├── udp.md
│   │           └── wingloss.md
│   └── zh_cn/
│       ├── .readthedocs.yaml
│       ├── Makefile
│       ├── _static/
│       │   └── css/
│       │       └── readthedocs.css
│       ├── advanced_guides/
│       │   ├── codecs.md
│       │   ├── customize_datasets.md
│       │   ├── customize_evaluation.md
│       │   ├── customize_logging.md
│       │   ├── customize_optimizer.md
│       │   ├── customize_transforms.md
│       │   ├── dataflow.md
│       │   └── implement_new_models.md
│       ├── api.rst
│       ├── collect_modelzoo.py
│       ├── collect_projects.py
│       ├── conf.py
│       ├── contribution_guide.md
│       ├── dataset_zoo/
│       │   ├── 2d_animal_keypoint.md
│       │   ├── 2d_body_keypoint.md
│       │   ├── 2d_face_keypoint.md
│       │   ├── 2d_fashion_landmark.md
│       │   ├── 2d_hand_keypoint.md
│       │   ├── 2d_wholebody_keypoint.md
│       │   ├── 3d_body_keypoint.md
│       │   ├── 3d_body_mesh.md
│       │   └── 3d_hand_keypoint.md
│       ├── faq.md
│       ├── guide_to_framework.md
│       ├── index.rst
│       ├── installation.md
│       ├── make.bat
│       ├── merge_docs.sh
│       ├── migration.md
│       ├── notes/
│       │   ├── changelog.md
│       │   ├── ecosystem.md
│       │   ├── projects.md
│       │   └── pytorch_2.md
│       ├── overview.md
│       ├── quick_run.md
│       ├── stats.py
│       ├── switch_language.md
│       └── user_guides/
│           ├── configs.md
│           ├── dataset_tools.md
│           ├── how_to_deploy.md
│           ├── inference.md
│           ├── label_studio.md
│           ├── mixed_datasets.md
│           ├── model_analysis.md
│           ├── prepare_datasets.md
│           └── train_and_test.md
├── mmpose/
│   ├── __init__.py
│   ├── apis/
│   │   ├── __init__.py
│   │   ├── inference.py
│   │   ├── inference_3d.py
│   │   ├── inference_tracking.py
│   │   ├── inferencers/
│   │   │   ├── __init__.py
│   │   │   ├── base_mmpose_inferencer.py
│   │   │   ├── hand3d_inferencer.py
│   │   │   ├── mmpose_inferencer.py
│   │   │   ├── pose2d_inferencer.py
│   │   │   ├── pose3d_inferencer.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── default_det_models.py
│   │   │       └── get_model_alias.py
│   │   └── visualization.py
│   ├── codecs/
│   │   ├── __init__.py
│   │   ├── annotation_processors.py
│   │   ├── associative_embedding.py
│   │   ├── base.py
│   │   ├── decoupled_heatmap.py
│   │   ├── edpose_label.py
│   │   ├── hand_3d_heatmap.py
│   │   ├── image_pose_lifting.py
│   │   ├── integral_regression_label.py
│   │   ├── megvii_heatmap.py
│   │   ├── motionbert_label.py
│   │   ├── msra_heatmap.py
│   │   ├── regression_label.py
│   │   ├── simcc_label.py
│   │   ├── spr.py
│   │   ├── udp_heatmap.py
│   │   ├── utils/
│   │   │   ├── __init__.py
│   │   │   ├── camera_image_projection.py
│   │   │   ├── gaussian_heatmap.py
│   │   │   ├── instance_property.py
│   │   │   ├── offset_heatmap.py
│   │   │   ├── post_processing.py
│   │   │   └── refinement.py
│   │   └── video_pose_lifting.py
│   ├── configs/
│   │   ├── _base_/
│   │   │   └── default_runtime.py
│   │   ├── body_2d_keypoint/
│   │   │   ├── rtmpose/
│   │   │   │   └── coco/
│   │   │   │       ├── rtmpose_m_8xb256-420e_coco-256x192.py
│   │   │   │       └── rtmpose_s_8xb256_420e_aic_coco_256x192.py
│   │   │   └── topdown_heatmap/
│   │   │       └── coco/
│   │   │           └── td-hm_hrnet-w48_udp-8xb32-210e_coco-256x192.py
│   │   └── wholebody_2d_keypoint/
│   │       └── rtmpose/
│   │           └── cocktail13/
│   │               ├── rtmw-l_8xb1024-270e_cocktail14-256x192.py
│   │               ├── rtmw-l_8xb320-270e_cocktail14-384x288.py
│   │               ├── rtmw-m_8xb1024-270e_cocktail14-256x192.py
│   │               ├── rtmw-x_8xb320-270e_cocktail14-384x288.py
│   │               └── rtmw-x_8xb704-270e_cocktail14-256x192.py
│   ├── datasets/
│   │   ├── __init__.py
│   │   ├── builder.py
│   │   ├── dataset_wrappers.py
│   │   ├── datasets/
│   │   │   ├── __init__.py
│   │   │   ├── animal/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── animalkingdom_dataset.py
│   │   │   │   ├── animalpose_dataset.py
│   │   │   │   ├── ap10k_dataset.py
│   │   │   │   ├── atrw_dataset.py
│   │   │   │   ├── fly_dataset.py
│   │   │   │   ├── horse10_dataset.py
│   │   │   │   ├── locust_dataset.py
│   │   │   │   ├── macaque_dataset.py
│   │   │   │   └── zebra_dataset.py
│   │   │   ├── base/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_coco_style_dataset.py
│   │   │   │   └── base_mocap_dataset.py
│   │   │   ├── body/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── aic_dataset.py
│   │   │   │   ├── coco_dataset.py
│   │   │   │   ├── crowdpose_dataset.py
│   │   │   │   ├── exlpose_dataset.py
│   │   │   │   ├── humanart21_dataset.py
│   │   │   │   ├── humanart_dataset.py
│   │   │   │   ├── jhmdb_dataset.py
│   │   │   │   ├── mhp_dataset.py
│   │   │   │   ├── mpii_dataset.py
│   │   │   │   ├── mpii_trb_dataset.py
│   │   │   │   ├── ochuman_dataset.py
│   │   │   │   ├── posetrack18_dataset.py
│   │   │   │   └── posetrack18_video_dataset.py
│   │   │   ├── body3d/
│   │   │   │   ├── __init__.py
│   │   │   │   └── h36m_dataset.py
│   │   │   ├── face/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── aflw_dataset.py
│   │   │   │   ├── coco_wholebody_face_dataset.py
│   │   │   │   ├── cofw_dataset.py
│   │   │   │   ├── face_300vw_dataset.py
│   │   │   │   ├── face_300w_dataset.py
│   │   │   │   ├── face_300wlp_dataset.py
│   │   │   │   ├── lapa_dataset.py
│   │   │   │   └── wflw_dataset.py
│   │   │   ├── fashion/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── deepfashion2_dataset.py
│   │   │   │   └── deepfashion_dataset.py
│   │   │   ├── hand/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── coco_wholebody_hand_dataset.py
│   │   │   │   ├── freihand_dataset.py
│   │   │   │   ├── interhand2d_double_dataset.py
│   │   │   │   ├── onehand10k_dataset.py
│   │   │   │   ├── panoptic_hand2d_dataset.py
│   │   │   │   └── rhd2d_dataset.py
│   │   │   ├── hand3d/
│   │   │   │   ├── __init__.py
│   │   │   │   └── interhand_3d_dataset.py
│   │   │   ├── utils.py
│   │   │   ├── wholebody/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── coco_wholebody_dataset.py
│   │   │   │   ├── halpe_dataset.py
│   │   │   │   └── ubody2d_dataset.py
│   │   │   └── wholebody3d/
│   │   │       ├── __init__.py
│   │   │       ├── h3wb_dataset.py
│   │   │       └── ubody3d_dataset.py
│   │   ├── samplers.py
│   │   └── transforms/
│   │       ├── __init__.py
│   │       ├── bottomup_transforms.py
│   │       ├── common_transforms.py
│   │       ├── converting.py
│   │       ├── formatting.py
│   │       ├── hand_transforms.py
│   │       ├── loading.py
│   │       ├── mix_img_transforms.py
│   │       ├── pose3d_transforms.py
│   │       └── topdown_transforms.py
│   ├── engine/
│   │   ├── __init__.py
│   │   ├── hooks/
│   │   │   ├── __init__.py
│   │   │   ├── badcase_hook.py
│   │   │   ├── ema_hook.py
│   │   │   ├── mode_switch_hooks.py
│   │   │   ├── sync_norm_hook.py
│   │   │   └── visualization_hook.py
│   │   ├── optim_wrappers/
│   │   │   ├── __init__.py
│   │   │   ├── force_default_constructor.py
│   │   │   └── layer_decay_optim_wrapper.py
│   │   └── schedulers/
│   │       ├── __init__.py
│   │       ├── constant_lr.py
│   │       └── quadratic_warmup.py
│   ├── evaluation/
│   │   ├── __init__.py
│   │   ├── evaluators/
│   │   │   ├── __init__.py
│   │   │   └── mutli_dataset_evaluator.py
│   │   ├── functional/
│   │   │   ├── __init__.py
│   │   │   ├── keypoint_eval.py
│   │   │   ├── mesh_eval.py
│   │   │   ├── nms.py
│   │   │   └── transforms.py
│   │   └── metrics/
│   │       ├── __init__.py
│   │       ├── coco_metric.py
│   │       ├── coco_wholebody_metric.py
│   │       ├── hand_metric.py
│   │       ├── keypoint_2d_metrics.py
│   │       ├── keypoint_3d_metrics.py
│   │       ├── keypoint_partition_metric.py
│   │       ├── posetrack18_metric.py
│   │       └── simple_keypoint_3d_metrics.py
│   ├── models/
│   │   ├── __init__.py
│   │   ├── backbones/
│   │   │   ├── __init__.py
│   │   │   ├── alexnet.py
│   │   │   ├── base_backbone.py
│   │   │   ├── cpm.py
│   │   │   ├── csp_darknet.py
│   │   │   ├── cspnext.py
│   │   │   ├── dstformer.py
│   │   │   ├── hourglass.py
│   │   │   ├── hourglass_ae.py
│   │   │   ├── hrformer.py
│   │   │   ├── hrnet.py
│   │   │   ├── litehrnet.py
│   │   │   ├── mobilenet_v2.py
│   │   │   ├── mobilenet_v3.py
│   │   │   ├── mspn.py
│   │   │   ├── pvt.py
│   │   │   ├── regnet.py
│   │   │   ├── resnest.py
│   │   │   ├── resnet.py
│   │   │   ├── resnext.py
│   │   │   ├── rsn.py
│   │   │   ├── scnet.py
│   │   │   ├── seresnet.py
│   │   │   ├── seresnext.py
│   │   │   ├── shufflenet_v1.py
│   │   │   ├── shufflenet_v2.py
│   │   │   ├── swin.py
│   │   │   ├── tcn.py
│   │   │   ├── utils/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── channel_shuffle.py
│   │   │   │   ├── ckpt_convert.py
│   │   │   │   ├── inverted_residual.py
│   │   │   │   ├── make_divisible.py
│   │   │   │   ├── se_layer.py
│   │   │   │   └── utils.py
│   │   │   ├── v2v_net.py
│   │   │   ├── vgg.py
│   │   │   ├── vipnas_mbv3.py
│   │   │   └── vipnas_resnet.py
│   │   ├── builder.py
│   │   ├── data_preprocessors/
│   │   │   ├── __init__.py
│   │   │   ├── batch_augmentation.py
│   │   │   └── data_preprocessor.py
│   │   ├── distillers/
│   │   │   ├── __init__.py
│   │   │   └── dwpose_distiller.py
│   │   ├── heads/
│   │   │   ├── __init__.py
│   │   │   ├── base_head.py
│   │   │   ├── coord_cls_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── rtmcc_head.py
│   │   │   │   ├── rtmw_head.py
│   │   │   │   └── simcc_head.py
│   │   │   ├── heatmap_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── ae_head.py
│   │   │   │   ├── cid_head.py
│   │   │   │   ├── cpm_head.py
│   │   │   │   ├── heatmap_head.py
│   │   │   │   ├── internet_head.py
│   │   │   │   ├── mspn_head.py
│   │   │   │   └── vipnas_head.py
│   │   │   ├── hybrid_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── dekr_head.py
│   │   │   │   ├── rtmo_head.py
│   │   │   │   ├── vis_head.py
│   │   │   │   └── yoloxpose_head.py
│   │   │   ├── regression_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── dsnt_head.py
│   │   │   │   ├── integral_regression_head.py
│   │   │   │   ├── motion_regression_head.py
│   │   │   │   ├── regression_head.py
│   │   │   │   ├── rle_head.py
│   │   │   │   ├── temporal_regression_head.py
│   │   │   │   └── trajectory_regression_head.py
│   │   │   └── transformer_heads/
│   │   │       ├── __init__.py
│   │   │       ├── base_transformer_head.py
│   │   │       ├── edpose_head.py
│   │   │       └── transformers/
│   │   │           ├── __init__.py
│   │   │           ├── deformable_detr_layers.py
│   │   │           ├── detr_layers.py
│   │   │           └── utils.py
│   │   ├── losses/
│   │   │   ├── __init__.py
│   │   │   ├── ae_loss.py
│   │   │   ├── bbox_loss.py
│   │   │   ├── classification_loss.py
│   │   │   ├── fea_dis_loss.py
│   │   │   ├── heatmap_loss.py
│   │   │   ├── logit_dis_loss.py
│   │   │   ├── loss_wrappers.py
│   │   │   └── regression_loss.py
│   │   ├── necks/
│   │   │   ├── __init__.py
│   │   │   ├── channel_mapper.py
│   │   │   ├── cspnext_pafpn.py
│   │   │   ├── fmap_proc_neck.py
│   │   │   ├── fpn.py
│   │   │   ├── gap_neck.py
│   │   │   ├── hybrid_encoder.py
│   │   │   ├── posewarper_neck.py
│   │   │   └── yolox_pafpn.py
│   │   ├── pose_estimators/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── bottomup.py
│   │   │   ├── pose_lifter.py
│   │   │   └── topdown.py
│   │   ├── task_modules/
│   │   │   ├── __init__.py
│   │   │   ├── assigners/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── metric_calculators.py
│   │   │   │   └── sim_ota_assigner.py
│   │   │   └── prior_generators/
│   │   │       ├── __init__.py
│   │   │       └── mlvl_point_generator.py
│   │   └── utils/
│   │       ├── __init__.py
│   │       ├── check_and_update_config.py
│   │       ├── ckpt_convert.py
│   │       ├── csp_layer.py
│   │       ├── geometry.py
│   │       ├── misc.py
│   │       ├── ops.py
│   │       ├── realnvp.py
│   │       ├── regularizations.py
│   │       ├── reparam_layers.py
│   │       ├── rtmcc_block.py
│   │       ├── transformer.py
│   │       └── tta.py
│   ├── registry.py
│   ├── structures/
│   │   ├── __init__.py
│   │   ├── bbox/
│   │   │   ├── __init__.py
│   │   │   ├── bbox_overlaps.py
│   │   │   └── transforms.py
│   │   ├── keypoint/
│   │   │   ├── __init__.py
│   │   │   └── transforms.py
│   │   ├── multilevel_pixel_data.py
│   │   ├── pose_data_sample.py
│   │   └── utils.py
│   ├── testing/
│   │   ├── __init__.py
│   │   └── _utils.py
│   ├── utils/
│   │   ├── __init__.py
│   │   ├── camera.py
│   │   ├── collect_env.py
│   │   ├── config_utils.py
│   │   ├── dist_utils.py
│   │   ├── hooks.py
│   │   ├── logger.py
│   │   ├── setup_env.py
│   │   ├── tensor_utils.py
│   │   ├── timer.py
│   │   └── typing.py
│   ├── version.py
│   └── visualization/
│       ├── __init__.py
│       ├── fast_visualizer.py
│       ├── local_visualizer.py
│       ├── local_visualizer_3d.py
│       ├── opencv_backend_visualizer.py
│       └── simcc_vis.py
├── model-index.yml
├── projects/
│   ├── README.md
│   ├── awesome-mmpose/
│   │   └── README.md
│   ├── example_project/
│   │   ├── README.md
│   │   ├── configs/
│   │   │   └── example-head-loss_hrnet-w32_8xb64-210e_coco-256x192.py
│   │   └── models/
│   │       ├── __init__.py
│   │       ├── example_head.py
│   │       └── example_loss.py
│   ├── faq.md
│   ├── just_dance/
│   │   ├── README.md
│   │   ├── app.py
│   │   ├── calculate_similarity.py
│   │   ├── configs/
│   │   │   └── rtmdet-nano_one-person.py
│   │   ├── just_dance_demo.ipynb
│   │   ├── process_video.py
│   │   └── utils.py
│   ├── mmpose4aigc/
│   │   ├── README.md
│   │   ├── README_CN.md
│   │   ├── download_models.sh
│   │   ├── install_posetracker_linux.sh
│   │   ├── mmpose_openpose.sh
│   │   ├── mmpose_style_skeleton.sh
│   │   └── openpose_visualization.py
│   ├── pose_anything/
│   │   ├── README.md
│   │   ├── configs/
│   │   │   ├── demo.py
│   │   │   └── demo_b.py
│   │   ├── datasets/
│   │   │   ├── __init__.py
│   │   │   ├── builder.py
│   │   │   ├── datasets/
│   │   │   │   ├── __init__.py
│   │   │   │   └── mp100/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── fewshot_base_dataset.py
│   │   │   │       ├── fewshot_dataset.py
│   │   │   │       ├── test_base_dataset.py
│   │   │   │       ├── test_dataset.py
│   │   │   │       ├── transformer_base_dataset.py
│   │   │   │       └── transformer_dataset.py
│   │   │   └── pipelines/
│   │   │       ├── __init__.py
│   │   │       ├── post_transforms.py
│   │   │       └── top_down_transform.py
│   │   ├── demo.py
│   │   ├── models/
│   │   │   ├── __init__.py
│   │   │   ├── backbones/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── simmim.py
│   │   │   │   ├── swin_mlp.py
│   │   │   │   ├── swin_transformer.py
│   │   │   │   ├── swin_transformer_moe.py
│   │   │   │   ├── swin_transformer_v2.py
│   │   │   │   └── swin_utils.py
│   │   │   ├── detectors/
│   │   │   │   ├── __init__.py
│   │   │   │   └── pam.py
│   │   │   ├── keypoint_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   └── head.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── builder.py
│   │   │       ├── encoder_decoder.py
│   │   │       ├── positional_encoding.py
│   │   │       └── transformer.py
│   │   └── tools/
│   │       └── visualization.py
│   ├── rtmo/
│   │   └── README.md
│   ├── rtmpose/
│   │   ├── README.md
│   │   ├── README_CN.md
│   │   ├── app.py
│   │   ├── benchmark/
│   │   │   ├── README.md
│   │   │   └── README_CN.md
│   │   ├── examples/
│   │   │   ├── PoseTracker-Android-Prototype/
│   │   │   │   └── README.md
│   │   │   ├── README.md
│   │   │   ├── RTMPose-Deploy/
│   │   │   │   ├── README.md
│   │   │   │   ├── README_CN.md
│   │   │   │   └── Windows/
│   │   │   │       ├── OnnxRumtime-CPU/
│   │   │   │       │   └── src/
│   │   │   │       │       └── RTMPoseOnnxRuntime/
│   │   │   │       │           ├── characterset_convert.h
│   │   │   │       │           ├── main.cpp
│   │   │   │       │           ├── rtmdet_onnxruntime.cpp
│   │   │   │       │           ├── rtmdet_onnxruntime.h
│   │   │   │       │           ├── rtmpose_onnxruntime.cpp
│   │   │   │       │           ├── rtmpose_onnxruntime.h
│   │   │   │       │           ├── rtmpose_tracker_onnxruntime.cpp
│   │   │   │       │           ├── rtmpose_tracker_onnxruntime.h
│   │   │   │       │           └── rtmpose_utils.h
│   │   │   │       └── TensorRT/
│   │   │   │           ├── README.md
│   │   │   │           ├── python/
│   │   │   │           │   └── convert_rtmdet.py
│   │   │   │           └── src/
│   │   │   │               └── RTMPoseTensorRT/
│   │   │   │                   ├── inference.cpp
│   │   │   │                   ├── inference.h
│   │   │   │                   ├── main.cpp
│   │   │   │                   ├── rtmdet.cpp
│   │   │   │                   ├── rtmdet.h
│   │   │   │                   ├── rtmpose.cpp
│   │   │   │                   ├── rtmpose.h
│   │   │   │                   ├── utils.cpp
│   │   │   │                   └── utils.h
│   │   │   ├── onnxruntime/
│   │   │   │   ├── README.md
│   │   │   │   ├── README_CN.md
│   │   │   │   ├── main.py
│   │   │   │   └── requirements.txt
│   │   │   └── rtmlib/
│   │   │       └── README.md
│   │   ├── rtmdet/
│   │   │   ├── README.md
│   │   │   ├── hand/
│   │   │   │   └── rtmdet_nano_320-8xb32_hand.py
│   │   │   └── person/
│   │   │       ├── humanart_detection.py
│   │   │       ├── rtmdet_l_8xb32-300e_humanart.py
│   │   │       ├── rtmdet_m_640-8xb32_coco-person.py
│   │   │       ├── rtmdet_m_8xb32-300e_humanart.py
│   │   │       ├── rtmdet_nano_320-8xb32_coco-person.py
│   │   │       ├── rtmdet_s_8xb32-300e_humanart.py
│   │   │       ├── rtmdet_tiny_8xb32-300e_humanart.py
│   │   │       └── rtmdet_x_8xb32-300e_humanart.py
│   │   ├── rtmpose/
│   │   │   ├── animal_2d_keypoint/
│   │   │   │   └── rtmpose-m_8xb64-210e_ap10k-256x256.py
│   │   │   ├── body_2d_keypoint/
│   │   │   │   ├── rtmpose-l_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-l_8xb256-420e_coco-384x288.py
│   │   │   │   ├── rtmpose-l_8xb512-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-l_8xb512-700e_body8-halpe26-384x288.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_coco-384x288.py
│   │   │   │   ├── rtmpose-m_8xb512-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-m_8xb512-700e_body8-halpe26-384x288.py
│   │   │   │   ├── rtmpose-s_8xb1024-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-s_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-t_8xb1024-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-t_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-x_8xb256-700e_body8-halpe26-384x288.py
│   │   │   │   └── rtmpose-x_8xb256-700e_coco-384x288.py
│   │   │   ├── face_2d_keypoint/
│   │   │   │   ├── rtmpose-m_8xb256-120e_lapa-256x256.py
│   │   │   │   ├── rtmpose-s_8xb256-120e_lapa-256x256.py
│   │   │   │   └── rtmpose-t_8xb256-120e_lapa-256x256.py
│   │   │   ├── hand_2d_keypoint/
│   │   │   │   └── rtmpose-m_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   ├── pretrain_cspnext_udp/
│   │   │   │   ├── cspnext-l_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext-m_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext-s_udp_8xb256-210e_coco-256x192.py
│   │   │   │   └── cspnext-tiny_udp_8xb256-210e_coco-256x192.py
│   │   │   ├── pruning/
│   │   │   │   ├── README.md
│   │   │   │   ├── README_CN.md
│   │   │   │   ├── group_fisher_deploy_rtmpose-s_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── group_fisher_deploy_rtmpose-s_8xb256-420e_coco-256x192.py
│   │   │   │   ├── group_fisher_finetune_rtmpose-s_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── group_fisher_finetune_rtmpose-s_8xb256-420e_coco-256x192.py
│   │   │   │   ├── group_fisher_prune_rtmpose-s_8xb256-420e_aic-coco-256x192.py
│   │   │   │   └── group_fisher_prune_rtmpose-s_8xb256-420e_coco-256x192.py
│   │   │   └── wholebody_2d_keypoint/
│   │   │       ├── rtmpose-l_8xb32-270e_coco-wholebody-384x288.py
│   │   │       ├── rtmpose-l_8xb64-270e_coco-wholebody-256x192.py
│   │   │       ├── rtmpose-m_8xb64-270e_coco-wholebody-256x192.py
│   │   │       ├── rtmpose-s_8xb64-270e_coco-wholebody-256x192.py
│   │   │       ├── rtmpose-t_8xb64-270e_coco-wholebody-256x192.py
│   │   │       ├── rtmpose-x_8xb32-270e_coco-wholebody-384x288.py
│   │   │       ├── rtmw-l_8xb1024-270e_cocktail14-256x192.py
│   │   │       ├── rtmw-l_8xb320-270e_cocktail14-384x288.py
│   │   │       ├── rtmw-m_8xb1024-270e_cocktail14-256x192.py
│   │   │       ├── rtmw-x_8xb320-270e_cocktail14-384x288.py
│   │   │       └── rtmw-x_8xb704-270e_cocktail14-256x192.py
│   │   └── yolox/
│   │       └── humanart/
│   │           ├── yolox_l_8xb8-300e_humanart.py
│   │           ├── yolox_m_8xb8-300e_humanart.py
│   │           ├── yolox_nano_8xb8-300e_humanart.py
│   │           ├── yolox_s_8xb8-300e_humanart.py
│   │           ├── yolox_tiny_8xb8-300e_humanart.py
│   │           └── yolox_x_8xb8-300e_humanart.py
│   ├── rtmpose3d/
│   │   ├── README.md
│   │   ├── configs/
│   │   │   ├── rtmw3d-l_8xb64_cocktail14-384x288.py
│   │   │   └── rtmw3d-x_8xb32_cocktail14-384x288.py
│   │   ├── demo/
│   │   │   ├── body3d_img2pose_demo.py
│   │   │   └── rtmdet_m_640-8xb32_coco-person.py
│   │   └── rtmpose3d/
│   │       ├── __init__.py
│   │       ├── loss.py
│   │       ├── pose_estimator.py
│   │       ├── rtmw3d_head.py
│   │       ├── simcc_3d_label.py
│   │       └── utils.py
│   ├── skps/
│   │   ├── README.md
│   │   ├── configs/
│   │   │   ├── td-hm_hrnetv2-w18_skps-1xb16-160e_cofw-256x256.py
│   │   │   └── td-hm_hrnetv2-w18_skps-1xb64-80e_wflw-256x256.py
│   │   ├── custom_codecs/
│   │   │   ├── __init__.py
│   │   │   └── skps_heatmap.py
│   │   └── models/
│   │       ├── __init__.py
│   │       └── skps_head.py
│   ├── uniformer/
│   │   ├── README.md
│   │   ├── configs/
│   │   │   ├── td-hm_uniformer-b-8xb128-210e_coco-256x192.py
│   │   │   ├── td-hm_uniformer-b-8xb32-210e_coco-384x288.py
│   │   │   ├── td-hm_uniformer-b-8xb32-210e_coco-448x320.py
│   │   │   ├── td-hm_uniformer-s-8xb128-210e_coco-256x192.py
│   │   │   ├── td-hm_uniformer-s-8xb128-210e_coco-384x288.py
│   │   │   └── td-hm_uniformer-s-8xb64-210e_coco-448x320.py
│   │   └── models/
│   │       ├── __init__.py
│   │       └── uniformer.py
│   └── yolox_pose/
│       ├── README.md
│       ├── configs/
│       │   ├── _base_/
│       │   │   ├── default_runtime.py
│       │   │   └── py_default_runtime.py
│       │   ├── py_yolox_pose_s_8xb32_300e_coco.py
│       │   ├── yolox-pose_l_4xb64-300e_coco.py
│       │   ├── yolox-pose_m_4xb64-300e_coco.py
│       │   ├── yolox-pose_s_8xb32-300e_coco.py
│       │   └── yolox-pose_tiny_4xb64-300e_coco.py
│       ├── datasets/
│       │   ├── __init__.py
│       │   ├── bbox_keypoint_structure.py
│       │   ├── coco_dataset.py
│       │   └── transforms.py
│       └── models/
│           ├── __init__.py
│           ├── assigner.py
│           ├── data_preprocessor.py
│           ├── oks_loss.py
│           ├── utils.py
│           └── yolox_pose_head.py
├── pytest.ini
├── requirements/
│   ├── albu.txt
│   ├── build.txt
│   ├── docs.txt
│   ├── mminstall.txt
│   ├── optional.txt
│   ├── poseval.txt
│   ├── readthedocs.txt
│   ├── runtime.txt
│   └── tests.txt
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests/
│   ├── data/
│   │   ├── 300vw/
│   │   │   ├── 001/
│   │   │   │   └── annot/
│   │   │   │       ├── 000006.pts
│   │   │   │       └── 000009.pts
│   │   │   ├── 401/
│   │   │   │   └── annot/
│   │   │   │       ├── 000731.pts
│   │   │   │       └── 000732.pts
│   │   │   ├── anno_300vw.json
│   │   │   └── broken_frames.npy
│   │   ├── 300w/
│   │   │   └── test_300w.json
│   │   ├── 300wlp/
│   │   │   └── test_300wlp.json
│   │   ├── aflw/
│   │   │   └── test_aflw.json
│   │   ├── aic/
│   │   │   └── test_aic.json
│   │   ├── ak/
│   │   │   └── test_animalkingdom.json
│   │   ├── animalpose/
│   │   │   └── test_animalpose.json
│   │   ├── ap10k/
│   │   │   └── test_ap10k.json
│   │   ├── atrw/
│   │   │   └── test_atrw.json
│   │   ├── campus/
│   │   │   ├── actorsGT.mat
│   │   │   ├── calibration_campus.json
│   │   │   ├── panoptic_training_pose.pkl
│   │   │   └── pred_campus_maskrcnn_hrnet_coco.pkl
│   │   ├── coco/
│   │   │   ├── test_coco.json
│   │   │   ├── test_coco_det_AP_H_56.json
│   │   │   ├── test_coco_wholebody.json
│   │   │   └── test_keypoint_partition_metric.json
│   │   ├── cofw/
│   │   │   └── test_cofw.json
│   │   ├── crowdpose/
│   │   │   ├── test_crowdpose.json
│   │   │   └── test_crowdpose_det_AP_40.json
│   │   ├── deepfasion2/
│   │   │   └── deepfasion2.json
│   │   ├── exlpose/
│   │   │   └── test_exlpose.json
│   │   ├── fld/
│   │   │   └── test_fld.json
│   │   ├── fly/
│   │   │   └── test_fly.json
│   │   ├── freihand/
│   │   │   └── test_freihand.json
│   │   ├── h36m/
│   │   │   ├── cameras.pkl
│   │   │   ├── h36m_coco.json
│   │   │   ├── test_h36m.npz
│   │   │   ├── test_h36m_2d_detection.npy
│   │   │   └── test_h36m_body3d.npz
│   │   ├── h3wb/
│   │   │   └── h3wb_train_bbox_subset.npz
│   │   ├── halpe/
│   │   │   └── test_halpe.json
│   │   ├── horse10/
│   │   │   └── test_horse10.json
│   │   ├── humanart/
│   │   │   ├── test_humanart.json
│   │   │   └── test_humanart_det_AP_H_56.json
│   │   ├── interhand2.6m/
│   │   │   ├── test_interhand2.6m_camera.json
│   │   │   ├── test_interhand2.6m_data.json
│   │   │   └── test_interhand2.6m_joint_3d.json
│   │   ├── jhmdb/
│   │   │   └── test_jhmdb_sub1.json
│   │   ├── lapa/
│   │   │   └── test_lapa.json
│   │   ├── locust/
│   │   │   └── test_locust.json
│   │   ├── macaque/
│   │   │   └── test_macaque.json
│   │   ├── mhp/
│   │   │   └── test_mhp.json
│   │   ├── mosh/
│   │   │   └── test_mosh.npz
│   │   ├── mpi_inf_3dhp/
│   │   │   ├── cameras_test.pkl
│   │   │   ├── cameras_train.pkl
│   │   │   ├── test_3dhp_test.npz
│   │   │   └── test_3dhp_train.npz
│   │   ├── mpii/
│   │   │   ├── test_mpii.json
│   │   │   └── test_mpii_trb.json
│   │   ├── ochuman/
│   │   │   └── test_ochuman.json
│   │   ├── onehand10k/
│   │   │   └── test_onehand10k.json
│   │   ├── panoptic/
│   │   │   └── test_panoptic.json
│   │   ├── panoptic_body3d/
│   │   │   ├── 160906_band1/
│   │   │   │   ├── calibration_160906_band1.json
│   │   │   │   └── hdPose3d_stage1_coco19/
│   │   │   │       ├── body3DScene_00000168.json
│   │   │   │       └── body3DScene_00000169.json
│   │   │   └── 160906_band2/
│   │   │       ├── calibration_160906_band2.json
│   │   │       └── hdPose3d_stage1_coco19/
│   │   │           ├── body3DScene_00000139.json
│   │   │           └── body3DScene_00000140.json
│   │   ├── posetrack18/
│   │   │   └── annotations/
│   │   │       ├── test_posetrack18_human_detections.json
│   │   │       ├── test_posetrack18_val.json
│   │   │       └── val/
│   │   │           ├── 003418_mpii_test.json
│   │   │           ├── 009473_mpii_test.json
│   │   │           └── 012834_mpii_test.json
│   │   ├── rhd/
│   │   │   └── test_rhd.json
│   │   ├── shelf/
│   │   │   ├── actorsGT.mat
│   │   │   ├── calibration_shelf.json
│   │   │   ├── panoptic_training_pose.pkl
│   │   │   └── pred_shelf_maskrcnn_hrnet_coco.pkl
│   │   ├── smpl/
│   │   │   └── smpl_mean_params.npz
│   │   ├── ubody3d/
│   │   │   └── ubody3d_train.json
│   │   ├── wflw/
│   │   │   └── test_wflw.json
│   │   └── zebra/
│   │       └── test_zebra.json
│   ├── test_apis/
│   │   ├── test_inference.py
│   │   └── test_inferencers/
│   │       ├── test_hand3d_inferencer.py
│   │       ├── test_mmpose_inferencer.py
│   │       ├── test_pose2d_inferencer.py
│   │       └── test_pose3d_inferencer.py
│   ├── test_codecs/
│   │   ├── test_annotation_processors.py
│   │   ├── test_associative_embedding.py
│   │   ├── test_decoupled_heatmap.py
│   │   ├── test_edpose_label.py
│   │   ├── test_hand_3d_heatmap.py
│   │   ├── test_image_pose_lifting.py
│   │   ├── test_integral_regression_label.py
│   │   ├── test_megvii_heatmap.py
│   │   ├── test_motionbert_label.py
│   │   ├── test_msra_heatmap.py
│   │   ├── test_regression_label.py
│   │   ├── test_simcc_label.py
│   │   ├── test_spr.py
│   │   ├── test_udp_heatmap.py
│   │   └── test_video_pose_lifting.py
│   ├── test_datasets/
│   │   ├── test_datasets/
│   │   │   ├── test_animal_datasets/
│   │   │   │   ├── test_animalkingdom_dataset.py
│   │   │   │   ├── test_animalpose_dataset.py
│   │   │   │   ├── test_ap10k_dataset.py
│   │   │   │   ├── test_atrw_dataset.py
│   │   │   │   ├── test_fly_dataset.py
│   │   │   │   ├── test_horse10_dataset.py
│   │   │   │   ├── test_locust_dataset.py
│   │   │   │   ├── test_macaque_dataset.py
│   │   │   │   └── test_zebra_dataset.py
│   │   │   ├── test_body_datasets/
│   │   │   │   ├── test_aic_dataset.py
│   │   │   │   ├── test_coco_dataset.py
│   │   │   │   ├── test_crowdpose_dataset.py
│   │   │   │   ├── test_exlpose_dataset.py
│   │   │   │   ├── test_h36m_dataset.py
│   │   │   │   ├── test_humanart21_dataset.py
│   │   │   │   ├── test_humanart_dataset.py
│   │   │   │   ├── test_jhmdb_dataset.py
│   │   │   │   ├── test_mhp_dataset.py
│   │   │   │   ├── test_mpii_dataset.py
│   │   │   │   ├── test_mpii_trb_dataset.py
│   │   │   │   ├── test_ochuman_dataset.py
│   │   │   │   ├── test_posetrack18_dataset.py
│   │   │   │   └── test_posetrack18_video_dataset.py
│   │   │   ├── test_dataset_wrappers/
│   │   │   │   └── test_combined_dataset.py
│   │   │   ├── test_face_datasets/
│   │   │   │   ├── test_aflw_dataset.py
│   │   │   │   ├── test_coco_wholebody_face_dataset.py
│   │   │   │   ├── test_cofw_dataset.py
│   │   │   │   ├── test_face_300vw_dataset.py
│   │   │   │   ├── test_face_300w_dataset.py
│   │   │   │   ├── test_face_300wlp_dataset.py
│   │   │   │   ├── test_lapa_dataset.py
│   │   │   │   └── test_wflw_dataset.py
│   │   │   ├── test_fashion_datasets/
│   │   │   │   └── test_deepfashion_dataset.py
│   │   │   ├── test_hand_datasets/
│   │   │   │   ├── test_coco_wholebody_hand_dataset.py
│   │   │   │   ├── test_freihand_dataset.py
│   │   │   │   ├── test_interhand2d_double_dataset.py
│   │   │   │   ├── test_interhand3d_dataset.py
│   │   │   │   ├── test_onehand10k_dataset.py
│   │   │   │   ├── test_panoptic_hand2d_dataset.py
│   │   │   │   └── test_rhd2d_dataset.py
│   │   │   └── test_wholebody_datasets/
│   │   │       ├── test_coco_wholebody_dataset.py
│   │   │       ├── test_h3wb_dataset.py
│   │   │       ├── test_halpe_dataset.py
│   │   │       └── test_ubody_dataset.py
│   │   └── test_transforms/
│   │       ├── test_bottomup_transforms.py
│   │       ├── test_common_transforms.py
│   │       ├── test_converting.py
│   │       ├── test_formatting.py
│   │       ├── test_loading.py
│   │       ├── test_mix_img_transform.py
│   │       ├── test_pose3d_transforms.py
│   │       └── test_topdown_transforms.py
│   ├── test_engine/
│   │   ├── test_hooks/
│   │   │   ├── test_badcase_hook.py
│   │   │   ├── test_mode_switch_hooks.py
│   │   │   ├── test_sync_norm_hook.py
│   │   │   └── test_visualization_hook.py
│   │   └── test_schedulers/
│   │       ├── test_lr_scheduler.py
│   │       └── test_quadratic_warmup.py
│   ├── test_evaluation/
│   │   ├── test_evaluator/
│   │   │   └── test_multi_dataset_evaluator.py
│   │   ├── test_functional/
│   │   │   ├── test_keypoint_eval.py
│   │   │   ├── test_nms.py
│   │   │   └── test_transforms.py
│   │   └── test_metrics/
│   │       ├── test_coco_metric.py
│   │       ├── test_coco_wholebody_metric.py
│   │       ├── test_hand_metric.py
│   │       ├── test_keypoint_2d_metrics.py
│   │       ├── test_keypoint_3d_metrics.py
│   │       ├── test_keypoint_partition_metric.py
│   │       └── test_posetrack18_metric.py
│   ├── test_external/
│   │   └── test_mim.py
│   ├── test_models/
│   │   ├── test_backbones/
│   │   │   ├── test_alexnet.py
│   │   │   ├── test_backbones_utils.py
│   │   │   ├── test_cpm.py
│   │   │   ├── test_csp_darknet.py
│   │   │   ├── test_dstformer.py
│   │   │   ├── test_hourglass.py
│   │   │   ├── test_hrformer.py
│   │   │   ├── test_hrnet.py
│   │   │   ├── test_litehrnet.py
│   │   │   ├── test_mobilenet_v2.py
│   │   │   ├── test_mobilenet_v3.py
│   │   │   ├── test_mspn.py
│   │   │   ├── test_pvt.py
│   │   │   ├── test_regnet.py
│   │   │   ├── test_resnest.py
│   │   │   ├── test_resnet.py
│   │   │   ├── test_resnext.py
│   │   │   ├── test_rsn.py
│   │   │   ├── test_scnet.py
│   │   │   ├── test_seresnet.py
│   │   │   ├── test_seresnext.py
│   │   │   ├── test_shufflenet_v1.py
│   │   │   ├── test_shufflenet_v2.py
│   │   │   ├── test_swin.py
│   │   │   ├── test_tcn.py
│   │   │   ├── test_v2v_net.py
│   │   │   ├── test_vgg.py
│   │   │   ├── test_vipnas_mbv3.py
│   │   │   └── test_vipnas_resnet.py
│   │   ├── test_data_preprocessors/
│   │   │   └── test_data_preprocessor.py
│   │   ├── test_distillers/
│   │   │   └── test_dwpose_distiller.py
│   │   ├── test_heads/
│   │   │   ├── test_heatmap_heads/
│   │   │   │   ├── test_ae_head.py
│   │   │   │   ├── test_cid_head.py
│   │   │   │   ├── test_cpm_head.py
│   │   │   │   ├── test_heatmap_head.py
│   │   │   │   ├── test_mspn_head.py
│   │   │   │   ├── test_rtmcc_head.py
│   │   │   │   ├── test_simcc_head.py
│   │   │   │   └── test_vipnas_head.py
│   │   │   ├── test_hybrid_heads/
│   │   │   │   ├── test_dekr_head.py
│   │   │   │   └── test_vis_head.py
│   │   │   └── test_regression_heads/
│   │   │       ├── test_dsnt_head.py
│   │   │       ├── test_integral_regression_head.py
│   │   │       ├── test_regression_head.py
│   │   │       └── test_rle_head.py
│   │   ├── test_losses/
│   │   │   ├── test_ae_loss.py
│   │   │   ├── test_classification_losses.py
│   │   │   ├── test_heatmap_losses.py
│   │   │   └── test_regression_losses.py
│   │   ├── test_necks/
│   │   │   ├── test_fmap_proc_neck.py
│   │   │   └── test_yolox_pafpn.py
│   │   ├── test_pose_estimators/
│   │   │   ├── test_bottomup.py
│   │   │   └── test_topdown.py
│   │   └── test_utils/
│   │       ├── test_check_and_update_config.py
│   │       └── test_transformers.py
│   ├── test_structures/
│   │   ├── test_bbox/
│   │   │   ├── test_bbox_overlaps.py
│   │   │   └── test_bbox_transforms.py
│   │   ├── test_keypoint/
│   │   │   └── test_keypoint_transforms.py
│   │   ├── test_multilevel_pixel_data.py
│   │   └── test_pose_data_sample.py
│   ├── test_utils/
│   │   └── test_setup_env.py
│   └── test_visualization/
│       ├── test_fast_visualizer.py
│       └── test_pose_visualizer.py
└── tools/
    ├── analysis_tools/
    │   ├── analyze_logs.py
    │   ├── get_flops.py
    │   └── print_config.py
    ├── dataset_converters/
    │   ├── 300vw2coco.py
    │   ├── 300wlp2coco.py
    │   ├── h36m_to_coco.py
    │   ├── labelstudio2coco.py
    │   ├── lapa2coco.py
    │   ├── mat2json.py
    │   ├── parse_animalpose_dataset.py
    │   ├── parse_cofw_dataset.py
    │   ├── parse_deepposekit_dataset.py
    │   ├── parse_macaquepose_dataset.py
    │   ├── preprocess_h36m.py
    │   ├── preprocess_mpi_inf_3dhp.py
    │   ├── scripts/
    │   │   ├── preprocess_300w.sh
    │   │   ├── preprocess_aic.sh
    │   │   ├── preprocess_ap10k.sh
    │   │   ├── preprocess_coco2017.sh
    │   │   ├── preprocess_crowdpose.sh
    │   │   ├── preprocess_freihand.sh
    │   │   ├── preprocess_hagrid.sh
    │   │   ├── preprocess_halpe.sh
    │   │   ├── preprocess_lapa.sh
    │   │   ├── preprocess_mpii.sh
    │   │   ├── preprocess_onehand10k.sh
    │   │   └── preprocess_wflw.sh
    │   ├── ubody_kpts_to_coco.py
    │   ├── ubody_smplx_to_coco.py
    │   └── wflw2coco.py
    ├── dist_test.sh
    ├── dist_train.sh
    ├── misc/
    │   ├── browse_dataset.py
    │   ├── generate_bbox_file.py
    │   ├── keypoints2coco_without_mmdet.py
    │   ├── pth_transfer.py
    │   └── publish_model.py
    ├── slurm_test.sh
    ├── slurm_train.sh
    ├── test.py
    ├── torchserve/
    │   ├── mmpose2torchserve.py
    │   ├── mmpose_handler.py
    │   └── test_torchserver.py
    └── train.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .circleci/config.yml
================================================
version: 2.1

# this allows you to use CircleCI's dynamic configuration feature
setup: true

# the path-filtering orb is required to continue a pipeline based on
# the path of an updated fileset
orbs:
  path-filtering: circleci/path-filtering@0.1.2

workflows:
  # the always-run workflow is always triggered, regardless of the pipeline parameters.
  always-run:
    jobs:
      # the path-filtering/filter job determines which pipeline
      # parameters to update.
      - path-filtering/filter:
          name: check-updated-files
          # 3-column, whitespace-delimited mapping. One mapping per
          # line:
          # <regex path-to-test> <parameter-to-set> <value-of-pipeline-parameter>
          mapping: |
            mmpose/.* lint_only false
            requirements/.* lint_only false
            tests/.* lint_only false
            tools/.* lint_only false
            configs/.* lint_only false
            .circleci/.* lint_only false
          base-revision: dev-1.x
          # this is the path of the configuration we should trigger once
          # path filtering and pipeline parameter value updates are
          # complete. In this case, we are using the parent dynamic
          # configuration itself.
          config-path: .circleci/test.yml


================================================
FILE: .circleci/docker/Dockerfile
================================================
ARG PYTORCH="1.7.1"
ARG CUDA="11.0"
ARG CUDNN="8"

FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel

# To fix GPG key error when running apt-get update
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub

RUN apt-get update && apt-get install -y ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 libgl1-mesa-glx


================================================
FILE: .circleci/scripts/get_mmcv_var.sh
================================================
#!/bin/bash

TORCH=$1
CUDA=$2

# 10.2 -> cu102
MMCV_CUDA="cu`echo ${CUDA} | tr -d '.'`"

# MMCV only provides pre-compiled packages for torch 1.x.0
# which works for any subversions of torch 1.x.
# We force the torch version to be 1.x.0 to ease package searching
# and avoid unnecessary rebuild during MMCV's installation.
TORCH_VER_ARR=(${TORCH//./ })
TORCH_VER_ARR[2]=0
printf -v MMCV_TORCH "%s." "${TORCH_VER_ARR[@]}"
MMCV_TORCH=${MMCV_TORCH%?}  # Remove the last dot

echo "export MMCV_CUDA=${MMCV_CUDA}" >> $BASH_ENV
echo "export MMCV_TORCH=${MMCV_TORCH}" >> $BASH_ENV


================================================
FILE: .circleci/test.yml
================================================
version: 2.1

# the default pipeline parameters, which will be updated according to
# the results of the path-filtering orb
parameters:
  lint_only:
    type: boolean
    default: true

jobs:
  lint:
    docker:
      - image: cimg/python:3.7.4
    steps:
      - checkout
      - run:
          name: Install pre-commit hook
          command: |
            pip install pre-commit
            pre-commit install
      - run:
          name: Linting
          command: pre-commit run --all-files
      - run:
          name: Check docstring coverage
          command: |
            pip install interrogate
            interrogate -v --ignore-init-method --ignore-module --ignore-nested-functions --ignore-regex "__repr__" --fail-under 80 mmpose
  build_cpu:
    parameters:
      # The python version must match available image tags in
      # https://circleci.com/developer/images/image/cimg/python
      python:
        type: string
      torch:
        type: string
      torchvision:
        type: string
    docker:
      - image: cimg/python:<< parameters.python >>
    resource_class: large
    steps:
      - checkout
      - run:
          name: Install Libraries
          command: |
            sudo apt-get update
            sudo apt-get install -y ffmpeg libsm6 libxext6 git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 libturbojpeg git
      - run:
          name: Configure Python & pip
          command: |
            pip install --upgrade pip
            pip install wheel
      - run:
          name: Install PyTorch
          command: |
            python -V
            pip install torch==<< parameters.torch >>+cpu torchvision==<< parameters.torchvision >>+cpu -f https://download.pytorch.org/whl/torch_stable.html
      - run:
          name: Install mmpose dependencies
          command: |
            pip install -U numpy
            pip install git+https://github.com/open-mmlab/mmengine.git@main
            pip install -U openmim
            mim install 'mmcv >= 2.0.0'
            pip install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x
            pip install -r requirements/tests.txt
            pip install -r requirements/albu.txt
            pip install -r requirements/poseval.txt
      - run:
          name: Build and install
          command: |
            pip install -e .
      - run:
          name: Run unittests
          command: |
            coverage run --branch --source mmpose -m pytest tests/
            coverage xml
            coverage report -m
  build_cuda:
    parameters:
      torch:
        type: string
      cuda:
        type: enum
        enum: ["11.0", "11.7"]
      cudnn:
        type: integer
        default: 8
    machine:
      image: ubuntu-2004-cuda-11.4:202110-01
      # docker_layer_caching: true
    resource_class: gpu.nvidia.small
    steps:
      - checkout
      - run:
          # Cloning repos in VM since Docker doesn't have access to the private key
          name: Clone Repos
          command: |
            git clone -b main --depth 1 https://github.com/open-mmlab/mmengine.git /home/circleci/mmengine
            git clone -b dev-3.x --depth 1 https://github.com/open-mmlab/mmdetection.git /home/circleci/mmdetection
      - run:
          name: Build Docker image
          command: |
            docker build .circleci/docker -t mmpose:gpu --build-arg PYTORCH=<< parameters.torch >> --build-arg CUDA=<< parameters.cuda >> --build-arg CUDNN=<< parameters.cudnn >>
            docker run --gpus all -t -d -v /home/circleci/project:/mmpose -v /home/circleci/mmengine:/mmengine -v /home/circleci/mmdetection:/mmdetection -w /mmpose --name mmpose mmpose:gpu
      - run:
          name: Install mmpose dependencies
          command: |
            docker exec mmpose apt install git -y
            docker exec mmpose pip install -U numpy
            docker exec mmpose pip install -e /mmengine
            docker exec mmpose pip install -U openmim
            docker exec mmpose mim install 'mmcv >= 2.0.0'
            docker exec mmpose pip install -e /mmdetection
            docker exec mmpose pip install -r requirements/tests.txt
            docker exec mmpose pip install -r requirements/albu.txt
            docker exec mmpose pip install -r requirements/poseval.txt
      - run:
          name: Build and install
          command: |
            docker exec mmpose pip install -e .
      - run:
          name: Run unittests
          command: |
            docker exec mmpose pytest tests/

workflows:
  pr_stage_lint:
    when: << pipeline.parameters.lint_only >>
    jobs:
      - lint:
          name: lint
          filters:
            branches:
              ignore:
                - dev-1.x
                - main
  pr_stage_test:
    when:
      not:
        << pipeline.parameters.lint_only >>
    jobs:
      - lint:
          name: lint
          filters:
            branches:
              ignore:
                - dev-1.x
                - main
      - build_cpu:
          name: minimum_version_cpu
          torch: 1.7.1
          torchvision: 0.8.2
          python: 3.7.4
          requires:
            - lint
      - build_cpu:
          name: maximum_version_cpu
          torch: 2.0.0
          torchvision: 0.15.1
          python: 3.9.0
          requires:
            - minimum_version_cpu
      - hold:
          type: approval
          requires:
            - maximum_version_cpu
      - build_cuda:
          name: mainstream_version_gpu
          torch: 1.7.1
          # Use double quotation mark to explicitly specify its type
          # as string instead of number
          cuda: "11.0"
          requires:
            - hold
      - build_cuda:
          name: maximum_version_gpu
          torch: 2.0.0
          cuda: "11.7"
          cudnn: 8
          requires:
            - hold
  merge_stage_test:
    when:
      not:
        << pipeline.parameters.lint_only >>
    jobs:
      - build_cuda:
          name: minimum_version_gpu
          torch: 1.7.1
          # Use double quotation mark to explicitly specify its type
          # as string instead of number
          cuda: "11.0"
          filters:
            branches:
              only:
                - dev-1.x
                - main


================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

- The use of sexualized language or imagery and unwelcome sexual attention or
  advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic
  address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at chenkaidev@gmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

[homepage]: https://www.contributor-covenant.org


================================================
FILE: .github/ISSUE_TEMPLATE/1-bug-report.yml
================================================
name: "🐞 Bug report"
description: "Create a report to help us reproduce and fix the bug"
labels: bug
title: "[Bug] "

body:
  - type: markdown
    attributes:
      value: |
        ## Note
        For general usage questions or idea discussions, please post it to our [**Forum**](https://github.com/open-mmlab/mmpose/discussions)
        Please fill in as **much** of the following form as you're able to. **The clearer the description, the shorter it will take to solve it.**

  - type: checkboxes
    attributes:
      label: Prerequisite
      description: Please check the following items before creating a new issue.
      options:
      - label: I have searched [Issues](https://github.com/open-mmlab/mmpose/issues) and [Discussions](https://github.com/open-mmlab/mmpose/discussions) but cannot get the expected help.
        required: true
      - label: The bug has not been fixed in the latest version(https://github.com/open-mmlab/mmpose).
        required: true

  - type: textarea
    attributes:
      label: Environment
      description: |
        Please run following commands and and copy-paste it here:
          - `python -c "from mmpose.utils import collect_env; print(collect_env())"` to collect necessary environment information.
          - `pip list | grep mm` to collect repositories related to OpenMMLab.
          - \[Optional\] Other environment variables that may be related (such as `$PATH`, `$LD_LIBRARY_PATH`, `$PYTHONPATH`, etc.)
    validations:
      required: true

  - type: textarea
    attributes:
      label: Reproduces the problem - code sample
      description: |
        Please provide a code sample that reproduces the problem you ran into. It can be a Colab link or just a code snippet.
      placeholder: |
        ```python
        # Sample code to reproduce the problem
        ```
    validations:
      required: true

  - type: textarea
    attributes:
      label: Reproduces the problem - command or script
      description: |
        What command or script did you run?
      placeholder: |
        ```shell
        The command or script you run.
        ```
    validations:
      required: true

  - type: textarea
    attributes:
      label: Reproduces the problem - error message
      description: |
        Please provide the error message or logs you got, with the full traceback.

        Tip: You can attach screenshots or log files by dragging them into the text area..
      placeholder: |
        ```
        The error message or logs you got, with the full traceback.
        ```
    validations:
      required: true

  - type: textarea
    attributes:
      label: Additional information
      description: |
        Tell us anything else you think we should know.

        Tip: You can attach screenshots or log files by dragging them into the text area.
      placeholder: |
        1. What's your expected result?
        2. What dataset did you use?
        3. What do you think might be the reason?

  - type: markdown
    attributes:
      value: |
        ## Acknowledgement
        Thanks for taking the time to fill out this report.

        If you have already identified the reason, we strongly appreciate you creating a new PR to fix it [**Here**](https://github.com/open-mmlab/mmpose/pulls)!
        Please refer to [**Contribution Guide**](https://mmpose.readthedocs.io/en/latest/contribution_guide.html) for contributing.


================================================
FILE: .github/ISSUE_TEMPLATE/2-feature_request.yml
================================================
name: 🚀 Feature request
description: Suggest an idea for this project
labels: feature-request
title: "[Feature] "

body:
  - type: markdown
    attributes:
      value: |
        ## Note
        For general usage questions or idea discussions, please post it to our [**Forum**](https://github.com/open-mmlab/mmpose/discussions)

        Please fill in as **much** of the following form as you're able to. **The clearer the description, the shorter it will take to solve it.**

  - type: textarea
    attributes:
      label: What is the feature?
      description: Tell us more about the feature and how this feature can help.
      placeholder: |
        E.g., It is inconvenient when \[....\].
    validations:
      required: true

  - type: textarea
    attributes:
      label: Any other context?
      description: |
        Have you considered any alternative solutions or features? If so, what are they? Also, feel free to add any other context or screenshots about the feature request here.

  - type: markdown
    attributes:
      value: |
        ## Acknowledgement
        Thanks for taking the time to fill out this report.

        We strongly appreciate you creating a new PR to implement it [**Here**](https://github.com/open-mmlab/mmpose/pulls)!
        Please refer to [**Contribution Guide**](https://mmpose.readthedocs.io/en/latest/contribution_guide.html) for contributing.


================================================
FILE: .github/ISSUE_TEMPLATE/3-documentation.yml
================================================
name: 📚 Documentation
description: Report an issue related to the documentation.
labels: "docs"
title: "[Docs] "

body:
  - type: markdown
    attributes:
      value: |
        ## Note
        For general usage questions or idea discussions, please post it to our [**Forum**](https://github.com/open-mmlab/mmpose/discussions)
        Please fill in as **much** of the following form as you're able to. **The clearer the description, the shorter it will take to solve it.**

  - type: textarea
    attributes:
      label: 📚 The doc issue
      description: >
        A clear and concise description the issue.
    validations:
      required: true

  - type: textarea
    attributes:
      label: Suggest a potential alternative/fix
      description: >
        Tell us how we could improve the documentation in this regard.

  - type: markdown
    attributes:
      value: |
        ## Acknowledgement
        Thanks for taking the time to fill out this report.

        If you have already identified the reason, we strongly appreciate you creating a new PR to fix it [**here**](https://github.com/open-mmlab/mmpose/pulls)!
        Please refer to [**Contribution Guide**](https://mmpose.readthedocs.io/en/latest/contribution_guide.html) for contributing.


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false

contact_links:
  - name: Common Issues
    url: https://mmpose.readthedocs.io/en/latest/faq.html
    about: Check if your issue already has solutions
  - name: MMPose Documentation
    url: https://mmpose.readthedocs.io/en/latest/
    about: Check if your question is answered in docs


================================================
FILE: .github/pull_request_template.md
================================================
<!-- Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers. -->

## Motivation

<!-- Please describe the motivation of this PR and the goal you want to achieve through this PR. -->

## Modification

<!-- Please briefly describe what modification is made in this PR. -->

## BC-breaking (Optional)

<!-- Does the modification introduce changes that break the backward compatibility of the downstream repositories?
If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR. -->

## Use cases (Optional)

<!-- If this PR introduces a new feature, it is better to list some use cases here and update the documentation. -->

## Checklist

**Before PR**:

- [ ] I have read and followed the workflow indicated in the [CONTRIBUTING.md](https://github.com/open-mmlab/mmpose/blob/master/.github/CONTRIBUTING.md) to create this PR.
- [ ] Pre-commit or linting tools indicated in [CONTRIBUTING.md](https://github.com/open-mmlab/mmpose/blob/master/.github/CONTRIBUTING.md) are used to fix the potential lint issues.
- [ ] Bug fixes are covered by unit tests, the case that causes the bug should be added in the unit tests.
- [ ] New functionalities are covered by complete unit tests. If not, please add more unit tests to ensure correctness.
- [ ] The documentation has been modified accordingly, including docstring or example tutorials.

**After PR**:

- [ ] CLA has been signed and all committers have signed the CLA in this PR.


================================================
FILE: .github/workflows/deploy.yml
================================================
name: deploy

on: push

jobs:
  build-n-publish:
    runs-on: ubuntu-latest
    if: startsWith(github.event.ref, 'refs/tags')
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python 3.7
        uses: actions/setup-python@v2
        with:
          python-version: 3.7
      - name: Build MMPose
        run: |
          pip install wheel
          python setup.py sdist bdist_wheel
      - name: Publish distribution to PyPI
        run: |
          pip install twine
          twine upload dist/* -u __token__ -p ${{ secrets.pypi_password }}


================================================
FILE: .github/workflows/lint.yml
================================================
name: lint

on: [push, pull_request]

concurrency:
  group: github.workflow−{{ github.ref }}
  cancel-in-progress: true

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python 3.7
        uses: actions/setup-python@v2
        with:
          python-version: 3.7
      - name: Install pre-commit hook
        run: |
          pip install pre-commit
          pre-commit install
      - name: Linting
        run: pre-commit run --all-files
      - name: Check docstring coverage
        run: |
          pip install interrogate
          interrogate -v --ignore-init-method --ignore-module --ignore-nested-functions --ignore-regex "__repr__" --fail-under 80 mmpose


================================================
FILE: .github/workflows/merge_stage_test.yml
================================================
name: merge_stage_test

on:
  push:
    paths-ignore:
      - 'README.md'
      - 'README_zh-CN.md'
      - 'docs/**'
      - 'demo/**'
      - '.dev_scripts/**'
      - '.circleci/**'
    branches:
      - dev-1.x

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build_cpu_py:
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        python-version: [3.8, 3.9]
        torch: [1.8.1]
        include:
          - torch: 1.8.1
            torchvision: 0.9.1
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Upgrade pip
        run: pip install pip --upgrade
      - name: Install Numpy
        run: pip install -U numpy
      - name: Install PyTorch
        run: pip install torch==${{matrix.torch}}+cpu torchvision==${{matrix.torchvision}}+cpu -f https://download.pytorch.org/whl/torch_stable.html
      - name: Install MMEngine
        run: pip install git+https://github.com/open-mmlab/mmengine.git@main
      - name: Install MMCV
        run: |
          pip install -U openmim
          mim install 'mmcv >= 2.0.0'
      - name: Install MMDet
        run: |
          python -m pip install --upgrade pip setuptools wheel
          pip install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x
      - name: Install other dependencies
        run: |
          pip install -r requirements/tests.txt
          pip install -r requirements/runtime.txt
          pip install -r requirements/albu.txt
          pip install -r requirements/poseval.txt
      - name: Build and install
        run: rm -rf .eggs && pip install -e .
      - name: Run unittests and generate coverage report
        run: |
          coverage run --branch --source mmpose -m pytest tests/
          coverage xml
          coverage report -m

  build_cpu_pt:
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        python-version: [3.7]
        torch: [1.8.0, 1.8.1, 1.9.1, 1.10.1, 1.11.0, 1.12.1, 1.13.0]
        include:
          - torch: 1.8.0
            torchvision: 0.9.0
          - torch: 1.8.1
            torchvision: 0.9.1
          - torch: 1.9.1
            torchvision: 0.10.1
          - torch: 1.10.1
            torchvision: 0.11.2
          - torch: 1.11.0
            torchvision: 0.12.0
          - torch: 1.12.1
            torchvision: 0.13.1
          - torch: 1.13.0
            torchvision: 0.14.0
          - torch: 2.0.0
            torchvision: 0.15.1
            python-version: 3.8
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Upgrade pip
        run: pip install pip --upgrade
      - name: Install Numpy
        run: pip install -U numpy
      - name: Install PyTorch
        run: pip install torch==${{matrix.torch}}+cpu torchvision==${{matrix.torchvision}}+cpu -f https://download.pytorch.org/whl/torch_stable.html
      - name: Install MMEngine
        run: pip install git+https://github.com/open-mmlab/mmengine.git@main
      - name: Install MMCV
        run: |
          pip install -U openmim
          mim install 'mmcv >= 2.0.0'
      - name: Install MMDet
        run: |
          python -m pip install --upgrade pip setuptools wheel
          pip install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x
      - name: Install other dependencies
        run: |
          pip install -r requirements/tests.txt
          pip install -r requirements/runtime.txt
          pip install -r requirements/albu.txt
          pip install -r requirements/poseval.txt
      - name: Build and install
        run: rm -rf .eggs && pip install -e .
      - name: Run unittests and generate coverage report
        run: |
          coverage run --branch --source mmpose -m pytest tests/
          coverage xml
          coverage report -m
      # Only upload coverage report for python3.7 && pytorch1.8.1 cpu
      - name: Upload coverage to Codecov
        if: ${{matrix.torch == '1.8.1' && matrix.python-version == '3.7'}}
        uses: codecov/codecov-action@v1.0.14
        with:
          file: ./coverage.xml
          flags: unittests
          env_vars: OS,PYTHON
          name: codecov-umbrella
          fail_ci_if_error: false

  build_cu102:
    runs-on: ubuntu-22.04
    container:
      image: pytorch/pytorch:1.8.1-cuda10.2-cudnn7-devel
    strategy:
      matrix:
        python-version: [3.7]
        include:
          - torch: 1.8.1
            cuda: 10.2
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Upgrade pip
        run: pip install pip --upgrade
      - name: Fetch GPG keys
        run: |
          apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
          apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
      - name: Install Python-dev
        run: apt-get update && apt-get install -y python${{matrix.python-version}}-dev
        if: ${{matrix.python-version != 3.9}}
      - name: Install system dependencies
        run: |
          apt-get update && apt-get install -y ffmpeg libsm6 libxext6 git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6
      - name: Install mmpose dependencies
        run: |
          pip install -U numpy
          pip install git+https://github.com/open-mmlab/mmengine.git@main
          pip install -U openmim
          mim install 'mmcv >= 2.0.0'
          pip install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x
          pip install -r requirements/tests.txt
          pip install -r requirements/runtime.txt
          pip install -r requirements/albu.txt
          pip install -r requirements/poseval.txt
      - name: Build and install
        run: rm -rf .eggs && pip install -e .
      - name: Run unittests and generate coverage report
        run: |
          coverage run --branch --source mmpose -m pytest tests/
          coverage xml
          coverage report -m

  build_windows:
    runs-on: windows-2022
    strategy:
      matrix:
        os: [windows-2022]
        python: [3.7]
        platform: [cpu, cu111]
        torch: [1.8.1]
        torchvision: [0.9.1]
        include:
          - python-version: 3.8
            platform: cu117
            torch: 2.0.0
            torchvision: 0.15.1
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Upgrade pip
        run: python -m pip install pip --upgrade
      - name: Install lmdb
        run: python -m pip install lmdb
      - name: Install PyTorch
        run: python -m pip install torch==${{matrix.torch}}+${{matrix.platform}} torchvision==${{matrix.torchvision}}+${{matrix.platform}} -f https://download.pytorch.org/whl/${{matrix.platform}}/torch_stable.html
      - name: Install mmpose dependencies
        run: |
          python -m pip install -U numpy
          python -m pip install --upgrade pip setuptools wheel
          python -m pip install git+https://github.com/open-mmlab/mmengine.git@main
          python -m pip install -U openmim
          mim install 'mmcv >= 2.0.0'
          mim install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x
          python -m pip install -r requirements/tests.txt
          python -m pip install -r requirements/runtime.txt
          python -m pip install -r requirements/albu.txt
          python -m pip install -r requirements/poseval.txt
      - name: Build and install
        run: |
          python -m pip install -e . -v
      - name: Run unittests and generate coverage report
        run: |
          pytest tests/


================================================
FILE: .github/workflows/pr_stage_test.yml
================================================
name: pr_stage_test

on:
  pull_request:
    paths-ignore:
      - 'README.md'
      - 'README_zh-CN.md'
      - 'docs/**'
      - 'demo/**'
      - '.dev_scripts/**'
      - '.circleci/**'

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build_cpu:
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        python-version: [3.7]
        include:
          - torch: 1.8.1
            torchvision: 0.9.1
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Upgrade pip
        run: pip install pip --upgrade
      - name: Install Numpy
        run: pip install -U numpy
      - name: Install PyTorch
        run: pip install torch==${{matrix.torch}}+cpu torchvision==${{matrix.torchvision}}+cpu -f https://download.pytorch.org/whl/torch_stable.html
      - name: Install mmpose dependencies
        run: |
          python -m pip install --upgrade pip setuptools wheel
          pip install -U numpy
          pip install git+https://github.com/open-mmlab/mmengine.git@main
          pip install -U openmim
          mim install 'mmcv >= 2.0.0'
          pip install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x
          pip install -r requirements/tests.txt
          pip install -r requirements/runtime.txt
          pip install -r requirements/albu.txt
          pip install -r requirements/poseval.txt
      - name: Build and install
        run: rm -rf .eggs && pip install -e .
      - name: Run unittests and generate coverage report
        run: |
          coverage run --branch --source mmpose -m pytest tests/
          coverage xml
          coverage report -m
      # Upload coverage report for python3.7 && pytorch1.8.1 cpu
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v1.0.14
        with:
          file: ./coverage.xml
          flags: unittests
          env_vars: OS,PYTHON
          name: codecov-umbrella
          fail_ci_if_error: false

  build_cu102:
    runs-on: ubuntu-22.04
    container:
      image: pytorch/pytorch:1.8.1-cuda10.2-cudnn7-devel
    strategy:
      matrix:
        python-version: [3.7]
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Upgrade pip
        run: pip install pip --upgrade
      - name: Fetch GPG keys
        run: |
          apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
          apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
      - name: Install Python-dev
        run: apt-get update && apt-get install -y python${{matrix.python-version}}-dev
        if: ${{matrix.python-version != 3.9}}
      - name: Install system dependencies
        run: |
          apt-get update
          apt-get install -y ffmpeg libsm6 libxext6 git ninja-build libglib2.0-0 libxrender-dev
      - name: Install mmpose dependencies
        run: |
          pip install -U numpy
          pip install git+https://github.com/open-mmlab/mmengine.git@main
          pip install -U openmim
          mim install 'mmcv >= 2.0.0'
          pip install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x
          pip install -r requirements/tests.txt
          pip install -r requirements/runtime.txt
          pip install -r requirements/albu.txt
          pip install -r requirements/poseval.txt
      - name: Build and install
        run: rm -rf .eggs && pip install -e .
      - name: Run unittests and generate coverage report
        run: |
          coverage run --branch --source mmpose -m pytest tests/
          coverage xml
          coverage report -m

  build_cu117:
    runs-on: ubuntu-22.04
    container:
      image: pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel
    strategy:
      matrix:
        python-version: [3.9]
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Upgrade pip
        run: pip install pip --upgrade
      - name: Fetch GPG keys
        run: |
          apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
          apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
      - name: Install system dependencies
        run: apt-get update && apt-get install -y ffmpeg libsm6 libxext6 git ninja-build libglib2.0-0 libxrender-dev
      - name: Install mmpose dependencies
        run: |
          pip install -U numpy
          pip install git+https://github.com/open-mmlab/mmengine.git@main
          pip install -U openmim
          mim install 'mmcv >= 2.0.0'
          pip install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x
          pip install -r requirements/tests.txt
          pip install -r requirements/runtime.txt
          pip install -r requirements/albu.txt
          pip install -r requirements/poseval.txt
      - name: Build and install
        run: rm -rf .eggs && pip install -e .
      - name: Run unittests and generate coverage report
        run: |
          coverage run --branch --source mmpose -m pytest tests/
          coverage xml
          coverage report -m

  build_windows:
    runs-on: windows-2022
    strategy:
      matrix:
        os: [windows-2022]
        python: [3.7]
        platform: [cpu, cu111]
        torch: [1.8.1]
        torchvision: [0.9.1]
        include:
          - python-version: 3.8
            platform: cu117
            torch: 2.0.0
            torchvision: 0.15.1
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - name: Upgrade pip
        run: python -m pip install pip --upgrade
      - name: Install lmdb
        run: python -m pip install lmdb
      - name: Install PyTorch
        run: python -m pip install torch==${{matrix.torch}}+${{matrix.platform}} torchvision==${{matrix.torchvision}}+${{matrix.platform}} -f https://download.pytorch.org/whl/${{matrix.platform}}/torch_stable.html
      - name: Install mmpose dependencies
        run: |
          python -m pip install -U numpy
          python -m pip install --upgrade pip setuptools wheel
          python -m pip install git+https://github.com/open-mmlab/mmengine.git@main
          python -m pip install -U openmim
          mim install 'mmcv >= 2.0.0'
          mim install git+https://github.com/open-mmlab/mmdetection.git@dev-3.x
          python -m pip install -r requirements/tests.txt
          python -m pip install -r requirements/albu.txt
          python -m pip install -r requirements/poseval.txt
      - name: Build and install
        run: |
          python -m pip install -e . -v
      - name: Run unittests and generate coverage report
        run: |
          pytest tests/


================================================
FILE: .github/workflows/scripts/get_mmcv_var.sh
================================================
#!/bin/bash

TORCH=$1
CUDA=$2

# 10.2 -> cu102
MMCV_CUDA="cu`echo ${CUDA} | tr -d '.'`"

# MMCV only provides pre-compiled packages for torch 1.x.0
# which works for any subversions of torch 1.x.
# We force the torch version to be 1.x.0 to ease package searching
# and avoid unnecessary rebuild during MMCV's installation.
TORCH_VER_ARR=(${TORCH//./ })
TORCH_VER_ARR[2]=0
printf -v MMCV_TORCH "%s." "${TORCH_VER_ARR[@]}"
MMCV_TORCH=${MMCV_TORCH%?}  # Remove the last dot

echo "MMCV_CUDA=${MMCV_CUDA}" >> $GITHUB_ENV
echo "MMCV_TORCH=${MMCV_TORCH}" >> $GITHUB_ENV


================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
**/*.pyc

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/en/_build
docs/zh_cn/_build

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/

# custom
mmpose/.mim
/models
/data
.vscode
.idea
*.pkl
*.pkl.json
*.log.json
*.npy
work_dirs/
docs/**/topics/
docs/**/papers/*.md
docs/**/datasets.md
docs/**/modelzoo.md

!tests/data/**/*.pkl
!tests/data/**/*.pkl.json
!tests/data/**/*.log.json
!tests/data/**/*.pth
!tests/data/**/*.npy
!tests/data/**/vis/

# Pytorch
*.pth

*.DS_Store


================================================
FILE: .pre-commit-config.yaml
================================================
exclude: ^tests/data/
repos:
  - repo: https://github.com/PyCQA/flake8
    rev: 5.0.4
    hooks:
      - id: flake8
  - repo: https://github.com/PyCQA/isort
    rev: 5.11.5
    hooks:
      - id: isort
  - repo: https://github.com/pre-commit/mirrors-yapf
    rev: v0.32.0
    hooks:
      - id: yapf
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.3.0
    hooks:
      - id: trailing-whitespace
      - id: check-yaml
      - id: end-of-file-fixer
      - id: requirements-txt-fixer
      - id: double-quote-string-fixer
      - id: check-merge-conflict
      - id: fix-encoding-pragma
        args: ["--remove"]
      - id: mixed-line-ending
        args: ["--fix=lf"]
  - repo: https://github.com/myint/docformatter
    rev: v1.3.1
    hooks:
      - id: docformatter
        args: ["--in-place", "--wrap-descriptions", "79"]
  - repo: https://github.com/codespell-project/codespell
    rev: v2.1.0
    hooks:
      - id: codespell
        args: ["--skip", "*.ipynb", "-L", "mot"]
  - repo: https://github.com/executablebooks/mdformat
    rev: 0.7.14
    hooks:
      - id: mdformat
        args: ["--number", "--table-width", "200"]
        additional_dependencies:
          - mdformat-openmmlab
          - mdformat_frontmatter
          - linkify-it-py
  - repo: https://github.com/open-mmlab/pre-commit-hooks
    rev: v0.2.0
    hooks:
      - id: check-copyright
        args: ["mmpose", "tests", "demo", "tools", "--excludes", "demo/mmdetection_cfg", "demo/mmtracking_cfg"]


================================================
FILE: .pylintrc
================================================
[MASTER]

# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-whitelist=

# Specify a score threshold to be exceeded before program exits with error.
fail-under=10.0

# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=CVS,configs

# Add files or directories matching the regex patterns to the blacklist. The
# regex matches against base names, not paths.
ignore-patterns=

# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
#init-hook=

# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the
# number of processors available to use.
jobs=1

# Control the amount of potential inferred values when inferring a single
# object. This can help the performance when dealing with large functions or
# complex, nested conditions.
limit-inference-results=100

# List of plugins (as comma separated values of python module names) to load,
# usually to register additional checkers.
load-plugins=

# Pickle collected data for later comparisons.
persistent=yes

# When enabled, pylint would attempt to guess common misconfiguration and emit
# user-friendly hints instead of false-positive error messages.
suggestion-mode=yes

# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no


[MESSAGES CONTROL]

# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED.
confidence=

# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once). You can also use "--disable=all" to
# disable everything first and then reenable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use "--disable=all --enable=classes
# --disable=W".
disable=print-statement,
        parameter-unpacking,
        unpacking-in-except,
        old-raise-syntax,
        backtick,
        long-suffix,
        old-ne-operator,
        old-octal-literal,
        import-star-module-level,
        non-ascii-bytes-literal,
        raw-checker-failed,
        bad-inline-option,
        locally-disabled,
        file-ignored,
        suppressed-message,
        useless-suppression,
        deprecated-pragma,
        use-symbolic-message-instead,
        apply-builtin,
        basestring-builtin,
        buffer-builtin,
        cmp-builtin,
        coerce-builtin,
        execfile-builtin,
        file-builtin,
        long-builtin,
        raw_input-builtin,
        reduce-builtin,
        standarderror-builtin,
        unicode-builtin,
        xrange-builtin,
        coerce-method,
        delslice-method,
        getslice-method,
        setslice-method,
        no-absolute-import,
        old-division,
        dict-iter-method,
        dict-view-method,
        next-method-called,
        metaclass-assignment,
        indexing-exception,
        raising-string,
        reload-builtin,
        oct-method,
        hex-method,
        nonzero-method,
        cmp-method,
        input-builtin,
        round-builtin,
        intern-builtin,
        unichr-builtin,
        map-builtin-not-iterating,
        zip-builtin-not-iterating,
        range-builtin-not-iterating,
        filter-builtin-not-iterating,
        using-cmp-argument,
        eq-without-hash,
        div-method,
        idiv-method,
        rdiv-method,
        exception-message-attribute,
        invalid-str-codec,
        sys-max-int,
        bad-python3-import,
        deprecated-string-function,
        deprecated-str-translate-call,
        deprecated-itertools-function,
        deprecated-types-field,
        next-method-defined,
        dict-items-not-iterating,
        dict-keys-not-iterating,
        dict-values-not-iterating,
        deprecated-operator-function,
        deprecated-urllib-function,
        xreadlines-attribute,
        deprecated-sys-function,
        exception-escape,
        comprehension-escape,
        no-member,
        invalid-name,
        too-many-branches,
        wrong-import-order,
        too-many-arguments,
        missing-function-docstring,
        missing-module-docstring,
        too-many-locals,
        too-few-public-methods,
        abstract-method,
        broad-except,
        too-many-nested-blocks,
        too-many-instance-attributes,
        missing-class-docstring,
        duplicate-code,
        not-callable,
        protected-access,
        dangerous-default-value,
        no-name-in-module,
        logging-fstring-interpolation,
        super-init-not-called,
        redefined-builtin,
        attribute-defined-outside-init,
        arguments-differ,
        cyclic-import,
        bad-super-call,
        too-many-statements

# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once). See also the "--disable" option for examples.
enable=c-extension-no-member


[REPORTS]

# Python expression which should return a score less than or equal to 10. You
# have access to the variables 'error', 'warning', 'refactor', and 'convention'
# which contain the number of messages in each category, as well as 'statement'
# which is the total number of statements analyzed. This score is used by the
# global evaluation report (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)

# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details.
#msg-template=

# Set the output format. Available formats are text, parseable, colorized, json
# and msvs (visual studio). You can also give a reporter class, e.g.
# mypackage.mymodule.MyReporterClass.
output-format=text

# Tells whether to display a full report or only the messages.
reports=no

# Activate the evaluation score.
score=yes


[REFACTORING]

# Maximum number of nested blocks for function / method body
max-nested-blocks=5

# Complete name of functions that never returns. When checking for
# inconsistent-return-statements if a never returning function is called then
# it will be considered as an explicit return statement and no message will be
# printed.
never-returning-functions=sys.exit


[TYPECHECK]

# List of decorators that produce context managers, such as
# contextlib.contextmanager. Add to this list to register other decorators that
# produce valid context managers.
contextmanager-decorators=contextlib.contextmanager

# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=

# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes

# Tells whether to warn about missing members when the owner of the attribute
# is inferred to be None.
ignore-none=yes

# This flag controls whether pylint should warn about no-member and similar
# checks whenever an opaque object is returned when inferring. The inference
# can return multiple potential results while evaluating a Python object, but
# some branches might not be evaluated, which results in partial inference. In
# that case, it might be useful to still emit no-member and other checks for
# the rest of the inferred objects.
ignore-on-opaque-inference=yes

# List of class names for which member attributes should not be checked (useful
# for classes with dynamically set attributes). This supports the use of
# qualified names.
ignored-classes=optparse.Values,thread._local,_thread._local

# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis). It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=

# Show a hint with possible names when a member name was not found. The aspect
# of finding the hint is based on edit distance.
missing-member-hint=yes

# The minimum edit distance a name should have in order to be considered a
# similar match for a missing member name.
missing-member-hint-distance=1

# The total number of similar names that should be taken in consideration when
# showing a hint for a missing member.
missing-member-max-choices=1

# List of decorators that change the signature of a decorated function.
signature-mutators=


[SPELLING]

# Limits count of emitted suggestions for spelling mistakes.
max-spelling-suggestions=4

# Spelling dictionary name. Available dictionaries: none. To make it work,
# install the python-enchant package.
spelling-dict=

# List of comma separated words that should not be checked.
spelling-ignore-words=

# A path to a file that contains the private dictionary; one word per line.
spelling-private-dict-file=

# Tells whether to store unknown words to the private dictionary (see the
# --spelling-private-dict-file option) instead of raising a message.
spelling-store-unknown-words=no


[LOGGING]

# The type of string formatting that logging methods do. `old` means using %
# formatting, `new` is for `{}` formatting.
logging-format-style=old

# Logging modules to check that the string format arguments are in logging
# function parameter format.
logging-modules=logging


[VARIABLES]

# List of additional names supposed to be defined in builtins. Remember that
# you should avoid defining new builtins when possible.
additional-builtins=

# Tells whether unused global variables should be treated as a violation.
allow-global-unused-variables=yes

# List of strings which can identify a callback function by name. A callback
# name must start or end with one of those strings.
callbacks=cb_,
          _cb

# A regular expression matching the name of dummy variables (i.e. expected to
# not be used).
dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_

# Argument names that match this expression will be ignored. Default to name
# with leading underscore.
ignored-argument-names=_.*|^ignored_|^unused_

# Tells whether we should check for unused import in __init__ files.
init-import=no

# List of qualified module names which can have objects that can redefine
# builtins.
redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io


[FORMAT]

# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
expected-line-ending-format=

# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$

# Number of spaces of indent required inside a hanging or continued line.
indent-after-paren=4

# String used as indentation unit. This is usually "    " (4 spaces) or "\t" (1
# tab).
indent-string='    '

# Maximum number of characters on a single line.
max-line-length=100

# Maximum number of lines in a module.
max-module-lines=1000

# Allow the body of a class to be on the same line as the declaration if body
# contains single statement.
single-line-class-stmt=no

# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=no


[STRING]

# This flag controls whether inconsistent-quotes generates a warning when the
# character used as a quote delimiter is used inconsistently within a module.
check-quote-consistency=no

# This flag controls whether the implicit-str-concat should generate a warning
# on implicit string concatenation in sequences defined over several lines.
check-str-concat-over-line-jumps=no


[SIMILARITIES]

# Ignore comments when computing similarities.
ignore-comments=yes

# Ignore docstrings when computing similarities.
ignore-docstrings=yes

# Ignore imports when computing similarities.
ignore-imports=no

# Minimum lines number of a similarity.
min-similarity-lines=4


[MISCELLANEOUS]

# List of note tags to take in consideration, separated by a comma.
notes=FIXME,
      XXX,
      TODO

# Regular expression of note tags to take in consideration.
#notes-rgx=


[BASIC]

# Naming style matching correct argument names.
argument-naming-style=snake_case

# Regular expression matching correct argument names. Overrides argument-
# naming-style.
#argument-rgx=

# Naming style matching correct attribute names.
attr-naming-style=snake_case

# Regular expression matching correct attribute names. Overrides attr-naming-
# style.
#attr-rgx=

# Bad variable names which should always be refused, separated by a comma.
bad-names=foo,
          bar,
          baz,
          toto,
          tutu,
          tata

# Bad variable names regexes, separated by a comma. If names match any regex,
# they will always be refused
bad-names-rgxs=

# Naming style matching correct class attribute names.
class-attribute-naming-style=any

# Regular expression matching correct class attribute names. Overrides class-
# attribute-naming-style.
#class-attribute-rgx=

# Naming style matching correct class names.
class-naming-style=PascalCase

# Regular expression matching correct class names. Overrides class-naming-
# style.
#class-rgx=

# Naming style matching correct constant names.
const-naming-style=UPPER_CASE

# Regular expression matching correct constant names. Overrides const-naming-
# style.
#const-rgx=

# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=-1

# Naming style matching correct function names.
function-naming-style=snake_case

# Regular expression matching correct function names. Overrides function-
# naming-style.
#function-rgx=

# Good variable names which should always be accepted, separated by a comma.
good-names=i,
           j,
           k,
           ex,
           Run,
           _,
           x,
           y,
           w,
           h,
           a,
           b

# Good variable names regexes, separated by a comma. If names match any regex,
# they will always be accepted
good-names-rgxs=

# Include a hint for the correct naming format with invalid-name.
include-naming-hint=no

# Naming style matching correct inline iteration names.
inlinevar-naming-style=any

# Regular expression matching correct inline iteration names. Overrides
# inlinevar-naming-style.
#inlinevar-rgx=

# Naming style matching correct method names.
method-naming-style=snake_case

# Regular expression matching correct method names. Overrides method-naming-
# style.
#method-rgx=

# Naming style matching correct module names.
module-naming-style=snake_case

# Regular expression matching correct module names. Overrides module-naming-
# style.
#module-rgx=

# Colon-delimited sets of names that determine each other's naming style when
# the name regexes allow several styles.
name-group=

# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=^_

# List of decorators that produce properties, such as abc.abstractproperty. Add
# to this list to register other decorators that produce valid properties.
# These decorators are taken in consideration only for invalid-name.
property-classes=abc.abstractproperty

# Naming style matching correct variable names.
variable-naming-style=snake_case

# Regular expression matching correct variable names. Overrides variable-
# naming-style.
#variable-rgx=


[DESIGN]

# Maximum number of arguments for function / method.
max-args=5

# Maximum number of attributes for a class (see R0902).
max-attributes=7

# Maximum number of boolean expressions in an if statement (see R0916).
max-bool-expr=5

# Maximum number of branch for function / method body.
max-branches=12

# Maximum number of locals for function / method body.
max-locals=15

# Maximum number of parents for a class (see R0901).
max-parents=7

# Maximum number of public methods for a class (see R0904).
max-public-methods=20

# Maximum number of return / yield for function / method body.
max-returns=6

# Maximum number of statements in function / method body.
max-statements=50

# Minimum number of public methods for a class (see R0903).
min-public-methods=2


[IMPORTS]

# List of modules that can be imported at any level, not just the top level
# one.
allow-any-import-level=

# Allow wildcard imports from modules that define __all__.
allow-wildcard-with-all=no

# Analyse import fallback blocks. This can be used to support both Python 2 and
# 3 compatible code, which means that the block might have code that exists
# only in one or another interpreter, leading to false positives when analysed.
analyse-fallback-blocks=no

# Deprecated modules which should not be used, separated by a comma.
deprecated-modules=optparse,tkinter.tix

# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled).
ext-import-graph=

# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled).
import-graph=

# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled).
int-import-graph=

# Force import order to recognize a module as part of the standard
# compatibility libraries.
known-standard-library=

# Force import order to recognize a module as part of a third party library.
known-third-party=enchant

# Couples of modules and preferred modules, separated by a comma.
preferred-modules=


[CLASSES]

# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,
                      __new__,
                      setUp,
                      __post_init__

# List of member names, which should be excluded from the protected access
# warning.
exclude-protected=_asdict,
                  _fields,
                  _replace,
                  _source,
                  _make

# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls

# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=cls


[EXCEPTIONS]

# Exceptions that will emit a warning when being caught. Defaults to
# "BaseException, Exception".
overgeneral-exceptions=BaseException,
                       Exception


================================================
FILE: CITATION.cff
================================================
cff-version: 1.3.1
message: "If you use this software, please cite it as below."
authors:
  - name: "MMPose Contributors"
title: "OpenMMLab Pose Estimation Toolbox and Benchmark"
date-released: 2020-08-31
url: "https://github.com/open-mmlab/mmpose"
license: Apache-2.0


================================================
FILE: LICENSE
================================================
Copyright 2018-2020 Open-MMLab. All rights reserved.

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2018-2020 Open-MMLab.

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: LICENSES.md
================================================
# Licenses for special algorithms

In this file, we list the algorithms with other licenses instead of Apache 2.0. Users should be careful about adopting these algorithms in any commercial matters.

| Algorithm |                                                                            Files                                                                            |     License      |
| :-------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------: |
|  EDPose   | [mmpose/models/heads/transformer_heads/edpose_head.py](https://github.com/open-mmlab/mmpose/blob/main/mmpose/models/heads/transformer_heads/edpose_head.py) | IDEA License 1.0 |


================================================
FILE: MANIFEST.in
================================================
include requirements/*.txt
include mmpose/.mim/model-index.yml
include mmpose/.mim/dataset-index.yml
recursive-include mmpose/.mim/configs *.py *.yml
recursive-include mmpose/.mim/tools *.py *.sh
recursive-include mmpose/.mim/demo *.py


================================================
FILE: README.md
================================================
<div align="center">
  <img src="resources/mmpose-logo.png" width="450"/>
  <div>&nbsp;</div>
  <div align="center">
    <b>OpenMMLab website</b>
    <sup>
      <a href="https://openmmlab.com">
        <i>HOT</i>
      </a>
    </sup>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <b>OpenMMLab platform</b>
    <sup>
      <a href="https://platform.openmmlab.com">
        <i>TRY IT OUT</i>
      </a>
    </sup>
  </div>
  <div>&nbsp;</div>

[![Documentation](https://readthedocs.org/projects/mmpose/badge/?version=latest)](https://mmpose.readthedocs.io/en/latest/?badge=latest)
[![actions](https://github.com/open-mmlab/mmpose/workflows/merge_stage_test/badge.svg)](https://github.com/open-mmlab/mmpose/actions)
[![codecov](https://codecov.io/gh/open-mmlab/mmpose/branch/latest/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmpose)
[![PyPI](https://img.shields.io/pypi/v/mmpose)](https://pypi.org/project/mmpose/)
[![LICENSE](https://img.shields.io/github/license/open-mmlab/mmpose.svg)](https://github.com/open-mmlab/mmpose/blob/main/LICENSE)
[![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/open-mmlab/mmpose.svg)](https://github.com/open-mmlab/mmpose/issues)
[![Percentage of issues still open](https://isitmaintained.com/badge/open/open-mmlab/mmpose.svg)](https://github.com/open-mmlab/mmpose/issues)
[![Open in OpenXLab](https://cdn-static.openxlab.org.cn/app-center/openxlab_demo.svg)](https://openxlab.org.cn/apps?search=mmpose)

[📘Documentation](https://mmpose.readthedocs.io/en/latest/) |
[🛠️Installation](https://mmpose.readthedocs.io/en/latest/installation.html) |
[👀Model Zoo](https://mmpose.readthedocs.io/en/latest/model_zoo.html) |
[📜Papers](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html) |
[🆕Update News](https://mmpose.readthedocs.io/en/latest/notes/changelog.html) |
[🤔Reporting Issues](https://github.com/open-mmlab/mmpose/issues/new/choose) |
[🔥RTMPose](/projects/rtmpose/)

</div>

<div align="center">
  <a href="https://openmmlab.medium.com/" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/219255827-67c1a27f-f8c5-46a9-811d-5e57448c61d1.png" width="3%" alt="" /></a>
  <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
  <a href="https://discord.com/channels/1037617289144569886/1072798105428299817" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/218347213-c080267f-cbb6-443e-8532-8e1ed9a58ea9.png" width="3%" alt="" /></a>
  <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
  <a href="https://twitter.com/OpenMMLab" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/218346637-d30c8a0f-3eba-4699-8131-512fb06d46db.png" width="3%" alt="" /></a>
  <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
  <a href="https://www.youtube.com/openmmlab" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/218346691-ceb2116a-465a-40af-8424-9f30d2348ca9.png" width="3%" alt="" /></a>
  <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
  <a href="https://space.bilibili.com/1293512903" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/219026751-d7d14cce-a7c9-4e82-9942-8375fca65b99.png" width="3%" alt="" /></a>
  <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
  <a href="https://www.zhihu.com/people/openmmlab" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/219026120-ba71e48b-6e94-4bd4-b4e9-b7d175b5e362.png" width="3%" alt="" /></a>
</div>

## Introduction

English | [简体中文](README_CN.md)

MMPose is an open-source toolbox for pose estimation based on PyTorch.
It is a part of the [OpenMMLab project](https://github.com/open-mmlab).

The main branch works with **PyTorch 1.8+**.

https://user-images.githubusercontent.com/15977946/124654387-0fd3c500-ded1-11eb-84f6-24eeddbf4d91.mp4

<br/>

<details close>
<summary><b>Major Features</b></summary>

- **Support diverse tasks**

  We support a wide spectrum of mainstream pose analysis tasks in current research community, including 2d multi-person human pose estimation, 2d hand pose estimation, 2d face landmark detection, 133 keypoint whole-body human pose estimation, 3d human mesh recovery, fashion landmark detection and animal pose estimation.
  See [Demo](demo/docs/en) for more information.

- **Higher efficiency and higher accuracy**

  MMPose implements multiple state-of-the-art (SOTA) deep learning models, including both top-down & bottom-up approaches. We achieve faster training speed and higher accuracy than other popular codebases, such as [HRNet](https://github.com/leoxiaobin/deep-high-resolution-net.pytorch).
  See [benchmark.md](docs/en/notes/benchmark.md) for more information.

- **Support for various datasets**

  The toolbox directly supports multiple popular and representative datasets, COCO, AIC, MPII, MPII-TRB, OCHuman etc.
  See [dataset_zoo](docs/en/dataset_zoo) for more information.

- **Well designed, tested and documented**

  We decompose MMPose into different components and one can easily construct a customized
  pose estimation framework by combining different modules.
  We provide detailed documentation and API reference, as well as unittests.

</details>

## What's New

- Release [RTMW3D](/projects/rtmpose3d), a real-time model for 3D wholebody pose estimation.

- Release [RTMO](/projects/rtmo), a state-of-the-art real-time method for multi-person pose estimation.

  ![rtmo](https://github.com/open-mmlab/mmpose/assets/26127467/54d5555a-23e5-4308-89d1-f0c82a6734c2)

- Release [RTMW](/configs/wholebody_2d_keypoint/rtmpose/cocktail14/rtmw_cocktail14.md) models in various sizes ranging from RTMW-m to RTMW-x. The input sizes include `256x192` and `384x288`. This provides flexibility to select the right model for different speed and accuracy requirements.

- Support inference of [PoseAnything](/projects/pose_anything). Web demo is available [here](https://openxlab.org.cn/apps/detail/orhir/Pose-Anything).

- Support for new datasets:

  - (ICCV 2015) [300VW](/docs/en/dataset_zoo/2d_face_keypoint.md)

- Welcome to use the [*MMPose project*](/projects/README.md). Here, you can discover the latest features and algorithms in MMPose and quickly share your ideas and code implementations with the community. Adding new features to MMPose has become smoother:

  - Provides a simple and fast way to add new algorithms, features, and applications to MMPose.
  - More flexible code structure and style, fewer restrictions, and a shorter code review process.
  - Utilize the powerful capabilities of MMPose in the form of independent projects without being constrained by the code framework.
  - Newly added projects include:
    - [RTMPose](/projects/rtmpose/)
    - [RTMO](/projects/rtmo/)
    - [RTMPose3D](/projects/rtmpose3d/)
    - [PoseAnything](/projects/pose_anything/)
    - [YOLOX-Pose](/projects/yolox_pose/)
    - [MMPose4AIGC](/projects/mmpose4aigc/)
    - [Simple Keypoints](/projects/skps/)
    - [Just Dance](/projects/just_dance/)
    - [Uniformer](/projects/uniformer/)
  - Start your journey as an MMPose contributor with a simple [example project](/projects/example_project/), and let's build a better MMPose together!

<br/>

- January 4, 2024: MMPose [v1.3.0](https://github.com/open-mmlab/mmpose/releases/tag/v1.3.0) has been officially released, with major updates including:

  - Support for new datasets: ExLPose, H3WB
  - Release of new RTMPose series models: RTMO, RTMW
  - Support for new algorithm PoseAnything
  - Enhanced Inferencer with optional progress bar and improved affinity for one-stage methods

  Please check the complete [release notes](https://github.com/open-mmlab/mmpose/releases/tag/v1.3.0) for more details on the updates brought by MMPose v1.3.0!

## 0.x / 1.x Migration

MMPose v1.0.0 is a major update, including many API and config file changes. Currently, a part of the algorithms have been migrated to v1.0.0, and the remaining algorithms will be completed in subsequent versions. We will show the migration progress in this [Roadmap](https://github.com/open-mmlab/mmpose/issues/2258).

If your algorithm has not been migrated, you can continue to use the [0.x branch](https://github.com/open-mmlab/mmpose/tree/0.x) and [old documentation](https://mmpose.readthedocs.io/en/0.x/).

## Installation

Please refer to [installation.md](https://mmpose.readthedocs.io/en/latest/installation.html) for more detailed installation and dataset preparation.

## Getting Started

We provided a series of tutorials about the basic usage of MMPose for new users:

1. For the basic usage of MMPose:

   - [A 20-minute Tour to MMPose](https://mmpose.readthedocs.io/en/latest/guide_to_framework.html)
   - [Demos](https://mmpose.readthedocs.io/en/latest/demos.html)
   - [Inference](https://mmpose.readthedocs.io/en/latest/user_guides/inference.html)
   - [Configs](https://mmpose.readthedocs.io/en/latest/user_guides/configs.html)
   - [Prepare Datasets](https://mmpose.readthedocs.io/en/latest/user_guides/prepare_datasets.html)
   - [Train and Test](https://mmpose.readthedocs.io/en/latest/user_guides/train_and_test.html)
   - [Deployment](https://mmpose.readthedocs.io/en/latest/user_guides/how_to_deploy.html)
   - [Model Analysis](https://mmpose.readthedocs.io/en/latest/user_guides/model_analysis.html)
   - [Dataset Annotation and Preprocessing](https://mmpose.readthedocs.io/en/latest/user_guides/dataset_tools.html)

2. For developers who wish to develop based on MMPose:

   - [Learn about Codecs](https://mmpose.readthedocs.io/en/latest/advanced_guides/codecs.html)
   - [Dataflow in MMPose](https://mmpose.readthedocs.io/en/latest/advanced_guides/dataflow.html)
   - [Implement New Models](https://mmpose.readthedocs.io/en/latest/advanced_guides/implement_new_models.html)
   - [Customize Datasets](https://mmpose.readthedocs.io/en/latest/advanced_guides/customize_datasets.html)
   - [Customize Data Transforms](https://mmpose.readthedocs.io/en/latest/advanced_guides/customize_transforms.html)
   - [Customize Evaluation](https://mmpose.readthedocs.io/en/latest/advanced_guides/customize_evaluation.html)
   - [Customize Optimizer](https://mmpose.readthedocs.io/en/latest/advanced_guides/customize_optimizer.html)
   - [Customize Logging](https://mmpose.readthedocs.io/en/latest/advanced_guides/customize_logging.html)
   - [How to Deploy](https://mmpose.readthedocs.io/en/latest/user_guides/how_to_deploy.html)
   - [Model Analysis](https://mmpose.readthedocs.io/en/latest/user_guides/model_analysis.html)
   - [Migration Guide](https://mmpose.readthedocs.io/en/latest/migration.html)

3. For researchers and developers who are willing to contribute to MMPose:

   - [Contribution Guide](https://mmpose.readthedocs.io/en/latest/contribution_guide.html)

4. For some common issues, we provide a FAQ list:

   - [FAQ](https://mmpose.readthedocs.io/en/latest/faq.html)

## Model Zoo

Results and models are available in the **README.md** of each method's config directory.
A summary can be found in the [Model Zoo](https://mmpose.readthedocs.io/en/latest/model_zoo.html) page.

<details open>
<summary><b>Supported algorithms:</b></summary>

- [x] [DeepPose](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#deeppose-cvpr-2014) (CVPR'2014)
- [x] [CPM](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#cpm-cvpr-2016) (CVPR'2016)
- [x] [Hourglass](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#hourglass-eccv-2016) (ECCV'2016)
- [x] [SimpleBaseline3D](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#simplebaseline3d-iccv-2017) (ICCV'2017)
- [ ] [Associative Embedding](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#associative-embedding-nips-2017) (NeurIPS'2017)
- [x] [SimpleBaseline2D](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#simplebaseline2d-eccv-2018) (ECCV'2018)
- [x] [DSNT](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#dsnt-2018) (ArXiv'2021)
- [x] [HRNet](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#hrnet-cvpr-2019) (CVPR'2019)
- [x] [IPR](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#ipr-eccv-2018) (ECCV'2018)
- [x] [VideoPose3D](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#videopose3d-cvpr-2019) (CVPR'2019)
- [x] [HRNetv2](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#hrnetv2-tpami-2019) (TPAMI'2019)
- [x] [MSPN](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#mspn-arxiv-2019) (ArXiv'2019)
- [x] [SCNet](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#scnet-cvpr-2020) (CVPR'2020)
- [ ] [HigherHRNet](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#higherhrnet-cvpr-2020) (CVPR'2020)
- [x] [RSN](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#rsn-eccv-2020) (ECCV'2020)
- [x] [InterNet](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#internet-eccv-2020) (ECCV'2020)
- [ ] [VoxelPose](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#voxelpose-eccv-2020) (ECCV'2020)
- [x] [LiteHRNet](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#litehrnet-cvpr-2021) (CVPR'2021)
- [x] [ViPNAS](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#vipnas-cvpr-2021) (CVPR'2021)
- [x] [Debias-IPR](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#debias-ipr-iccv-2021) (ICCV'2021)
- [x] [SimCC](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/algorithms.html#simcc-eccv-2022) (ECCV'2022)

</details>

<details open>
<summary><b>Supported techniques:</b></summary>

- [x] [FPN](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/techniques.html#fpn-cvpr-2017) (CVPR'2017)
- [x] [FP16](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/techniques.html#fp16-arxiv-2017) (ArXiv'2017)
- [x] [Wingloss](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/techniques.html#wingloss-cvpr-2018) (CVPR'2018)
- [x] [AdaptiveWingloss](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/techniques.html#adaptivewingloss-iccv-2019) (ICCV'2019)
- [x] [DarkPose](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/techniques.html#darkpose-cvpr-2020) (CVPR'2020)
- [x] [UDP](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/techniques.html#udp-cvpr-2020) (CVPR'2020)
- [x] [Albumentations](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/techniques.html#albumentations-information-2020) (Information'2020)
- [x] [SoftWingloss](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/techniques.html#softwingloss-tip-2021) (TIP'2021)
- [x] [RLE](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/techniques.html#rle-iccv-2021) (ICCV'2021)

</details>

<details open>
<summary><b>Supported datasets:</b></summary>

- [x] [AFLW](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#aflw-iccvw-2011) \[[homepage](https://www.tugraz.at/institute/icg/research/team-bischof/lrs/downloads/aflw/)\] (ICCVW'2011)
- [x] [sub-JHMDB](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#jhmdb-iccv-2013) \[[homepage](http://jhmdb.is.tue.mpg.de/dataset)\] (ICCV'2013)
- [x] [COFW](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#cofw-iccv-2013) \[[homepage](http://www.vision.caltech.edu/xpburgos/ICCV13/)\] (ICCV'2013)
- [x] [MPII](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#mpii-cvpr-2014) \[[homepage](http://human-pose.mpi-inf.mpg.de/)\] (CVPR'2014)
- [x] [Human3.6M](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#human3-6m-tpami-2014) \[[homepage](http://vision.imar.ro/human3.6m/description.php)\] (TPAMI'2014)
- [x] [COCO](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#coco-eccv-2014) \[[homepage](http://cocodataset.org/)\] (ECCV'2014)
- [x] [CMU Panoptic](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#cmu-panoptic-iccv-2015) \[[homepage](http://domedb.perception.cs.cmu.edu/)\] (ICCV'2015)
- [x] [300VW](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#300w-imavis-2016) \[[homepage](https://ibug.doc.ic.ac.uk/resources/300-VW/)\] (ICCV'2015)
- [x] [DeepFashion](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#deepfashion-cvpr-2016) \[[homepage](http://mmlab.ie.cuhk.edu.hk/projects/DeepFashion/LandmarkDetection.html)\] (CVPR'2016)
- [x] [300W](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#300w-imavis-2016) \[[homepage](https://ibug.doc.ic.ac.uk/resources/300-W/)\] (IMAVIS'2016)
- [x] [RHD](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#rhd-iccv-2017) \[[homepage](https://lmb.informatik.uni-freiburg.de/resources/datasets/RenderedHandposeDataset.en.html)\] (ICCV'2017)
- [x] [CMU Panoptic HandDB](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#cmu-panoptic-handdb-cvpr-2017) \[[homepage](http://domedb.perception.cs.cmu.edu/handdb.html)\] (CVPR'2017)
- [x] [AI Challenger](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#ai-challenger-arxiv-2017) \[[homepage](https://github.com/AIChallenger/AI_Challenger_2017)\] (ArXiv'2017)
- [x] [MHP](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#mhp-acm-mm-2018) \[[homepage](https://lv-mhp.github.io/dataset)\] (ACM MM'2018)
- [x] [WFLW](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#wflw-cvpr-2018) \[[homepage](https://wywu.github.io/projects/LAB/WFLW.html)\] (CVPR'2018)
- [x] [PoseTrack18](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#posetrack18-cvpr-2018) \[[homepage](https://posetrack.net/users/download.php)\] (CVPR'2018)
- [x] [OCHuman](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#ochuman-cvpr-2019) \[[homepage](https://github.com/liruilong940607/OCHumanApi)\] (CVPR'2019)
- [x] [CrowdPose](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#crowdpose-cvpr-2019) \[[homepage](https://github.com/Jeff-sjtu/CrowdPose)\] (CVPR'2019)
- [x] [MPII-TRB](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#mpii-trb-iccv-2019) \[[homepage](https://github.com/kennymckormick/Triplet-Representation-of-human-Body)\] (ICCV'2019)
- [x] [FreiHand](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#freihand-iccv-2019) \[[homepage](https://lmb.informatik.uni-freiburg.de/projects/freihand/)\] (ICCV'2019)
- [x] [Animal-Pose](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#animal-pose-iccv-2019) \[[homepage](https://sites.google.com/view/animal-pose/)\] (ICCV'2019)
- [x] [OneHand10K](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#onehand10k-tcsvt-2019) \[[homepage](https://www.yangangwang.com/papers/WANG-MCC-2018-10.html)\] (TCSVT'2019)
- [x] [Vinegar Fly](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#vinegar-fly-nature-methods-2019) \[[homepage](https://github.com/jgraving/DeepPoseKit-Data)\] (Nature Methods'2019)
- [x] [Desert Locust](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#desert-locust-elife-2019) \[[homepage](https://github.com/jgraving/DeepPoseKit-Data)\] (Elife'2019)
- [x] [Grévy’s Zebra](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#grevys-zebra-elife-2019) \[[homepage](https://github.com/jgraving/DeepPoseKit-Data)\] (Elife'2019)
- [x] [ATRW](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#atrw-acm-mm-2020) \[[homepage](https://cvwc2019.github.io/challenge.html)\] (ACM MM'2020)
- [x] [Halpe](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#halpe-cvpr-2020) \[[homepage](https://github.com/Fang-Haoshu/Halpe-FullBody/)\] (CVPR'2020)
- [x] [COCO-WholeBody](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#coco-wholebody-eccv-2020) \[[homepage](https://github.com/jin-s13/COCO-WholeBody/)\] (ECCV'2020)
- [x] [MacaquePose](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#macaquepose-biorxiv-2020) \[[homepage](http://www.pri.kyoto-u.ac.jp/datasets/macaquepose/index.html)\] (bioRxiv'2020)
- [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](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#human-art-cvpr-2023) \[[homepage](https://idea-research.github.io/HumanArt/)\] (CVPR'2023)
- [x] [LaPa](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#lapa-aaai-2020) \[[homepage](https://github.com/JDAI-CV/lapa-dataset)\] (AAAI'2020)
- [x] [UBody](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/datasets.html#ubody-cvpr-2023) \[[homepage](https://github.com/IDEA-Research/OSX)\] (CVPR'2023)

</details>

<details open>
<summary><b>Supported backbones:</b></summary>

- [x] [AlexNet](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#alexnet-neurips-2012) (NeurIPS'2012)
- [x] [VGG](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#vgg-iclr-2015) (ICLR'2015)
- [x] [ResNet](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#resnet-cvpr-2016) (CVPR'2016)
- [x] [ResNext](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#resnext-cvpr-2017) (CVPR'2017)
- [x] [SEResNet](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#seresnet-cvpr-2018) (CVPR'2018)
- [x] [ShufflenetV1](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#shufflenetv1-cvpr-2018) (CVPR'2018)
- [x] [ShufflenetV2](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#shufflenetv2-eccv-2018) (ECCV'2018)
- [x] [MobilenetV2](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#mobilenetv2-cvpr-2018) (CVPR'2018)
- [x] [ResNetV1D](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#resnetv1d-cvpr-2019) (CVPR'2019)
- [x] [ResNeSt](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#resnest-arxiv-2020) (ArXiv'2020)
- [x] [Swin](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#swin-cvpr-2021) (CVPR'2021)
- [x] [HRFormer](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#hrformer-nips-2021) (NIPS'2021)
- [x] [PVT](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#pvt-iccv-2021) (ICCV'2021)
- [x] [PVTV2](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#pvtv2-cvmj-2022) (CVMJ'2022)

</details>

### Model Request

We will keep up with the latest progress of the community, and support more popular algorithms and frameworks. If you have any feature requests, please feel free to leave a comment in [MMPose Roadmap](https://github.com/open-mmlab/mmpose/issues/2258).

## Contributing

We appreciate all contributions to improve MMPose. Please refer to [CONTRIBUTING.md](https://mmpose.readthedocs.io/en/latest/contribution_guide.html) for the contributing guideline.

## Acknowledgement

MMPose is an open source project that is contributed by researchers and engineers from various colleges and companies.
We appreciate all the contributors who implement their methods or add new features, as well as users who give valuable feedbacks.
We wish that the toolbox and benchmark could serve the growing research community by providing a flexible toolkit to reimplement existing methods and develop their own new models.

## Citation

If you find this project useful in your research, please consider cite:

```bibtex
@misc{mmpose2020,
    title={OpenMMLab Pose Estimation Toolbox and Benchmark},
    author={MMPose Contributors},
    howpublished = {\url{https://github.com/open-mmlab/mmpose}},
    year={2020}
}
```

## License

This project is released under the [Apache 2.0 license](LICENSE).

## Projects in OpenMMLab

- [MMEngine](https://github.com/open-mmlab/mmengine): OpenMMLab foundational library for training deep learning models.
- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab foundational library for computer vision.
- [MMPreTrain](https://github.com/open-mmlab/mmpretrain): OpenMMLab pre-training toolbox and benchmark.
- [MMagic](https://github.com/open-mmlab/mmagic): Open**MM**Lab **A**dvanced, **G**enerative and **I**ntelligent **C**reation toolbox.
- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark.
- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection.
- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab rotated object detection toolbox and benchmark.
- [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab video perception toolbox and benchmark.
- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab semantic segmentation toolbox and benchmark.
- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab text detection, recognition, and understanding toolbox.
- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab pose estimation toolbox and benchmark.
- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 3D human parametric model toolbox and benchmark.
- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab fewshot learning toolbox and benchmark.
- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab's next-generation action understanding toolbox and benchmark.
- [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab optical flow toolbox and benchmark.
- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab Model Deployment Framework.
- [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab model compression toolbox and benchmark.
- [MIM](https://github.com/open-mmlab/mim): MIM installs OpenMMLab packages.
- [Playground](https://github.com/open-mmlab/playground): A central hub for gathering and showcasing amazing projects built upon OpenMMLab.


================================================
FILE: README_CN.md
================================================
<div align="center">
  <img src="resources/mmpose-logo.png" width="450"/>
  <div>&nbsp;</div>
  <div align="center">
    <b><font size="5">OpenMMLab 官网</font></b>
    <sup>
      <a href="https://openmmlab.com">
        <i><font size="4">HOT</font></i>
      </a>
    </sup>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <b><font size="5">OpenMMLab 开放平台</font></b>
    <sup>
      <a href="https://platform.openmmlab.com">
        <i><font size="4">TRY IT OUT</font></i>
      </a>
    </sup>
  </div>
  <div>&nbsp;</div>

[![Documentation](https://readthedocs.org/projects/mmpose/badge/?version=latest)](https://mmpose.readthedocs.io/en/latest/?badge=latest)
[![actions](https://github.com/open-mmlab/mmpose/workflows/merge_stage_test/badge.svg)](https://github.com/open-mmlab/mmpose/actions)
[![codecov](https://codecov.io/gh/open-mmlab/mmpose/branch/latest/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmpose)
[![PyPI](https://img.shields.io/pypi/v/mmpose)](https://pypi.org/project/mmpose/)
[![LICENSE](https://img.shields.io/github/license/open-mmlab/mmpose.svg)](https://github.com/open-mmlab/mmpose/blob/main/LICENSE)
[![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/open-mmlab/mmpose.svg)](https://github.com/open-mmlab/mmpose/issues)
[![Percentage of issues still open](https://isitmaintained.com/badge/open/open-mmlab/mmpose.svg)](https://github.com/open-mmlab/mmpose/issues)
[![Open in OpenXLab](https://cdn-static.openxlab.org.cn/app-center/openxlab_demo.svg)](https://openxlab.org.cn/apps?search=mmpose)

[📘文档](https://mmpose.readthedocs.io/zh_CN/latest/) |
[🛠️安装](https://mmpose.readthedocs.io/zh_CN/latest/installation.html) |
[👀模型库](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo.html) |
[📜论文库](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html) |
[🆕更新日志](https://mmpose.readthedocs.io/zh_CN/latest/notes/changelog.html) |
[🤔报告问题](https://github.com/open-mmlab/mmpose/issues/new/choose) |
[🔥RTMPose](/projects/rtmpose/)

</div>

<div align="center">
  <a href="https://openmmlab.medium.com/" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/219255827-67c1a27f-f8c5-46a9-811d-5e57448c61d1.png" width="3%" alt="" /></a>
  <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
  <a href="https://discord.com/channels/1037617289144569886/1072798105428299817" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/218347213-c080267f-cbb6-443e-8532-8e1ed9a58ea9.png" width="3%" alt="" /></a>
  <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
  <a href="https://twitter.com/OpenMMLab" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/218346637-d30c8a0f-3eba-4699-8131-512fb06d46db.png" width="3%" alt="" /></a>
  <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
  <a href="https://www.youtube.com/openmmlab" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/218346691-ceb2116a-465a-40af-8424-9f30d2348ca9.png" width="3%" alt="" /></a>
  <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
  <a href="https://space.bilibili.com/1293512903" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/219026751-d7d14cce-a7c9-4e82-9942-8375fca65b99.png" width="3%" alt="" /></a>
  <img src="https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png" width="3%" alt="" />
  <a href="https://www.zhihu.com/people/openmmlab" style="text-decoration:none;">
    <img src="https://user-images.githubusercontent.com/25839884/219026120-ba71e48b-6e94-4bd4-b4e9-b7d175b5e362.png" width="3%" alt="" /></a>
</div>

## Introduction

[English](./README.md) | 简体中文

MMPose 是一款基于 PyTorch 的姿态分析的开源工具箱,是 [OpenMMLab](https://github.com/open-mmlab) 项目的成员之一。

主分支代码目前支持 **PyTorch 1.8 以上**的版本。

https://user-images.githubusercontent.com/15977946/124654387-0fd3c500-ded1-11eb-84f6-24eeddbf4d91.mp4

<details close>
<summary><b>主要特性</b></summary>

- **支持多种人体姿态分析相关任务**

  MMPose 支持当前学界广泛关注的主流姿态分析任务:主要包括 2D多人姿态估计、2D手部姿态估计、2D人脸关键点检测、133关键点的全身人体姿态估计、3D人体形状恢复、服饰关键点检测、动物关键点检测等。
  具体请参考 [功能演示](demo/docs/zh_cn/)。

- **更高的精度和更快的速度**

  MMPose 复现了多种学界最先进的人体姿态分析模型,包括“自顶向下”和“自底向上”两大类算法。MMPose 相比于其他主流的代码库,具有更高的模型精度和训练速度。
  具体请参考 [基准测试](docs/en/notes/benchmark.md)(英文)。

- **支持多样的数据集**

  MMPose 支持了很多主流数据集的准备和构建,如 COCO、 MPII 等。 具体请参考 [数据集](docs/zh_cn/dataset_zoo)。

- **模块化设计**

  MMPose 将统一的人体姿态分析框架解耦成不同的模块组件,通过组合不同的模块组件,用户可以便捷地构建自定义的人体姿态分析模型。

- **详尽的单元测试和文档**

  MMPose 提供了详尽的说明文档,API 接口说明,全面的单元测试,以供社区参考。

</details>

## 最新进展

- 发布了 [RTMW3D](/projects/rtmpose3d/), 一个 3D 全身姿态估计的实时模型。

- 发布了单阶段实时多人姿态估计模型 [RTMO](/projects/rtmo)。相比 RTMPose 在多人场景下性能更优

  ![rtmo](https://github.com/open-mmlab/mmpose/assets/26127467/54d5555a-23e5-4308-89d1-f0c82a6734c2)

- 发布了不同尺寸的 [RTMW](/configs/wholebody_2d_keypoint/rtmpose/cocktail14/rtmw_cocktail14.md) 模型,满足不同的使用场景。模型尺寸覆盖从 RTMW-m 到 RTMW-x 的模型,输入图像尺寸包含 256x192 和 384x288

- 支持了 [PoseAnything](/projects/pose_anything) 的推理。[在线试玩](https://openxlab.org.cn/apps/detail/orhir/Pose-Anything)

- 我们支持了新的数据集:

  - (ICCV 2015) [300VW](/docs/en/dataset_zoo/2d_face_keypoint.md)

- 欢迎使用 [*MMPose 项目*](/projects/README.md)。在这里,您可以发现 MMPose 中的最新功能和算法,并且可以通过最快的方式与社区分享自己的创意和代码实现。向 MMPose 中添加新功能从此变得简单丝滑:

  - 提供了一种简单迅捷的方式,将新的算法、功能和应用添加到 MMPose 中
  - 更灵活的代码结构和风格,更少的限制,更简短的代码审核流程
  - 通过独立项目的形式,利用 MMPose 的强大功能,同时不被代码框架所束缚
  - 最新添加的项目包括:
    - [RTMPose](/projects/rtmpose/)
    - [RTMO](/projects/rtmo/)
    - [PoseAnything](/projects/pose_anything/)
    - [YOLOX-Pose](/projects/yolox_pose/)
    - [MMPose4AIGC](/projects/mmpose4aigc/)
    - [Simple Keypoints](/projects/skps/)
    - [Just Dance](/projects/just_dance/)
    - [Uniformer](/projects/uniformer/)
  - 从简单的 [示例项目](/projects/example_project/) 开启您的 MMPose 代码贡献者之旅吧,让我们共同打造更好用的 MMPose!

<br/>

- 2024-01-04:MMPose [v1.3.0](https://github.com/open-mmlab/mmpose/releases/tag/v1.3.0) 正式发布了,主要更新包括:

  - 支持新数据集:ExLPose、H3WB
  - 发布 RTMPose 系列新模型:RTMO、RTMW
  - 支持新算法 PoseAnything
  - 推理器 Inferencer 支持可选的进度条、提升与单阶段模型的适配性

  请查看完整的 [版本说明](https://github.com/open-mmlab/mmpose/releases/tag/v1.3.0) 以了解更多 MMPose v1.3.0 带来的更新!

## 0.x / 1.x 迁移

MMPose v1.0.0 是一个重大更新,包括了大量的 API 和配置文件的变化。目前 v1.0.0 中已经完成了一部分算法的迁移工作,剩余的算法将在后续的版本中陆续完成,我们将在这个 [Issue 页面](https://github.com/open-mmlab/mmpose/issues/2258) 中展示迁移进度。

如果您使用的算法还没有完成迁移,您也可以继续使用访问 [0.x 分支](https://github.com/open-mmlab/mmpose/tree/0.x) 和 [旧版文档](https://mmpose.readthedocs.io/zh_CN/0.x/)

## 安装

关于安装的详细说明请参考[安装文档](https://mmpose.readthedocs.io/zh_CN/latest/installation.html)。

## 教程

我们提供了一系列简明的教程,帮助 MMPose 的新用户轻松上手使用:

1. MMPose 的基本使用方法:

   - [20 分钟上手教程](https://mmpose.readthedocs.io/zh_CN/latest/guide_to_framework.html)
   - [Demos](https://mmpose.readthedocs.io/zh_CN/latest/demos.html)
   - [模型推理](https://mmpose.readthedocs.io/zh_CN/latest/user_guides/inference.html)
   - [配置文件](https://mmpose.readthedocs.io/zh_CN/latest/user_guides/configs.html)
   - [准备数据集](https://mmpose.readthedocs.io/zh_CN/latest/user_guides/prepare_datasets.html)
   - [训练与测试](https://mmpose.readthedocs.io/zh_CN/latest/user_guides/train_and_test.html)
   - [模型部署](https://mmpose.readthedocs.io/zh_CN/latest/user_guides/how_to_deploy.html)
   - [模型分析工具](https://mmpose.readthedocs.io/zh_CN/latest/user_guides/model_analysis.html)
   - [数据集标注与预处理脚本](https://mmpose.readthedocs.io/zh_CN/latest/user_guides/dataset_tools.html)

2. 对于希望基于 MMPose 进行开发的研究者和开发者:

   - [编解码器](https://mmpose.readthedocs.io/zh_CN/latest/advanced_guides/codecs.html)
   - [数据流](https://mmpose.readthedocs.io/zh_CN/latest/advanced_guides/dataflow.html)
   - [实现新模型](https://mmpose.readthedocs.io/zh_CN/latest/advanced_guides/implement_new_models.html)
   - [自定义数据集](https://mmpose.readthedocs.io/zh_CN/latest/advanced_guides/customize_datasets.html)
   - [自定义数据变换](https://mmpose.readthedocs.io/zh_CN/latest/advanced_guides/customize_transforms.html)
   - [自定义指标](https://mmpose.readthedocs.io/zh_CN/latest/advanced_guides/customize_evaluation.html)
   - [自定义优化器](https://mmpose.readthedocs.io/zh_CN/latest/advanced_guides/customize_optimizer.html)
   - [自定义日志](https://mmpose.readthedocs.io/zh_CN/latest/advanced_guides/customize_logging.html)
   - [迁移指南](https://mmpose.readthedocs.io/zh_CN/latest/migration.html)

3. 对于希望加入开源社区,向 MMPose 贡献代码的研究者和开发者:

   - [参与贡献代码](https://mmpose.readthedocs.io/zh_CN/latest/contribution_guide.html)

4. 对于使用过程中的常见问题:

   - [FAQ](https://mmpose.readthedocs.io/zh_CN/latest/faq.html)

## 模型库

各个模型的结果和设置都可以在对应的 config(配置)目录下的 **README.md** 中查看。
整体的概况也可也在 [模型库](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo.html) 页面中查看。

<details open>
<summary><b>支持的算法</b></summary>

- [x] [DeepPose](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#deeppose-cvpr-2014) (CVPR'2014)
- [x] [CPM](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#cpm-cvpr-2016) (CVPR'2016)
- [x] [Hourglass](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#hourglass-eccv-2016) (ECCV'2016)
- [x] [SimpleBaseline3D](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#simplebaseline3d-iccv-2017) (ICCV'2017)
- [ ] [Associative Embedding](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#associative-embedding-nips-2017) (NeurIPS'2017)
- [x] [SimpleBaseline2D](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#simplebaseline2d-eccv-2018) (ECCV'2018)
- [x] [DSNT](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#dsnt-2018) (ArXiv'2021)
- [x] [HRNet](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#hrnet-cvpr-2019) (CVPR'2019)
- [x] [IPR](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#ipr-eccv-2018) (ECCV'2018)
- [x] [VideoPose3D](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#videopose3d-cvpr-2019) (CVPR'2019)
- [x] [HRNetv2](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#hrnetv2-tpami-2019) (TPAMI'2019)
- [x] [MSPN](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#mspn-arxiv-2019) (ArXiv'2019)
- [x] [SCNet](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#scnet-cvpr-2020) (CVPR'2020)
- [ ] [HigherHRNet](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#higherhrnet-cvpr-2020) (CVPR'2020)
- [x] [RSN](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#rsn-eccv-2020) (ECCV'2020)
- [x] [InterNet](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#internet-eccv-2020) (ECCV'2020)
- [ ] [VoxelPose](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#voxelpose-eccv-2020) (ECCV'2020)
- [x] [LiteHRNet](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#litehrnet-cvpr-2021) (CVPR'2021)
- [x] [ViPNAS](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#vipnas-cvpr-2021) (CVPR'2021)
- [x] [Debias-IPR](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#debias-ipr-iccv-2021) (ICCV'2021)
- [x] [SimCC](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/algorithms.html#simcc-eccv-2022) (ECCV'2022)

</details>

<details open>
<summary><b>支持的技术</b></summary>

- [x] [FPN](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/techniques.html#fpn-cvpr-2017) (CVPR'2017)
- [x] [FP16](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/techniques.html#fp16-arxiv-2017) (ArXiv'2017)
- [x] [Wingloss](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/techniques.html#wingloss-cvpr-2018) (CVPR'2018)
- [x] [AdaptiveWingloss](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/techniques.html#adaptivewingloss-iccv-2019) (ICCV'2019)
- [x] [DarkPose](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/techniques.html#darkpose-cvpr-2020) (CVPR'2020)
- [x] [UDP](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/techniques.html#udp-cvpr-2020) (CVPR'2020)
- [x] [Albumentations](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/techniques.html#albumentations-information-2020) (Information'2020)
- [x] [SoftWingloss](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/techniques.html#softwingloss-tip-2021) (TIP'2021)
- [x] [RLE](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/techniques.html#rle-iccv-2021) (ICCV'2021)

</details>

<details open>
<summary><b>支持的数据集</b></summary>

- [x] [AFLW](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#aflw-iccvw-2011) \[[主页](https://www.tugraz.at/institute/icg/research/team-bischof/lrs/downloads/aflw/)\] (ICCVW'2011)
- [x] [sub-JHMDB](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#jhmdb-iccv-2013) \[[主页](http://jhmdb.is.tue.mpg.de/dataset)\] (ICCV'2013)
- [x] [COFW](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#cofw-iccv-2013) \[[主页](http://www.vision.caltech.edu/xpburgos/ICCV13/)\] (ICCV'2013)
- [x] [MPII](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#mpii-cvpr-2014) \[[主页](http://human-pose.mpi-inf.mpg.de/)\] (CVPR'2014)
- [x] [Human3.6M](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#human3-6m-tpami-2014) \[[主页](http://vision.imar.ro/human3.6m/description.php)\] (TPAMI'2014)
- [x] [COCO](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#coco-eccv-2014) \[[主页](http://cocodataset.org/)\] (ECCV'2014)
- [x] [CMU Panoptic](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#cmu-panoptic-iccv-2015) (ICCV'2015)
- [x] [DeepFashion](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#deepfashion-cvpr-2016) \[[主页](http://mmlab.ie.cuhk.edu.hk/projects/DeepFashion/LandmarkDetection.html)\] (CVPR'2016)
- [x] [300W](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#300w-imavis-2016) \[[主页](https://ibug.doc.ic.ac.uk/resources/300-W/)\] (IMAVIS'2016)
- [x] [RHD](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#rhd-iccv-2017) \[[主页](https://lmb.informatik.uni-freiburg.de/resources/datasets/RenderedHandposeDataset.en.html)\] (ICCV'2017)
- [x] [CMU Panoptic](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#cmu-panoptic-iccv-2015) \[[主页](http://domedb.perception.cs.cmu.edu/)\] (ICCV'2015)
- [x] [AI Challenger](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#ai-challenger-arxiv-2017) \[[主页](https://github.com/AIChallenger/AI_Challenger_2017)\] (ArXiv'2017)
- [x] [MHP](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#mhp-acm-mm-2018) \[[主页](https://lv-mhp.github.io/dataset)\] (ACM MM'2018)
- [x] [WFLW](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#wflw-cvpr-2018) \[[主页](https://wywu.github.io/projects/LAB/WFLW.html)\] (CVPR'2018)
- [x] [PoseTrack18](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#posetrack18-cvpr-2018) \[[主页](https://posetrack.net/users/download.php)\] (CVPR'2018)
- [x] [OCHuman](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#ochuman-cvpr-2019) \[[主页](https://github.com/liruilong940607/OCHumanApi)\] (CVPR'2019)
- [x] [CrowdPose](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#crowdpose-cvpr-2019) \[[主页](https://github.com/Jeff-sjtu/CrowdPose)\] (CVPR'2019)
- [x] [MPII-TRB](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#mpii-trb-iccv-2019) \[[主页](https://github.com/kennymckormick/Triplet-Representation-of-human-Body)\] (ICCV'2019)
- [x] [FreiHand](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#freihand-iccv-2019) \[[主页](https://lmb.informatik.uni-freiburg.de/projects/freihand/)\] (ICCV'2019)
- [x] [Animal-Pose](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#animal-pose-iccv-2019) \[[主页](https://sites.google.com/view/animal-pose/)\] (ICCV'2019)
- [x] [OneHand10K](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#onehand10k-tcsvt-2019) \[[主页](https://www.yangangwang.com/papers/WANG-MCC-2018-10.html)\] (TCSVT'2019)
- [x] [Vinegar Fly](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#vinegar-fly-nature-methods-2019) \[[主页](https://github.com/jgraving/DeepPoseKit-Data)\] (Nature Methods'2019)
- [x] [Desert Locust](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#desert-locust-elife-2019) \[[主页](https://github.com/jgraving/DeepPoseKit-Data)\] (Elife'2019)
- [x] [Grévy’s Zebra](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#grevys-zebra-elife-2019) \[[主页](https://github.com/jgraving/DeepPoseKit-Data)\] (Elife'2019)
- [x] [ATRW](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#atrw-acm-mm-2020) \[[主页](https://cvwc2019.github.io/challenge.html)\] (ACM MM'2020)
- [x] [Halpe](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#halpe-cvpr-2020) \[[主页](https://github.com/Fang-Haoshu/Halpe-FullBody/)\] (CVPR'2020)
- [x] [COCO-WholeBody](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#coco-wholebody-eccv-2020) \[[主页](https://github.com/jin-s13/COCO-WholeBody/)\] (ECCV'2020)
- [x] [MacaquePose](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#macaquepose-biorxiv-2020) \[[主页](http://www.pri.kyoto-u.ac.jp/datasets/macaquepose/index.html)\] (bioRxiv'2020)
- [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](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#human-art-cvpr-2023) \[[主页](https://idea-research.github.io/HumanArt/)\] (CVPR'2023)
- [x] [LaPa](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#lapa-aaai-2020) \[[主页](https://github.com/JDAI-CV/lapa-dataset)\] (AAAI'2020)
- [x] [UBody](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/datasets.html#ubody-cvpr-2023) \[[主页](https://github.com/IDEA-Research/OSX)\] (CVPR'2023)

</details>

<details open>
<summary><b>支持的骨干网络</b></summary>

- [x] [AlexNet](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#alexnet-neurips-2012) (NeurIPS'2012)
- [x] [VGG](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#vgg-iclr-2015) (ICLR'2015)
- [x] [ResNet](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#resnet-cvpr-2016) (CVPR'2016)
- [x] [ResNext](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#resnext-cvpr-2017) (CVPR'2017)
- [x] [SEResNet](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#seresnet-cvpr-2018) (CVPR'2018)
- [x] [ShufflenetV1](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#shufflenetv1-cvpr-2018) (CVPR'2018)
- [x] [ShufflenetV2](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#shufflenetv2-eccv-2018) (ECCV'2018)
- [x] [MobilenetV2](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#mobilenetv2-cvpr-2018) (CVPR'2018)
- [x] [ResNetV1D](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#resnetv1d-cvpr-2019) (CVPR'2019)
- [x] [ResNeSt](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#resnest-arxiv-2020) (ArXiv'2020)
- [x] [Swin](https://mmpose.readthedocs.io/en/latest/model_zoo_papers/backbones.html#swin-cvpr-2021) (CVPR'2021)
- [x] [HRFormer](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#hrformer-nips-2021) (NIPS'2021)
- [x] [PVT](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#pvt-iccv-2021) (ICCV'2021)
- [x] [PVTV2](https://mmpose.readthedocs.io/zh_CN/latest/model_zoo_papers/backbones.html#pvtv2-cvmj-2022) (CVMJ'2022)

</details>

### 模型需求

我们将跟进学界的最新进展,并支持更多算法和框架。如果您对 MMPose 有任何功能需求,请随时在 [MMPose Roadmap](https://github.com/open-mmlab/mmpose/issues/2258) 中留言。

## 参与贡献

我们非常欢迎用户对于 MMPose 做出的任何贡献,可以参考 [贡献指南](https://mmpose.readthedocs.io/zh_CN/latest/contribution_guide.html) 文件了解更多细节。

## 致谢

MMPose 是一款由不同学校和公司共同贡献的开源项目。我们感谢所有为项目提供算法复现和新功能支持的贡献者,以及提供宝贵反馈的用户。
我们希望该工具箱和基准测试可以为社区提供灵活的代码工具,供用户复现现有算法并开发自己的新模型,从而不断为开源社区提供贡献。

## 引用

如果您觉得 MMPose 对您的研究有所帮助,请考虑引用它:

```bibtex
@misc{mmpose2020,
    title={OpenMMLab Pose Estimation Toolbox and Benchmark},
    author={MMPose Contributors},
    howpublished = {\url{https://github.com/open-mmlab/mmpose}},
    year={2020}
}
```

## 许可证

该项目采用 [Apache 2.0 license](LICENSE) 开源协议。

## OpenMMLab的其他项目

- [MMEngine](https://github.com/open-mmlab/mmengine): OpenMMLab 深度学习模型训练基础库
- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab 计算机视觉基础库
- [MMPreTrain](https://github.com/open-mmlab/mmpretrain): OpenMMLab 深度学习预训练工具箱
- [MMagic](https://github.com/open-mmlab/mmagic): OpenMMLab 新一代人工智能内容生成(AIGC)工具箱
- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 目标检测工具箱
- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用 3D 目标检测平台
- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab 旋转框检测工具箱与测试基准
- [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab 一体化视频目标感知平台
- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab 语义分割工具箱
- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab 全流程文字检测识别理解工具包
- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱
- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 人体参数化模型工具箱与测试基准
- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab 少样本学习工具箱与测试基准
- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab 新一代视频理解工具箱
- [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab 光流估计工具箱与测试基准
- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab 模型部署框架
- [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab 模型压缩工具箱与测试基准
- [MIM](https://github.com/open-mmlab/mim): OpenMMlab 项目、算法、模型的统一入口
- [Playground](https://github.com/open-mmlab/playground): 收集和展示 OpenMMLab 相关的前沿、有趣的社区项目

## 欢迎加入 OpenMMLab 社区

扫描下方的二维码可关注 OpenMMLab 团队的 [知乎官方账号](https://www.zhihu.com/people/openmmlab),扫描下方微信二维码添加喵喵好友,进入 MMPose 微信交流社群。【加好友申请格式:研究方向+地区+学校/公司+姓名】

<div align="center">
<img src="https://user-images.githubusercontent.com/25839884/205870927-39f4946d-8751-4219-a4c0-740117558fd7.jpg" height="400"><img src="https://github.com/open-mmlab/mmpose/assets/62195058/256fe847-ad85-410a-a064-6314c5ce046d" height="400">
</div>

我们会在 OpenMMLab 社区为大家

- 📢 分享 AI 框架的前沿核心技术
- 💻 解读 PyTorch 常用模块源码
- 📰 发布 OpenMMLab 的相关新闻
- 🚀 介绍 OpenMMLab 开发的前沿算法
- 🏃 获取更高效的问题答疑和意见反馈
- 🔥 提供与各行各业开发者充分交流的平台

干货满满 📘,等你来撩 💗,OpenMMLab 社区期待您的加入 👬


================================================
FILE: configs/_base_/datasets/300vw.py
================================================
dataset_info = dict(
    dataset_name='300vw',
    paper_info=dict(
        author='Jie Shen, Stefanos Zafeiriou, Grigorios G. Chrysos, '
        'Jean Kossaifi, Georgios Tzimiropoulos, Maja Pantic',
        title='The First Facial Landmark Tracking in-the-Wild Challenge: '
        'Benchmark and Results',
        container='Proceedings of the IEEE '
        'international conference on computer vision workshops',
        year='2016',
        homepage='https://ibug.doc.ic.ac.uk/resources/300-VW/',
    ),
    keypoint_info={
        0: dict(name='kpt-0', id=0, color=[255, 0, 0], type='', swap='kpt-16'),
        1: dict(name='kpt-1', id=1, color=[255, 0, 0], type='', swap='kpt-15'),
        2: dict(name='kpt-2', id=2, color=[255, 0, 0], type='', swap='kpt-14'),
        3: dict(name='kpt-3', id=3, color=[255, 0, 0], type='', swap='kpt-13'),
        4: dict(name='kpt-4', id=4, color=[255, 0, 0], type='', swap='kpt-12'),
        5: dict(name='kpt-5', id=5, color=[255, 0, 0], type='', swap='kpt-11'),
        6: dict(name='kpt-6', id=6, color=[255, 0, 0], type='', swap='kpt-10'),
        7: dict(name='kpt-7', id=7, color=[255, 0, 0], type='', swap='kpt-9'),
        8: dict(name='kpt-8', id=8, color=[255, 0, 0], type='', swap=''),
        9: dict(name='kpt-9', id=9, color=[255, 0, 0], type='', swap='kpt-7'),
        10:
        dict(name='kpt-10', id=10, color=[255, 0, 0], type='', swap='kpt-6'),
        11:
        dict(name='kpt-11', id=11, color=[255, 0, 0], type='', swap='kpt-5'),
        12:
        dict(name='kpt-12', id=12, color=[255, 0, 0], type='', swap='kpt-4'),
        13:
        dict(name='kpt-13', id=13, color=[255, 0, 0], type='', swap='kpt-3'),
        14:
        dict(name='kpt-14', id=14, color=[255, 0, 0], type='', swap='kpt-2'),
        15:
        dict(name='kpt-15', id=15, color=[255, 0, 0], type='', swap='kpt-1'),
        16:
        dict(name='kpt-16', id=16, color=[255, 0, 0], type='', swap='kpt-0'),
        17:
        dict(name='kpt-17', id=17, color=[255, 0, 0], type='', swap='kpt-26'),
        18:
        dict(name='kpt-18', id=18, color=[255, 0, 0], type='', swap='kpt-25'),
        19:
        dict(name='kpt-19', id=19, color=[255, 0, 0], type='', swap='kpt-24'),
        20:
        dict(name='kpt-20', id=20, color=[255, 0, 0], type='', swap='kpt-23'),
        21:
        dict(name='kpt-21', id=21, color=[255, 0, 0], type='', swap='kpt-22'),
        22:
        dict(name='kpt-22', id=22, color=[255, 0, 0], type='', swap='kpt-21'),
        23:
        dict(name='kpt-23', id=23, color=[255, 0, 0], type='', swap='kpt-20'),
        24:
        dict(name='kpt-24', id=24, color=[255, 0, 0], type='', swap='kpt-19'),
        25:
        dict(name='kpt-25', id=25, color=[255, 0, 0], type='', swap='kpt-18'),
        26:
        dict(name='kpt-26', id=26, color=[255, 0, 0], type='', swap='kpt-17'),
        27: dict(name='kpt-27', id=27, color=[255, 0, 0], type='', swap=''),
        28: dict(name='kpt-28', id=28, color=[255, 0, 0], type='', swap=''),
        29: dict(name='kpt-29', id=29, color=[255, 0, 0], type='', swap=''),
        30: dict(name='kpt-30', id=30, color=[255, 0, 0], type='', swap=''),
        31:
        dict(name='kpt-31', id=31, color=[255, 0, 0], type='', swap='kpt-35'),
        32:
        dict(name='kpt-32', id=32, color=[255, 0, 0], type='', swap='kpt-34'),
        33: dict(name='kpt-33', id=33, color=[255, 0, 0], type='', swap=''),
        34:
        dict(name='kpt-34', id=34, color=[255, 0, 0], type='', swap='kpt-32'),
        35:
        dict(name='kpt-35', id=35, color=[255, 0, 0], type='', swap='kpt-31'),
        36:
        dict(name='kpt-36', id=36, color=[255, 0, 0], type='', swap='kpt-45'),
        37:
        dict(name='kpt-37', id=37, color=[255, 0, 0], type='', swap='kpt-44'),
        38:
        dict(name='kpt-38', id=38, color=[255, 0, 0], type='', swap='kpt-43'),
        39:
        dict(name='kpt-39', id=39, color=[255, 0, 0], type='', swap='kpt-42'),
        40:
        dict(name='kpt-40', id=40, color=[255, 0, 0], type='', swap='kpt-47'),
        41: dict(
            name='kpt-41', id=41, color=[255, 0, 0], type='', swap='kpt-46'),
        42: dict(
            name='kpt-42', id=42, color=[255, 0, 0], type='', swap='kpt-39'),
        43: dict(
            name='kpt-43', id=43, color=[255, 0, 0], type='', swap='kpt-38'),
        44: dict(
            name='kpt-44', id=44, color=[255, 0, 0], type='', swap='kpt-37'),
        45: dict(
            name='kpt-45', id=45, color=[255, 0, 0], type='', swap='kpt-36'),
        46: dict(
            name='kpt-46', id=46, color=[255, 0, 0], type='', swap='kpt-41'),
        47: dict(
            name='kpt-47', id=47, color=[255, 0, 0], type='', swap='kpt-40'),
        48: dict(
            name='kpt-48', id=48, color=[255, 0, 0], type='', swap='kpt-54'),
        49: dict(
            name='kpt-49', id=49, color=[255, 0, 0], type='', swap='kpt-53'),
        50: dict(
            name='kpt-50', id=50, color=[255, 0, 0], type='', swap='kpt-52'),
        51: dict(name='kpt-51', id=51, color=[255, 0, 0], type='', swap=''),
        52: dict(
            name='kpt-52', id=52, color=[255, 0, 0], type='', swap='kpt-50'),
        53: dict(
            name='kpt-53', id=53, color=[255, 0, 0], type='', swap='kpt-49'),
        54: dict(
            name='kpt-54', id=54, color=[255, 0, 0], type='', swap='kpt-48'),
        55: dict(
            name='kpt-55', id=55, color=[255, 0, 0], type='', swap='kpt-59'),
        56: dict(
            name='kpt-56', id=56, color=[255, 0, 0], type='', swap='kpt-58'),
        57: dict(name='kpt-57', id=57, color=[255, 0, 0], type='', swap=''),
        58: dict(
            name='kpt-58', id=58, color=[255, 0, 0], type='', swap='kpt-56'),
        59: dict(
            name='kpt-59', id=59, color=[255, 0, 0], type='', swap='kpt-55'),
        60: dict(
            name='kpt-60', id=60, color=[255, 0, 0], type='', swap='kpt-64'),
        61: dict(
            name='kpt-61', id=61, color=[255, 0, 0], type='', swap='kpt-63'),
        62: dict(name='kpt-62', id=62, color=[255, 0, 0], type='', swap=''),
        63: dict(
            name='kpt-63', id=63, color=[255, 0, 0], type='', swap='kpt-61'),
        64: dict(
            name='kpt-64', id=64, color=[255, 0, 0], type='', swap='kpt-60'),
        65: dict(
            name='kpt-65', id=65, color=[255, 0, 0], type='', swap='kpt-67'),
        66: dict(name='kpt-66', id=66, color=[255, 0, 0], type='', swap=''),
        67: dict(
            name='kpt-67', id=67, color=[255, 0, 0], type='', swap='kpt-65'),
    },
    skeleton_info={},
    joint_weights=[1.] * 68,
    sigmas=[])


================================================
FILE: configs/_base_/datasets/300w.py
================================================
dataset_info = dict(
    dataset_name='300w',
    paper_info=dict(
        author='Sagonas, Christos and Antonakos, Epameinondas '
        'and Tzimiropoulos, Georgios and Zafeiriou, Stefanos '
        'and Pantic, Maja',
        title='300 faces in-the-wild challenge: '
        'Database and results',
        container='Image and vision computing',
        year='2016',
        homepage='https://ibug.doc.ic.ac.uk/resources/300-W/',
    ),
    keypoint_info={
        0: dict(name='kpt-0', id=0, color=[255, 0, 0], type='', swap='kpt-16'),
        1: dict(name='kpt-1', id=1, color=[255, 0, 0], type='', swap='kpt-15'),
        2: dict(name='kpt-2', id=2, color=[255, 0, 0], type='', swap='kpt-14'),
        3: dict(name='kpt-3', id=3, color=[255, 0, 0], type='', swap='kpt-13'),
        4: dict(name='kpt-4', id=4, color=[255, 0, 0], type='', swap='kpt-12'),
        5: dict(name='kpt-5', id=5, color=[255, 0, 0], type='', swap='kpt-11'),
        6: dict(name='kpt-6', id=6, color=[255, 0, 0], type='', swap='kpt-10'),
        7: dict(name='kpt-7', id=7, color=[255, 0, 0], type='', swap='kpt-9'),
        8: dict(name='kpt-8', id=8, color=[255, 0, 0], type='', swap=''),
        9: dict(name='kpt-9', id=9, color=[255, 0, 0], type='', swap='kpt-7'),
        10:
        dict(name='kpt-10', id=10, color=[255, 0, 0], type='', swap='kpt-6'),
        11:
        dict(name='kpt-11', id=11, color=[255, 0, 0], type='', swap='kpt-5'),
        12:
        dict(name='kpt-12', id=12, color=[255, 0, 0], type='', swap='kpt-4'),
        13:
        dict(name='kpt-13', id=13, color=[255, 0, 0], type='', swap='kpt-3'),
        14:
        dict(name='kpt-14', id=14, color=[255, 0, 0], type='', swap='kpt-2'),
        15:
        dict(name='kpt-15', id=15, color=[255, 0, 0], type='', swap='kpt-1'),
        16:
        dict(name='kpt-16', id=16, color=[255, 0, 0], type='', swap='kpt-0'),
        17:
        dict(name='kpt-17', id=17, color=[255, 0, 0], type='', swap='kpt-26'),
        18:
        dict(name='kpt-18', id=18, color=[255, 0, 0], type='', swap='kpt-25'),
        19:
        dict(name='kpt-19', id=19, color=[255, 0, 0], type='', swap='kpt-24'),
        20:
        dict(name='kpt-20', id=20, color=[255, 0, 0], type='', swap='kpt-23'),
        21:
        dict(name='kpt-21', id=21, color=[255, 0, 0], type='', swap='kpt-22'),
        22:
        dict(name='kpt-22', id=22, color=[255, 0, 0], type='', swap='kpt-21'),
        23:
        dict(name='kpt-23', id=23, color=[255, 0, 0], type='', swap='kpt-20'),
        24:
        dict(name='kpt-24', id=24, color=[255, 0, 0], type='', swap='kpt-19'),
        25:
        dict(name='kpt-25', id=25, color=[255, 0, 0], type='', swap='kpt-18'),
        26:
        dict(name='kpt-26', id=26, color=[255, 0, 0], type='', swap='kpt-17'),
        27: dict(name='kpt-27', id=27, color=[255, 0, 0], type='', swap=''),
        28: dict(name='kpt-28', id=28, color=[255, 0, 0], type='', swap=''),
        29: dict(name='kpt-29', id=29, color=[255, 0, 0], type='', swap=''),
        30: dict(name='kpt-30', id=30, color=[255, 0, 0], type='', swap=''),
        31:
        dict(name='kpt-31', id=31, color=[255, 0, 0], type='', swap='kpt-35'),
        32:
        dict(name='kpt-32', id=32, color=[255, 0, 0], type='', swap='kpt-34'),
        33: dict(name='kpt-33', id=33, color=[255, 0, 0], type='', swap=''),
        34:
        dict(name='kpt-34', id=34, color=[255, 0, 0], type='', swap='kpt-32'),
        35:
        dict(name='kpt-35', id=35, color=[255, 0, 0], type='', swap='kpt-31'),
        36:
        dict(name='kpt-36', id=36, color=[255, 0, 0], type='', swap='kpt-45'),
        37:
        dict(name='kpt-37', id=37, color=[255, 0, 0], type='', swap='kpt-44'),
        38:
        dict(name='kpt-38', id=38, color=[255, 0, 0], type='', swap='kpt-43'),
        39:
        dict(name='kpt-39', id=39, color=[255, 0, 0], type='', swap='kpt-42'),
        40:
        dict(name='kpt-40', id=40, color=[255, 0, 0], type='', swap='kpt-47'),
        41: dict(
            name='kpt-41', id=41, color=[255, 0, 0], type='', swap='kpt-46'),
        42: dict(
            name='kpt-42', id=42, color=[255, 0, 0], type='', swap='kpt-39'),
        43: dict(
            name='kpt-43', id=43, color=[255, 0, 0], type='', swap='kpt-38'),
        44: dict(
            name='kpt-44', id=44, color=[255, 0, 0], type='', swap='kpt-37'),
        45: dict(
            name='kpt-45', id=45, color=[255, 0, 0], type='', swap='kpt-36'),
        46: dict(
            name='kpt-46', id=46, color=[255, 0, 0], type='', swap='kpt-41'),
        47: dict(
            name='kpt-47', id=47, color=[255, 0, 0], type='', swap='kpt-40'),
        48: dict(
            name='kpt-48', id=48, color=[255, 0, 0], type='', swap='kpt-54'),
        49: dict(
            name='kpt-49', id=49, color=[255, 0, 0], type='', swap='kpt-53'),
        50: dict(
            name='kpt-50', id=50, color=[255, 0, 0], type='', swap='kpt-52'),
        51: dict(name='kpt-51', id=51, color=[255, 0, 0], type='', swap=''),
        52: dict(
            name='kpt-52', id=52, color=[255, 0, 0], type='', swap='kpt-50'),
        53: dict(
            name='kpt-53', id=53, color=[255, 0, 0], type='', swap='kpt-49'),
        54: dict(
            name='kpt-54', id=54, color=[255, 0, 0], type='', swap='kpt-48'),
        55: dict(
            name='kpt-55', id=55, color=[255, 0, 0], type='', swap='kpt-59'),
        56: dict(
            name='kpt-56', id=56, color=[255, 0, 0], type='', swap='kpt-58'),
        57: dict(name='kpt-57', id=57, color=[255, 0, 0], type='', swap=''),
        58: dict(
            name='kpt-58', id=58, color=[255, 0, 0], type='', swap='kpt-56'),
        59: dict(
            name='kpt-59', id=59, color=[255, 0, 0], type='', swap='kpt-55'),
        60: dict(
            name='kpt-60', id=60, color=[255, 0, 0], type='', swap='kpt-64'),
        61: dict(
            name='kpt-61', id=61, color=[255, 0, 0], type='', swap='kpt-63'),
        62: dict(name='kpt-62', id=62, color=[255, 0, 0], type='', swap=''),
        63: dict(
            name='kpt-63', id=63, color=[255, 0, 0], type='', swap='kpt-61'),
        64: dict(
            name='kpt-64', id=64, color=[255, 0, 0], type='', swap='kpt-60'),
        65: dict(
            name='kpt-65', id=65, color=[255, 0, 0], type='', swap='kpt-67'),
        66: dict(name='kpt-66', id=66, color=[255, 0, 0], type='', swap=''),
        67: dict(
            name='kpt-67', id=67, color=[255, 0, 0], type='', swap='kpt-65'),
    },
    skeleton_info={},
    joint_weights=[1.] * 68,
    sigmas=[])


================================================
FILE: configs/_base_/datasets/300wlp.py
================================================
dataset_info = dict(
    dataset_name='300wlp',
    paper_info=dict(
        author='Xiangyu Zhu1, and Zhen Lei1 '
        'and Xiaoming Liu2, and Hailin Shi1 '
        'and Stan Z. Li1',
        title='300 faces in-the-wild challenge: '
        'Database and results',
        container='Image and vision computing',
        year='2016',
        homepage='http://www.cbsr.ia.ac.cn/users/xiangyuzhu/'
        'projects/3DDFA/main.htm',
    ),
    keypoint_info={
        0: dict(name='kpt-0', id=0, color=[255, 0, 0], type='', swap=''),
        1: dict(name='kpt-1', id=1, color=[255, 0, 0], type='', swap=''),
        2: dict(name='kpt-2', id=2, color=[255, 0, 0], type='', swap=''),
        3: dict(name='kpt-3', id=3, color=[255, 0, 0], type='', swap=''),
        4: dict(name='kpt-4', id=4, color=[255, 0, 0], type='', swap=''),
        5: dict(name='kpt-5', id=5, color=[255, 0, 0], type='', swap=''),
        6: dict(name='kpt-6', id=6, color=[255, 0, 0], type='', swap=''),
        7: dict(name='kpt-7', id=7, color=[255, 0, 0], type='', swap=''),
        8: dict(name='kpt-8', id=8, color=[255, 0, 0], type='', swap=''),
        9: dict(name='kpt-9', id=9, color=[255, 0, 0], type='', swap=''),
        10: dict(name='kpt-10', id=10, color=[255, 0, 0], type='', swap=''),
        11: dict(name='kpt-11', id=11, color=[255, 0, 0], type='', swap=''),
        12: dict(name='kpt-12', id=12, color=[255, 0, 0], type='', swap=''),
        13: dict(name='kpt-13', id=13, color=[255, 0, 0], type='', swap=''),
        14: dict(name='kpt-14', id=14, color=[255, 0, 0], type='', swap=''),
        15: dict(name='kpt-15', id=15, color=[255, 0, 0], type='', swap=''),
        16: dict(name='kpt-16', id=16, color=[255, 0, 0], type='', swap=''),
        17: dict(name='kpt-17', id=17, color=[255, 0, 0], type='', swap=''),
        18: dict(name='kpt-18', id=18, color=[255, 0, 0], type='', swap=''),
        19: dict(name='kpt-19', id=19, color=[255, 0, 0], type='', swap=''),
        20: dict(name='kpt-20', id=20, color=[255, 0, 0], type='', swap=''),
        21: dict(name='kpt-21', id=21, color=[255, 0, 0], type='', swap=''),
        22: dict(name='kpt-22', id=22, color=[255, 0, 0], type='', swap=''),
        23: dict(name='kpt-23', id=23, color=[255, 0, 0], type='', swap=''),
        24: dict(name='kpt-24', id=24, color=[255, 0, 0], type='', swap=''),
        25: dict(name='kpt-25', id=25, color=[255, 0, 0], type='', swap=''),
        26: dict(name='kpt-26', id=26, color=[255, 0, 0], type='', swap=''),
        27: dict(name='kpt-27', id=27, color=[255, 0, 0], type='', swap=''),
        28: dict(name='kpt-28', id=28, color=[255, 0, 0], type='', swap=''),
        29: dict(name='kpt-29', id=29, color=[255, 0, 0], type='', swap=''),
        30: dict(name='kpt-30', id=30, color=[255, 0, 0], type='', swap=''),
        31: dict(name='kpt-31', id=31, color=[255, 0, 0], type='', swap=''),
        32: dict(name='kpt-32', id=32, color=[255, 0, 0], type='', swap=''),
        33: dict(name='kpt-33', id=33, color=[255, 0, 0], type='', swap=''),
        34: dict(name='kpt-34', id=34, color=[255, 0, 0], type='', swap=''),
        35: dict(name='kpt-35', id=35, color=[255, 0, 0], type='', swap=''),
        36: dict(name='kpt-36', id=36, color=[255, 0, 0], type='', swap=''),
        37: dict(name='kpt-37', id=37, color=[255, 0, 0], type='', swap=''),
        38: dict(name='kpt-38', id=38, color=[255, 0, 0], type='', swap=''),
        39: dict(name='kpt-39', id=39, color=[255, 0, 0], type='', swap=''),
        40: dict(name='kpt-40', id=40, color=[255, 0, 0], type='', swap=''),
        41: dict(name='kpt-41', id=41, color=[255, 0, 0], type='', swap=''),
        42: dict(name='kpt-42', id=42, color=[255, 0, 0], type='', swap=''),
        43: dict(name='kpt-43', id=43, color=[255, 0, 0], type='', swap=''),
        44: dict(name='kpt-44', id=44, color=[255, 0, 0], type='', swap=''),
        45: dict(name='kpt-45', id=45, color=[255, 0, 0], type='', swap=''),
        46: dict(name='kpt-46', id=46, color=[255, 0, 0], type='', swap=''),
        47: dict(name='kpt-47', id=47, color=[255, 0, 0], type='', swap=''),
        48: dict(name='kpt-48', id=48, color=[255, 0, 0], type='', swap=''),
        49: dict(name='kpt-49', id=49, color=[255, 0, 0], type='', swap=''),
        50: dict(name='kpt-50', id=50, color=[255, 0, 0], type='', swap=''),
        51: dict(name='kpt-51', id=51, color=[255, 0, 0], type='', swap=''),
        52: dict(name='kpt-52', id=52, color=[255, 0, 0], type='', swap=''),
        53: dict(name='kpt-53', id=53, color=[255, 0, 0], type='', swap=''),
        54: dict(name='kpt-54', id=54, color=[255, 0, 0], type='', swap=''),
        55: dict(name='kpt-55', id=55, color=[255, 0, 0], type='', swap=''),
        56: dict(name='kpt-56', id=56, color=[255, 0, 0], type='', swap=''),
        57: dict(name='kpt-57', id=57, color=[255, 0, 0], type='', swap=''),
        58: dict(name='kpt-58', id=58, color=[255, 0, 0], type='', swap=''),
        59: dict(name='kpt-59', id=59, color=[255, 0, 0], type='', swap=''),
        60: dict(name='kpt-60', id=60, color=[255, 0, 0], type='', swap=''),
        61: dict(name='kpt-61', id=61, color=[255, 0, 0], type='', swap=''),
        62: dict(name='kpt-62', id=62, color=[255, 0, 0], type='', swap=''),
        63: dict(name='kpt-63', id=63, color=[255, 0, 0], type='', swap=''),
        64: dict(name='kpt-64', id=64, color=[255, 0, 0], type='', swap=''),
        65: dict(name='kpt-65', id=65, color=[255, 0, 0], type='', swap=''),
        66: dict(name='kpt-66', id=66, color=[255, 0, 0], type='', swap=''),
        67: dict(name='kpt-67', id=67, color=[255, 0, 0], type='', swap=''),
    },
    skeleton_info={},
    joint_weights=[1.] * 68,
    sigmas=[])


================================================
FILE: configs/_base_/datasets/aflw.py
================================================
dataset_info = dict(
    dataset_name='aflw',
    paper_info=dict(
        author='Koestinger, Martin and Wohlhart, Paul and '
        'Roth, Peter M and Bischof, Horst',
        title='Annotated facial landmarks in the wild: '
        'A large-scale, real-world database for facial '
        'landmark localization',
        container='2011 IEEE international conference on computer '
        'vision workshops (ICCV workshops)',
        year='2011',
        homepage='https://www.tugraz.at/institute/icg/research/'
        'team-bischof/lrs/downloads/aflw/',
    ),
    keypoint_info={
        0: dict(name='kpt-0', id=0, color=[255, 0, 0], type='', swap='kpt-5'),
        1: dict(name='kpt-1', id=1, color=[255, 0, 0], type='', swap='kpt-4'),
        2: dict(name='kpt-2', id=2, color=[255, 0, 0], type='', swap='kpt-3'),
        3: dict(name='kpt-3', id=3, color=[255, 0, 0], type='', swap='kpt-2'),
        4: dict(name='kpt-4', id=4, color=[255, 0, 0], type='', swap='kpt-1'),
        5: dict(name='kpt-5', id=5, color=[255, 0, 0], type='', swap='kpt-0'),
        6: dict(name='kpt-6', id=6, color=[255, 0, 0], type='', swap='kpt-11'),
        7: dict(name='kpt-7', id=7, color=[255, 0, 0], type='', swap='kpt-10'),
        8: dict(name='kpt-8', id=8, color=[255, 0, 0], type='', swap='kpt-9'),
        9: dict(name='kpt-9', id=9, color=[255, 0, 0], type='', swap='kpt-8'),
        10:
        dict(name='kpt-10', id=10, color=[255, 0, 0], type='', swap='kpt-7'),
        11:
        dict(name='kpt-11', id=11, color=[255, 0, 0], type='', swap='kpt-6'),
        12:
        dict(name='kpt-12', id=12, color=[255, 0, 0], type='', swap='kpt-14'),
        13: dict(name='kpt-13', id=13, color=[255, 0, 0], type='', swap=''),
        14:
        dict(name='kpt-14', id=14, color=[255, 0, 0], type='', swap='kpt-12'),
        15:
        dict(name='kpt-15', id=15, color=[255, 0, 0], type='', swap='kpt-17'),
        16: dict(name='kpt-16', id=16, color=[255, 0, 0], type='', swap=''),
        17:
        dict(name='kpt-17', id=17, color=[255, 0, 0], type='', swap='kpt-15'),
        18: dict(name='kpt-18', id=18, color=[255, 0, 0], type='', swap='')
    },
    skeleton_info={},
    joint_weights=[1.] * 19,
    sigmas=[])


================================================
FILE: configs/_base_/datasets/aic.py
================================================
dataset_info = dict(
    dataset_name='aic',
    paper_info=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='right_shoulder',
            id=0,
            color=[255, 128, 0],
            type='upper',
            swap='left_shoulder'),
        1:
        dict(
            name='right_elbow',
            id=1,
            color=[255, 128, 0],
            type='upper',
            swap='left_elbow'),
        2:
        dict(
            name='right_wrist',
            id=2,
            color=[255, 128, 0],
            type='upper',
            swap='left_wrist'),
        3:
        dict(
            name='left_shoulder',
            id=3,
            color=[0, 255, 0],
            type='upper',
            swap='right_shoulder'),
        4:
        dict(
            name='left_elbow',
            id=4,
            color=[0, 255, 0],
            type='upper',
            swap='right_elbow'),
        5:
        dict(
            name='left_wrist',
            id=5,
            color=[0, 255, 0],
            type='upper',
            swap='right_wrist'),
        6:
        dict(
            name='right_hip',
            id=6,
            color=[255, 128, 0],
            type='lower',
            swap='left_hip'),
        7:
        dict(
            name='right_knee',
            id=7,
            color=[255, 128, 0],
            type='lower',
            swap='left_knee'),
        8:
        dict(
            name='right_ankle',
            id=8,
            color=[255, 128, 0],
            type='lower',
            swap='left_ankle'),
        9:
        dict(
            name='left_hip',
            id=9,
            color=[0, 255, 0],
            type='lower',
            swap='right_hip'),
        10:
        dict(
            name='left_knee',
            id=10,
            color=[0, 255, 0],
            type='lower',
            swap='right_knee'),
        11:
        dict(
            name='left_ankle',
            id=11,
            color=[0, 255, 0],
            type='lower',
            swap='right_ankle'),
        12:
        dict(
            name='head_top',
            id=12,
            color=[51, 153, 255],
            type='upper',
            swap=''),
        13:
        dict(name='neck', id=13, color=[51, 153, 255], type='upper', swap='')
    },
    skeleton_info={
        0:
        dict(link=('right_wrist', 'right_elbow'), id=0, color=[255, 128, 0]),
        1: dict(
            link=('right_elbow', 'right_shoulder'), id=1, color=[255, 128, 0]),
        2: dict(link=('right_shoulder', 'neck'), id=2, color=[51, 153, 255]),
        3: dict(link=('neck', 'left_shoulder'), id=3, color=[51, 153, 255]),
        4: dict(link=('left_shoulder', 'left_elbow'), id=4, color=[0, 255, 0]),
        5: dict(link=('left_elbow', 'left_wrist'), id=5, color=[0, 255, 0]),
        6: dict(link=('right_ankle', 'right_knee'), id=6, color=[255, 128, 0]),
        7: dict(link=('right_knee', 'right_hip'), id=7, color=[255, 128, 0]),
        8: dict(link=('right_hip', 'left_hip'), id=8, color=[51, 153, 255]),
        9: dict(link=('left_hip', 'left_knee'), id=9, color=[0, 255, 0]),
        10: dict(link=('left_knee', 'left_ankle'), id=10, color=[0, 255, 0]),
        11: dict(link=('head_top', 'neck'), id=11, color=[51, 153, 255]),
        12: dict(
            link=('right_shoulder', 'right_hip'), id=12, color=[51, 153, 255]),
        13:
        dict(link=('left_shoulder', 'left_hip'), id=13, color=[51, 153, 255])
    },
    joint_weights=[
        1., 1.2, 1.5, 1., 1.2, 1.5, 1., 1.2, 1.5, 1., 1.2, 1.5, 1., 1.
    ],

    # 'https://github.com/AIChallenger/AI_Challenger_2017/blob/master/'
    # 'Evaluation/keypoint_eval/keypoint_eval.py#L50'
    # delta = 2 x sigma
    sigmas=[
        0.01388152, 0.01515228, 0.01057665, 0.01417709, 0.01497891, 0.01402144,
        0.03909642, 0.03686941, 0.01981803, 0.03843971, 0.03412318, 0.02415081,
        0.01291456, 0.01236173
    ])


================================================
FILE: configs/_base_/datasets/ak.py
================================================
dataset_info = dict(
    dataset_name='Animal Kingdom',
    paper_info=dict(
        author='Singapore University of Technology and Design, Singapore.'
        ' Xun Long Ng, Kian Eng Ong, Qichen Zheng,'
        ' Yun Ni, Si Yong Yeo, Jun Liu.',
        title='Animal Kingdom: '
        'A Large and Diverse Dataset for Animal Behavior Understanding',
        container='Conference on Computer Vision '
        'and Pattern Recognition (CVPR)',
        year='2022',
        homepage='https://sutdcv.github.io/Animal-Kingdom',
        version='1.0 (2022-06)',
        date_created='2022-06',
    ),
    keypoint_info={
        0:
        dict(
            name='Head_Mid_Top',
            id=0,
            color=(225, 0, 255),
            type='upper',
            swap=''),
        1:
        dict(
            name='Eye_Left',
            id=1,
            color=[220, 20, 60],
            type='upper',
            swap='Eye_Right'),
        2:
        dict(
            name='Eye_Right',
            id=2,
            color=[0, 255, 255],
            type='upper',
            swap='Eye_Left'),
        3:
        dict(
            name='Mouth_Front_Top',
            id=3,
            color=(0, 255, 42),
            type='upper',
            swap=''),
        4:
        dict(
            name='Mouth_Back_Left',
            id=4,
            color=[221, 160, 221],
            type='upper',
            swap='Mouth_Back_Right'),
        5:
        dict(
            name='Mouth_Back_Right',
            id=5,
            color=[135, 206, 250],
            type='upper',
            swap='Mouth_Back_Left'),
        6:
        dict(
            name='Mouth_Front_Bottom',
            id=6,
            color=[50, 205, 50],
            type='upper',
            swap=''),
        7:
        dict(
            name='Shoulder_Left',
            id=7,
            color=[255, 182, 193],
            type='upper',
            swap='Shoulder_Right'),
        8:
        dict(
            name='Shoulder_Right',
            id=8,
            color=[0, 191, 255],
            type='upper',
            swap='Shoulder_Left'),
        9:
        dict(
            name='Elbow_Left',
            id=9,
            color=[255, 105, 180],
            type='upper',
            swap='Elbow_Right'),
        10:
        dict(
            name='Elbow_Right',
            id=10,
            color=[30, 144, 255],
            type='upper',
            swap='Elbow_Left'),
        11:
        dict(
            name='Wrist_Left',
            id=11,
            color=[255, 20, 147],
            type='upper',
            swap='Wrist_Right'),
        12:
        dict(
            name='Wrist_Right',
            id=12,
            color=[0, 0, 255],
            type='upper',
            swap='Wrist_Left'),
        13:
        dict(
            name='Torso_Mid_Back',
            id=13,
            color=(185, 3, 221),
            type='upper',
            swap=''),
        14:
        dict(
            name='Hip_Left',
            id=14,
            color=[255, 215, 0],
            type='lower',
            swap='Hip_Right'),
        15:
        dict(
            name='Hip_Right',
            id=15,
            color=[147, 112, 219],
            type='lower',
            swap='Hip_Left'),
        16:
        dict(
            name='Knee_Left',
            id=16,
            color=[255, 165, 0],
            type='lower',
            swap='Knee_Right'),
        17:
        dict(
            name='Knee_Right',
            id=17,
            color=[138, 43, 226],
            type='lower',
            swap='Knee_Left'),
        18:
        dict(
            name='Ankle_Left',
            id=18,
            color=[255, 140, 0],
            type='lower',
            swap='Ankle_Right'),
        19:
        dict(
            name='Ankle_Right',
            id=19,
            color=[128, 0, 128],
            type='lower',
            swap='Ankle_Left'),
        20:
        dict(
            name='Tail_Top_Back',
            id=20,
            color=(0, 251, 255),
            type='lower',
            swap=''),
        21:
        dict(
            name='Tail_Mid_Back',
            id=21,
            color=[32, 178, 170],
            type='lower',
            swap=''),
        22:
        dict(
            name='Tail_End_Back',
            id=22,
            color=(0, 102, 102),
            type='lower',
            swap='')
    },
    skeleton_info={
        0:
        dict(link=('Eye_Left', 'Head_Mid_Top'), id=0, color=[220, 20, 60]),
        1:
        dict(link=('Eye_Right', 'Head_Mid_Top'), id=1, color=[0, 255, 255]),
        2:
        dict(
            link=('Mouth_Front_Top', 'Mouth_Back_Left'),
            id=2,
            color=[221, 160, 221]),
        3:
        dict(
            link=('Mouth_Front_Top', 'Mouth_Back_Right'),
            id=3,
            color=[135, 206, 250]),
        4:
        dict(
            link=('Mouth_Front_Bottom', 'Mouth_Back_Left'),
            id=4,
            color=[221, 160, 221]),
        5:
        dict(
            link=('Mouth_Front_Bottom', 'Mouth_Back_Right'),
            id=5,
            color=[135, 206, 250]),
        6:
        dict(
            link=('Head_Mid_Top', 'Torso_Mid_Back'), id=6,
            color=(225, 0, 255)),
        7:
        dict(
            link=('Torso_Mid_Back', 'Tail_Top_Back'),
            id=7,
            color=(185, 3, 221)),
        8:
        dict(
            link=('Tail_Top_Back', 'Tail_Mid_Back'), id=8,
            color=(0, 251, 255)),
        9:
        dict(
            link=('Tail_Mid_Back', 'Tail_End_Back'),
            id=9,
            color=[32, 178, 170]),
        10:
        dict(
            link=('Head_Mid_Top', 'Shoulder_Left'),
            id=10,
            color=[255, 182, 193]),
        11:
        dict(
            link=('Head_Mid_Top', 'Shoulder_Right'),
            id=11,
            color=[0, 191, 255]),
        12:
        dict(
            link=('Shoulder_Left', 'Elbow_Left'), id=12, color=[255, 105,
                                                                180]),
        13:
        dict(
            link=('Shoulder_Right', 'Elbow_Right'),
            id=13,
            color=[30, 144, 255]),
        14:
        dict(link=('Elbow_Left', 'Wrist_Left'), id=14, color=[255, 20, 147]),
        15:
        dict(link=('Elbow_Right', 'Wrist_Right'), id=15, color=[0, 0, 255]),
        16:
        dict(link=('Tail_Top_Back', 'Hip_Left'), id=16, color=[255, 215, 0]),
        17:
        dict(
            link=('Tail_Top_Back', 'Hip_Right'), id=17, color=[147, 112, 219]),
        18:
        dict(link=('Hip_Left', 'Knee_Left'), id=18, color=[255, 165, 0]),
        19:
        dict(link=('Hip_Right', 'Knee_Right'), id=19, color=[138, 43, 226]),
        20:
        dict(link=('Knee_Left', 'Ankle_Left'), id=20, color=[255, 140, 0]),
        21:
        dict(link=('Knee_Right', 'Ankle_Right'), id=21, color=[128, 0, 128])
    },
    joint_weights=[
        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
        1., 1., 1., 1., 1.
    ],
    sigmas=[
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025
    ])


================================================
FILE: configs/_base_/datasets/animalpose.py
================================================
dataset_info = dict(
    dataset_name='animalpose',
    paper_info=dict(
        author='Cao, Jinkun and Tang, Hongyang and Fang, Hao-Shu and '
        'Shen, Xiaoyong and Lu, Cewu and Tai, Yu-Wing',
        title='Cross-Domain Adaptation for Animal Pose Estimation',
        container='The IEEE International Conference on '
        'Computer Vision (ICCV)',
        year='2019',
        homepage='https://sites.google.com/view/animal-pose/',
    ),
    keypoint_info={
        0:
        dict(
            name='L_Eye', id=0, color=[0, 255, 0], type='upper', swap='R_Eye'),
        1:
        dict(
            name='R_Eye',
            id=1,
            color=[255, 128, 0],
            type='upper',
            swap='L_Eye'),
        2:
        dict(
            name='L_EarBase',
            id=2,
            color=[0, 255, 0],
            type='upper',
            swap='R_EarBase'),
        3:
        dict(
            name='R_EarBase',
            id=3,
            color=[255, 128, 0],
            type='upper',
            swap='L_EarBase'),
        4:
        dict(name='Nose', id=4, color=[51, 153, 255], type='upper', swap=''),
        5:
        dict(name='Throat', id=5, color=[51, 153, 255], type='upper', swap=''),
        6:
        dict(
            name='TailBase', id=6, color=[51, 153, 255], type='lower',
            swap=''),
        7:
        dict(
            name='Withers', id=7, color=[51, 153, 255], type='upper', swap=''),
        8:
        dict(
            name='L_F_Elbow',
            id=8,
            color=[0, 255, 0],
            type='upper',
            swap='R_F_Elbow'),
        9:
        dict(
            name='R_F_Elbow',
            id=9,
            color=[255, 128, 0],
            type='upper',
            swap='L_F_Elbow'),
        10:
        dict(
            name='L_B_Elbow',
            id=10,
            color=[0, 255, 0],
            type='lower',
            swap='R_B_Elbow'),
        11:
        dict(
            name='R_B_Elbow',
            id=11,
            color=[255, 128, 0],
            type='lower',
            swap='L_B_Elbow'),
        12:
        dict(
            name='L_F_Knee',
            id=12,
            color=[0, 255, 0],
            type='upper',
            swap='R_F_Knee'),
        13:
        dict(
            name='R_F_Knee',
            id=13,
            color=[255, 128, 0],
            type='upper',
            swap='L_F_Knee'),
        14:
        dict(
            name='L_B_Knee',
            id=14,
            color=[0, 255, 0],
            type='lower',
            swap='R_B_Knee'),
        15:
        dict(
            name='R_B_Knee',
            id=15,
            color=[255, 128, 0],
            type='lower',
            swap='L_B_Knee'),
        16:
        dict(
            name='L_F_Paw',
            id=16,
            color=[0, 255, 0],
            type='upper',
            swap='R_F_Paw'),
        17:
        dict(
            name='R_F_Paw',
            id=17,
            color=[255, 128, 0],
            type='upper',
            swap='L_F_Paw'),
        18:
        dict(
            name='L_B_Paw',
            id=18,
            color=[0, 255, 0],
            type='lower',
            swap='R_B_Paw'),
        19:
        dict(
            name='R_B_Paw',
            id=19,
            color=[255, 128, 0],
            type='lower',
            swap='L_B_Paw')
    },
    skeleton_info={
        0: dict(link=('L_Eye', 'R_Eye'), id=0, color=[51, 153, 255]),
        1: dict(link=('L_Eye', 'L_EarBase'), id=1, color=[0, 255, 0]),
        2: dict(link=('R_Eye', 'R_EarBase'), id=2, color=[255, 128, 0]),
        3: dict(link=('L_Eye', 'Nose'), id=3, color=[0, 255, 0]),
        4: dict(link=('R_Eye', 'Nose'), id=4, color=[255, 128, 0]),
        5: dict(link=('Nose', 'Throat'), id=5, color=[51, 153, 255]),
        6: dict(link=('Throat', 'Withers'), id=6, color=[51, 153, 255]),
        7: dict(link=('TailBase', 'Withers'), id=7, color=[51, 153, 255]),
        8: dict(link=('Throat', 'L_F_Elbow'), id=8, color=[0, 255, 0]),
        9: dict(link=('L_F_Elbow', 'L_F_Knee'), id=9, color=[0, 255, 0]),
        10: dict(link=('L_F_Knee', 'L_F_Paw'), id=10, color=[0, 255, 0]),
        11: dict(link=('Throat', 'R_F_Elbow'), id=11, color=[255, 128, 0]),
        12: dict(link=('R_F_Elbow', 'R_F_Knee'), id=12, color=[255, 128, 0]),
        13: dict(link=('R_F_Knee', 'R_F_Paw'), id=13, color=[255, 128, 0]),
        14: dict(link=('TailBase', 'L_B_Elbow'), id=14, color=[0, 255, 0]),
        15: dict(link=('L_B_Elbow', 'L_B_Knee'), id=15, color=[0, 255, 0]),
        16: dict(link=('L_B_Knee', 'L_B_Paw'), id=16, color=[0, 255, 0]),
        17: dict(link=('TailBase', 'R_B_Elbow'), id=17, color=[255, 128, 0]),
        18: dict(link=('R_B_Elbow', 'R_B_Knee'), id=18, color=[255, 128, 0]),
        19: dict(link=('R_B_Knee', 'R_B_Paw'), id=19, color=[255, 128, 0])
    },
    joint_weights=[
        1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.2, 1.2, 1.2, 1.2,
        1.5, 1.5, 1.5, 1.5
    ],

    # Note: The original paper did not provide enough information about
    # the sigmas. We modified from 'https://github.com/cocodataset/'
    # 'cocoapi/blob/master/PythonAPI/pycocotools/cocoeval.py#L523'
    sigmas=[
        0.025, 0.025, 0.026, 0.035, 0.035, 0.10, 0.10, 0.10, 0.107, 0.107,
        0.107, 0.107, 0.087, 0.087, 0.087, 0.087, 0.089, 0.089, 0.089, 0.089
    ])


================================================
FILE: configs/_base_/datasets/ap10k.py
================================================
dataset_info = dict(
    dataset_name='ap10k',
    paper_info=dict(
        author='Yu, Hang and Xu, Yufei and Zhang, Jing and '
        'Zhao, Wei and Guan, Ziyu and Tao, Dacheng',
        title='AP-10K: A Benchmark for Animal Pose Estimation in the Wild',
        container='35th Conference on Neural Information Processing Systems '
        '(NeurIPS 2021) Track on Datasets and Bench-marks.',
        year='2021',
        homepage='https://github.com/AlexTheBad/AP-10K',
    ),
    keypoint_info={
        0:
        dict(
            name='L_Eye', id=0, color=[0, 255, 0], type='upper', swap='R_Eye'),
        1:
        dict(
            name='R_Eye',
            id=1,
            color=[255, 128, 0],
            type='upper',
            swap='L_Eye'),
        2:
        dict(name='Nose', id=2, color=[51, 153, 255], type='upper', swap=''),
        3:
        dict(name='Neck', id=3, color=[51, 153, 255], type='upper', swap=''),
        4:
        dict(
            name='Root of tail',
            id=4,
            color=[51, 153, 255],
            type='lower',
            swap=''),
        5:
        dict(
            name='L_Shoulder',
            id=5,
            color=[51, 153, 255],
            type='upper',
            swap='R_Shoulder'),
        6:
        dict(
            name='L_Elbow',
            id=6,
            color=[51, 153, 255],
            type='upper',
            swap='R_Elbow'),
        7:
        dict(
            name='L_F_Paw',
            id=7,
            color=[0, 255, 0],
            type='upper',
            swap='R_F_Paw'),
        8:
        dict(
            name='R_Shoulder',
            id=8,
            color=[0, 255, 0],
            type='upper',
            swap='L_Shoulder'),
        9:
        dict(
            name='R_Elbow',
            id=9,
            color=[255, 128, 0],
            type='upper',
            swap='L_Elbow'),
        10:
        dict(
            name='R_F_Paw',
            id=10,
            color=[0, 255, 0],
            type='lower',
            swap='L_F_Paw'),
        11:
        dict(
            name='L_Hip',
            id=11,
            color=[255, 128, 0],
            type='lower',
            swap='R_Hip'),
        12:
        dict(
            name='L_Knee',
            id=12,
            color=[255, 128, 0],
            type='lower',
            swap='R_Knee'),
        13:
        dict(
            name='L_B_Paw',
            id=13,
            color=[0, 255, 0],
            type='lower',
            swap='R_B_Paw'),
        14:
        dict(
            name='R_Hip', id=14, color=[0, 255, 0], type='lower',
            swap='L_Hip'),
        15:
        dict(
            name='R_Knee',
            id=15,
            color=[0, 255, 0],
            type='lower',
            swap='L_Knee'),
        16:
        dict(
            name='R_B_Paw',
            id=16,
            color=[0, 255, 0],
            type='lower',
            swap='L_B_Paw'),
    },
    skeleton_info={
        0: dict(link=('L_Eye', 'R_Eye'), id=0, color=[0, 0, 255]),
        1: dict(link=('L_Eye', 'Nose'), id=1, color=[0, 0, 255]),
        2: dict(link=('R_Eye', 'Nose'), id=2, color=[0, 0, 255]),
        3: dict(link=('Nose', 'Neck'), id=3, color=[0, 255, 0]),
        4: dict(link=('Neck', 'Root of tail'), id=4, color=[0, 255, 0]),
        5: dict(link=('Neck', 'L_Shoulder'), id=5, color=[0, 255, 255]),
        6: dict(link=('L_Shoulder', 'L_Elbow'), id=6, color=[0, 255, 255]),
        7: dict(link=('L_Elbow', 'L_F_Paw'), id=6, color=[0, 255, 255]),
        8: dict(link=('Neck', 'R_Shoulder'), id=7, color=[6, 156, 250]),
        9: dict(link=('R_Shoulder', 'R_Elbow'), id=8, color=[6, 156, 250]),
        10: dict(link=('R_Elbow', 'R_F_Paw'), id=9, color=[6, 156, 250]),
        11: dict(link=('Root of tail', 'L_Hip'), id=10, color=[0, 255, 255]),
        12: dict(link=('L_Hip', 'L_Knee'), id=11, color=[0, 255, 255]),
        13: dict(link=('L_Knee', 'L_B_Paw'), id=12, color=[0, 255, 255]),
        14: dict(link=('Root of tail', 'R_Hip'), id=13, color=[6, 156, 250]),
        15: dict(link=('R_Hip', 'R_Knee'), id=14, color=[6, 156, 250]),
        16: dict(link=('R_Knee', 'R_B_Paw'), id=15, color=[6, 156, 250]),
    },
    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.025, 0.025, 0.026, 0.035, 0.035, 0.079, 0.072, 0.062, 0.079, 0.072,
        0.062, 0.107, 0.087, 0.089, 0.107, 0.087, 0.089
    ])


================================================
FILE: configs/_base_/datasets/atrw.py
================================================
dataset_info = dict(
    dataset_name='atrw',
    paper_info=dict(
        author='Li, Shuyuan and Li, Jianguo and Tang, Hanlin '
        'and Qian, Rui and Lin, Weiyao',
        title='ATRW: A Benchmark for Amur Tiger '
        'Re-identification in the Wild',
        container='Proceedings of the 28th ACM '
        'International Conference on Multimedia',
        year='2020',
        homepage='https://cvwc2019.github.io/challenge.html',
    ),
    keypoint_info={
        0:
        dict(
            name='left_ear',
            id=0,
            color=[51, 153, 255],
            type='upper',
            swap='right_ear'),
        1:
        dict(
            name='right_ear',
            id=1,
            color=[51, 153, 255],
            type='upper',
            swap='left_ear'),
        2:
        dict(name='nose', id=2, color=[51, 153, 255], type='upper', swap=''),
        3:
        dict(
            name='right_shoulder',
            id=3,
            color=[255, 128, 0],
            type='upper',
            swap='left_shoulder'),
        4:
        dict(
            name='right_front_paw',
            id=4,
            color=[255, 128, 0],
            type='upper',
            swap='left_front_paw'),
        5:
        dict(
            name='left_shoulder',
            id=5,
            color=[0, 255, 0],
            type='upper',
            swap='right_shoulder'),
        6:
        dict(
            name='left_front_paw',
            id=6,
            color=[0, 255, 0],
            type='upper',
            swap='right_front_paw'),
        7:
        dict(
            name='right_hip',
            id=7,
            color=[255, 128, 0],
            type='lower',
            swap='left_hip'),
        8:
        dict(
            name='right_knee',
            id=8,
            color=[255, 128, 0],
            type='lower',
            swap='left_knee'),
        9:
        dict(
            name='right_back_paw',
            id=9,
            color=[255, 128, 0],
            type='lower',
            swap='left_back_paw'),
        10:
        dict(
            name='left_hip',
            id=10,
            color=[0, 255, 0],
            type='lower',
            swap='right_hip'),
        11:
        dict(
            name='left_knee',
            id=11,
            color=[0, 255, 0],
            type='lower',
            swap='right_knee'),
        12:
        dict(
            name='left_back_paw',
            id=12,
            color=[0, 255, 0],
            type='lower',
            swap='right_back_paw'),
        13:
        dict(name='tail', id=13, color=[51, 153, 255], type='lower', swap=''),
        14:
        dict(
            name='center', id=14, color=[51, 153, 255], type='lower', swap=''),
    },
    skeleton_info={
        0:
        dict(link=('left_ear', 'nose'), id=0, color=[51, 153, 255]),
        1:
        dict(link=('right_ear', 'nose'), id=1, color=[51, 153, 255]),
        2:
        dict(link=('nose', 'center'), id=2, color=[51, 153, 255]),
        3:
        dict(
            link=('left_shoulder', 'left_front_paw'), id=3, color=[0, 255, 0]),
        4:
        dict(link=('left_shoulder', 'center'), id=4, color=[0, 255, 0]),
        5:
        dict(
            link=('right_shoulder', 'right_front_paw'),
            id=5,
            color=[255, 128, 0]),
        6:
        dict(link=('right_shoulder', 'center'), id=6, color=[255, 128, 0]),
        7:
        dict(link=('tail', 'center'), id=7, color=[51, 153, 255]),
        8:
        dict(link=('right_back_paw', 'right_knee'), id=8, color=[255, 128, 0]),
        9:
        dict(link=('right_knee', 'right_hip'), id=9, color=[255, 128, 0]),
        10:
        dict(link=('right_hip', 'tail'), id=10, color=[255, 128, 0]),
        11:
        dict(link=('left_back_paw', 'left_knee'), id=11, color=[0, 255, 0]),
        12:
        dict(link=('left_knee', 'left_hip'), id=12, color=[0, 255, 0]),
        13:
        dict(link=('left_hip', 'tail'), id=13, color=[0, 255, 0]),
    },
    joint_weights=[1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
    sigmas=[
        0.0277, 0.0823, 0.0831, 0.0202, 0.0716, 0.0263, 0.0646, 0.0302, 0.0440,
        0.0316, 0.0333, 0.0547, 0.0263, 0.0683, 0.0539
    ])


================================================
FILE: configs/_base_/datasets/campus.py
================================================
dataset_info = dict(
    dataset_name='campus',
    paper_info=dict(
        author='Belagiannis, Vasileios and Amin, Sikandar and Andriluka, '
        'Mykhaylo and Schiele, Bernt and Navab, Nassir and Ilic, Slobodan',
        title='3D Pictorial Structures for Multiple Human Pose Estimation',
        container='IEEE Computer Society Conference on Computer Vision and '
        'Pattern Recognition (CVPR)',
        year='2014',
        homepage='http://campar.in.tum.de/Chair/MultiHumanPose',
    ),
    keypoint_info={
        0:
        dict(
            name='right_ankle',
            id=0,
            color=[255, 128, 0],
            type='lower',
            swap='left_ankle'),
        1:
        dict(
            name='right_knee',
            id=1,
            color=[255, 128, 0],
            type='lower',
            swap='left_knee'),
        2:
        dict(
            name='right_hip',
            id=2,
            color=[255, 128, 0],
            type='lower',
            swap='left_hip'),
        3:
        dict(
            name='left_hip',
            id=3,
            color=[0, 255, 0],
            type='lower',
            swap='right_hip'),
        4:
        dict(
            name='left_knee',
            id=4,
            color=[0, 255, 0],
            type='lower',
            swap='right_knee'),
        5:
        dict(
            name='left_ankle',
            id=5,
            color=[0, 255, 0],
            type='lower',
            swap='right_ankle'),
        6:
        dict(
            name='right_wrist',
            id=6,
            color=[255, 128, 0],
            type='upper',
            swap='left_wrist'),
        7:
        dict(
            name='right_elbow',
            id=7,
            color=[255, 128, 0],
            type='upper',
            swap='left_elbow'),
        8:
        dict(
            name='right_shoulder',
            id=8,
            color=[255, 128, 0],
            type='upper',
            swap='left_shoulder'),
        9:
        dict(
            name='left_shoulder',
            id=9,
            color=[0, 255, 0],
            type='upper',
            swap='right_shoulder'),
        10:
        dict(
            name='left_elbow',
            id=10,
            color=[0, 255, 0],
            type='upper',
            swap='right_elbow'),
        11:
        dict(
            name='left_wrist',
            id=11,
            color=[0, 255, 0],
            type='upper',
            swap='right_wrist'),
        12:
        dict(
            name='bottom_head',
            id=12,
            color=[51, 153, 255],
            type='upper',
            swap=''),
        13:
        dict(
            name='top_head',
            id=13,
            color=[51, 153, 255],
            type='upper',
            swap=''),
    },
    skeleton_info={
        0:
        dict(link=('right_ankle', 'right_knee'), id=0, color=[255, 128, 0]),
        1:
        dict(link=('right_knee', 'right_hip'), id=1, color=[255, 128, 0]),
        2:
        dict(link=('left_hip', 'left_knee'), id=2, color=[0, 255, 0]),
        3:
        dict(link=('left_knee', 'left_ankle'), id=3, color=[0, 255, 0]),
        4:
        dict(link=('right_hip', 'left_hip'), id=4, color=[51, 153, 255]),
        5:
        dict(link=('right_wrist', 'right_elbow'), id=5, color=[255, 128, 0]),
        6:
        dict(
            link=('right_elbow', 'right_shoulder'), id=6, color=[255, 128, 0]),
        7:
        dict(link=('left_shoulder', 'left_elbow'), id=7, color=[0, 255, 0]),
        8:
        dict(link=('left_elbow', 'left_wrist'), id=8, color=[0, 255, 0]),
        9:
        dict(link=('right_hip', 'right_shoulder'), id=9, color=[255, 128, 0]),
        10:
        dict(link=('left_hip', 'left_shoulder'), id=10, color=[0, 255, 0]),
        11:
        dict(
            link=('right_shoulder', 'bottom_head'), id=11, color=[255, 128,
                                                                  0]),
        12:
        dict(link=('left_shoulder', 'bottom_head'), id=12, color=[0, 255, 0]),
        13:
        dict(link=('bottom_head', 'top_head'), id=13, color=[51, 153, 255]),
    },
    joint_weights=[
        1.5, 1.2, 1.0, 1.0, 1.2, 1.5, 1.5, 1.2, 1.0, 1.0, 1.2, 1.5, 1.0, 1.0
    ],
    sigmas=[
        0.089, 0.087, 0.107, 0.107, 0.087, 0.089, 0.062, 0.072, 0.079, 0.079,
        0.072, 0.062, 0.026, 0.026
    ])


================================================
FILE: configs/_base_/datasets/coco.py
================================================
dataset_info = dict(
    dataset_name='coco',
    paper_info=dict(
        author='Lin, Tsung-Yi and Maire, Michael and '
        'Belongie, Serge and Hays, James and '
        'Perona, Pietro and Ramanan, Deva and '
        r'Doll{\'a}r, Piotr and Zitnick, C Lawrence',
        title='Microsoft coco: Common objects in context',
        container='European conference on computer vision',
        year='2014',
        homepage='http://cocodataset.org/',
    ),
    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
    ])


================================================
FILE: configs/_base_/datasets/coco_aic.py
================================================
dataset_info = dict(
    dataset_name='coco',
    paper_info=[
        dict(
            author='Lin, Tsung-Yi and Maire, Michael and '
            'Belongie, Serge and Hays, James and '
            'Perona, Pietro and Ramanan, Deva and '
            r'Doll{\'a}r, Piotr and Zitnick, C Lawrence',
            title='Microsoft coco: Common objects in context',
            container='European conference on computer vision',
            year='2014',
            homepage='http://cocodataset.org/',
        ),
        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
    ])


================================================
FILE: configs/_base_/datasets/coco_openpose.py
================================================
dataset_info = dict(
    dataset_name='coco_openpose',
    paper_info=dict(
        author='Zhe, Cao and Tomas, Simon and '
        'Shih-En, Wei and Yaser, Sheikh',
        title='OpenPose: Realtime Multi-Person 2D Pose '
        'Estimation using Part Affinity Fields',
        container='IEEE Transactions on Pattern Analysis '
        'and Machine Intelligence',
        year='2019',
        homepage='https://github.com/CMU-Perceptual-Computing-Lab/openpose/',
    ),
    keypoint_info={
        0:
        dict(name='nose', id=0, color=[255, 0, 0], type='upper', swap=''),
        1:
        dict(name='neck', id=1, color=[255, 85, 0], type='upper', swap=''),
        2:
        dict(
            name='right_shoulder',
            id=2,
            color=[255, 170, 0],
            type='upper',
            swap='left_shoulder'),
        3:
        dict(
            name='right_elbow',
            id=3,
            color=[255, 255, 0],
            type='upper',
            swap='left_elbow'),
        4:
        dict(
            name='right_wrist',
            id=4,
            color=[170, 255, 0],
            type='upper',
            swap='left_wrist'),
        5:
        dict(
            name='left_shoulder',
            id=5,
            color=[85, 255, 0],
            type='upper',
            swap='right_shoulder'),
        6:
        dict(
            name='left_elbow',
            id=6,
            color=[0, 255, 0],
            type='upper',
            swap='right_elbow'),
        7:
        dict(
            name='left_wrist',
            id=7,
            color=[0, 255, 85],
            type='upper',
            swap='right_wrist'),
        8:
        dict(
            name='right_hip',
            id=8,
            color=[0, 255, 170],
            type='lower',
            swap='left_hip'),
        9:
        dict(
            name='right_knee',
            id=9,
            color=[0, 255, 255],
            type='lower',
            swap='left_knee'),
        10:
        dict(
            name='right_ankle',
            id=10,
            color=[0, 170, 255],
            type='lower',
            swap='left_ankle'),
        11:
        dict(
            name='left_hip',
            id=11,
            color=[0, 85, 255],
            type='lower',
            swap='right_hip'),
        12:
        dict(
            name='left_knee',
            id=12,
            color=[0, 0, 255],
            type='lower',
            swap='right_knee'),
        13:
        dict(
            name='left_ankle',
            id=13,
            color=[85, 0, 255],
            type='lower',
            swap='right_ankle'),
        14:
        dict(
            name='right_eye',
            id=14,
            color=[170, 0, 255],
            type='upper',
            swap='left_eye'),
        15:
        dict(
            name='left_eye',
            id=15,
            color=[255, 0, 255],
            type='upper',
            swap='right_eye'),
        16:
        dict(
            name='right_ear',
            id=16,
            color=[255, 0, 170],
            type='upper',
            swap='left_ear'),
        17:
        dict(
            name='left_ear',
            id=17,
            color=[255, 0, 85],
            type='upper',
            swap='right_ear'),
    },
    skeleton_info={
        0: dict(link=('neck', 'right_shoulder'), id=0, color=[255, 0, 0]),
        1: dict(link=('neck', 'left_shoulder'), id=1, color=[255, 85, 0]),
        2: dict(
            link=('right_shoulder', 'right_elbow'), id=2, color=[255, 170, 0]),
        3:
        dict(link=('right_elbow', 'right_wrist'), id=3, color=[255, 255, 0]),
        4:
        dict(link=('left_shoulder', 'left_elbow'), id=4, color=[170, 255, 0]),
        5: dict(link=('left_elbow', 'left_wrist'), id=5, color=[85, 255, 0]),
        6: dict(link=('neck', 'right_hip'), id=6, color=[0, 255, 0]),
        7: dict(link=('right_hip', 'right_knee'), id=7, color=[0, 255, 85]),
        8: dict(link=('right_knee', 'right_ankle'), id=8, color=[0, 255, 170]),
        9: dict(link=('neck', 'left_hip'), id=9, color=[0, 255, 225]),
        10: dict(link=('left_hip', 'left_knee'), id=10, color=[0, 170, 255]),
        11: dict(link=('left_knee', 'left_ankle'), id=11, color=[0, 85, 255]),
        12: dict(link=('neck', 'nose'), id=12, color=[0, 0, 255]),
        13: dict(link=('nose', 'right_eye'), id=13, color=[255, 0, 170]),
        14: dict(link=('right_eye', 'right_ear'), id=14, color=[170, 0, 255]),
        15: dict(link=('nose', 'left_eye'), id=15, color=[255, 0, 255]),
        16: dict(link=('left_eye', 'left_ear'), id=16, color=[255, 0, 170]),
    },
    joint_weights=[1.] * 18,
    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.082
    ])


================================================
FILE: configs/_base_/datasets/coco_wholebody.py
================================================
dataset_info = dict(
    dataset_name='coco_wholebody',
    paper_info=dict(
        author='Jin, Sheng and Xu, Lumin and Xu, Jin and '
        'Wang, Can and Liu, Wentao and '
        'Qian, Chen and Ouyang, Wanli and Luo, Ping',
        title='Whole-Body Human Pose Estimation in the Wild',
        container='Proceedings of the European '
        'Conference on Computer Vision (ECCV)',
        year='2020',
        homepage='https://github.com/jin-s13/COCO-WholeBody/',
    ),
    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='left_big_toe',
            id=17,
            color=[255, 128, 0],
            type='lower',
            swap='right_big_toe'),
        18:
        dict(
            name='left_small_toe',
            id=18,
            color=[255, 128, 0],
            type='lower',
            swap='right_small_toe'),
        19:
        dict(
            name='left_heel',
            id=19,
            color=[255, 128, 0],
            type='lower',
            swap='right_heel'),
        20:
        dict(
            name='right_big_toe',
            id=20,
            color=[255, 128, 0],
            type='lower',
            swap='left_big_toe'),
        21:
        dict(
            name
Download .txt
gitextract_8px0n4ye/

├── .circleci/
│   ├── config.yml
│   ├── docker/
│   │   └── Dockerfile
│   ├── scripts/
│   │   └── get_mmcv_var.sh
│   └── test.yml
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── 1-bug-report.yml
│   │   ├── 2-feature_request.yml
│   │   ├── 3-documentation.yml
│   │   └── config.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── deploy.yml
│       ├── lint.yml
│       ├── merge_stage_test.yml
│       ├── pr_stage_test.yml
│       └── scripts/
│           └── get_mmcv_var.sh
├── .gitignore
├── .pre-commit-config.yaml
├── .pylintrc
├── CITATION.cff
├── LICENSE
├── LICENSES.md
├── MANIFEST.in
├── README.md
├── README_CN.md
├── configs/
│   ├── _base_/
│   │   ├── datasets/
│   │   │   ├── 300vw.py
│   │   │   ├── 300w.py
│   │   │   ├── 300wlp.py
│   │   │   ├── aflw.py
│   │   │   ├── aic.py
│   │   │   ├── ak.py
│   │   │   ├── animalpose.py
│   │   │   ├── ap10k.py
│   │   │   ├── atrw.py
│   │   │   ├── campus.py
│   │   │   ├── coco.py
│   │   │   ├── coco_aic.py
│   │   │   ├── coco_openpose.py
│   │   │   ├── coco_wholebody.py
│   │   │   ├── coco_wholebody_face.py
│   │   │   ├── coco_wholebody_hand.py
│   │   │   ├── coco_wholebody_openpose.py
│   │   │   ├── cofw.py
│   │   │   ├── crowdpose.py
│   │   │   ├── deepfashion2.py
│   │   │   ├── deepfashion_full.py
│   │   │   ├── deepfashion_lower.py
│   │   │   ├── deepfashion_upper.py
│   │   │   ├── exlpose.py
│   │   │   ├── fly.py
│   │   │   ├── freihand2d.py
│   │   │   ├── h36m.py
│   │   │   ├── h3wb.py
│   │   │   ├── halpe.py
│   │   │   ├── halpe26.py
│   │   │   ├── horse10.py
│   │   │   ├── humanart.py
│   │   │   ├── humanart21.py
│   │   │   ├── humanart_aic.py
│   │   │   ├── interhand2d.py
│   │   │   ├── interhand3d.py
│   │   │   ├── jhmdb.py
│   │   │   ├── lapa.py
│   │   │   ├── locust.py
│   │   │   ├── macaque.py
│   │   │   ├── mhp.py
│   │   │   ├── mpi_inf_3dhp.py
│   │   │   ├── mpii.py
│   │   │   ├── mpii_trb.py
│   │   │   ├── ochuman.py
│   │   │   ├── onehand10k.py
│   │   │   ├── panoptic_body3d.py
│   │   │   ├── panoptic_hand2d.py
│   │   │   ├── posetrack18.py
│   │   │   ├── rhd2d.py
│   │   │   ├── shelf.py
│   │   │   ├── ubody2d.py
│   │   │   ├── ubody3d.py
│   │   │   ├── wflw.py
│   │   │   └── zebra.py
│   │   └── default_runtime.py
│   ├── animal_2d_keypoint/
│   │   ├── README.md
│   │   ├── rtmpose/
│   │   │   ├── README.md
│   │   │   └── ap10k/
│   │   │       ├── rtmpose-m_8xb64-210e_ap10k-256x256.py
│   │   │       ├── rtmpose_ap10k.md
│   │   │       └── rtmpose_ap10k.yml
│   │   └── topdown_heatmap/
│   │       ├── README.md
│   │       ├── ak/
│   │       │   ├── hrnet_animalkingdom.md
│   │       │   ├── hrnet_animalkingdom.yml
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256.py
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P2-256x256.py
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_amphibian-256x256.py
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_bird-256x256.py
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_fish-256x256.py
│   │       │   ├── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_mammal-256x256.py
│   │       │   └── td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_reptile-256x256.py
│   │       ├── animalpose/
│   │       │   ├── hrnet_animalpose.md
│   │       │   ├── hrnet_animalpose.yml
│   │       │   ├── resnet_animalpose.md
│   │       │   ├── resnet_animalpose.yml
│   │       │   ├── td-hm_hrnet-w32_8xb64-210e_animalpose-256x256.py
│   │       │   ├── td-hm_hrnet-w48_8xb64-210e_animalpose-256x256.py
│   │       │   ├── td-hm_res101_8xb64-210e_animalpose-256x256.py
│   │       │   ├── td-hm_res152_8xb32-210e_animalpose-256x256.py
│   │       │   └── td-hm_res50_8xb64-210e_animalpose-256x256.py
│   │       ├── ap10k/
│   │       │   ├── cspnext-m_udp_8xb64-210e_ap10k-256x256.py
│   │       │   ├── cspnext_udp_ap10k.md
│   │       │   ├── cspnext_udp_ap10k.yml
│   │       │   ├── hrnet_ap10k.md
│   │       │   ├── hrnet_ap10k.yml
│   │       │   ├── resnet_ap10k.md
│   │       │   ├── resnet_ap10k.yml
│   │       │   ├── td-hm_hrnet-w32_8xb64-210e_ap10k-256x256.py
│   │       │   ├── td-hm_hrnet-w48_8xb64-210e_ap10k-256x256.py
│   │       │   ├── td-hm_res101_8xb64-210e_ap10k-256x256.py
│   │       │   └── td-hm_res50_8xb64-210e_ap10k-256x256.py
│   │       ├── locust/
│   │       │   ├── resnet_locust.md
│   │       │   ├── resnet_locust.yml
│   │       │   ├── td-hm_res101_8xb64-210e_locust-160x160.py
│   │       │   ├── td-hm_res152_8xb32-210e_locust-160x160.py
│   │       │   └── td-hm_res50_8xb64-210e_locust-160x160.py
│   │       └── zebra/
│   │           ├── resnet_zebra.md
│   │           ├── resnet_zebra.yml
│   │           ├── td-hm_res101_8xb64-210e_zebra-160x160.py
│   │           ├── td-hm_res152_8xb32-210e_zebra-160x160.py
│   │           └── td-hm_res50_8xb64-210e_zebra-160x160.py
│   ├── body_2d_keypoint/
│   │   ├── README.md
│   │   ├── associative_embedding/
│   │   │   ├── README.md
│   │   │   └── coco/
│   │   │       ├── ae_hrnet-w32_8xb24-300e_coco-512x512.py
│   │   │       ├── hrnet_coco.md
│   │   │       └── hrnet_coco.yml
│   │   ├── cid/
│   │   │   └── coco/
│   │   │       ├── cid_hrnet-w32_8xb20-140e_coco-512x512.py
│   │   │       ├── cid_hrnet-w48_8xb20-140e_coco-512x512.py
│   │   │       ├── hrnet_coco.md
│   │   │       └── hrnet_coco.yml
│   │   ├── dekr/
│   │   │   ├── README.md
│   │   │   ├── coco/
│   │   │   │   ├── dekr_hrnet-w32_8xb10-140e_coco-512x512.py
│   │   │   │   ├── dekr_hrnet-w48_8xb10-140e_coco-640x640.py
│   │   │   │   ├── hrnet_coco.md
│   │   │   │   └── hrnet_coco.yml
│   │   │   └── crowdpose/
│   │   │       ├── dekr_hrnet-w32_8xb10-300e_crowdpose-512x512.py
│   │   │       ├── dekr_hrnet-w48_8xb5-300e_crowdpose-640x640.py
│   │   │       ├── hrnet_crowdpose.md
│   │   │       └── hrnet_crowdpose.yml
│   │   ├── edpose/
│   │   │   └── coco/
│   │   │       ├── edpose_coco.md
│   │   │       ├── edpose_coco.yml
│   │   │       └── edpose_res50_8xb2-50e_coco-800x1333.py
│   │   ├── integral_regression/
│   │   │   ├── README.md
│   │   │   └── coco/
│   │   │       ├── ipr_res50_8xb64-210e_coco-256x256.py
│   │   │       ├── ipr_res50_debias-8xb64-210e_coco-256x256.py
│   │   │       ├── ipr_res50_dsnt-8xb64-210e_coco-256x256.py
│   │   │       ├── resnet_debias_coco.md
│   │   │       ├── resnet_debias_coco.yml
│   │   │       ├── resnet_dsnt_coco.md
│   │   │       ├── resnet_dsnt_coco.yml
│   │   │       ├── resnet_ipr_coco.md
│   │   │       └── resnet_ipr_coco.yml
│   │   ├── rtmo/
│   │   │   ├── README.md
│   │   │   ├── body7/
│   │   │   │   ├── rtmo-l_16xb16-600e_body7-640x640.py
│   │   │   │   ├── rtmo-m_16xb16-600e_body7-640x640.py
│   │   │   │   ├── rtmo-s_8xb32-600e_body7-640x640.py
│   │   │   │   ├── rtmo-t_8xb32-600e_body7-416x416.py
│   │   │   │   ├── rtmo_body7.md
│   │   │   │   └── rtmo_body7.yml
│   │   │   ├── coco/
│   │   │   │   ├── rtmo-l_16xb16-600e_coco-640x640.py
│   │   │   │   ├── rtmo-m_16xb16-600e_coco-640x640.py
│   │   │   │   ├── rtmo-s_8xb32-600e_coco-640x640.py
│   │   │   │   ├── rtmo_coco.md
│   │   │   │   └── rtmo_coco.yml
│   │   │   └── crowdpose/
│   │   │       ├── rtmo-l_16xb16-700e_body7-crowdpose-640x640.py
│   │   │       ├── rtmo-l_16xb16-700e_crowdpose-640x640.py
│   │   │       ├── rtmo-m_16xb16-700e_crowdpose-640x640.py
│   │   │       ├── rtmo-s_8xb32-700e_crowdpose-640x640.py
│   │   │       ├── rtmo_crowdpose.md
│   │   │       └── rtmo_crowdpose.yml
│   │   ├── rtmpose/
│   │   │   ├── README.md
│   │   │   ├── body8/
│   │   │   │   ├── rtmpose-l_8xb256-420e_body8-256x192.py
│   │   │   │   ├── rtmpose-l_8xb256-420e_body8-384x288.py
│   │   │   │   ├── rtmpose-l_8xb512-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-l_8xb512-700e_body8-halpe26-384x288.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_body8-256x192.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_body8-384x288.py
│   │   │   │   ├── rtmpose-m_8xb512-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-m_8xb512-700e_body8-halpe26-384x288.py
│   │   │   │   ├── rtmpose-s_8xb1024-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-s_8xb256-420e_body8-256x192.py
│   │   │   │   ├── rtmpose-t_8xb1024-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-t_8xb256-420e_body8-256x192.py
│   │   │   │   ├── rtmpose-x_8xb256-700e_body8-halpe26-384x288.py
│   │   │   │   ├── rtmpose_body8-coco.md
│   │   │   │   ├── rtmpose_body8-coco.yml
│   │   │   │   ├── rtmpose_body8-halpe26.md
│   │   │   │   └── rtmpose_body8-halpe26.yml
│   │   │   ├── coco/
│   │   │   │   ├── rtmpose-l_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── rtmpose-l_8xb256-420e_aic-coco-384x288.py
│   │   │   │   ├── rtmpose-l_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_aic-coco-384x288.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-s_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── rtmpose-s_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-t_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── rtmpose-t_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose_coco.md
│   │   │   │   └── rtmpose_coco.yml
│   │   │   ├── crowdpose/
│   │   │   │   ├── rtmpose-m_8xb64-210e_crowdpose-256x192.py
│   │   │   │   ├── rtmpose_crowdpose.md
│   │   │   │   └── rtmpose_crowdpose.yml
│   │   │   ├── humanart/
│   │   │   │   ├── rtmpose-l_8xb256-420e_humanart-256x192.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_humanart-256x192.py
│   │   │   │   ├── rtmpose-s_8xb256-420e_humanart-256x192.py
│   │   │   │   ├── rtmpose-t_8xb256-420e_humanart-256x192.py
│   │   │   │   ├── rtmpose_humanart.md
│   │   │   │   └── rtmpose_humanart.yml
│   │   │   └── mpii/
│   │   │       ├── rtmpose-m_8xb64-210e_mpii-256x256.py
│   │   │       ├── rtmpose_mpii.md
│   │   │       └── rtmpose_mpii.yml
│   │   ├── simcc/
│   │   │   ├── README.md
│   │   │   ├── coco/
│   │   │   │   ├── mobilenetv2_coco.md
│   │   │   │   ├── mobilenetv2_coco.yml
│   │   │   │   ├── resnet_coco.md
│   │   │   │   ├── resnet_coco.yml
│   │   │   │   ├── simcc_mobilenetv2_wo-deconv-8xb64-210e_coco-256x192.py
│   │   │   │   ├── simcc_res50_8xb32-140e_coco-384x288.py
│   │   │   │   ├── simcc_res50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── simcc_vipnas-mbv3_8xb64-210e_coco-256x192.py
│   │   │   │   ├── vipnas_coco.md
│   │   │   │   └── vipnas_coco.yml
│   │   │   └── mpii/
│   │   │       └── simcc_res50_wo-deconv-8xb64-210e_mpii-256x256.py
│   │   ├── topdown_heatmap/
│   │   │   ├── README.md
│   │   │   ├── aic/
│   │   │   │   ├── hrnet_aic.md
│   │   │   │   ├── hrnet_aic.yml
│   │   │   │   ├── resnet_aic.md
│   │   │   │   ├── resnet_aic.yml
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_aic-256x192.py
│   │   │   │   └── td-hm_res101_8xb64-210e_aic-256x192.py
│   │   │   ├── coco/
│   │   │   │   ├── alexnet_coco.md
│   │   │   │   ├── alexnet_coco.yml
│   │   │   │   ├── cpm_coco.md
│   │   │   │   ├── cpm_coco.yml
│   │   │   │   ├── cspnext-l_udp_8xb256-210e_aic-coco-256x192.py
│   │   │   │   ├── cspnext-l_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext-m_udp_8xb256-210e_aic-coco-256x192.py
│   │   │   │   ├── cspnext-m_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext-s_udp_8xb256-210e_aic-coco-256x192.py
│   │   │   │   ├── cspnext-s_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext-tiny_udp_8xb256-210e_aic-coco-256x192.py
│   │   │   │   ├── cspnext-tiny_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext_udp_coco.md
│   │   │   │   ├── cspnext_udp_coco.yml
│   │   │   │   ├── hourglass_coco.md
│   │   │   │   ├── hourglass_coco.yml
│   │   │   │   ├── hrformer_coco.md
│   │   │   │   ├── hrformer_coco.yml
│   │   │   │   ├── hrnet_augmentation_coco.md
│   │   │   │   ├── hrnet_augmentation_coco.yml
│   │   │   │   ├── hrnet_coco.md
│   │   │   │   ├── hrnet_coco.yml
│   │   │   │   ├── hrnet_coco_aic.md
│   │   │   │   ├── hrnet_dark_coco.md
│   │   │   │   ├── hrnet_dark_coco.yml
│   │   │   │   ├── hrnet_fp16_coco.md
│   │   │   │   ├── hrnet_udp_coco.md
│   │   │   │   ├── hrnet_udp_coco.yml
│   │   │   │   ├── litehrnet_coco.md
│   │   │   │   ├── litehrnet_coco.yml
│   │   │   │   ├── mobilenetv2_coco.md
│   │   │   │   ├── mobilenetv2_coco.yml
│   │   │   │   ├── mspn_coco.md
│   │   │   │   ├── mspn_coco.yml
│   │   │   │   ├── pvt_coco.md
│   │   │   │   ├── pvt_coco.yml
│   │   │   │   ├── resnest_coco.md
│   │   │   │   ├── resnest_coco.yml
│   │   │   │   ├── resnet_coco.md
│   │   │   │   ├── resnet_coco.yml
│   │   │   │   ├── resnet_dark_coco.md
│   │   │   │   ├── resnet_dark_coco.yml
│   │   │   │   ├── resnet_fp16_coco.md
│   │   │   │   ├── resnetv1d_coco.md
│   │   │   │   ├── resnetv1d_coco.yml
│   │   │   │   ├── resnext_coco.md
│   │   │   │   ├── resnext_coco.yml
│   │   │   │   ├── rsn_coco.md
│   │   │   │   ├── rsn_coco.yml
│   │   │   │   ├── scnet_coco.md
│   │   │   │   ├── scnet_coco.yml
│   │   │   │   ├── seresnet_coco.md
│   │   │   │   ├── seresnet_coco.yml
│   │   │   │   ├── shufflenetv1_coco.md
│   │   │   │   ├── shufflenetv1_coco.yml
│   │   │   │   ├── shufflenetv2_coco.md
│   │   │   │   ├── shufflenetv2_coco.yml
│   │   │   │   ├── swin_coco.md
│   │   │   │   ├── swin_coco.yml
│   │   │   │   ├── td-hm-vis_res50_8xb64-210e_coco-aic-256x192-merge.py
│   │   │   │   ├── td-hm_2xmspn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_2xrsn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_3xmspn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_3xrsn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_4xmspn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-base-simple_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-base_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-huge-simple_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-huge_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-large-simple_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-large_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-small-simple_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_ViTPose-small_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_alexnet_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_cpm_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_cpm_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hourglass52_8xb32-210e_coco-256x256.py
│   │   │   │   ├── td-hm_hourglass52_8xb32-210e_coco-384x384.py
│   │   │   │   ├── td-hm_hrformer-base_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrformer-base_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrformer-small_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrformer-small_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_coco-aic-256x192-combine.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_coco-aic-256x192-merge.py
│   │   │   │   ├── td-hm_hrnet-w32_coarsedropout-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_dark-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_dark-8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w32_fp16-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_gridmask-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_photometric-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_udp-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_udp-8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w32_udp-regress-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w48_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w48_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w48_dark-8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w48_dark-8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_hrnet-w48_udp-8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_hrnet-w48_udp-8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_litehrnet-18_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_litehrnet-18_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_litehrnet-30_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_litehrnet-30_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_mspn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_pvt-s_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_pvtv2-b2_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res101_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res101_dark-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res101_dark-8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res152_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res152_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res152_dark-8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res152_dark-8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res50_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res50_dark-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_res50_dark-8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_res50_fp16-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnest101_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnest101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnest200_8xb16-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnest200_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnest269_8xb16-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnest269_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnest50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnest50_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnetv1d101_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnetv1d101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnetv1d152_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnetv1d152_8xb48-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnetv1d50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnetv1d50_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnext101_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnext101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnext152_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnext152_8xb48-210e_coco-384x288.py
│   │   │   │   ├── td-hm_resnext50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_resnext50_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_rsn18_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_rsn50_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_scnet101_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_scnet101_8xb48-210e_coco-384x288.py
│   │   │   │   ├── td-hm_scnet50_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_scnet50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_seresnet101_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_seresnet101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_seresnet152_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_seresnet152_8xb48-210e_coco-384x288.py
│   │   │   │   ├── td-hm_seresnet50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_seresnet50_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_shufflenetv1_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_shufflenetv1_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_shufflenetv2_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_shufflenetv2_8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-hm_swin-b-p4-w7_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_swin-b-p4-w7_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_swin-l-p4-w7_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_swin-l-p4-w7_8xb32-210e_coco-384x288.py
│   │   │   │   ├── td-hm_swin-t-p4-w7_8xb32-210e_coco-256x192.py
│   │   │   │   ├── td-hm_vgg16-bn_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_vipnas-mbv3_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-hm_vipnas-res50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── vgg_coco.md
│   │   │   │   ├── vgg_coco.yml
│   │   │   │   ├── vipnas_coco.md
│   │   │   │   ├── vipnas_coco.yml
│   │   │   │   ├── vitpose_coco.md
│   │   │   │   └── vitpose_coco.yml
│   │   │   ├── crowdpose/
│   │   │   │   ├── cspnext-m_udp_8xb64-210e_crowpose-256x192.py
│   │   │   │   ├── cspnext_udp_crowdpose.md
│   │   │   │   ├── cspnext_udp_crowdpose.yml
│   │   │   │   ├── hrnet_crowdpose.md
│   │   │   │   ├── hrnet_crowdpose.yml
│   │   │   │   ├── resnet_crowdpose.md
│   │   │   │   ├── resnet_crowdpose.yml
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_crowdpose-256x192.py
│   │   │   │   ├── td-hm_res101_8xb64-210e_crowdpose-256x192.py
│   │   │   │   ├── td-hm_res101_8xb64-210e_crowdpose-320x256.py
│   │   │   │   ├── td-hm_res152_8xb64-210e_crowdpose-256x192.py
│   │   │   │   └── td-hm_res50_8xb64-210e_crowdpose-256x192.py
│   │   │   ├── exlpose/
│   │   │   │   ├── hrnet_exlpose.md
│   │   │   │   ├── hrnet_exlpose.yml
│   │   │   │   └── td-hm_hrnet-w32_8xb64-210e_exlpose-256x192.py
│   │   │   ├── humanart/
│   │   │   │   ├── hrnet_humanart.md
│   │   │   │   ├── hrnet_humanart.yml
│   │   │   │   ├── td-hm_ViTPose-base_8xb64-210e_humanart-256x192.py
│   │   │   │   ├── td-hm_ViTPose-huge_8xb64-210e_humanart-256x192.py
│   │   │   │   ├── td-hm_ViTPose-large_8xb64-210e_humanart-256x192.py
│   │   │   │   ├── td-hm_ViTPose-small_8xb64-210e_humanart-256x192.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py
│   │   │   │   ├── td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py
│   │   │   │   ├── vitpose_humanart.md
│   │   │   │   └── vitpose_humanart.yml
│   │   │   ├── jhmdb/
│   │   │   │   ├── cpm_jhmdb.md
│   │   │   │   ├── cpm_jhmdb.yml
│   │   │   │   ├── resnet_jhmdb.md
│   │   │   │   ├── resnet_jhmdb.yml
│   │   │   │   ├── td-hm_cpm_8xb32-40e_jhmdb-sub1-368x368.py
│   │   │   │   ├── td-hm_cpm_8xb32-40e_jhmdb-sub2-368x368.py
│   │   │   │   ├── td-hm_cpm_8xb32-40e_jhmdb-sub3-368x368.py
│   │   │   │   ├── td-hm_res50-2deconv_8xb64-40e_jhmdb-sub1-256x256.py
│   │   │   │   ├── td-hm_res50-2deconv_8xb64-40e_jhmdb-sub2-256x256.py
│   │   │   │   ├── td-hm_res50-2deconv_8xb64-40e_jhmdb-sub3-256x256.py
│   │   │   │   ├── td-hm_res50_8xb64-20e_jhmdb-sub1-256x256.py
│   │   │   │   ├── td-hm_res50_8xb64-20e_jhmdb-sub2-256x256.py
│   │   │   │   └── td-hm_res50_8xb64-20e_jhmdb-sub3-256x256.py
│   │   │   ├── mpii/
│   │   │   │   ├── cpm_mpii.md
│   │   │   │   ├── cpm_mpii.yml
│   │   │   │   ├── cspnext-m_udp_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── cspnext_udp_mpii.md
│   │   │   │   ├── cspnext_udp_mpii.yml
│   │   │   │   ├── hourglass_mpii.md
│   │   │   │   ├── hourglass_mpii.yml
│   │   │   │   ├── hrnet_dark_mpii.md
│   │   │   │   ├── hrnet_dark_mpii.yml
│   │   │   │   ├── hrnet_mpii.md
│   │   │   │   ├── hrnet_mpii.yml
│   │   │   │   ├── litehrnet_mpii.md
│   │   │   │   ├── litehrnet_mpii.yml
│   │   │   │   ├── mobilenetv2_mpii.md
│   │   │   │   ├── mobilenetv2_mpii.yml
│   │   │   │   ├── resnet_mpii.md
│   │   │   │   ├── resnet_mpii.yml
│   │   │   │   ├── resnetv1d_mpii.md
│   │   │   │   ├── resnetv1d_mpii.yml
│   │   │   │   ├── resnext_mpii.md
│   │   │   │   ├── resnext_mpii.yml
│   │   │   │   ├── scnet_mpii.md
│   │   │   │   ├── scnet_mpii.yml
│   │   │   │   ├── seresnet_mpii.md
│   │   │   │   ├── seresnet_mpii.yml
│   │   │   │   ├── shufflenetv1_mpii.md
│   │   │   │   ├── shufflenetv1_mpii.yml
│   │   │   │   ├── shufflenetv2_mpii.md
│   │   │   │   ├── shufflenetv2_mpii.yml
│   │   │   │   ├── td-hm_cpm_8xb64-210e_mpii-368x368.py
│   │   │   │   ├── td-hm_hourglass52_8xb32-210e_mpii-384x384.py
│   │   │   │   ├── td-hm_hourglass52_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_hrnet-w32_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_hrnet-w32_dark-8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_hrnet-w48_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_hrnet-w48_dark-8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_litehrnet-18_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_litehrnet-30_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_res101_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_res152_8xb32-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_res50_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_resnetv1d101_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_resnetv1d152_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_resnetv1d50_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_resnext152_8xb32-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_scnet101_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_scnet50_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_seresnet101_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_seresnet152_8xb32-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_seresnet50_8xb64-210e_mpii-256x256.py
│   │   │   │   ├── td-hm_shufflenetv1_8xb64-210e_mpii-256x256.py
│   │   │   │   └── td-hm_shufflenetv2_8xb64-210e_mpii-256x256.py
│   │   │   └── posetrack18/
│   │   │       ├── hrnet_posetrack18.md
│   │   │       ├── hrnet_posetrack18.yml
│   │   │       ├── resnet_posetrack18.md
│   │   │       ├── resnet_posetrack18.yml
│   │   │       ├── td-hm_hrnet-w32_8xb64-20e_posetrack18-256x192.py
│   │   │       ├── td-hm_hrnet-w32_8xb64-20e_posetrack18-384x288.py
│   │   │       ├── td-hm_hrnet-w48_8xb64-20e_posetrack18-256x192.py
│   │   │       ├── td-hm_hrnet-w48_8xb64-20e_posetrack18-384x288.py
│   │   │       └── td-hm_res50_8xb64-20e_posetrack18-256x192.py
│   │   ├── topdown_regression/
│   │   │   ├── README.md
│   │   │   ├── coco/
│   │   │   │   ├── mobilenetv2_rle_coco.md
│   │   │   │   ├── mobilenetv2_rle_coco.yml
│   │   │   │   ├── resnet_coco.md
│   │   │   │   ├── resnet_coco.yml
│   │   │   │   ├── resnet_rle_coco.md
│   │   │   │   ├── resnet_rle_coco.yml
│   │   │   │   ├── td-reg_mobilenetv2_rle-pretrained-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res101_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res101_rle-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res152_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res152_rle-8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res152_rle-8xb64-210e_coco-384x288.py
│   │   │   │   ├── td-reg_res50_8xb64-210e_coco-256x192.py
│   │   │   │   ├── td-reg_res50_rle-8xb64-210e_coco-256x192.py
│   │   │   │   └── td-reg_res50_rle-pretrained-8xb64-210e_coco-256x192.py
│   │   │   └── mpii/
│   │   │       ├── resnet_mpii.md
│   │   │       ├── resnet_mpii.yml
│   │   │       ├── resnet_rle_mpii.md
│   │   │       ├── resnet_rle_mpii.yml
│   │   │       ├── td-reg_res101_8xb64-210e_mpii-256x256.py
│   │   │       ├── td-reg_res152_8xb64-210e_mpii-256x256.py
│   │   │       ├── td-reg_res50_8xb64-210e_mpii-256x256.py
│   │   │       └── td-reg_res50_rle-8xb64-210e_mpii-256x256.py
│   │   └── yoloxpose/
│   │       ├── README.md
│   │       └── coco/
│   │           ├── yoloxpose_coco.md
│   │           ├── yoloxpose_coco.yml
│   │           ├── yoloxpose_l_8xb32-300e_coco-640.py
│   │           ├── yoloxpose_m_8xb32-300e_coco-640.py
│   │           ├── yoloxpose_s_8xb32-300e_coco-640.py
│   │           └── yoloxpose_tiny_4xb64-300e_coco-416.py
│   ├── body_3d_keypoint/
│   │   ├── README.md
│   │   ├── image_pose_lift/
│   │   │   ├── README.md
│   │   │   └── h36m/
│   │   │       ├── image-pose-lift_tcn_8xb64-200e_h36m.py
│   │   │       ├── simplebaseline3d_h36m.md
│   │   │       └── simplebaseline3d_h36m.yml
│   │   ├── motionbert/
│   │   │   ├── README.md
│   │   │   └── h36m/
│   │   │       ├── motionbert_dstformer-243frm_8xb32-240e_h36m-original.py
│   │   │       ├── motionbert_dstformer-243frm_8xb32-240e_h36m.py
│   │   │       ├── motionbert_dstformer-ft-243frm_8xb32-120e_h36m-original.py
│   │   │       ├── motionbert_dstformer-ft-243frm_8xb32-120e_h36m.py
│   │   │       ├── motionbert_h36m.md
│   │   │       └── motionbert_h36m.yml
│   │   └── video_pose_lift/
│   │       ├── README.md
│   │       └── h36m/
│   │           ├── video-pose-lift_tcn-1frm-supv-cpn-ft_8xb128-160e_h36m.py
│   │           ├── video-pose-lift_tcn-243frm-supv-cpn-ft_8xb128-200e_h36m.py
│   │           ├── video-pose-lift_tcn-243frm-supv_8xb128-160e_h36m.py
│   │           ├── video-pose-lift_tcn-27frm-semi-supv-cpn-ft_8xb64-200e_h36m.py
│   │           ├── video-pose-lift_tcn-27frm-semi-supv_8xb64-200e_h36m.py
│   │           ├── video-pose-lift_tcn-27frm-supv_8xb128-160e_h36m.py
│   │           ├── video-pose-lift_tcn-81frm-supv_8xb128-160e_h36m.py
│   │           ├── videopose3d_h36m.md
│   │           └── videopose3d_h36m.yml
│   ├── face_2d_keypoint/
│   │   ├── README.md
│   │   ├── rtmpose/
│   │   │   ├── README.md
│   │   │   ├── coco_wholebody_face/
│   │   │   │   ├── rtmpose-m_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   ├── rtmpose_coco_wholebody_face.md
│   │   │   │   └── rtmpose_coco_wholebody_face.yml
│   │   │   ├── face6/
│   │   │   │   ├── rtmpose-m_8xb256-120e_face6-256x256.py
│   │   │   │   ├── rtmpose-s_8xb256-120e_face6-256x256.py
│   │   │   │   ├── rtmpose-t_8xb256-120e_face6-256x256.py
│   │   │   │   ├── rtmpose_face6.md
│   │   │   │   └── rtmpose_face6.yml
│   │   │   ├── lapa/
│   │   │   │   ├── rtmpose-m_8xb64-120e_lapa-256x256.py
│   │   │   │   ├── rtmpose_lapa.md
│   │   │   │   └── rtmpose_lapa.yml
│   │   │   └── wflw/
│   │   │       ├── rtmpose-m_8xb64-60e_wflw-256x256.py
│   │   │       ├── rtmpose_wflw.md
│   │   │       └── rtmpose_wflw.yml
│   │   ├── topdown_heatmap/
│   │   │   ├── 300w/
│   │   │   │   ├── hrnetv2_300w.md
│   │   │   │   ├── hrnetv2_300w.yml
│   │   │   │   └── td-hm_hrnetv2-w18_8xb64-60e_300w-256x256.py
│   │   │   ├── 300wlp/
│   │   │   │   ├── hrnetv2_300wlp.md
│   │   │   │   ├── hrnetv2_300wlp.yml
│   │   │   │   └── td-hm_hrnetv2-w18_8xb64-60e_300wlp-256x256.py
│   │   │   ├── README.md
│   │   │   ├── aflw/
│   │   │   │   ├── hrnetv2_aflw.md
│   │   │   │   ├── hrnetv2_aflw.yml
│   │   │   │   ├── hrnetv2_dark_aflw.md
│   │   │   │   ├── hrnetv2_dark_aflw.yml
│   │   │   │   ├── td-hm_hrnetv2-w18_8xb64-60e_aflw-256x256.py
│   │   │   │   └── td-hm_hrnetv2-w18_dark-8xb64-60e_aflw-256x256.py
│   │   │   ├── coco_wholebody_face/
│   │   │   │   ├── hourglass_coco_wholebody_face.md
│   │   │   │   ├── hourglass_coco_wholebody_face.yml
│   │   │   │   ├── hrnetv2_coco_wholebody_face.md
│   │   │   │   ├── hrnetv2_coco_wholebody_face.yml
│   │   │   │   ├── hrnetv2_dark_coco_wholebody_face.md
│   │   │   │   ├── hrnetv2_dark_coco_wholebody_face.yml
│   │   │   │   ├── mobilenetv2_coco_wholebody_face.md
│   │   │   │   ├── mobilenetv2_coco_wholebody_face.yml
│   │   │   │   ├── resnet_coco_wholebody_face.md
│   │   │   │   ├── resnet_coco_wholebody_face.yml
│   │   │   │   ├── scnet_coco_wholebody_face.md
│   │   │   │   ├── scnet_coco_wholebody_face.yml
│   │   │   │   ├── td-hm_hourglass52_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_dark-8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   ├── td-hm_res50_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   │   └── td-hm_scnet50_8xb32-60e_coco-wholebody-face-256x256.py
│   │   │   ├── cofw/
│   │   │   │   ├── hrnetv2_cofw.md
│   │   │   │   ├── hrnetv2_cofw.yml
│   │   │   │   └── td-hm_hrnetv2-w18_8xb64-60e_cofw-256x256.py
│   │   │   └── wflw/
│   │   │       ├── hrnetv2_awing_wflw.md
│   │   │       ├── hrnetv2_awing_wflw.yml
│   │   │       ├── hrnetv2_dark_wflw.md
│   │   │       ├── hrnetv2_dark_wflw.yml
│   │   │       ├── hrnetv2_wflw.md
│   │   │       ├── hrnetv2_wflw.yml
│   │   │       ├── td-hm_hrnetv2-w18_8xb64-60e_wflw-256x256.py
│   │   │       ├── td-hm_hrnetv2-w18_awing-8xb64-60e_wflw-256x256.py
│   │   │       └── td-hm_hrnetv2-w18_dark-8xb64-60e_wflw-256x256.py
│   │   └── topdown_regression/
│   │       ├── README.md
│   │       └── wflw/
│   │           ├── resnet_softwingloss_wflw.md
│   │           ├── resnet_softwingloss_wflw.yml
│   │           ├── resnet_wflw.md
│   │           ├── resnet_wflw.yml
│   │           ├── resnet_wingloss_wflw.md
│   │           ├── resnet_wingloss_wflw.yml
│   │           ├── td-reg_res50_8xb64-210e_wflw-256x256.py
│   │           ├── td-reg_res50_softwingloss_8xb64-210e_wflw-256x256.py
│   │           └── td-reg_res50_wingloss_8xb64-210e_wflw-256x256.py
│   ├── fashion_2d_keypoint/
│   │   ├── README.md
│   │   └── topdown_heatmap/
│   │       ├── README.md
│   │       ├── deepfashion/
│   │       │   ├── hrnet_deepfashion.md
│   │       │   ├── hrnet_deepfashion.yml
│   │       │   ├── resnet_deepfashion.md
│   │       │   ├── resnet_deepfashion.yml
│   │       │   ├── td-hm_hrnet-w32_8xb64-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_hrnet-w32_8xb64-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_hrnet-w32_8xb64-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_hrnet-w32_udp_8xb64-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_hrnet-w32_udp_8xb64-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_hrnet-w32_udp_8xb64-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_hrnet-w48_8xb32-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_hrnet-w48_8xb32-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_hrnet-w48_8xb32-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_hrnet-w48_udp_8xb32-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_hrnet-w48_udp_8xb32-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_hrnet-w48_udp_8xb32-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_res101_8xb64-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_res101_8xb64-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_res101_8xb64-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_res152_8xb32-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_res152_8xb32-210e_deepfashion_lower-256x192.py
│   │       │   ├── td-hm_res152_8xb32-210e_deepfashion_upper-256x192.py
│   │       │   ├── td-hm_res50_8xb64-210e_deepfashion_full-256x192.py
│   │       │   ├── td-hm_res50_8xb64-210e_deepfashion_lower-256x192.py
│   │       │   └── td-hm_res50_8xb64-210e_deepfashion_upper-256x192.py
│   │       └── deepfashion2/
│   │           ├── res50_deepfashion2.md
│   │           ├── res50_deepfasion2.yml
│   │           ├── td-hm_res50_1xb64-210e_deepfasion2-long-sleeved-dress-256x192.py
│   │           ├── td-hm_res50_1xb64-210e_deepfasion2-skirt-256x192.py
│   │           ├── td-hm_res50_1xb64-210e_deepfasion2-vest-dress-256x192.py
│   │           ├── td-hm_res50_2xb64-210e_deepfasion2-trousers-256x192.py
│   │           ├── td-hm_res50_3xb64-210e_deepfasion2-shorts-256x192.py
│   │           ├── td-hm_res50_4xb64-210e_deepfasion2-short-sleeved-dress-256x192.py
│   │           ├── td-hm_res50_4xb64-210e_deepfasion2-sling-256x192.py
│   │           ├── td-hm_res50_4xb64-210e_deepfasion2-sling-dress-256x192.py
│   │           ├── td-hm_res50_4xb64-210e_deepfasion2-vest-256x192.py
│   │           ├── td-hm_res50_6xb64-210e_deepfasion2-short-sleeved-shirt-256x192.py
│   │           ├── td-hm_res50_8xb64-210e_deepfasion2-long-sleeved-outwear-256x192.py
│   │           ├── td-hm_res50_8xb64-210e_deepfasion2-long-sleeved-shirt-256x192.py
│   │           └── td-hm_res50_8xb64-210e_deepfasion2-short-sleeved-outwear-256x192.py
│   ├── hand_2d_keypoint/
│   │   ├── README.md
│   │   ├── rtmpose/
│   │   │   ├── README.md
│   │   │   ├── coco_wholebody_hand/
│   │   │   │   ├── rtmpose-m_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── rtmpose_coco_wholebody_hand.md
│   │   │   │   └── rtmpose_coco_wholebody_hand.yml
│   │   │   └── hand5/
│   │   │       ├── rtmpose-m_8xb256-210e_hand5-256x256.py
│   │   │       ├── rtmpose_hand5.md
│   │   │       └── rtmpose_hand5.yml
│   │   ├── topdown_heatmap/
│   │   │   ├── README.md
│   │   │   ├── coco_wholebody_hand/
│   │   │   │   ├── hourglass_coco_wholebody_hand.md
│   │   │   │   ├── hourglass_coco_wholebody_hand.yml
│   │   │   │   ├── hrnetv2_coco_wholebody_hand.md
│   │   │   │   ├── hrnetv2_coco_wholebody_hand.yml
│   │   │   │   ├── hrnetv2_dark_coco_wholebody_hand.md
│   │   │   │   ├── hrnetv2_dark_coco_wholebody_hand.yml
│   │   │   │   ├── litehrnet_coco_wholebody_hand.md
│   │   │   │   ├── litehrnet_coco_wholebody_hand.yml
│   │   │   │   ├── mobilenetv2_coco_wholebody_hand.md
│   │   │   │   ├── mobilenetv2_coco_wholebody_hand.yml
│   │   │   │   ├── resnet_coco_wholebody_hand.md
│   │   │   │   ├── resnet_coco_wholebody_hand.yml
│   │   │   │   ├── scnet_coco_wholebody_hand.md
│   │   │   │   ├── scnet_coco_wholebody_hand.yml
│   │   │   │   ├── td-hm_hourglass52_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_dark-8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── td-hm_litehrnet-w18_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   ├── td-hm_res50_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   │   └── td-hm_scnet50_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   ├── freihand2d/
│   │   │   │   ├── resnet_freihand2d.md
│   │   │   │   ├── resnet_freihand2d.yml
│   │   │   │   └── td-hm_res50_8xb64-100e_freihand2d-224x224.py
│   │   │   ├── onehand10k/
│   │   │   │   ├── hrnetv2_dark_onehand10k.md
│   │   │   │   ├── hrnetv2_dark_onehand10k.yml
│   │   │   │   ├── hrnetv2_onehand10k.md
│   │   │   │   ├── hrnetv2_onehand10k.yml
│   │   │   │   ├── hrnetv2_udp_onehand10k.md
│   │   │   │   ├── hrnetv2_udp_onehand10k.yml
│   │   │   │   ├── mobilenetv2_onehand10k.md
│   │   │   │   ├── mobilenetv2_onehand10k.yml
│   │   │   │   ├── resnet_onehand10k.md
│   │   │   │   ├── resnet_onehand10k.yml
│   │   │   │   ├── td-hm_hrnetv2-w18_8xb64-210e_onehand10k-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_dark-8xb64-210e_onehand10k-256x256.py
│   │   │   │   ├── td-hm_hrnetv2-w18_udp-8xb64-210e_onehand10k-256x256.py
│   │   │   │   ├── td-hm_mobilenetv2_8xb64-210e_onehand10k-256x256.py
│   │   │   │   └── td-hm_res50_8xb32-210e_onehand10k-256x256.py
│   │   │   └── rhd2d/
│   │   │       ├── hrnetv2_dark_rhd2d.md
│   │   │       ├── hrnetv2_dark_rhd2d.yml
│   │   │       ├── hrnetv2_rhd2d.md
│   │   │       ├── hrnetv2_rhd2d.yml
│   │   │       ├── hrnetv2_udp_rhd2d.md
│   │   │       ├── hrnetv2_udp_rhd2d.yml
│   │   │       ├── mobilenetv2_rhd2d.md
│   │   │       ├── mobilenetv2_rhd2d.yml
│   │   │       ├── resnet_rhd2d.md
│   │   │       ├── resnet_rhd2d.yml
│   │   │       ├── td-hm_hrnetv2-w18_8xb64-210e_rhd2d-256x256.py
│   │   │       ├── td-hm_hrnetv2-w18_dark-8xb64-210e_rhd2d-256x256.py
│   │   │       ├── td-hm_hrnetv2-w18_udp-8xb64-210e_rhd2d-256x256.py
│   │   │       ├── td-hm_mobilenetv2_8xb64-210e_rhd2d-256x256.py
│   │   │       └── td-hm_res50_8xb64-210e_rhd2d-256x256.py
│   │   └── topdown_regression/
│   │       ├── README.md
│   │       ├── onehand10k/
│   │       │   ├── resnet_onehand10k.md
│   │       │   ├── resnet_onehand10k.yml
│   │       │   └── td-reg_res50_8xb64-210e_onehand10k-256x256.py
│   │       └── rhd2d/
│   │           ├── resnet_rhd2d.md
│   │           ├── resnet_rhd2d.yml
│   │           └── td-reg_res50_8xb64-210e_rhd2d-256x256.py
│   ├── hand_3d_keypoint/
│   │   ├── README.md
│   │   └── internet/
│   │       ├── README.md
│   │       └── interhand3d/
│   │           ├── internet_interhand3d.md
│   │           ├── internet_interhand3d.yml
│   │           └── internet_res50_4xb16-20e_interhand3d-256x256.py
│   ├── hand_gesture/
│   │   └── README.md
│   └── wholebody_2d_keypoint/
│       ├── README.md
│       ├── dwpose/
│       │   ├── README.md
│       │   ├── coco-wholebody/
│       │   │   ├── s1_dis/
│       │   │   │   ├── dwpose_l_dis_m_coco-256x192.py
│       │   │   │   └── dwpose_x_dis_l_coco-384x288.py
│       │   │   └── s2_dis/
│       │   │       ├── dwpose_l-ll_coco-384x288.py
│       │   │       └── dwpose_m-mm_coco-256x192.py
│       │   └── ubody/
│       │       ├── s1_dis/
│       │       │   ├── dwpose_l_dis_m_coco-ubody-256x192.py
│       │       │   ├── dwpose_l_dis_s_coco-ubody-256x192.py
│       │       │   ├── dwpose_l_dis_t_coco-ubody-256x192.py
│       │       │   ├── dwpose_x_dis_l_coco-ubody-256x192.py
│       │       │   └── rtmpose_x_dis_l_coco-ubody-384x288.py
│       │       └── s2_dis/
│       │           ├── dwpose_l-ll_coco-ubody-256x192.py
│       │           ├── dwpose_l-ll_coco-ubody-384x288.py
│       │           ├── dwpose_m-mm_coco-ubody-256x192.py
│       │           ├── dwpose_s-ss_coco-ubody-256x192.py
│       │           └── dwpose_t-tt_coco-ubody-256x192.py
│       ├── rtmpose/
│       │   ├── README.md
│       │   ├── cocktail14/
│       │   │   ├── rtmw-l_8xb1024-270e_cocktail14-256x192.py
│       │   │   ├── rtmw-l_8xb320-270e_cocktail14-384x288.py
│       │   │   ├── rtmw-m_8xb1024-270e_cocktail14-256x192.py
│       │   │   ├── rtmw-x_8xb320-270e_cocktail14-384x288.py
│       │   │   ├── rtmw-x_8xb704-270e_cocktail14-256x192.py
│       │   │   ├── rtmw_cocktail14.md
│       │   │   └── rtmw_cocktail14.yml
│       │   ├── coco-wholebody/
│       │   │   ├── rtmpose-l_8xb32-270e_coco-wholebody-384x288.py
│       │   │   ├── rtmpose-l_8xb64-270e_coco-wholebody-256x192.py
│       │   │   ├── rtmpose-m_8xb64-270e_coco-wholebody-256x192.py
│       │   │   ├── rtmpose-x_8xb32-270e_coco-wholebody-384x288.py
│       │   │   ├── rtmpose_coco-wholebody.md
│       │   │   └── rtmpose_coco-wholebody.yml
│       │   └── ubody/
│       │       ├── rtmpose-l_8xb32-270e_coco-ubody-wholebody-384x288.py
│       │       ├── rtmpose-l_8xb64-270e_coco-ubody-wholebody-256x192.py
│       │       ├── rtmpose-m_8xb64-270e_coco-ubody-wholebody-256x192.py
│       │       ├── rtmpose-s_8xb64-270e_coco-ubody-wholebody-256x192.py
│       │       ├── rtmpose-t_8xb64-270e_coco-ubody-wholebody-256x192.py
│       │       ├── rtmpose-x_8xb32-270e_coco-ubody-wholebody-384x288.py
│       │       └── rtmpose-x_8xb64-270e_coco-ubody-wholebody-256x192.py
│       └── topdown_heatmap/
│           ├── README.md
│           ├── coco-wholebody/
│           │   ├── cspnext-l_udp_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── cspnext-m_udp_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── cspnext_udp_coco-wholebody.md
│           │   ├── cspnext_udp_coco-wholebody.yml
│           │   ├── hrnet_coco-wholebody.md
│           │   ├── hrnet_coco-wholebody.yml
│           │   ├── hrnet_dark_coco-wholebody.md
│           │   ├── hrnet_dark_coco-wholebody.yml
│           │   ├── resnet_coco-wholebody.md
│           │   ├── resnet_coco-wholebody.yml
│           │   ├── td-hm_hrnet-w32_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_hrnet-w32_8xb64-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_hrnet-w32_dark-8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_hrnet-w48_8xb32-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_hrnet-w48_8xb32-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_hrnet-w48_dark-8xb32-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_res101_8xb32-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_res101_8xb32-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_res152_8xb32-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_res152_8xb32-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_res50_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_res50_8xb64-210e_coco-wholebody-384x288.py
│           │   ├── td-hm_vipnas-mbv3_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_vipnas-mbv3_dark-8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_vipnas-res50_8xb64-210e_coco-wholebody-256x192.py
│           │   ├── td-hm_vipnas-res50_dark-8xb64-210e_coco-wholebody-256x192.py
│           │   ├── vipnas_coco-wholebody.md
│           │   ├── vipnas_coco-wholebody.yml
│           │   ├── vipnas_dark_coco-wholebody.md
│           │   └── vipnas_dark_coco-wholebody.yml
│           └── ubody2d/
│               ├── hrnet_coco-wholebody.yml
│               ├── hrnet_ubody-coco-wholebody.md
│               └── td-hm_hrnet-w32_8xb64-210e_ubody-256x192.py
├── dataset-index.yml
├── demo/
│   ├── MMPose_Tutorial.ipynb
│   ├── body3d_pose_lifter_demo.py
│   ├── bottomup_demo.py
│   ├── docs/
│   │   ├── en/
│   │   │   ├── 2d_animal_demo.md
│   │   │   ├── 2d_face_demo.md
│   │   │   ├── 2d_hand_demo.md
│   │   │   ├── 2d_human_pose_demo.md
│   │   │   ├── 2d_wholebody_pose_demo.md
│   │   │   ├── 3d_hand_demo.md
│   │   │   ├── 3d_human_pose_demo.md
│   │   │   ├── mmdet_modelzoo.md
│   │   │   └── webcam_api_demo.md
│   │   └── zh_cn/
│   │       ├── 2d_animal_demo.md
│   │       ├── 2d_face_demo.md
│   │       ├── 2d_hand_demo.md
│   │       ├── 2d_human_pose_demo.md
│   │       ├── 2d_wholebody_pose_demo.md
│   │       ├── 3d_human_pose_demo.md
│   │       ├── mmdet_modelzoo.md
│   │       └── webcam_api_demo.md
│   ├── hand3d_internet_demo.py
│   ├── image_demo.py
│   ├── inferencer_demo.py
│   ├── mmdetection_cfg/
│   │   ├── cascade_rcnn_x101_64x4d_fpn_1class.py
│   │   ├── cascade_rcnn_x101_64x4d_fpn_coco.py
│   │   ├── faster_rcnn_r50_fpn_1class.py
│   │   ├── faster_rcnn_r50_fpn_coco.py
│   │   ├── mask_rcnn_r50_fpn_2x_coco.py
│   │   ├── rtmdet_m_640-8xb32_coco-person.py
│   │   ├── rtmdet_m_8xb32-300e_coco.py
│   │   ├── rtmdet_nano_320-8xb32_coco-person.py
│   │   ├── rtmdet_nano_320-8xb32_hand.py
│   │   ├── rtmdet_tiny_8xb32-300e_coco.py
│   │   ├── ssdlite_mobilenetv2-scratch_8xb24-600e_coco.py
│   │   ├── ssdlite_mobilenetv2_scratch_600e_onehand.py
│   │   ├── yolov3_d53_320_273e_coco.py
│   │   └── yolox-s_8xb8-300e_coco-face.py
│   ├── mmtracking_cfg/
│   │   ├── deepsort_faster-rcnn_fpn_4e_mot17-private-half.py
│   │   └── tracktor_faster-rcnn_r50_fpn_4e_mot17-private.py
│   └── topdown_demo_with_mmdet.py
├── docker/
│   ├── Dockerfile
│   └── serve/
│       ├── Dockerfile
│       ├── config.properties
│       └── entrypoint.sh
├── docs/
│   ├── en/
│   │   ├── .readthedocs.yaml
│   │   ├── Makefile
│   │   ├── _static/
│   │   │   └── css/
│   │   │       └── readthedocs.css
│   │   ├── advanced_guides/
│   │   │   ├── codecs.md
│   │   │   ├── customize_datasets.md
│   │   │   ├── customize_evaluation.md
│   │   │   ├── customize_logging.md
│   │   │   ├── customize_optimizer.md
│   │   │   ├── customize_transforms.md
│   │   │   ├── dataflow.md
│   │   │   └── implement_new_models.md
│   │   ├── api.rst
│   │   ├── collect_modelzoo.py
│   │   ├── collect_projects.py
│   │   ├── conf.py
│   │   ├── contribution_guide.md
│   │   ├── dataset_zoo/
│   │   │   ├── 2d_animal_keypoint.md
│   │   │   ├── 2d_body_keypoint.md
│   │   │   ├── 2d_face_keypoint.md
│   │   │   ├── 2d_fashion_landmark.md
│   │   │   ├── 2d_hand_keypoint.md
│   │   │   ├── 2d_wholebody_keypoint.md
│   │   │   ├── 3d_body_keypoint.md
│   │   │   ├── 3d_body_mesh.md
│   │   │   ├── 3d_hand_keypoint.md
│   │   │   └── 3d_wholebody_keypoint.md
│   │   ├── faq.md
│   │   ├── guide_to_framework.md
│   │   ├── index.rst
│   │   ├── installation.md
│   │   ├── make.bat
│   │   ├── merge_docs.sh
│   │   ├── migration.md
│   │   ├── notes/
│   │   │   ├── benchmark.md
│   │   │   ├── changelog.md
│   │   │   ├── ecosystem.md
│   │   │   └── pytorch_2.md
│   │   ├── overview.md
│   │   ├── projects/
│   │   │   └── projects.md
│   │   ├── quick_run.md
│   │   ├── stats.py
│   │   ├── switch_language.md
│   │   ├── user_guides/
│   │   │   ├── configs.md
│   │   │   ├── dataset_tools.md
│   │   │   ├── how_to_deploy.md
│   │   │   ├── inference.md
│   │   │   ├── label_studio.md
│   │   │   ├── mixed_datasets.md
│   │   │   ├── model_analysis.md
│   │   │   ├── prepare_datasets.md
│   │   │   └── train_and_test.md
│   │   └── visualization.md
│   ├── src/
│   │   └── papers/
│   │       ├── algorithms/
│   │       │   ├── associative_embedding.md
│   │       │   ├── awingloss.md
│   │       │   ├── cid.md
│   │       │   ├── cpm.md
│   │       │   ├── dark.md
│   │       │   ├── debias_ipr.md
│   │       │   ├── deeppose.md
│   │       │   ├── dekr.md
│   │       │   ├── dsnt.md
│   │       │   ├── dwpose.md
│   │       │   ├── edpose.md
│   │       │   ├── higherhrnet.md
│   │       │   ├── hmr.md
│   │       │   ├── hourglass.md
│   │       │   ├── hrnet.md
│   │       │   ├── hrnetv2.md
│   │       │   ├── internet.md
│   │       │   ├── ipr.md
│   │       │   ├── litehrnet.md
│   │       │   ├── motionbert.md
│   │       │   ├── mspn.md
│   │       │   ├── posewarper.md
│   │       │   ├── rle.md
│   │       │   ├── rsn.md
│   │       │   ├── rtmo.md
│   │       │   ├── rtmpose.md
│   │       │   ├── scnet.md
│   │       │   ├── simcc.md
│   │       │   ├── simplebaseline2d.md
│   │       │   ├── simplebaseline3d.md
│   │       │   ├── softwingloss.md
│   │       │   ├── udp.md
│   │       │   ├── videopose3d.md
│   │       │   ├── vipnas.md
│   │       │   ├── vitpose.md
│   │       │   ├── voxelpose.md
│   │       │   ├── wingloss.md
│   │       │   └── yolopose.md
│   │       ├── backbones/
│   │       │   ├── alexnet.md
│   │       │   ├── cpm.md
│   │       │   ├── higherhrnet.md
│   │       │   ├── hourglass.md
│   │       │   ├── hrformer.md
│   │       │   ├── hrnet.md
│   │       │   ├── hrnetv2.md
│   │       │   ├── litehrnet.md
│   │       │   ├── mobilenetv2.md
│   │       │   ├── mspn.md
│   │       │   ├── pvt.md
│   │       │   ├── pvtv2.md
│   │       │   ├── resnest.md
│   │       │   ├── resnet.md
│   │       │   ├── resnetv1d.md
│   │       │   ├── resnext.md
│   │       │   ├── rsn.md
│   │       │   ├── scnet.md
│   │       │   ├── seresnet.md
│   │       │   ├── shufflenetv1.md
│   │       │   ├── shufflenetv2.md
│   │       │   ├── swin.md
│   │       │   ├── vgg.md
│   │       │   └── vipnas.md
│   │       ├── datasets/
│   │       │   ├── 300vw.md
│   │       │   ├── 300w.md
│   │       │   ├── 300wlp.md
│   │       │   ├── aflw.md
│   │       │   ├── aic.md
│   │       │   ├── animalkingdom.md
│   │       │   ├── animalpose.md
│   │       │   ├── ap10k.md
│   │       │   ├── atrw.md
│   │       │   ├── campus_and_shelf.md
│   │       │   ├── coco.md
│   │       │   ├── coco_wholebody.md
│   │       │   ├── coco_wholebody_face.md
│   │       │   ├── coco_wholebody_hand.md
│   │       │   ├── cofw.md
│   │       │   ├── crowdpose.md
│   │       │   ├── deepfashion.md
│   │       │   ├── exlpose.md
│   │       │   ├── fly.md
│   │       │   ├── freihand.md
│   │       │   ├── h36m.md
│   │       │   ├── halpe.md
│   │       │   ├── horse10.md
│   │       │   ├── human_art.md
│   │       │   ├── interhand.md
│   │       │   ├── jhmdb.md
│   │       │   ├── lapa.md
│   │       │   ├── locust.md
│   │       │   ├── macaque.md
│   │       │   ├── mhp.md
│   │       │   ├── mpi_inf_3dhp.md
│   │       │   ├── mpii.md
│   │       │   ├── mpii_trb.md
│   │       │   ├── ochuman.md
│   │       │   ├── onehand10k.md
│   │       │   ├── panoptic.md
│   │       │   ├── panoptic_body3d.md
│   │       │   ├── posetrack18.md
│   │       │   ├── rhd.md
│   │       │   ├── ubody.md
│   │       │   ├── wflw.md
│   │       │   └── zebra.md
│   │       └── techniques/
│   │           ├── albumentations.md
│   │           ├── awingloss.md
│   │           ├── dark.md
│   │           ├── fp16.md
│   │           ├── fpn.md
│   │           ├── rle.md
│   │           ├── smoothnet.md
│   │           ├── softwingloss.md
│   │           ├── udp.md
│   │           └── wingloss.md
│   └── zh_cn/
│       ├── .readthedocs.yaml
│       ├── Makefile
│       ├── _static/
│       │   └── css/
│       │       └── readthedocs.css
│       ├── advanced_guides/
│       │   ├── codecs.md
│       │   ├── customize_datasets.md
│       │   ├── customize_evaluation.md
│       │   ├── customize_logging.md
│       │   ├── customize_optimizer.md
│       │   ├── customize_transforms.md
│       │   ├── dataflow.md
│       │   └── implement_new_models.md
│       ├── api.rst
│       ├── collect_modelzoo.py
│       ├── collect_projects.py
│       ├── conf.py
│       ├── contribution_guide.md
│       ├── dataset_zoo/
│       │   ├── 2d_animal_keypoint.md
│       │   ├── 2d_body_keypoint.md
│       │   ├── 2d_face_keypoint.md
│       │   ├── 2d_fashion_landmark.md
│       │   ├── 2d_hand_keypoint.md
│       │   ├── 2d_wholebody_keypoint.md
│       │   ├── 3d_body_keypoint.md
│       │   ├── 3d_body_mesh.md
│       │   └── 3d_hand_keypoint.md
│       ├── faq.md
│       ├── guide_to_framework.md
│       ├── index.rst
│       ├── installation.md
│       ├── make.bat
│       ├── merge_docs.sh
│       ├── migration.md
│       ├── notes/
│       │   ├── changelog.md
│       │   ├── ecosystem.md
│       │   ├── projects.md
│       │   └── pytorch_2.md
│       ├── overview.md
│       ├── quick_run.md
│       ├── stats.py
│       ├── switch_language.md
│       └── user_guides/
│           ├── configs.md
│           ├── dataset_tools.md
│           ├── how_to_deploy.md
│           ├── inference.md
│           ├── label_studio.md
│           ├── mixed_datasets.md
│           ├── model_analysis.md
│           ├── prepare_datasets.md
│           └── train_and_test.md
├── mmpose/
│   ├── __init__.py
│   ├── apis/
│   │   ├── __init__.py
│   │   ├── inference.py
│   │   ├── inference_3d.py
│   │   ├── inference_tracking.py
│   │   ├── inferencers/
│   │   │   ├── __init__.py
│   │   │   ├── base_mmpose_inferencer.py
│   │   │   ├── hand3d_inferencer.py
│   │   │   ├── mmpose_inferencer.py
│   │   │   ├── pose2d_inferencer.py
│   │   │   ├── pose3d_inferencer.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── default_det_models.py
│   │   │       └── get_model_alias.py
│   │   └── visualization.py
│   ├── codecs/
│   │   ├── __init__.py
│   │   ├── annotation_processors.py
│   │   ├── associative_embedding.py
│   │   ├── base.py
│   │   ├── decoupled_heatmap.py
│   │   ├── edpose_label.py
│   │   ├── hand_3d_heatmap.py
│   │   ├── image_pose_lifting.py
│   │   ├── integral_regression_label.py
│   │   ├── megvii_heatmap.py
│   │   ├── motionbert_label.py
│   │   ├── msra_heatmap.py
│   │   ├── regression_label.py
│   │   ├── simcc_label.py
│   │   ├── spr.py
│   │   ├── udp_heatmap.py
│   │   ├── utils/
│   │   │   ├── __init__.py
│   │   │   ├── camera_image_projection.py
│   │   │   ├── gaussian_heatmap.py
│   │   │   ├── instance_property.py
│   │   │   ├── offset_heatmap.py
│   │   │   ├── post_processing.py
│   │   │   └── refinement.py
│   │   └── video_pose_lifting.py
│   ├── configs/
│   │   ├── _base_/
│   │   │   └── default_runtime.py
│   │   ├── body_2d_keypoint/
│   │   │   ├── rtmpose/
│   │   │   │   └── coco/
│   │   │   │       ├── rtmpose_m_8xb256-420e_coco-256x192.py
│   │   │   │       └── rtmpose_s_8xb256_420e_aic_coco_256x192.py
│   │   │   └── topdown_heatmap/
│   │   │       └── coco/
│   │   │           └── td-hm_hrnet-w48_udp-8xb32-210e_coco-256x192.py
│   │   └── wholebody_2d_keypoint/
│   │       └── rtmpose/
│   │           └── cocktail13/
│   │               ├── rtmw-l_8xb1024-270e_cocktail14-256x192.py
│   │               ├── rtmw-l_8xb320-270e_cocktail14-384x288.py
│   │               ├── rtmw-m_8xb1024-270e_cocktail14-256x192.py
│   │               ├── rtmw-x_8xb320-270e_cocktail14-384x288.py
│   │               └── rtmw-x_8xb704-270e_cocktail14-256x192.py
│   ├── datasets/
│   │   ├── __init__.py
│   │   ├── builder.py
│   │   ├── dataset_wrappers.py
│   │   ├── datasets/
│   │   │   ├── __init__.py
│   │   │   ├── animal/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── animalkingdom_dataset.py
│   │   │   │   ├── animalpose_dataset.py
│   │   │   │   ├── ap10k_dataset.py
│   │   │   │   ├── atrw_dataset.py
│   │   │   │   ├── fly_dataset.py
│   │   │   │   ├── horse10_dataset.py
│   │   │   │   ├── locust_dataset.py
│   │   │   │   ├── macaque_dataset.py
│   │   │   │   └── zebra_dataset.py
│   │   │   ├── base/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_coco_style_dataset.py
│   │   │   │   └── base_mocap_dataset.py
│   │   │   ├── body/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── aic_dataset.py
│   │   │   │   ├── coco_dataset.py
│   │   │   │   ├── crowdpose_dataset.py
│   │   │   │   ├── exlpose_dataset.py
│   │   │   │   ├── humanart21_dataset.py
│   │   │   │   ├── humanart_dataset.py
│   │   │   │   ├── jhmdb_dataset.py
│   │   │   │   ├── mhp_dataset.py
│   │   │   │   ├── mpii_dataset.py
│   │   │   │   ├── mpii_trb_dataset.py
│   │   │   │   ├── ochuman_dataset.py
│   │   │   │   ├── posetrack18_dataset.py
│   │   │   │   └── posetrack18_video_dataset.py
│   │   │   ├── body3d/
│   │   │   │   ├── __init__.py
│   │   │   │   └── h36m_dataset.py
│   │   │   ├── face/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── aflw_dataset.py
│   │   │   │   ├── coco_wholebody_face_dataset.py
│   │   │   │   ├── cofw_dataset.py
│   │   │   │   ├── face_300vw_dataset.py
│   │   │   │   ├── face_300w_dataset.py
│   │   │   │   ├── face_300wlp_dataset.py
│   │   │   │   ├── lapa_dataset.py
│   │   │   │   └── wflw_dataset.py
│   │   │   ├── fashion/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── deepfashion2_dataset.py
│   │   │   │   └── deepfashion_dataset.py
│   │   │   ├── hand/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── coco_wholebody_hand_dataset.py
│   │   │   │   ├── freihand_dataset.py
│   │   │   │   ├── interhand2d_double_dataset.py
│   │   │   │   ├── onehand10k_dataset.py
│   │   │   │   ├── panoptic_hand2d_dataset.py
│   │   │   │   └── rhd2d_dataset.py
│   │   │   ├── hand3d/
│   │   │   │   ├── __init__.py
│   │   │   │   └── interhand_3d_dataset.py
│   │   │   ├── utils.py
│   │   │   ├── wholebody/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── coco_wholebody_dataset.py
│   │   │   │   ├── halpe_dataset.py
│   │   │   │   └── ubody2d_dataset.py
│   │   │   └── wholebody3d/
│   │   │       ├── __init__.py
│   │   │       ├── h3wb_dataset.py
│   │   │       └── ubody3d_dataset.py
│   │   ├── samplers.py
│   │   └── transforms/
│   │       ├── __init__.py
│   │       ├── bottomup_transforms.py
│   │       ├── common_transforms.py
│   │       ├── converting.py
│   │       ├── formatting.py
│   │       ├── hand_transforms.py
│   │       ├── loading.py
│   │       ├── mix_img_transforms.py
│   │       ├── pose3d_transforms.py
│   │       └── topdown_transforms.py
│   ├── engine/
│   │   ├── __init__.py
│   │   ├── hooks/
│   │   │   ├── __init__.py
│   │   │   ├── badcase_hook.py
│   │   │   ├── ema_hook.py
│   │   │   ├── mode_switch_hooks.py
│   │   │   ├── sync_norm_hook.py
│   │   │   └── visualization_hook.py
│   │   ├── optim_wrappers/
│   │   │   ├── __init__.py
│   │   │   ├── force_default_constructor.py
│   │   │   └── layer_decay_optim_wrapper.py
│   │   └── schedulers/
│   │       ├── __init__.py
│   │       ├── constant_lr.py
│   │       └── quadratic_warmup.py
│   ├── evaluation/
│   │   ├── __init__.py
│   │   ├── evaluators/
│   │   │   ├── __init__.py
│   │   │   └── mutli_dataset_evaluator.py
│   │   ├── functional/
│   │   │   ├── __init__.py
│   │   │   ├── keypoint_eval.py
│   │   │   ├── mesh_eval.py
│   │   │   ├── nms.py
│   │   │   └── transforms.py
│   │   └── metrics/
│   │       ├── __init__.py
│   │       ├── coco_metric.py
│   │       ├── coco_wholebody_metric.py
│   │       ├── hand_metric.py
│   │       ├── keypoint_2d_metrics.py
│   │       ├── keypoint_3d_metrics.py
│   │       ├── keypoint_partition_metric.py
│   │       ├── posetrack18_metric.py
│   │       └── simple_keypoint_3d_metrics.py
│   ├── models/
│   │   ├── __init__.py
│   │   ├── backbones/
│   │   │   ├── __init__.py
│   │   │   ├── alexnet.py
│   │   │   ├── base_backbone.py
│   │   │   ├── cpm.py
│   │   │   ├── csp_darknet.py
│   │   │   ├── cspnext.py
│   │   │   ├── dstformer.py
│   │   │   ├── hourglass.py
│   │   │   ├── hourglass_ae.py
│   │   │   ├── hrformer.py
│   │   │   ├── hrnet.py
│   │   │   ├── litehrnet.py
│   │   │   ├── mobilenet_v2.py
│   │   │   ├── mobilenet_v3.py
│   │   │   ├── mspn.py
│   │   │   ├── pvt.py
│   │   │   ├── regnet.py
│   │   │   ├── resnest.py
│   │   │   ├── resnet.py
│   │   │   ├── resnext.py
│   │   │   ├── rsn.py
│   │   │   ├── scnet.py
│   │   │   ├── seresnet.py
│   │   │   ├── seresnext.py
│   │   │   ├── shufflenet_v1.py
│   │   │   ├── shufflenet_v2.py
│   │   │   ├── swin.py
│   │   │   ├── tcn.py
│   │   │   ├── utils/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── channel_shuffle.py
│   │   │   │   ├── ckpt_convert.py
│   │   │   │   ├── inverted_residual.py
│   │   │   │   ├── make_divisible.py
│   │   │   │   ├── se_layer.py
│   │   │   │   └── utils.py
│   │   │   ├── v2v_net.py
│   │   │   ├── vgg.py
│   │   │   ├── vipnas_mbv3.py
│   │   │   └── vipnas_resnet.py
│   │   ├── builder.py
│   │   ├── data_preprocessors/
│   │   │   ├── __init__.py
│   │   │   ├── batch_augmentation.py
│   │   │   └── data_preprocessor.py
│   │   ├── distillers/
│   │   │   ├── __init__.py
│   │   │   └── dwpose_distiller.py
│   │   ├── heads/
│   │   │   ├── __init__.py
│   │   │   ├── base_head.py
│   │   │   ├── coord_cls_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── rtmcc_head.py
│   │   │   │   ├── rtmw_head.py
│   │   │   │   └── simcc_head.py
│   │   │   ├── heatmap_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── ae_head.py
│   │   │   │   ├── cid_head.py
│   │   │   │   ├── cpm_head.py
│   │   │   │   ├── heatmap_head.py
│   │   │   │   ├── internet_head.py
│   │   │   │   ├── mspn_head.py
│   │   │   │   └── vipnas_head.py
│   │   │   ├── hybrid_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── dekr_head.py
│   │   │   │   ├── rtmo_head.py
│   │   │   │   ├── vis_head.py
│   │   │   │   └── yoloxpose_head.py
│   │   │   ├── regression_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── dsnt_head.py
│   │   │   │   ├── integral_regression_head.py
│   │   │   │   ├── motion_regression_head.py
│   │   │   │   ├── regression_head.py
│   │   │   │   ├── rle_head.py
│   │   │   │   ├── temporal_regression_head.py
│   │   │   │   └── trajectory_regression_head.py
│   │   │   └── transformer_heads/
│   │   │       ├── __init__.py
│   │   │       ├── base_transformer_head.py
│   │   │       ├── edpose_head.py
│   │   │       └── transformers/
│   │   │           ├── __init__.py
│   │   │           ├── deformable_detr_layers.py
│   │   │           ├── detr_layers.py
│   │   │           └── utils.py
│   │   ├── losses/
│   │   │   ├── __init__.py
│   │   │   ├── ae_loss.py
│   │   │   ├── bbox_loss.py
│   │   │   ├── classification_loss.py
│   │   │   ├── fea_dis_loss.py
│   │   │   ├── heatmap_loss.py
│   │   │   ├── logit_dis_loss.py
│   │   │   ├── loss_wrappers.py
│   │   │   └── regression_loss.py
│   │   ├── necks/
│   │   │   ├── __init__.py
│   │   │   ├── channel_mapper.py
│   │   │   ├── cspnext_pafpn.py
│   │   │   ├── fmap_proc_neck.py
│   │   │   ├── fpn.py
│   │   │   ├── gap_neck.py
│   │   │   ├── hybrid_encoder.py
│   │   │   ├── posewarper_neck.py
│   │   │   └── yolox_pafpn.py
│   │   ├── pose_estimators/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── bottomup.py
│   │   │   ├── pose_lifter.py
│   │   │   └── topdown.py
│   │   ├── task_modules/
│   │   │   ├── __init__.py
│   │   │   ├── assigners/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── metric_calculators.py
│   │   │   │   └── sim_ota_assigner.py
│   │   │   └── prior_generators/
│   │   │       ├── __init__.py
│   │   │       └── mlvl_point_generator.py
│   │   └── utils/
│   │       ├── __init__.py
│   │       ├── check_and_update_config.py
│   │       ├── ckpt_convert.py
│   │       ├── csp_layer.py
│   │       ├── geometry.py
│   │       ├── misc.py
│   │       ├── ops.py
│   │       ├── realnvp.py
│   │       ├── regularizations.py
│   │       ├── reparam_layers.py
│   │       ├── rtmcc_block.py
│   │       ├── transformer.py
│   │       └── tta.py
│   ├── registry.py
│   ├── structures/
│   │   ├── __init__.py
│   │   ├── bbox/
│   │   │   ├── __init__.py
│   │   │   ├── bbox_overlaps.py
│   │   │   └── transforms.py
│   │   ├── keypoint/
│   │   │   ├── __init__.py
│   │   │   └── transforms.py
│   │   ├── multilevel_pixel_data.py
│   │   ├── pose_data_sample.py
│   │   └── utils.py
│   ├── testing/
│   │   ├── __init__.py
│   │   └── _utils.py
│   ├── utils/
│   │   ├── __init__.py
│   │   ├── camera.py
│   │   ├── collect_env.py
│   │   ├── config_utils.py
│   │   ├── dist_utils.py
│   │   ├── hooks.py
│   │   ├── logger.py
│   │   ├── setup_env.py
│   │   ├── tensor_utils.py
│   │   ├── timer.py
│   │   └── typing.py
│   ├── version.py
│   └── visualization/
│       ├── __init__.py
│       ├── fast_visualizer.py
│       ├── local_visualizer.py
│       ├── local_visualizer_3d.py
│       ├── opencv_backend_visualizer.py
│       └── simcc_vis.py
├── model-index.yml
├── projects/
│   ├── README.md
│   ├── awesome-mmpose/
│   │   └── README.md
│   ├── example_project/
│   │   ├── README.md
│   │   ├── configs/
│   │   │   └── example-head-loss_hrnet-w32_8xb64-210e_coco-256x192.py
│   │   └── models/
│   │       ├── __init__.py
│   │       ├── example_head.py
│   │       └── example_loss.py
│   ├── faq.md
│   ├── just_dance/
│   │   ├── README.md
│   │   ├── app.py
│   │   ├── calculate_similarity.py
│   │   ├── configs/
│   │   │   └── rtmdet-nano_one-person.py
│   │   ├── just_dance_demo.ipynb
│   │   ├── process_video.py
│   │   └── utils.py
│   ├── mmpose4aigc/
│   │   ├── README.md
│   │   ├── README_CN.md
│   │   ├── download_models.sh
│   │   ├── install_posetracker_linux.sh
│   │   ├── mmpose_openpose.sh
│   │   ├── mmpose_style_skeleton.sh
│   │   └── openpose_visualization.py
│   ├── pose_anything/
│   │   ├── README.md
│   │   ├── configs/
│   │   │   ├── demo.py
│   │   │   └── demo_b.py
│   │   ├── datasets/
│   │   │   ├── __init__.py
│   │   │   ├── builder.py
│   │   │   ├── datasets/
│   │   │   │   ├── __init__.py
│   │   │   │   └── mp100/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── fewshot_base_dataset.py
│   │   │   │       ├── fewshot_dataset.py
│   │   │   │       ├── test_base_dataset.py
│   │   │   │       ├── test_dataset.py
│   │   │   │       ├── transformer_base_dataset.py
│   │   │   │       └── transformer_dataset.py
│   │   │   └── pipelines/
│   │   │       ├── __init__.py
│   │   │       ├── post_transforms.py
│   │   │       └── top_down_transform.py
│   │   ├── demo.py
│   │   ├── models/
│   │   │   ├── __init__.py
│   │   │   ├── backbones/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── simmim.py
│   │   │   │   ├── swin_mlp.py
│   │   │   │   ├── swin_transformer.py
│   │   │   │   ├── swin_transformer_moe.py
│   │   │   │   ├── swin_transformer_v2.py
│   │   │   │   └── swin_utils.py
│   │   │   ├── detectors/
│   │   │   │   ├── __init__.py
│   │   │   │   └── pam.py
│   │   │   ├── keypoint_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   └── head.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── builder.py
│   │   │       ├── encoder_decoder.py
│   │   │       ├── positional_encoding.py
│   │   │       └── transformer.py
│   │   └── tools/
│   │       └── visualization.py
│   ├── rtmo/
│   │   └── README.md
│   ├── rtmpose/
│   │   ├── README.md
│   │   ├── README_CN.md
│   │   ├── app.py
│   │   ├── benchmark/
│   │   │   ├── README.md
│   │   │   └── README_CN.md
│   │   ├── examples/
│   │   │   ├── PoseTracker-Android-Prototype/
│   │   │   │   └── README.md
│   │   │   ├── README.md
│   │   │   ├── RTMPose-Deploy/
│   │   │   │   ├── README.md
│   │   │   │   ├── README_CN.md
│   │   │   │   └── Windows/
│   │   │   │       ├── OnnxRumtime-CPU/
│   │   │   │       │   └── src/
│   │   │   │       │       └── RTMPoseOnnxRuntime/
│   │   │   │       │           ├── characterset_convert.h
│   │   │   │       │           ├── main.cpp
│   │   │   │       │           ├── rtmdet_onnxruntime.cpp
│   │   │   │       │           ├── rtmdet_onnxruntime.h
│   │   │   │       │           ├── rtmpose_onnxruntime.cpp
│   │   │   │       │           ├── rtmpose_onnxruntime.h
│   │   │   │       │           ├── rtmpose_tracker_onnxruntime.cpp
│   │   │   │       │           ├── rtmpose_tracker_onnxruntime.h
│   │   │   │       │           └── rtmpose_utils.h
│   │   │   │       └── TensorRT/
│   │   │   │           ├── README.md
│   │   │   │           ├── python/
│   │   │   │           │   └── convert_rtmdet.py
│   │   │   │           └── src/
│   │   │   │               └── RTMPoseTensorRT/
│   │   │   │                   ├── inference.cpp
│   │   │   │                   ├── inference.h
│   │   │   │                   ├── main.cpp
│   │   │   │                   ├── rtmdet.cpp
│   │   │   │                   ├── rtmdet.h
│   │   │   │                   ├── rtmpose.cpp
│   │   │   │                   ├── rtmpose.h
│   │   │   │                   ├── utils.cpp
│   │   │   │                   └── utils.h
│   │   │   ├── onnxruntime/
│   │   │   │   ├── README.md
│   │   │   │   ├── README_CN.md
│   │   │   │   ├── main.py
│   │   │   │   └── requirements.txt
│   │   │   └── rtmlib/
│   │   │       └── README.md
│   │   ├── rtmdet/
│   │   │   ├── README.md
│   │   │   ├── hand/
│   │   │   │   └── rtmdet_nano_320-8xb32_hand.py
│   │   │   └── person/
│   │   │       ├── humanart_detection.py
│   │   │       ├── rtmdet_l_8xb32-300e_humanart.py
│   │   │       ├── rtmdet_m_640-8xb32_coco-person.py
│   │   │       ├── rtmdet_m_8xb32-300e_humanart.py
│   │   │       ├── rtmdet_nano_320-8xb32_coco-person.py
│   │   │       ├── rtmdet_s_8xb32-300e_humanart.py
│   │   │       ├── rtmdet_tiny_8xb32-300e_humanart.py
│   │   │       └── rtmdet_x_8xb32-300e_humanart.py
│   │   ├── rtmpose/
│   │   │   ├── animal_2d_keypoint/
│   │   │   │   └── rtmpose-m_8xb64-210e_ap10k-256x256.py
│   │   │   ├── body_2d_keypoint/
│   │   │   │   ├── rtmpose-l_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-l_8xb256-420e_coco-384x288.py
│   │   │   │   ├── rtmpose-l_8xb512-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-l_8xb512-700e_body8-halpe26-384x288.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-m_8xb256-420e_coco-384x288.py
│   │   │   │   ├── rtmpose-m_8xb512-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-m_8xb512-700e_body8-halpe26-384x288.py
│   │   │   │   ├── rtmpose-s_8xb1024-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-s_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-t_8xb1024-700e_body8-halpe26-256x192.py
│   │   │   │   ├── rtmpose-t_8xb256-420e_coco-256x192.py
│   │   │   │   ├── rtmpose-x_8xb256-700e_body8-halpe26-384x288.py
│   │   │   │   └── rtmpose-x_8xb256-700e_coco-384x288.py
│   │   │   ├── face_2d_keypoint/
│   │   │   │   ├── rtmpose-m_8xb256-120e_lapa-256x256.py
│   │   │   │   ├── rtmpose-s_8xb256-120e_lapa-256x256.py
│   │   │   │   └── rtmpose-t_8xb256-120e_lapa-256x256.py
│   │   │   ├── hand_2d_keypoint/
│   │   │   │   └── rtmpose-m_8xb32-210e_coco-wholebody-hand-256x256.py
│   │   │   ├── pretrain_cspnext_udp/
│   │   │   │   ├── cspnext-l_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext-m_udp_8xb256-210e_coco-256x192.py
│   │   │   │   ├── cspnext-s_udp_8xb256-210e_coco-256x192.py
│   │   │   │   └── cspnext-tiny_udp_8xb256-210e_coco-256x192.py
│   │   │   ├── pruning/
│   │   │   │   ├── README.md
│   │   │   │   ├── README_CN.md
│   │   │   │   ├── group_fisher_deploy_rtmpose-s_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── group_fisher_deploy_rtmpose-s_8xb256-420e_coco-256x192.py
│   │   │   │   ├── group_fisher_finetune_rtmpose-s_8xb256-420e_aic-coco-256x192.py
│   │   │   │   ├── group_fisher_finetune_rtmpose-s_8xb256-420e_coco-256x192.py
│   │   │   │   ├── group_fisher_prune_rtmpose-s_8xb256-420e_aic-coco-256x192.py
│   │   │   │   └── group_fisher_prune_rtmpose-s_8xb256-420e_coco-256x192.py
│   │   │   └── wholebody_2d_keypoint/
│   │   │       ├── rtmpose-l_8xb32-270e_coco-wholebody-384x288.py
│   │   │       ├── rtmpose-l_8xb64-270e_coco-wholebody-256x192.py
│   │   │       ├── rtmpose-m_8xb64-270e_coco-wholebody-256x192.py
│   │   │       ├── rtmpose-s_8xb64-270e_coco-wholebody-256x192.py
│   │   │       ├── rtmpose-t_8xb64-270e_coco-wholebody-256x192.py
│   │   │       ├── rtmpose-x_8xb32-270e_coco-wholebody-384x288.py
│   │   │       ├── rtmw-l_8xb1024-270e_cocktail14-256x192.py
│   │   │       ├── rtmw-l_8xb320-270e_cocktail14-384x288.py
│   │   │       ├── rtmw-m_8xb1024-270e_cocktail14-256x192.py
│   │   │       ├── rtmw-x_8xb320-270e_cocktail14-384x288.py
│   │   │       └── rtmw-x_8xb704-270e_cocktail14-256x192.py
│   │   └── yolox/
│   │       └── humanart/
│   │           ├── yolox_l_8xb8-300e_humanart.py
│   │           ├── yolox_m_8xb8-300e_humanart.py
│   │           ├── yolox_nano_8xb8-300e_humanart.py
│   │           ├── yolox_s_8xb8-300e_humanart.py
│   │           ├── yolox_tiny_8xb8-300e_humanart.py
│   │           └── yolox_x_8xb8-300e_humanart.py
│   ├── rtmpose3d/
│   │   ├── README.md
│   │   ├── configs/
│   │   │   ├── rtmw3d-l_8xb64_cocktail14-384x288.py
│   │   │   └── rtmw3d-x_8xb32_cocktail14-384x288.py
│   │   ├── demo/
│   │   │   ├── body3d_img2pose_demo.py
│   │   │   └── rtmdet_m_640-8xb32_coco-person.py
│   │   └── rtmpose3d/
│   │       ├── __init__.py
│   │       ├── loss.py
│   │       ├── pose_estimator.py
│   │       ├── rtmw3d_head.py
│   │       ├── simcc_3d_label.py
│   │       └── utils.py
│   ├── skps/
│   │   ├── README.md
│   │   ├── configs/
│   │   │   ├── td-hm_hrnetv2-w18_skps-1xb16-160e_cofw-256x256.py
│   │   │   └── td-hm_hrnetv2-w18_skps-1xb64-80e_wflw-256x256.py
│   │   ├── custom_codecs/
│   │   │   ├── __init__.py
│   │   │   └── skps_heatmap.py
│   │   └── models/
│   │       ├── __init__.py
│   │       └── skps_head.py
│   ├── uniformer/
│   │   ├── README.md
│   │   ├── configs/
│   │   │   ├── td-hm_uniformer-b-8xb128-210e_coco-256x192.py
│   │   │   ├── td-hm_uniformer-b-8xb32-210e_coco-384x288.py
│   │   │   ├── td-hm_uniformer-b-8xb32-210e_coco-448x320.py
│   │   │   ├── td-hm_uniformer-s-8xb128-210e_coco-256x192.py
│   │   │   ├── td-hm_uniformer-s-8xb128-210e_coco-384x288.py
│   │   │   └── td-hm_uniformer-s-8xb64-210e_coco-448x320.py
│   │   └── models/
│   │       ├── __init__.py
│   │       └── uniformer.py
│   └── yolox_pose/
│       ├── README.md
│       ├── configs/
│       │   ├── _base_/
│       │   │   ├── default_runtime.py
│       │   │   └── py_default_runtime.py
│       │   ├── py_yolox_pose_s_8xb32_300e_coco.py
│       │   ├── yolox-pose_l_4xb64-300e_coco.py
│       │   ├── yolox-pose_m_4xb64-300e_coco.py
│       │   ├── yolox-pose_s_8xb32-300e_coco.py
│       │   └── yolox-pose_tiny_4xb64-300e_coco.py
│       ├── datasets/
│       │   ├── __init__.py
│       │   ├── bbox_keypoint_structure.py
│       │   ├── coco_dataset.py
│       │   └── transforms.py
│       └── models/
│           ├── __init__.py
│           ├── assigner.py
│           ├── data_preprocessor.py
│           ├── oks_loss.py
│           ├── utils.py
│           └── yolox_pose_head.py
├── pytest.ini
├── requirements/
│   ├── albu.txt
│   ├── build.txt
│   ├── docs.txt
│   ├── mminstall.txt
│   ├── optional.txt
│   ├── poseval.txt
│   ├── readthedocs.txt
│   ├── runtime.txt
│   └── tests.txt
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests/
│   ├── data/
│   │   ├── 300vw/
│   │   │   ├── 001/
│   │   │   │   └── annot/
│   │   │   │       ├── 000006.pts
│   │   │   │       └── 000009.pts
│   │   │   ├── 401/
│   │   │   │   └── annot/
│   │   │   │       ├── 000731.pts
│   │   │   │       └── 000732.pts
│   │   │   ├── anno_300vw.json
│   │   │   └── broken_frames.npy
│   │   ├── 300w/
│   │   │   └── test_300w.json
│   │   ├── 300wlp/
│   │   │   └── test_300wlp.json
│   │   ├── aflw/
│   │   │   └── test_aflw.json
│   │   ├── aic/
│   │   │   └── test_aic.json
│   │   ├── ak/
│   │   │   └── test_animalkingdom.json
│   │   ├── animalpose/
│   │   │   └── test_animalpose.json
│   │   ├── ap10k/
│   │   │   └── test_ap10k.json
│   │   ├── atrw/
│   │   │   └── test_atrw.json
│   │   ├── campus/
│   │   │   ├── actorsGT.mat
│   │   │   ├── calibration_campus.json
│   │   │   ├── panoptic_training_pose.pkl
│   │   │   └── pred_campus_maskrcnn_hrnet_coco.pkl
│   │   ├── coco/
│   │   │   ├── test_coco.json
│   │   │   ├── test_coco_det_AP_H_56.json
│   │   │   ├── test_coco_wholebody.json
│   │   │   └── test_keypoint_partition_metric.json
│   │   ├── cofw/
│   │   │   └── test_cofw.json
│   │   ├── crowdpose/
│   │   │   ├── test_crowdpose.json
│   │   │   └── test_crowdpose_det_AP_40.json
│   │   ├── deepfasion2/
│   │   │   └── deepfasion2.json
│   │   ├── exlpose/
│   │   │   └── test_exlpose.json
│   │   ├── fld/
│   │   │   └── test_fld.json
│   │   ├── fly/
│   │   │   └── test_fly.json
│   │   ├── freihand/
│   │   │   └── test_freihand.json
│   │   ├── h36m/
│   │   │   ├── cameras.pkl
│   │   │   ├── h36m_coco.json
│   │   │   ├── test_h36m.npz
│   │   │   ├── test_h36m_2d_detection.npy
│   │   │   └── test_h36m_body3d.npz
│   │   ├── h3wb/
│   │   │   └── h3wb_train_bbox_subset.npz
│   │   ├── halpe/
│   │   │   └── test_halpe.json
│   │   ├── horse10/
│   │   │   └── test_horse10.json
│   │   ├── humanart/
│   │   │   ├── test_humanart.json
│   │   │   └── test_humanart_det_AP_H_56.json
│   │   ├── interhand2.6m/
│   │   │   ├── test_interhand2.6m_camera.json
│   │   │   ├── test_interhand2.6m_data.json
│   │   │   └── test_interhand2.6m_joint_3d.json
│   │   ├── jhmdb/
│   │   │   └── test_jhmdb_sub1.json
│   │   ├── lapa/
│   │   │   └── test_lapa.json
│   │   ├── locust/
│   │   │   └── test_locust.json
│   │   ├── macaque/
│   │   │   └── test_macaque.json
│   │   ├── mhp/
│   │   │   └── test_mhp.json
│   │   ├── mosh/
│   │   │   └── test_mosh.npz
│   │   ├── mpi_inf_3dhp/
│   │   │   ├── cameras_test.pkl
│   │   │   ├── cameras_train.pkl
│   │   │   ├── test_3dhp_test.npz
│   │   │   └── test_3dhp_train.npz
│   │   ├── mpii/
│   │   │   ├── test_mpii.json
│   │   │   └── test_mpii_trb.json
│   │   ├── ochuman/
│   │   │   └── test_ochuman.json
│   │   ├── onehand10k/
│   │   │   └── test_onehand10k.json
│   │   ├── panoptic/
│   │   │   └── test_panoptic.json
│   │   ├── panoptic_body3d/
│   │   │   ├── 160906_band1/
│   │   │   │   ├── calibration_160906_band1.json
│   │   │   │   └── hdPose3d_stage1_coco19/
│   │   │   │       ├── body3DScene_00000168.json
│   │   │   │       └── body3DScene_00000169.json
│   │   │   └── 160906_band2/
│   │   │       ├── calibration_160906_band2.json
│   │   │       └── hdPose3d_stage1_coco19/
│   │   │           ├── body3DScene_00000139.json
│   │   │           └── body3DScene_00000140.json
│   │   ├── posetrack18/
│   │   │   └── annotations/
│   │   │       ├── test_posetrack18_human_detections.json
│   │   │       ├── test_posetrack18_val.json
│   │   │       └── val/
│   │   │           ├── 003418_mpii_test.json
│   │   │           ├── 009473_mpii_test.json
│   │   │           └── 012834_mpii_test.json
│   │   ├── rhd/
│   │   │   └── test_rhd.json
│   │   ├── shelf/
│   │   │   ├── actorsGT.mat
│   │   │   ├── calibration_shelf.json
│   │   │   ├── panoptic_training_pose.pkl
│   │   │   └── pred_shelf_maskrcnn_hrnet_coco.pkl
│   │   ├── smpl/
│   │   │   └── smpl_mean_params.npz
│   │   ├── ubody3d/
│   │   │   └── ubody3d_train.json
│   │   ├── wflw/
│   │   │   └── test_wflw.json
│   │   └── zebra/
│   │       └── test_zebra.json
│   ├── test_apis/
│   │   ├── test_inference.py
│   │   └── test_inferencers/
│   │       ├── test_hand3d_inferencer.py
│   │       ├── test_mmpose_inferencer.py
│   │       ├── test_pose2d_inferencer.py
│   │       └── test_pose3d_inferencer.py
│   ├── test_codecs/
│   │   ├── test_annotation_processors.py
│   │   ├── test_associative_embedding.py
│   │   ├── test_decoupled_heatmap.py
│   │   ├── test_edpose_label.py
│   │   ├── test_hand_3d_heatmap.py
│   │   ├── test_image_pose_lifting.py
│   │   ├── test_integral_regression_label.py
│   │   ├── test_megvii_heatmap.py
│   │   ├── test_motionbert_label.py
│   │   ├── test_msra_heatmap.py
│   │   ├── test_regression_label.py
│   │   ├── test_simcc_label.py
│   │   ├── test_spr.py
│   │   ├── test_udp_heatmap.py
│   │   └── test_video_pose_lifting.py
│   ├── test_datasets/
│   │   ├── test_datasets/
│   │   │   ├── test_animal_datasets/
│   │   │   │   ├── test_animalkingdom_dataset.py
│   │   │   │   ├── test_animalpose_dataset.py
│   │   │   │   ├── test_ap10k_dataset.py
│   │   │   │   ├── test_atrw_dataset.py
│   │   │   │   ├── test_fly_dataset.py
│   │   │   │   ├── test_horse10_dataset.py
│   │   │   │   ├── test_locust_dataset.py
│   │   │   │   ├── test_macaque_dataset.py
│   │   │   │   └── test_zebra_dataset.py
│   │   │   ├── test_body_datasets/
│   │   │   │   ├── test_aic_dataset.py
│   │   │   │   ├── test_coco_dataset.py
│   │   │   │   ├── test_crowdpose_dataset.py
│   │   │   │   ├── test_exlpose_dataset.py
│   │   │   │   ├── test_h36m_dataset.py
│   │   │   │   ├── test_humanart21_dataset.py
│   │   │   │   ├── test_humanart_dataset.py
│   │   │   │   ├── test_jhmdb_dataset.py
│   │   │   │   ├── test_mhp_dataset.py
│   │   │   │   ├── test_mpii_dataset.py
│   │   │   │   ├── test_mpii_trb_dataset.py
│   │   │   │   ├── test_ochuman_dataset.py
│   │   │   │   ├── test_posetrack18_dataset.py
│   │   │   │   └── test_posetrack18_video_dataset.py
│   │   │   ├── test_dataset_wrappers/
│   │   │   │   └── test_combined_dataset.py
│   │   │   ├── test_face_datasets/
│   │   │   │   ├── test_aflw_dataset.py
│   │   │   │   ├── test_coco_wholebody_face_dataset.py
│   │   │   │   ├── test_cofw_dataset.py
│   │   │   │   ├── test_face_300vw_dataset.py
│   │   │   │   ├── test_face_300w_dataset.py
│   │   │   │   ├── test_face_300wlp_dataset.py
│   │   │   │   ├── test_lapa_dataset.py
│   │   │   │   └── test_wflw_dataset.py
│   │   │   ├── test_fashion_datasets/
│   │   │   │   └── test_deepfashion_dataset.py
│   │   │   ├── test_hand_datasets/
│   │   │   │   ├── test_coco_wholebody_hand_dataset.py
│   │   │   │   ├── test_freihand_dataset.py
│   │   │   │   ├── test_interhand2d_double_dataset.py
│   │   │   │   ├── test_interhand3d_dataset.py
│   │   │   │   ├── test_onehand10k_dataset.py
│   │   │   │   ├── test_panoptic_hand2d_dataset.py
│   │   │   │   └── test_rhd2d_dataset.py
│   │   │   └── test_wholebody_datasets/
│   │   │       ├── test_coco_wholebody_dataset.py
│   │   │       ├── test_h3wb_dataset.py
│   │   │       ├── test_halpe_dataset.py
│   │   │       └── test_ubody_dataset.py
│   │   └── test_transforms/
│   │       ├── test_bottomup_transforms.py
│   │       ├── test_common_transforms.py
│   │       ├── test_converting.py
│   │       ├── test_formatting.py
│   │       ├── test_loading.py
│   │       ├── test_mix_img_transform.py
│   │       ├── test_pose3d_transforms.py
│   │       └── test_topdown_transforms.py
│   ├── test_engine/
│   │   ├── test_hooks/
│   │   │   ├── test_badcase_hook.py
│   │   │   ├── test_mode_switch_hooks.py
│   │   │   ├── test_sync_norm_hook.py
│   │   │   └── test_visualization_hook.py
│   │   └── test_schedulers/
│   │       ├── test_lr_scheduler.py
│   │       └── test_quadratic_warmup.py
│   ├── test_evaluation/
│   │   ├── test_evaluator/
│   │   │   └── test_multi_dataset_evaluator.py
│   │   ├── test_functional/
│   │   │   ├── test_keypoint_eval.py
│   │   │   ├── test_nms.py
│   │   │   └── test_transforms.py
│   │   └── test_metrics/
│   │       ├── test_coco_metric.py
│   │       ├── test_coco_wholebody_metric.py
│   │       ├── test_hand_metric.py
│   │       ├── test_keypoint_2d_metrics.py
│   │       ├── test_keypoint_3d_metrics.py
│   │       ├── test_keypoint_partition_metric.py
│   │       └── test_posetrack18_metric.py
│   ├── test_external/
│   │   └── test_mim.py
│   ├── test_models/
│   │   ├── test_backbones/
│   │   │   ├── test_alexnet.py
│   │   │   ├── test_backbones_utils.py
│   │   │   ├── test_cpm.py
│   │   │   ├── test_csp_darknet.py
│   │   │   ├── test_dstformer.py
│   │   │   ├── test_hourglass.py
│   │   │   ├── test_hrformer.py
│   │   │   ├── test_hrnet.py
│   │   │   ├── test_litehrnet.py
│   │   │   ├── test_mobilenet_v2.py
│   │   │   ├── test_mobilenet_v3.py
│   │   │   ├── test_mspn.py
│   │   │   ├── test_pvt.py
│   │   │   ├── test_regnet.py
│   │   │   ├── test_resnest.py
│   │   │   ├── test_resnet.py
│   │   │   ├── test_resnext.py
│   │   │   ├── test_rsn.py
│   │   │   ├── test_scnet.py
│   │   │   ├── test_seresnet.py
│   │   │   ├── test_seresnext.py
│   │   │   ├── test_shufflenet_v1.py
│   │   │   ├── test_shufflenet_v2.py
│   │   │   ├── test_swin.py
│   │   │   ├── test_tcn.py
│   │   │   ├── test_v2v_net.py
│   │   │   ├── test_vgg.py
│   │   │   ├── test_vipnas_mbv3.py
│   │   │   └── test_vipnas_resnet.py
│   │   ├── test_data_preprocessors/
│   │   │   └── test_data_preprocessor.py
│   │   ├── test_distillers/
│   │   │   └── test_dwpose_distiller.py
│   │   ├── test_heads/
│   │   │   ├── test_heatmap_heads/
│   │   │   │   ├── test_ae_head.py
│   │   │   │   ├── test_cid_head.py
│   │   │   │   ├── test_cpm_head.py
│   │   │   │   ├── test_heatmap_head.py
│   │   │   │   ├── test_mspn_head.py
│   │   │   │   ├── test_rtmcc_head.py
│   │   │   │   ├── test_simcc_head.py
│   │   │   │   └── test_vipnas_head.py
│   │   │   ├── test_hybrid_heads/
│   │   │   │   ├── test_dekr_head.py
│   │   │   │   └── test_vis_head.py
│   │   │   └── test_regression_heads/
│   │   │       ├── test_dsnt_head.py
│   │   │       ├── test_integral_regression_head.py
│   │   │       ├── test_regression_head.py
│   │   │       └── test_rle_head.py
│   │   ├── test_losses/
│   │   │   ├── test_ae_loss.py
│   │   │   ├── test_classification_losses.py
│   │   │   ├── test_heatmap_losses.py
│   │   │   └── test_regression_losses.py
│   │   ├── test_necks/
│   │   │   ├── test_fmap_proc_neck.py
│   │   │   └── test_yolox_pafpn.py
│   │   ├── test_pose_estimators/
│   │   │   ├── test_bottomup.py
│   │   │   └── test_topdown.py
│   │   └── test_utils/
│   │       ├── test_check_and_update_config.py
│   │       └── test_transformers.py
│   ├── test_structures/
│   │   ├── test_bbox/
│   │   │   ├── test_bbox_overlaps.py
│   │   │   └── test_bbox_transforms.py
│   │   ├── test_keypoint/
│   │   │   └── test_keypoint_transforms.py
│   │   ├── test_multilevel_pixel_data.py
│   │   └── test_pose_data_sample.py
│   ├── test_utils/
│   │   └── test_setup_env.py
│   └── test_visualization/
│       ├── test_fast_visualizer.py
│       └── test_pose_visualizer.py
└── tools/
    ├── analysis_tools/
    │   ├── analyze_logs.py
    │   ├── get_flops.py
    │   └── print_config.py
    ├── dataset_converters/
    │   ├── 300vw2coco.py
    │   ├── 300wlp2coco.py
    │   ├── h36m_to_coco.py
    │   ├── labelstudio2coco.py
    │   ├── lapa2coco.py
    │   ├── mat2json.py
    │   ├── parse_animalpose_dataset.py
    │   ├── parse_cofw_dataset.py
    │   ├── parse_deepposekit_dataset.py
    │   ├── parse_macaquepose_dataset.py
    │   ├── preprocess_h36m.py
    │   ├── preprocess_mpi_inf_3dhp.py
    │   ├── scripts/
    │   │   ├── preprocess_300w.sh
    │   │   ├── preprocess_aic.sh
    │   │   ├── preprocess_ap10k.sh
    │   │   ├── preprocess_coco2017.sh
    │   │   ├── preprocess_crowdpose.sh
    │   │   ├── preprocess_freihand.sh
    │   │   ├── preprocess_hagrid.sh
    │   │   ├── preprocess_halpe.sh
    │   │   ├── preprocess_lapa.sh
    │   │   ├── preprocess_mpii.sh
    │   │   ├── preprocess_onehand10k.sh
    │   │   └── preprocess_wflw.sh
    │   ├── ubody_kpts_to_coco.py
    │   ├── ubody_smplx_to_coco.py
    │   └── wflw2coco.py
    ├── dist_test.sh
    ├── dist_train.sh
    ├── misc/
    │   ├── browse_dataset.py
    │   ├── generate_bbox_file.py
    │   ├── keypoints2coco_without_mmdet.py
    │   ├── pth_transfer.py
    │   └── publish_model.py
    ├── slurm_test.sh
    ├── slurm_train.sh
    ├── test.py
    ├── torchserve/
    │   ├── mmpose2torchserve.py
    │   ├── mmpose_handler.py
    │   └── test_torchserver.py
    └── train.py
Download .txt
Showing preview only (271K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3393 symbols across 496 files)

FILE: demo/body3d_pose_lifter_demo.py
  function parse_args (line 34) | def parse_args():
  function process_one_image (line 135) | def process_one_image(args, detector, frame, frame_idx, pose_estimator,
  function main (line 363) | def main():

FILE: demo/bottomup_demo.py
  function process_one_image (line 20) | def process_one_image(args,
  function parse_args (line 53) | def parse_args():
  function main (line 104) | def main():

FILE: demo/hand3d_internet_demo.py
  function parse_args (line 21) | def parse_args():
  function process_one_image (line 79) | def process_one_image(args, img, model, visualizer=None, show_interval=0):
  function main (line 155) | def main():

FILE: demo/image_demo.py
  function parse_args (line 13) | def parse_args():
  function main (line 62) | def main():

FILE: demo/inferencer_demo.py
  function parse_args (line 14) | def parse_args():
  function display_model_aliases (line 200) | def display_model_aliases(model_aliases: Dict[str, str]) -> None:
  function main (line 210) | def main():

FILE: demo/topdown_demo_with_mmdet.py
  function process_one_image (line 29) | def process_one_image(args,
  function main (line 74) | def main():

FILE: docs/en/collect_modelzoo.py
  function _get_model_docs (line 13) | def _get_model_docs():
  function _parse_model_doc_path (line 26) | def _parse_model_doc_path(path):
  function _get_paper_refs (line 68) | def _get_paper_refs():
  function _parse_paper_ref (line 84) | def _parse_paper_ref(fn):
  function main (line 105) | def main():

FILE: docs/en/collect_projects.py
  function _get_project_docs (line 9) | def _get_project_docs():
  function _parse_project_doc_path (line 25) | def _parse_project_doc_path(fn):
  function _get_project_intro_doc (line 50) | def _get_project_intro_doc():
  function _get_faq_doc (line 68) | def _get_faq_doc():
  function main (line 80) | def main():

FILE: docs/en/conf.py
  function get_version (line 32) | def get_version():
  function builder_inited_handler (line 103) | def builder_inited_handler(app):
  function setup (line 110) | def setup(app):

FILE: docs/en/stats.py
  function anchor (line 12) | def anchor(name):

FILE: docs/zh_cn/collect_modelzoo.py
  function _get_model_docs (line 13) | def _get_model_docs():
  function _parse_model_doc_path (line 26) | def _parse_model_doc_path(path):
  function _get_paper_refs (line 68) | def _get_paper_refs():
  function _parse_paper_ref (line 84) | def _parse_paper_ref(fn):
  function main (line 105) | def main():

FILE: docs/zh_cn/collect_projects.py
  function _get_project_docs (line 9) | def _get_project_docs():
  function _parse_project_doc_path (line 25) | def _parse_project_doc_path(fn):
  function _get_project_intro_doc (line 50) | def _get_project_intro_doc():
  function _get_faq_doc (line 70) | def _get_faq_doc():
  function main (line 82) | def main():

FILE: docs/zh_cn/conf.py
  function get_version (line 32) | def get_version():
  function builder_inited_handler (line 100) | def builder_inited_handler(app):
  function setup (line 107) | def setup(app):

FILE: docs/zh_cn/stats.py
  function anchor (line 12) | def anchor(name):

FILE: mmpose/apis/inference.py
  function dataset_meta_from_config (line 22) | def dataset_meta_from_config(config: Config,
  function init_model (line 68) | def init_model(config: Union[str, Path, Config],
  function inference_topdown (line 134) | def inference_topdown(model: nn.Module,
  function inference_bottomup (line 203) | def inference_bottomup(model: nn.Module, img: Union[np.ndarray, str]):
  function collect_multi_frames (line 233) | def collect_multi_frames(video, frame_id, indices, online=False):

FILE: mmpose/apis/inference_3d.py
  function convert_keypoint_definition (line 11) | def convert_keypoint_definition(keypoints, pose_det_dataset,
  function extract_pose_sequence (line 92) | def extract_pose_sequence(pose_results, frame_idx, causal, seq_len, step...
  function collate_pose_sequence (line 129) | def collate_pose_sequence(pose_results_2d,
  function inference_pose_lifter_model (line 229) | def inference_pose_lifter_model(model,

FILE: mmpose/apis/inference_tracking.py
  function _compute_iou (line 9) | def _compute_iou(bboxA, bboxB):
  function _track_by_iou (line 39) | def _track_by_iou(res, results_last, thr):
  function _track_by_oks (line 65) | def _track_by_oks(res, results_last, thr, sigmas=None):

FILE: mmpose/apis/inferencers/base_mmpose_inferencer.py
  class BaseMMPoseInferencer (line 47) | class BaseMMPoseInferencer(BaseInferencer):
    method __init__ (line 58) | def __init__(self,
    method _init_detector (line 67) | def _init_detector(
    method _load_weights_to_model (line 115) | def _load_weights_to_model(self, model: nn.Module,
    method _inputs_to_list (line 153) | def _inputs_to_list(self, inputs: InputsType) -> Iterable:
    method _get_webcam_inputs (line 217) | def _get_webcam_inputs(self, inputs: str) -> Generator:
    method _init_pipeline (line 291) | def _init_pipeline(self, cfg: ConfigType) -> Callable:
    method update_model_visualizer_settings (line 307) | def update_model_visualizer_settings(self, **kwargs):
    method preprocess (line 313) | def preprocess(self,
    method __call__ (line 359) | def __call__(
    method visualize (line 455) | def visualize(self,
    method save_visualization (line 549) | def save_visualization(self, visualization, vis_out_dir, img_name=None):
    method postprocess (line 584) | def postprocess(
    method _finalize_video_processing (line 660) | def _finalize_video_processing(

FILE: mmpose/apis/inferencers/hand3d_inferencer.py
  class Hand3DInferencer (line 32) | class Hand3DInferencer(BaseMMPoseInferencer):
    method __init__ (line 74) | def __init__(self,
    method preprocess_single (line 107) | def preprocess_single(self,
    method forward (line 183) | def forward(self,
    method visualize (line 248) | def visualize(

FILE: mmpose/apis/inferencers/mmpose_inferencer.py
  class MMPoseInferencer (line 26) | class MMPoseInferencer(BaseMMPoseInferencer):
    method __init__ (line 73) | def __init__(self,
    method preprocess (line 107) | def preprocess(self, inputs: InputsType, batch_size: int = 1, **kwargs):
    method forward (line 122) | def forward(self, inputs: InputType, **forward_kwargs) -> PredType:
    method __call__ (line 133) | def __call__(
    method visualize (line 223) | def visualize(self, inputs: InputsType, preds: PredType,

FILE: mmpose/apis/inferencers/pose2d_inferencer.py
  class Pose2DInferencer (line 31) | class Pose2DInferencer(BaseMMPoseInferencer):
    method __init__ (line 75) | def __init__(self,
    method update_model_visualizer_settings (line 108) | def update_model_visualizer_settings(self,
    method preprocess_single (line 131) | def preprocess_single(self,
    method forward (line 213) | def forward(self,

FILE: mmpose/apis/inferencers/pose3d_inferencer.py
  class Pose3DInferencer (line 34) | class Pose3DInferencer(BaseMMPoseInferencer):
    method __init__ (line 82) | def __init__(self,
    method preprocess_single (line 128) | def preprocess_single(self,
    method forward (line 305) | def forward(self,
    method visualize (line 355) | def visualize(self,

FILE: mmpose/apis/inferencers/utils/get_model_alias.py
  function get_model_aliases (line 7) | def get_model_aliases(scope: str = 'mmpose') -> Dict[str, str]:

FILE: mmpose/apis/visualization.py
  function visualize (line 14) | def visualize(

FILE: mmpose/codecs/annotation_processors.py
  class BaseAnnotationProcessor (line 13) | class BaseAnnotationProcessor(BaseKeypointCodec):
    method decode (line 16) | def decode(self, *args, **kwargs):
  class YOLOXPoseAnnotationProcessor (line 21) | class YOLOXPoseAnnotationProcessor(BaseAnnotationProcessor):
    method __init__ (line 51) | def __init__(self,
    method encode (line 57) | def encode(self,

FILE: mmpose/codecs/associative_embedding.py
  function _py_max_match (line 18) | def _py_max_match(scores):
  function _group_keypoints_by_tags (line 33) | def _group_keypoints_by_tags(vals: np.ndarray,
  class AssociativeEmbedding (line 146) | class AssociativeEmbedding(BaseKeypointCodec):
    method __init__ (line 205) | def __init__(
    method encode (line 245) | def encode(
    method _encode_keypoint_indices (line 301) | def _encode_keypoint_indices(self, heatmap_size: Tuple[int, int],
    method decode (line 316) | def decode(self, encoded: Any) -> Tuple[np.ndarray, np.ndarray]:
    method _get_batch_topk (line 319) | def _get_batch_topk(self, batch_heatmaps: Tensor, batch_tags: Tensor,
    method _group_keypoints (line 359) | def _group_keypoints(self, batch_vals: np.ndarray, batch_tags: np.ndar...
    method _fill_missing_keypoints (line 393) | def _fill_missing_keypoints(self, keypoints: np.ndarray,
    method batch_decode (line 445) | def batch_decode(self, batch_heatmaps: Tensor, batch_tags: Tensor

FILE: mmpose/codecs/base.py
  class BaseKeypointCodec (line 9) | class BaseKeypointCodec(metaclass=ABCMeta):
    method encode (line 26) | def encode(self,
    method decode (line 47) | def decode(self, encoded: Any) -> Tuple[np.ndarray, np.ndarray]:
    method batch_decode (line 60) | def batch_decode(self, batch_encoded: Any
    method support_batch_decoding (line 78) | def support_batch_decoding(self) -> bool:

FILE: mmpose/codecs/decoupled_heatmap.py
  class DecoupledHeatmap (line 16) | class DecoupledHeatmap(BaseKeypointCodec):
    method __init__ (line 77) | def __init__(
    method _get_instance_wise_sigmas (line 96) | def _get_instance_wise_sigmas(
    method encode (line 142) | def encode(self,
    method decode (line 242) | def decode(self, instance_heatmaps: np.ndarray,

FILE: mmpose/codecs/edpose_label.py
  class EDPoseLabel (line 12) | class EDPoseLabel(BaseKeypointCodec):
    method __init__ (line 44) | def __init__(self, num_select: int = 100, num_keypoints: int = 17):
    method encode (line 50) | def encode(
    method decode (line 106) | def decode(self, input_shapes: np.ndarray, pred_logits: np.ndarray,

FILE: mmpose/codecs/hand_3d_heatmap.py
  class Hand3DHeatmap (line 13) | class Hand3DHeatmap(BaseKeypointCodec):
    method __init__ (line 62) | def __init__(self,
    method encode (line 91) | def encode(
    method decode (line 164) | def decode(self, heatmaps: np.ndarray, root_depth: np.ndarray,

FILE: mmpose/codecs/image_pose_lifting.py
  class ImagePoseLifting (line 11) | class ImagePoseLifting(BaseKeypointCodec):
    method __init__ (line 53) | def __init__(self,
    method encode (line 105) | def encode(self,
    method decode (line 249) | def decode(self,

FILE: mmpose/codecs/integral_regression_label.py
  class IntegralRegressionLabel (line 14) | class IntegralRegressionLabel(BaseKeypointCodec):
    method __init__ (line 54) | def __init__(self,
    method encode (line 68) | def encode(self,
    method decode (line 105) | def decode(self, encoded: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:

FILE: mmpose/codecs/megvii_heatmap.py
  class MegviiHeatmap (line 14) | class MegviiHeatmap(BaseKeypointCodec):
    method __init__ (line 45) | def __init__(
    method encode (line 59) | def encode(self,
    method decode (line 110) | def decode(self, encoded: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:

FILE: mmpose/codecs/motionbert_label.py
  class MotionBERTLabel (line 14) | class MotionBERTLabel(BaseKeypointCodec):
    method __init__ (line 54) | def __init__(self,
    method encode (line 75) | def encode(self,
    method decode (line 185) | def decode(

FILE: mmpose/codecs/msra_heatmap.py
  class MSRAHeatmap (line 15) | class MSRAHeatmap(BaseKeypointCodec):
    method __init__ (line 53) | def __init__(self,
    method encode (line 77) | def encode(self,
    method decode (line 120) | def decode(self, encoded: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:

FILE: mmpose/codecs/regression_label.py
  class RegressionLabel (line 12) | class RegressionLabel(BaseKeypointCodec):
    method __init__ (line 38) | def __init__(self, input_size: Tuple[int, int]) -> None:
    method encode (line 43) | def encode(self,
    method decode (line 76) | def decode(self, encoded: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:

FILE: mmpose/codecs/simcc_label.py
  class SimCCLabel (line 14) | class SimCCLabel(BaseKeypointCodec):
    method __init__ (line 67) | def __init__(
    method encode (line 108) | def encode(self,
    method decode (line 156) | def decode(self, simcc_x: np.ndarray,
    method _map_coordinates (line 202) | def _map_coordinates(
    method _generate_standard (line 216) | def _generate_standard(
    method _generate_gaussian (line 260) | def _generate_gaussian(

FILE: mmpose/codecs/spr.py
  class SPR (line 16) | class SPR(BaseKeypointCodec):
    method __init__ (line 83) | def __init__(
    method _get_heatmap_weights (line 127) | def _get_heatmap_weights(self,
    method encode (line 145) | def encode(self,
    method decode (line 229) | def decode(self, heatmaps: Tensor,
    method get_keypoint_scores (line 283) | def get_keypoint_scores(self, heatmaps: Tensor, keypoints: Tensor):

FILE: mmpose/codecs/udp_heatmap.py
  class UDPHeatmap (line 14) | class UDPHeatmap(BaseKeypointCodec):
    method __init__ (line 63) | def __init__(self,
    method encode (line 86) | def encode(self,
    method decode (line 137) | def decode(self, encoded: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:

FILE: mmpose/codecs/utils/camera_image_projection.py
  function camera_to_image_coord (line 7) | def camera_to_image_coord(root_index: int, kpts_3d_cam: np.ndarray,
  function camera_to_pixel (line 50) | def camera_to_pixel(kpts_3d: np.ndarray,
  function pixel_to_camera (line 80) | def pixel_to_camera(kpts_3d: np.ndarray, fx: float, fy: float, cx: float,

FILE: mmpose/codecs/utils/gaussian_heatmap.py
  function generate_3d_gaussian_heatmaps (line 8) | def generate_3d_gaussian_heatmaps(
  function generate_gaussian_heatmaps (line 120) | def generate_gaussian_heatmaps(
  function generate_unbiased_gaussian_heatmaps (line 205) | def generate_unbiased_gaussian_heatmaps(
  function generate_udp_gaussian_heatmaps (line 263) | def generate_udp_gaussian_heatmaps(

FILE: mmpose/codecs/utils/instance_property.py
  function get_instance_root (line 7) | def get_instance_root(keypoints: np.ndarray,
  function get_instance_bbox (line 64) | def get_instance_bbox(keypoints: np.ndarray,
  function get_diagonal_lengths (line 92) | def get_diagonal_lengths(keypoints: np.ndarray,

FILE: mmpose/codecs/utils/offset_heatmap.py
  function generate_offset_heatmap (line 8) | def generate_offset_heatmap(
  function generate_displacement_heatmap (line 67) | def generate_displacement_heatmap(

FILE: mmpose/codecs/utils/post_processing.py
  function get_simcc_normalized (line 12) | def get_simcc_normalized(batch_pred_simcc, sigma=None):
  function get_simcc_maximum (line 41) | def get_simcc_maximum(simcc_x: np.ndarray,
  function get_heatmap_3d_maximum (line 108) | def get_heatmap_3d_maximum(heatmaps: np.ndarray
  function get_heatmap_maximum (line 156) | def get_heatmap_maximum(heatmaps: np.ndarray) -> Tuple[np.ndarray, np.nd...
  function gaussian_blur (line 201) | def gaussian_blur(heatmaps: np.ndarray, kernel: int = 11) -> np.ndarray:
  function gaussian_blur1d (line 233) | def gaussian_blur1d(simcc: np.ndarray, kernel: int = 11) -> np.ndarray:
  function batch_heatmap_nms (line 264) | def batch_heatmap_nms(batch_heatmaps: Tensor, kernel_size: int = 5):

FILE: mmpose/codecs/utils/refinement.py
  function refine_keypoints (line 9) | def refine_keypoints(keypoints: np.ndarray,
  function refine_keypoints_dark (line 49) | def refine_keypoints_dark(keypoints: np.ndarray, heatmaps: np.ndarray,
  function refine_keypoints_dark_udp (line 105) | def refine_keypoints_dark_udp(keypoints: np.ndarray, heatmaps: np.ndarray,
  function refine_simcc_dark (line 168) | def refine_simcc_dark(keypoints: np.ndarray, simcc: np.ndarray,

FILE: mmpose/codecs/video_pose_lifting.py
  class VideoPoseLifting (line 13) | class VideoPoseLifting(BaseKeypointCodec):
    method __init__ (line 55) | def __init__(self,
    method encode (line 77) | def encode(self,
    method decode (line 221) | def decode(self,

FILE: mmpose/datasets/builder.py
  function _concat_dataset (line 23) | def _concat_dataset(cfg, default_args=None):
  function build_dataset (line 56) | def build_dataset(cfg, default_args=None):
  function worker_init_fn (line 83) | def worker_init_fn(worker_id, num_workers, rank, seed):

FILE: mmpose/datasets/dataset_wrappers.py
  class CombinedDataset (line 15) | class CombinedDataset(BaseDataset):
    method __init__ (line 26) | def __init__(self,
    method metainfo (line 59) | def metainfo(self):
    method lens (line 63) | def lens(self):
    method __len__ (line 66) | def __len__(self):
    method _get_subset_index (line 69) | def _get_subset_index(self, index: int) -> Tuple[int, int]:
    method prepare_data (line 103) | def prepare_data(self, idx: int) -> Any:
    method get_data_info (line 123) | def get_data_info(self, idx: int) -> dict:
    method full_init (line 149) | def full_init(self):

FILE: mmpose/datasets/datasets/animal/animalkingdom_dataset.py
  class AnimalKingdomDataset (line 7) | class AnimalKingdomDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/animal/animalpose_dataset.py
  class AnimalPoseDataset (line 7) | class AnimalPoseDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/animal/ap10k_dataset.py
  class AP10KDataset (line 7) | class AP10KDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/animal/atrw_dataset.py
  class ATRWDataset (line 7) | class ATRWDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/animal/fly_dataset.py
  class FlyDataset (line 7) | class FlyDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/animal/horse10_dataset.py
  class Horse10Dataset (line 7) | class Horse10Dataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/animal/locust_dataset.py
  class LocustDataset (line 12) | class LocustDataset(BaseCocoStyleDataset):
    method parse_data_info (line 98) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/animal/macaque_dataset.py
  class MacaqueDataset (line 8) | class MacaqueDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/animal/zebra_dataset.py
  class ZebraDataset (line 12) | class ZebraDataset(BaseCocoStyleDataset):
    method parse_data_info (line 72) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/base/base_coco_style_dataset.py
  class BaseCocoStyleDataset (line 21) | class BaseCocoStyleDataset(BaseDataset):
    method __init__ (line 66) | def __init__(self,
    method _load_metainfo (line 124) | def _load_metainfo(cls, metainfo: dict = None) -> dict:
    method prepare_data (line 147) | def prepare_data(self, idx) -> Any:
    method get_data_info (line 172) | def get_data_info(self, idx: int) -> dict:
    method load_data_list (line 198) | def load_data_list(self) -> List[dict]:
    method _load_annotations (line 217) | def _load_annotations(self) -> Tuple[List[dict], List[dict]]:
    method parse_data_info (line 259) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:
    method _is_valid_instance (line 333) | def _is_valid_instance(data_info: Dict) -> bool:
    method _get_topdown_data_infos (line 354) | def _get_topdown_data_infos(self, instance_list: List[Dict]) -> List[D...
    method _get_bottomup_data_infos (line 361) | def _get_bottomup_data_infos(self, instance_list: List[Dict],
    method _load_detection_results (line 421) | def _load_detection_results(self) -> List[dict]:
    method filter_data (line 477) | def filter_data(self) -> List[dict]:

FILE: mmpose/datasets/datasets/base/base_mocap_dataset.py
  class BaseMocapDataset (line 21) | class BaseMocapDataset(BaseDataset):
    method __init__ (line 68) | def __init__(self,
    method _load_ann_file (line 139) | def _load_ann_file(self, ann_file: str) -> dict:
    method _load_metainfo (line 153) | def _load_metainfo(cls, metainfo: dict = None) -> dict:
    method prepare_data (line 176) | def prepare_data(self, idx) -> Any:
    method get_data_info (line 193) | def get_data_info(self, idx: int) -> dict:
    method load_data_list (line 219) | def load_data_list(self) -> List[dict]:
    method get_img_info (line 233) | def get_img_info(self, img_idx, img_name):
    method get_sequence_indices (line 256) | def get_sequence_indices(self) -> List[List[int]]:
    method _load_annotations (line 287) | def _load_annotations(self) -> Tuple[List[dict], List[dict]]:
    method get_camera_param (line 371) | def get_camera_param(self, imgname):
    method _is_valid_instance (line 379) | def _is_valid_instance(data_info: Dict) -> bool:
    method _get_topdown_data_infos (line 394) | def _get_topdown_data_infos(self, instance_list: List[Dict]) -> List[D...
    method _get_bottomup_data_infos (line 401) | def _get_bottomup_data_infos(self, instance_list: List[Dict],

FILE: mmpose/datasets/datasets/body/aic_dataset.py
  class AicDataset (line 7) | class AicDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/body/coco_dataset.py
  class CocoDataset (line 7) | class CocoDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/body/crowdpose_dataset.py
  class CrowdPoseDataset (line 7) | class CrowdPoseDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/body/exlpose_dataset.py
  class ExlposeDataset (line 7) | class ExlposeDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/body/humanart21_dataset.py
  class HumanArt21Dataset (line 12) | class HumanArt21Dataset(HumanArtDataset):
    method parse_data_info (line 84) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/body/humanart_dataset.py
  class HumanArtDataset (line 7) | class HumanArtDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/body/jhmdb_dataset.py
  class JhmdbDataset (line 12) | class JhmdbDataset(BaseCocoStyleDataset):
    method parse_data_info (line 78) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/body/mhp_dataset.py
  class MhpDataset (line 7) | class MhpDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/body/mpii_dataset.py
  class MpiiDataset (line 16) | class MpiiDataset(BaseCocoStyleDataset):
    method __init__ (line 85) | def __init__(self,
    method _load_annotations (line 137) | def _load_annotations(self) -> Tuple[List[dict], List[dict]]:

FILE: mmpose/datasets/datasets/body/mpii_trb_dataset.py
  class MpiiTrbDataset (line 15) | class MpiiTrbDataset(BaseCocoStyleDataset):
    method _load_annotations (line 106) | def _load_annotations(self) -> Tuple[List[dict], List[dict]]:

FILE: mmpose/datasets/datasets/body/ochuman_dataset.py
  class OCHumanDataset (line 7) | class OCHumanDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/body/posetrack18_dataset.py
  class PoseTrack18Dataset (line 7) | class PoseTrack18Dataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/body/posetrack18_video_dataset.py
  class PoseTrack18VideoDataset (line 16) | class PoseTrack18VideoDataset(BaseCocoStyleDataset):
    method __init__ (line 106) | def __init__(self,
    method parse_data_info (line 201) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:
    method _load_detection_results (line 288) | def _load_detection_results(self) -> List[dict]:

FILE: mmpose/datasets/datasets/body3d/h36m_dataset.py
  class Human36mDataset (line 15) | class Human36mDataset(BaseMocapDataset):
    method __init__ (line 110) | def __init__(self,
    method get_sequence_indices (line 181) | def get_sequence_indices(self) -> List[List[int]]:
    method _load_annotations (line 246) | def _load_annotations(self) -> Tuple[List[dict], List[dict]]:
    method _parse_h36m_imgname (line 293) | def _parse_h36m_imgname(imgname) -> Tuple[str, str, str]:
    method get_camera_param (line 304) | def get_camera_param(self, imgname) -> dict:
    method _load_keypoint_2d_detection (line 310) | def _load_keypoint_2d_detection(self, det_file):

FILE: mmpose/datasets/datasets/face/aflw_dataset.py
  class AFLWDataset (line 13) | class AFLWDataset(BaseCocoStyleDataset):
    method parse_data_info (line 65) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/face/coco_wholebody_face_dataset.py
  class CocoWholeBodyFaceDataset (line 12) | class CocoWholeBodyFaceDataset(BaseCocoStyleDataset):
    method parse_data_info (line 62) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/face/cofw_dataset.py
  class COFWDataset (line 7) | class COFWDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/face/face_300vw_dataset.py
  class Face300VWDataset (line 13) | class Face300VWDataset(BaseCocoStyleDataset):
    method parse_data_info (line 64) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/face/face_300w_dataset.py
  class Face300WDataset (line 13) | class Face300WDataset(BaseCocoStyleDataset):
    method parse_data_info (line 62) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/face/face_300wlp_dataset.py
  class Face300WLPDataset (line 8) | class Face300WLPDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/face/lapa_dataset.py
  class LapaDataset (line 7) | class LapaDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/face/wflw_dataset.py
  class WFLWDataset (line 13) | class WFLWDataset(BaseCocoStyleDataset):
    method parse_data_info (line 62) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/fashion/deepfashion2_dataset.py
  class DeepFashion2Dataset (line 7) | class DeepFashion2Dataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/fashion/deepfashion_dataset.py
  class DeepFashionDataset (line 9) | class DeepFashionDataset(BaseCocoStyleDataset):
    method __init__ (line 85) | def __init__(self,
    method _check_subset_and_metainfo (line 118) | def _check_subset_and_metainfo(cls, subset: str = '') -> None:

FILE: mmpose/datasets/datasets/hand/coco_wholebody_hand_dataset.py
  class CocoWholeBodyHandDataset (line 15) | class CocoWholeBodyHandDataset(BaseCocoStyleDataset):
    method _load_annotations (line 87) | def _load_annotations(self) -> Tuple[List[dict], List[dict]]:

FILE: mmpose/datasets/datasets/hand/freihand_dataset.py
  class FreiHandDataset (line 12) | class FreiHandDataset(BaseCocoStyleDataset):
    method parse_data_info (line 84) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/hand/interhand2d_double_dataset.py
  class InterHand2DDoubleDataset (line 19) | class InterHand2DDoubleDataset(BaseCocoStyleDataset):
    method __init__ (line 118) | def __init__(self,
    method _load_annotations (line 180) | def _load_annotations(self) -> Tuple[List[dict], List[dict]]:
    method parse_data_info (line 228) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:
    method encode_handtype (line 334) | def encode_handtype(hand_type):

FILE: mmpose/datasets/datasets/hand/onehand10k_dataset.py
  class OneHand10KDataset (line 7) | class OneHand10KDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/hand/panoptic_hand2d_dataset.py
  class PanopticHand2DDataset (line 12) | class PanopticHand2DDataset(BaseCocoStyleDataset):
    method parse_data_info (line 85) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/hand/rhd2d_dataset.py
  class Rhd2DDataset (line 7) | class Rhd2DDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/hand3d/interhand_3d_dataset.py
  class InterHand3DDataset (line 19) | class InterHand3DDataset(BaseCocoStyleDataset):
    method __init__ (line 116) | def __init__(self,
    method _load_annotations (line 177) | def _load_annotations(self) -> Tuple[List[dict], List[dict]]:
    method parse_data_info (line 223) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:
    method encode_handtype (line 339) | def encode_handtype(hand_type):

FILE: mmpose/datasets/datasets/utils.py
  function parse_pose_metainfo (line 9) | def parse_pose_metainfo(metainfo: dict):

FILE: mmpose/datasets/datasets/wholebody/coco_wholebody_dataset.py
  class CocoWholeBodyDataset (line 13) | class CocoWholeBodyDataset(BaseCocoStyleDataset):
    method parse_data_info (line 70) | def parse_data_info(self, raw_data_info: dict) -> Optional[dict]:

FILE: mmpose/datasets/datasets/wholebody/halpe_dataset.py
  class HalpeDataset (line 7) | class HalpeDataset(BaseCocoStyleDataset):

FILE: mmpose/datasets/datasets/wholebody/ubody2d_dataset.py
  class UBody2dDataset (line 7) | class UBody2dDataset(CocoWholeBodyDataset):

FILE: mmpose/datasets/datasets/wholebody3d/h3wb_dataset.py
  class H36MWholeBodyDataset (line 13) | class H36MWholeBodyDataset(Human36mDataset):
    method __init__ (line 94) | def __init__(self, test_mode: bool = False, **kwargs):
    method _load_ann_file (line 104) | def _load_ann_file(self, ann_file: str) -> dict:
    method get_sequence_indices (line 112) | def get_sequence_indices(self) -> List[List[int]]:
    method _load_annotations (line 115) | def _load_annotations(self) -> Tuple[List[dict], List[dict]]:

FILE: mmpose/datasets/datasets/wholebody3d/ubody3d_dataset.py
  class UBody3dDataset (line 15) | class UBody3dDataset(BaseMocapDataset):
    method __init__ (line 72) | def __init__(self,
    method _load_ann_file (line 89) | def _load_ann_file(self, ann_file: str) -> dict:
    method get_sequence_indices (line 94) | def get_sequence_indices(self) -> List[List[int]]:
    method _parse_image_name (line 155) | def _parse_image_name(self, image_path: str) -> Tuple[str, int]:
    method _load_annotations (line 168) | def _load_annotations(self):
    method load_data_list (line 270) | def load_data_list(self) -> List[dict]:

FILE: mmpose/datasets/samplers.py
  class MultiSourceSampler (line 15) | class MultiSourceSampler(Sampler):
    method __init__ (line 32) | def __init__(self,
    method _infinite_indices (line 77) | def _infinite_indices(self, sample_size: int) -> Iterator[int]:
    method _indices_of_rank (line 87) | def _indices_of_rank(self, sample_size: int) -> Iterator[int]:
    method __iter__ (line 93) | def __iter__(self) -> Iterator[int]:
    method __len__ (line 109) | def __len__(self) -> int:
    method set_epoch (line 112) | def set_epoch(self, epoch: int) -> None:

FILE: mmpose/datasets/transforms/bottomup_transforms.py
  class BottomupGetHeatmapMask (line 22) | class BottomupGetHeatmapMask(BaseTransform):
    method __init__ (line 39) | def __init__(self, get_invalid: bool = False):
    method _segs_to_mask (line 43) | def _segs_to_mask(self, segs: list, img_shape: Tuple[int,
    method transform (line 79) | def transform(self, results: Dict) -> Optional[dict]:
  class BottomupRandomAffine (line 146) | class BottomupRandomAffine(BaseTransform):
    method __init__ (line 190) | def __init__(self,
    method _random (line 241) | def _random(self,
    method _fix_aspect_ratio (line 256) | def _fix_aspect_ratio(self, scale: np.ndarray, aspect_ratio: float):
    method _get_transform_params (line 284) | def _get_transform_params(self) -> Tuple:
    method transform (line 322) | def transform(self, results: Dict) -> Optional[dict]:
  class BottomupResize (line 415) | class BottomupResize(BaseTransform):
    method __init__ (line 466) | def __init__(self,
    method _ceil_to_multiple (line 483) | def _ceil_to_multiple(size: Tuple[int, int], base: int):
    method _get_input_size (line 487) | def _get_input_size(self, img_size: Tuple[int, int],
    method transform (line 538) | def transform(self, results: Dict) -> Optional[dict]:
  class BottomupRandomCrop (line 615) | class BottomupRandomCrop(BaseTransform):
    method __init__ (line 675) | def __init__(self,
    method _crop_data (line 699) | def _crop_data(self, results: dict, crop_size: Tuple[int, int],
    method _rand_offset (line 806) | def _rand_offset(self, margin: Tuple[int, int]) -> Tuple[int, int]:
    method _get_crop_size (line 823) | def _get_crop_size(self, image_size: Tuple[int, int]) -> Tuple[int, int]:
    method transform (line 853) | def transform(self, results: dict) -> Union[dict, None]:
  class BottomupRandomChoiceResize (line 872) | class BottomupRandomChoiceResize(BaseTransform):
    method __init__ (line 911) | def __init__(
    method _random_select (line 930) | def _random_select(self) -> Tuple[int, int]:
    method _resize_img (line 943) | def _resize_img(self, results: dict) -> None:
    method _resize_bboxes (line 978) | def _resize_bboxes(self, results: dict) -> None:
    method _resize_keypoints (line 990) | def _resize_keypoints(self, results: dict) -> None:
    method transform (line 1004) | def transform(self, results: dict) -> dict:

FILE: mmpose/datasets/transforms/common_transforms.py
  class GetBBoxCenterScale (line 32) | class GetBBoxCenterScale(BaseTransform):
    method __init__ (line 52) | def __init__(self, padding: float = 1.25) -> None:
    method transform (line 57) | def transform(self, results: Dict) -> Optional[dict]:
    method __repr__ (line 84) | def __repr__(self) -> str:
  class RandomFlip (line 95) | class RandomFlip(BaseTransform):
    method __init__ (line 137) | def __init__(self,
    method _choose_direction (line 165) | def _choose_direction(self) -> str:
    method transform (line 188) | def transform(self, results: dict) -> dict:
    method __repr__ (line 251) | def __repr__(self) -> str:
  class RandomHalfBody (line 264) | class RandomHalfBody(BaseTransform):
    method __init__ (line 293) | def __init__(self,
    method _get_half_body_bbox (line 308) | def _get_half_body_bbox(self, keypoints: np.ndarray,
    method _random_select_half_body (line 335) | def _random_select_half_body(self, keypoints_visible: np.ndarray,
    method transform (line 386) | def transform(self, results: Dict) -> Optional[dict]:
    method __repr__ (line 419) | def __repr__(self) -> str:
  class RandomBBoxTransform (line 436) | class RandomBBoxTransform(BaseTransform):
    method __init__ (line 470) | def __init__(self,
    method _truncnorm (line 487) | def _truncnorm(low: float = -1.,
    method _get_transform_params (line 494) | def _get_transform_params(self, num_bboxes: int) -> Tuple:
    method transform (line 531) | def transform(self, results: Dict) -> Optional[dict]:
    method __repr__ (line 553) | def __repr__(self) -> str:
  class Albumentation (line 571) | class Albumentation(BaseTransform):
    method __init__ (line 616) | def __init__(self,
    method albu_builder (line 634) | def albu_builder(self, cfg: dict) -> albumentations:
    method transform (line 673) | def transform(self, results: dict) -> dict:
    method __repr__ (line 701) | def __repr__(self) -> str:
  class PhotometricDistortion (line 712) | class PhotometricDistortion(BaseTransform):
    method __init__ (line 741) | def __init__(self,
    method _random_flags (line 752) | def _random_flags(self) -> Sequence[Number]:
    method _convert (line 792) | def _convert(self,
    method transform (line 810) | def transform(self, results: dict) -> dict:
    method __repr__ (line 864) | def __repr__(self) -> str:
  class GenerateTarget (line 881) | class GenerateTarget(BaseTransform):
    method __init__ (line 916) | def __init__(self,
    method transform (line 945) | def transform(self, results: Dict) -> Optional[dict]:
    method __repr__ (line 1073) | def __repr__(self) -> str:
  class YOLOXHSVRandomAug (line 1087) | class YOLOXHSVRandomAug(BaseTransform):
    method __init__ (line 1106) | def __init__(self,
    method _get_hsv_gains (line 1115) | def _get_hsv_gains(self):
    method transform (line 1125) | def transform(self, results: dict) -> dict:
    method __repr__ (line 1138) | def __repr__(self):
  class FilterAnnotations (line 1147) | class FilterAnnotations(BaseTransform):
    method __init__ (line 1187) | def __init__(self,
    method transform (line 1205) | def transform(self, results: dict) -> Union[dict, None]:
    method __repr__ (line 1250) | def __repr__(self):

FILE: mmpose/datasets/transforms/converting.py
  class KeypointConverter (line 11) | class KeypointConverter(BaseTransform):
    method __init__ (line 60) | def __init__(self, num_keypoints: int,
    method transform (line 92) | def transform(self, results: dict) -> dict:
    method __repr__ (line 152) | def __repr__(self) -> str:
  class SingleHandConverter (line 165) | class SingleHandConverter(BaseTransform):
    method __init__ (line 204) | def __init__(self, num_keypoints: int,
    method transform (line 215) | def transform(self, results: dict) -> dict:
    method __repr__ (line 231) | def __repr__(self) -> str:

FILE: mmpose/datasets/transforms/formatting.py
  function image_to_tensor (line 14) | def image_to_tensor(img: Union[np.ndarray,
  function keypoints_to_tensor (line 40) | def keypoints_to_tensor(keypoints: Union[np.ndarray, Sequence[np.ndarray]]
  class PackPoseInputs (line 64) | class PackPoseInputs(BaseTransform):
    method __init__ (line 141) | def __init__(self,
    method transform (line 151) | def transform(self, results: dict) -> dict:
    method __repr__ (line 247) | def __repr__(self) -> str:

FILE: mmpose/datasets/transforms/hand_transforms.py
  class HandRandomFlip (line 10) | class HandRandomFlip(RandomFlip):
    method __init__ (line 41) | def __init__(self, prob: Union[float, List[float]] = 0.5) -> None:
    method transform (line 44) | def transform(self, results: dict) -> dict:

FILE: mmpose/datasets/transforms/loading.py
  class LoadImage (line 11) | class LoadImage(LoadImageFromFile):
    method transform (line 42) | def transform(self, results: dict) -> Optional[dict]:

FILE: mmpose/datasets/transforms/mix_img_transforms.py
  class MixImageTransform (line 18) | class MixImageTransform(BaseTransform, metaclass=ABCMeta):
    method __init__ (line 28) | def __init__(self,
    method transform (line 39) | def transform(self, results: dict) -> dict:
    method _get_mixed_data_list (line 60) | def _get_mixed_data_list(self, dataset):
  class Mosaic (line 88) | class Mosaic(MixImageTransform):
    method __init__ (line 153) | def __init__(
    method apply_mix (line 168) | def apply_mix(self, results: dict) -> dict:
    method _create_mosaic_image (line 197) | def _create_mosaic_image(self, results, mixed_data_list):
    method _mosaic_combine (line 264) | def _mosaic_combine(
    method __repr__ (line 294) | def __repr__(self) -> str:
  class YOLOXMixUp (line 304) | class YOLOXMixUp(MixImageTransform):
    method __init__ (line 366) | def __init__(self,
    method apply_mix (line 382) | def apply_mix(self, results: dict) -> dict:
    method _create_mixup_image (line 412) | def _create_mixup_image(self, results, mixed_data_list):
    method __repr__ (line 495) | def __repr__(self) -> str:

FILE: mmpose/datasets/transforms/pose3d_transforms.py
  class RandomFlipAroundRoot (line 13) | class RandomFlipAroundRoot(BaseTransform):
    method __init__ (line 46) | def __init__(self,
    method transform (line 58) | def transform(self, results: Dict) -> dict:

FILE: mmpose/datasets/transforms/topdown_transforms.py
  class TopdownAffine (line 14) | class TopdownAffine(BaseTransform):
    method __init__ (line 44) | def __init__(self,
    method _fix_aspect_ratio (line 56) | def _fix_aspect_ratio(bbox_scale: np.ndarray, aspect_ratio: float):
    method transform (line 73) | def transform(self, results: Dict) -> Optional[dict]:
    method __repr__ (line 139) | def __repr__(self) -> str:

FILE: mmpose/engine/hooks/badcase_hook.py
  class BadCaseAnalysisHook (line 23) | class BadCaseAnalysisHook(Hook):
    method __init__ (line 60) | def __init__(
    method check_badcase (line 106) | def check_badcase(self, data_batch, data_sample):
    method after_test_iter (line 133) | def after_test_iter(self, runner: Runner, batch_idx: int, data_batch: ...
    method after_test_epoch (line 216) | def after_test_epoch(self,

FILE: mmpose/engine/hooks/ema_hook.py
  class ExpMomentumEMA (line 14) | class ExpMomentumEMA(ExponentialMovingAverage):
    method __init__ (line 40) | def __init__(self,
    method avg_func (line 56) | def avg_func(self, averaged_param: Tensor, source_param: Tensor,

FILE: mmpose/engine/hooks/mode_switch_hooks.py
  class YOLOXPoseModeSwitchHook (line 14) | class YOLOXPoseModeSwitchHook(Hook):
    method __init__ (line 34) | def __init__(self,
    method _modify_dataloader (line 42) | def _modify_dataloader(self, runner: Runner):
    method before_train_epoch (line 56) | def before_train_epoch(self, runner: Runner):
  class RTMOModeSwitchHook (line 70) | class RTMOModeSwitchHook(Hook):
    method __init__ (line 90) | def __init__(self, epoch_attributes: Dict[int, Dict]):
    method before_train_epoch (line 93) | def before_train_epoch(self, runner: Runner):

FILE: mmpose/engine/hooks/sync_norm_hook.py
  function get_norm_states (line 11) | def get_norm_states(module: nn.Module) -> OrderedDict:
  class SyncNormHook (line 22) | class SyncNormHook(Hook):
    method before_val_epoch (line 25) | def before_val_epoch(self, runner):

FILE: mmpose/engine/hooks/visualization_hook.py
  class PoseVisualizationHook (line 18) | class PoseVisualizationHook(Hook):
    method __init__ (line 49) | def __init__(
    method after_val_iter (line 77) | def after_val_iter(self, runner: Runner, batch_idx: int, data_batch: d...
    method after_test_iter (line 118) | def after_test_iter(self, runner: Runner, batch_idx: int, data_batch: ...

FILE: mmpose/engine/optim_wrappers/force_default_constructor.py
  class ForceDefaultOptimWrapperConstructor (line 17) | class ForceDefaultOptimWrapperConstructor(DefaultOptimWrapperConstructor):
    method add_params (line 132) | def add_params(self,

FILE: mmpose/engine/optim_wrappers/layer_decay_optim_wrapper.py
  function get_num_layer_for_vit (line 7) | def get_num_layer_for_vit(var_name, num_max_layer):
  class LayerDecayOptimWrapperConstructor (line 21) | class LayerDecayOptimWrapperConstructor(DefaultOptimWrapperConstructor):
    method __init__ (line 23) | def __init__(self, optim_wrapper_cfg, paramwise_cfg=None):
    method add_params (line 29) | def add_params(self, params, module, prefix='', lr=None):

FILE: mmpose/engine/schedulers/constant_lr.py
  class ConstantParamScheduler (line 11) | class ConstantParamScheduler(MMENGINE_ConstantParamScheduler):
    method __init__ (line 37) | def __init__(self,
  class ConstantLR (line 60) | class ConstantLR(LRSchedulerMixin, ConstantParamScheduler):

FILE: mmpose/engine/schedulers/quadratic_warmup.py
  class QuadraticWarmupParamScheduler (line 11) | class QuadraticWarmupParamScheduler(_ParamScheduler):
    method __init__ (line 35) | def __init__(self,
    method build_iter_from_epoch (line 59) | def build_iter_from_epoch(cls,
    method _get_value (line 79) | def _get_value(self):
  class QuadraticWarmupLR (line 96) | class QuadraticWarmupLR(LRSchedulerMixin, QuadraticWarmupParamScheduler):
  class QuadraticWarmupMomentum (line 115) | class QuadraticWarmupMomentum(MomentumSchedulerMixin,

FILE: mmpose/evaluation/evaluators/mutli_dataset_evaluator.py
  class MultiDatasetEvaluator (line 14) | class MultiDatasetEvaluator(Evaluator):
    method __init__ (line 22) | def __init__(
    method dataset_meta (line 43) | def dataset_meta(self) -> Optional[dict]:
    method dataset_meta (line 48) | def dataset_meta(self, dataset_meta: dict) -> None:
    method process (line 52) | def process(self,

FILE: mmpose/evaluation/functional/keypoint_eval.py
  function _calc_distances (line 10) | def _calc_distances(preds: np.ndarray, gts: np.ndarray, mask: np.ndarray,
  function _distance_acc (line 45) | def _distance_acc(distances: np.ndarray, thr: float = 0.5) -> float:
  function keypoint_pck_accuracy (line 67) | def keypoint_pck_accuracy(pred: np.ndarray, gt: np.ndarray, mask: np.nda...
  function keypoint_auc (line 106) | def keypoint_auc(pred: np.ndarray,
  function keypoint_nme (line 142) | def keypoint_nme(pred: np.ndarray, gt: np.ndarray, mask: np.ndarray,
  function keypoint_epe (line 166) | def keypoint_epe(pred: np.ndarray, gt: np.ndarray, mask: np.ndarray) -> ...
  function pose_pck_accuracy (line 191) | def pose_pck_accuracy(output: np.ndarray,
  function simcc_pck_accuracy (line 238) | def simcc_pck_accuracy(output: Tuple[np.ndarray, np.ndarray],
  function multilabel_classification_accuracy (line 291) | def multilabel_classification_accuracy(pred: np.ndarray,
  function keypoint_mpjpe (line 324) | def keypoint_mpjpe(pred: np.ndarray,

FILE: mmpose/evaluation/functional/mesh_eval.py
  function compute_similarity_transform (line 9) | def compute_similarity_transform(source_points, target_points):

FILE: mmpose/evaluation/functional/nms.py
  function nms (line 16) | def nms(dets: np.ndarray, thr: float) -> List[int]:
  function oks_iou (line 58) | def oks_iou(g: np.ndarray,
  function oks_nms (line 115) | def oks_nms(kpts_db: List[dict],
  function _rescore (line 168) | def _rescore(overlap: np.ndarray,
  function soft_oks_nms (line 196) | def soft_oks_nms(kpts_db: List[dict],
  function nearby_joints_nms (line 259) | def nearby_joints_nms(
  function nms_torch (line 335) | def nms_torch(bboxes: Tensor,

FILE: mmpose/evaluation/functional/transforms.py
  function transform_sigmas (line 7) | def transform_sigmas(sigmas: Union[List, np.ndarray], num_keypoints: int,
  function transform_ann (line 30) | def transform_ann(ann_info: Union[dict, list], num_keypoints: int,
  function transform_pred (line 63) | def transform_pred(pred_info: Union[dict, list], num_keypoints: int,

FILE: mmpose/evaluation/metrics/coco_metric.py
  class CocoMetric (line 22) | class CocoMetric(BaseMetric):
    method __init__ (line 96) | def __init__(self,
    method dataset_meta (line 156) | def dataset_meta(self) -> Optional[dict]:
    method dataset_meta (line 161) | def dataset_meta(self, dataset_meta: dict) -> None:
    method process (line 182) | def process(self, data_batch: Sequence[dict],
    method gt_to_coco_json (line 266) | def gt_to_coco_json(self, gt_dicts: Sequence[dict],
    method compute_metrics (line 367) | def compute_metrics(self, results: list) -> Dict[str, float]:
    method results2json (line 507) | def results2json(self, keypoints: Dict[int, list],
    method _do_python_keypoint_eval (line 548) | def _do_python_keypoint_eval(self, outfile_prefix: str) -> list:
    method _sort_and_unique_bboxes (line 585) | def _sort_and_unique_bboxes(self,

FILE: mmpose/evaluation/metrics/coco_wholebody_metric.py
  class CocoWholeBodyMetric (line 14) | class CocoWholeBodyMetric(CocoMetric):
    method gt_to_coco_json (line 81) | def gt_to_coco_json(self, gt_dicts: Sequence[dict],
    method results2json (line 176) | def results2json(self, keypoints: Dict[int, list],
    method _do_python_keypoint_eval (line 222) | def _do_python_keypoint_eval(self, outfile_prefix: str) -> list:

FILE: mmpose/evaluation/metrics/hand_metric.py
  class InterHandMetric (line 14) | class InterHandMetric(BaseMetric):
    method __init__ (line 18) | def __init__(self,
    method process (line 30) | def process(self, data_batch: Sequence[dict],
    method compute_metrics (line 145) | def compute_metrics(self, results: list) -> Dict[str, float]:

FILE: mmpose/evaluation/metrics/keypoint_2d_metrics.py
  class PCKAccuracy (line 15) | class PCKAccuracy(BaseMetric):
    method __init__ (line 70) | def __init__(self,
    method process (line 88) | def process(self, data_batch: Sequence[dict],
    method compute_metrics (line 151) | def compute_metrics(self, results: list) -> Dict[str, float]:
  class MpiiPCKAccuracy (line 212) | class MpiiPCKAccuracy(PCKAccuracy):
    method __init__ (line 271) | def __init__(self,
    method compute_metrics (line 282) | def compute_metrics(self, results: list) -> Dict[str, float]:
  class JhmdbPCKAccuracy (line 374) | class JhmdbPCKAccuracy(PCKAccuracy):
    method __init__ (line 436) | def __init__(self,
    method compute_metrics (line 447) | def compute_metrics(self, results: list) -> Dict[str, float]:
  class AUC (line 539) | class AUC(BaseMetric):
    method __init__ (line 564) | def __init__(self,
    method process (line 573) | def process(self, data_batch: Sequence[dict],
    method compute_metrics (line 606) | def compute_metrics(self, results: list) -> Dict[str, float]:
  class EPE (line 638) | class EPE(BaseMetric):
    method process (line 658) | def process(self, data_batch: Sequence[dict],
    method compute_metrics (line 691) | def compute_metrics(self, results: list) -> Dict[str, float]:
  class NME (line 722) | class NME(BaseMetric):
    method __init__ (line 776) | def __init__(self,
    method process (line 797) | def process(self, data_batch: Sequence[dict],
    method compute_metrics (line 847) | def compute_metrics(self, results: list) -> Dict[str, float]:
    method _get_normalize_factor (line 906) | def _get_normalize_factor(self, gt_coords: np.ndarray) -> np.ndarray:

FILE: mmpose/evaluation/metrics/keypoint_3d_metrics.py
  class MPJPE (line 15) | class MPJPE(BaseMetric):
    method __init__ (line 47) | def __init__(self,
    method process (line 61) | def process(self, data_batch: Sequence[dict],
    method compute_metrics (line 104) | def compute_metrics(self, results: list) -> Dict[str, float]:

FILE: mmpose/evaluation/metrics/keypoint_partition_metric.py
  class KeypointPartitionMetric (line 14) | class KeypointPartitionMetric(BaseMetric):
    method __init__ (line 64) | def __init__(
    method dataset_meta (line 139) | def dataset_meta(self, dataset_meta: dict) -> None:
    method process (line 149) | def process(self, data_batch: Sequence[dict],
    method compute_metrics (line 191) | def compute_metrics(self, results: list) -> dict:
    method evaluate (line 194) | def evaluate(self, size: int) -> dict:

FILE: mmpose/evaluation/metrics/posetrack18_metric.py
  class PoseTrack18Metric (line 22) | class PoseTrack18Metric(CocoMetric):
    method __init__ (line 74) | def __init__(self,
    method results2json (line 100) | def results2json(self, keypoints: Dict[int, list],
    method _do_python_keypoint_eval (line 173) | def _do_python_keypoint_eval(self, outfile_prefix: str) -> List[tuple]:

FILE: mmpose/evaluation/metrics/simple_keypoint_3d_metrics.py
  class SimpleMPJPE (line 13) | class SimpleMPJPE(BaseMetric):
    method __init__ (line 45) | def __init__(self,
    method process (line 59) | def process(self, data_batch: Sequence[dict],
    method compute_metrics (line 92) | def compute_metrics(self, results: list) -> Dict[str, float]:

FILE: mmpose/models/backbones/alexnet.py
  class AlexNet (line 9) | class AlexNet(BaseBackbone):
    method __init__ (line 22) | def __init__(self, num_classes=-1, init_cfg=None):
    method forward (line 51) | def forward(self, x):

FILE: mmpose/models/backbones/base_backbone.py
  class BaseBackbone (line 7) | class BaseBackbone(BaseModule, metaclass=ABCMeta):
    method forward (line 15) | def forward(self, x):
    method train (line 23) | def train(self, mode=True):

FILE: mmpose/models/backbones/cpm.py
  class CpmBlock (line 13) | class CpmBlock(BaseModule):
    method __init__ (line 24) | def __init__(self,
    method forward (line 48) | def forward(self, x):
  class CPM (line 55) | class CPM(BaseBackbone):
    method __init__ (line 96) | def __init__(
    method forward (line 165) | def forward(self, x):

FILE: mmpose/models/backbones/csp_darknet.py
  class Focus (line 14) | class Focus(nn.Module):
    method __init__ (line 30) | def __init__(self,
    method forward (line 49) | def forward(self, x):
  class SPPBottleneck (line 67) | class SPPBottleneck(BaseModule):
    method __init__ (line 85) | def __init__(self,
    method forward (line 116) | def forward(self, x):
  class CSPDarknet (line 126) | class CSPDarknet(BaseModule):
    method __init__ (line 179) | def __init__(self,
    method _freeze_stages (line 263) | def _freeze_stages(self):
    method train (line 271) | def train(self, mode=True):
    method forward (line 279) | def forward(self, x):

FILE: mmpose/models/backbones/cspnext.py
  class CSPNeXt (line 18) | class CSPNeXt(BaseModule):
    method __init__ (line 64) | def __init__(
    method _freeze_stages (line 172) | def _freeze_stages(self) -> None:
    method train (line 180) | def train(self, mode=True) -> None:
    method forward (line 188) | def forward(self, x: Tuple[Tensor, ...]) -> Tuple[Tensor, ...]:

FILE: mmpose/models/backbones/dstformer.py
  class Attention (line 12) | class Attention(BaseModule):
    method __init__ (line 14) | def __init__(self,
    method forward (line 37) | def forward(self, x, seq_len=1):
    method forward_spatial (line 58) | def forward_spatial(self, q, k, v):
    method forward_temporal (line 68) | def forward_temporal(self, q, k, v, seq_len=8):
  class AttentionBlock (line 86) | class AttentionBlock(BaseModule):
    method __init__ (line 88) | def __init__(self,
    method forward (line 136) | def forward(self, x, seq_len=1):
  class DSTFormer (line 153) | class DSTFormer(BaseBackbone):
    method __init__ (line 189) | def __init__(self,
    method forward (line 257) | def forward(self, x):
    method init_weights (line 289) | def init_weights(self):

FILE: mmpose/models/backbones/hourglass.py
  class HourglassModule (line 13) | class HourglassModule(BaseModule):
    method __init__ (line 29) | def __init__(self,
    method forward (line 79) | def forward(self, x):
  class HourglassNet (line 90) | class HourglassNet(BaseBackbone):
    method __init__ (line 130) | def __init__(
    method forward (line 190) | def forward(self, x):

FILE: mmpose/models/backbones/hourglass_ae.py
  class HourglassAEModule (line 12) | class HourglassAEModule(BaseModule):
    method __init__ (line 26) | def __init__(self,
    method forward (line 59) | def forward(self, x):
  class HourglassAENet (line 71) | class HourglassAENet(BaseBackbone):
    method __init__ (line 112) | def __init__(
    method forward (line 191) | def forward(self, x):

FILE: mmpose/models/backbones/hrformer.py
  function nlc_to_nchw (line 16) | def nlc_to_nchw(x, hw_shape):
  function nchw_to_nlc (line 33) | def nchw_to_nlc(x):
  function build_drop_path (line 46) | def build_drop_path(drop_path_rate):
  class WindowMSA (line 51) | class WindowMSA(BaseModule):
    method __init__ (line 72) | def __init__(self,
    method init_weights (line 111) | def init_weights(self):
    method forward (line 114) | def forward(self, x, mask=None):
    method double_step_seq (line 155) | def double_step_seq(step1, len1, step2, len2):
  class LocalWindowSelfAttention (line 161) | class LocalWindowSelfAttention(BaseModule):
    method __init__ (line 186) | def __init__(self,
    method forward (line 213) | def forward(self, x, H, W, **kwargs):
  class CrossFFN (line 258) | class CrossFFN(BaseModule):
    method __init__ (line 275) | def __init__(self,
    method forward (line 302) | def forward(self, x, H, W):
  class HRFormerBlock (line 312) | class HRFormerBlock(BaseModule):
    method __init__ (line 335) | def __init__(self,
    method forward (line 373) | def forward(self, x):
    method extra_repr (line 384) | def extra_repr(self):
  class HRFomerModule (line 390) | class HRFomerModule(HRModule):
    method __init__ (line 425) | def __init__(self,
    method _make_one_branch (line 457) | def _make_one_branch(self,
    method _make_fuse_layers (line 500) | def _make_fuse_layers(self):
    method get_num_inchannels (line 570) | def get_num_inchannels(self):
  class HRFormer (line 576) | class HRFormer(HRNet):
    method __init__ (line 669) | def __init__(
    method _make_stage (line 713) | def _make_stage(self,

FILE: mmpose/models/backbones/hrnet.py
  class HRModule (line 14) | class HRModule(BaseModule):
    method __init__ (line 21) | def __init__(self,
    method _check_branches (line 54) | def _check_branches(num_branches, num_blocks, in_channels, num_channels):
    method _make_one_branch (line 71) | def _make_one_branch(self,
    method _make_branches (line 117) | def _make_branches(self, num_branches, block, num_blocks, num_channels):
    method _make_fuse_layers (line 127) | def _make_fuse_layers(self):
    method forward (line 194) | def forward(self, x):
  class HRNet (line 215) | class HRNet(BaseBackbone):
    method __init__ (line 284) | def __init__(
    method norm1 (line 401) | def norm1(self):
    method norm2 (line 406) | def norm2(self):
    method _make_transition_layer (line 410) | def _make_transition_layer(self, num_channels_pre_layer,
    method _make_layer (line 457) | def _make_layer(self, block, in_channels, out_channels, blocks, stride...
    method _make_stage (line 492) | def _make_stage(self, layer_config, in_channels, multiscale_output=True):
    method _freeze_stages (line 525) | def _freeze_stages(self):
    method init_weights (line 551) | def init_weights(self):
    method forward (line 567) | def forward(self, x):
    method train (line 603) | def train(self, mode=True):

FILE: mmpose/models/backbones/litehrnet.py
  class SpatialWeighting (line 21) | class SpatialWeighting(BaseModule):
    method __init__ (line 38) | def __init__(self,
    method forward (line 68) | def forward(self, x):
  class CrossResolutionWeighting (line 75) | class CrossResolutionWeighting(BaseModule):
    method __init__ (line 92) | def __init__(self,
    method forward (line 123) | def forward(self, x):
  class ConditionalChannelWeighting (line 137) | class ConditionalChannelWeighting(BaseModule):
    method __init__ (line 154) | def __init__(self,
    method forward (line 193) | def forward(self, x):
  class Stem (line 217) | class Stem(BaseModule):
    method __init__ (line 236) | def __init__(self,
    method forward (line 321) | def forward(self, x):
  class IterativeHead (line 345) | class IterativeHead(BaseModule):
    method __init__ (line 356) | def __init__(self, in_channels, norm_cfg=dict(type='BN'), init_cfg=None):
    method forward (line 389) | def forward(self, x):
  class ShuffleUnit (line 409) | class ShuffleUnit(BaseModule):
    method __init__ (line 428) | def __init__(self,
    method forward (line 506) | def forward(self, x):
  class LiteHRModule (line 527) | class LiteHRModule(BaseModule):
    method __init__ (line 550) | def __init__(self,
    method _check_branches (line 585) | def _check_branches(self, num_branches, in_channels):
    method _make_weighting_blocks (line 592) | def _make_weighting_blocks(self, num_blocks, reduce_ratio, stride=1):
    method _make_one_branch (line 607) | def _make_one_branch(self, branch_index, num_blocks, stride=1):
    method _make_naive_branches (line 632) | def _make_naive_branches(self, num_branches, num_blocks):
    method _make_fuse_layers (line 641) | def _make_fuse_layers(self):
    method forward (line 726) | def forward(self, x):
  class LiteHRNet (line 756) | class LiteHRNet(BaseBackbone):
    method __init__ (line 812) | def __init__(self,
    method _make_transition_layer (line 865) | def _make_transition_layer(self, num_channels_pre_layer,
    method _make_stage (line 933) | def _make_stage(self,
    method forward (line 969) | def forward(self, x):
    method train (line 993) | def train(self, mode=True):

FILE: mmpose/models/backbones/mobilenet_v2.py
  class InvertedResidual (line 15) | class InvertedResidual(BaseModule):
    method __init__ (line 36) | def __init__(self,
    method forward (line 88) | def forward(self, x):
  class MobileNetV2 (line 104) | class MobileNetV2(BaseBackbone):
    method __init__ (line 142) | def __init__(self,
    method make_layer (line 223) | def make_layer(self, out_channels, num_blocks, stride, expand_ratio):
    method forward (line 251) | def forward(self, x):
    method _freeze_stages (line 263) | def _freeze_stages(self):
    method train (line 273) | def train(self, mode=True):

FILE: mmpose/models/backbones/mobilenet_v3.py
  class MobileNetV3 (line 13) | class MobileNetV3(BaseBackbone):
    method __init__ (line 74) | def __init__(self,
    method _make_layer (line 123) | def _make_layer(self):
    method forward (line 156) | def forward(self, x):
    method _freeze_stages (line 169) | def _freeze_stages(self):
    method train (line 179) | def train(self, mode=True):

FILE: mmpose/models/backbones/mspn.py
  class Bottleneck (line 18) | class Bottleneck(_Bottleneck):
    method __init__ (line 34) | def __init__(self, in_channels, out_channels, **kwargs):
  class DownsampleModule (line 38) | class DownsampleModule(BaseModule):
    method __init__ (line 55) | def __init__(self,
    method _make_layer (line 80) | def _make_layer(self, block, out_channels, blocks, stride=1):
    method forward (line 107) | def forward(self, x, skip1, skip2):
  class UpsampleUnit (line 121) | class UpsampleUnit(BaseModule):
    method __init__ (line 145) | def __init__(self,
    method forward (line 214) | def forward(self, x, up_x):
  class UpsampleModule (line 240) | class UpsampleModule(BaseModule):
    method __init__ (line 259) | def __init__(self,
    method forward (line 293) | def forward(self, x):
  class SingleStageNetwork (line 315) | class SingleStageNetwork(BaseModule):
    method __init__ (line 337) | def __init__(self,
    method forward (line 365) | def forward(self, x, skip1, skip2):
  class ResNetTop (line 372) | class ResNetTop(BaseModule):
    method __init__ (line 383) | def __init__(self, norm_cfg=dict(type='BN'), channels=64, init_cfg=None):
    method forward (line 397) | def forward(self, img):
  class MSPN (line 402) | class MSPN(BaseBackbone):
    method __init__ (line 450) | def __init__(self,
    method forward (line 496) | def forward(self, x):
    method init_weights (line 508) | def init_weights(self):

FILE: mmpose/models/backbones/pvt.py
  class MixFFN (line 22) | class MixFFN(BaseModule):
    method __init__ (line 46) | def __init__(self,
    method forward (line 92) | def forward(self, x, hw_shape, identity=None):
  class SpatialReductionAttention (line 101) | class SpatialReductionAttention(MultiheadAttention):
    method __init__ (line 128) | def __init__(self,
    method forward (line 168) | def forward(self, x, hw_shape, identity=None):
    method legacy_forward (line 199) | def legacy_forward(self, x, hw_shape, identity=None):
  class PVTEncoderLayer (line 218) | class PVTEncoderLayer(BaseModule):
    method __init__ (line 244) | def __init__(self,
    method forward (line 283) | def forward(self, x, hw_shape):
  class AbsolutePositionEmbedding (line 290) | class AbsolutePositionEmbedding(BaseModule):
    method __init__ (line 302) | def __init__(self, pos_shape, pos_dim, drop_rate=0., init_cfg=None):
    method init_weights (line 320) | def init_weights(self):
    method resize_pos_embed (line 323) | def resize_pos_embed(self, pos_embed, input_shape, mode='bilinear'):
    method forward (line 352) | def forward(self, x, hw_shape, mode='bilinear'):
  class PyramidVisionTransformer (line 358) | class PyramidVisionTransformer(BaseModule):
    method __init__ (line 416) | def __init__(self,
    method init_weights (line 520) | def init_weights(self):
    method forward (line 541) | def forward(self, x):
  class PyramidVisionTransformerV2 (line 558) | class PyramidVisionTransformerV2(PyramidVisionTransformer):
    method __init__ (line 562) | def __init__(self, **kwargs):

FILE: mmpose/models/backbones/regnet.py
  class RegNet (line 14) | class RegNet(ResNet):
    method __init__ (line 97) | def __init__(self,
    method _make_stem_layer (line 213) | def _make_stem_layer(self, in_channels, base_channels):
    method generate_regnet (line 228) | def generate_regnet(initial_width,
    method quantize_float (line 260) | def quantize_float(number, divisor):
    method adjust_width_group (line 272) | def adjust_width_group(self, widths, bottleneck_ratio, groups):
    method get_stages_from_blocks (line 297) | def get_stages_from_blocks(self, widths):
    method forward (line 319) | def forward(self, x):

FILE: mmpose/models/backbones/resnest.py
  class RSoftmax (line 14) | class RSoftmax(nn.Module):
    method __init__ (line 22) | def __init__(self, radix, groups):
    method forward (line 27) | def forward(self, x):
  class SplitAttentionConv2d (line 38) | class SplitAttentionConv2d(BaseModule):
    method __init__ (line 59) | def __init__(self,
    method norm0 (line 101) | def norm0(self):
    method norm1 (line 105) | def norm1(self):
    method forward (line 108) | def forward(self, x):
  class Bottleneck (line 136) | class Bottleneck(_Bottleneck):
    method __init__ (line 168) | def __init__(self,
    method forward (line 231) | def forward(self, x):
  class ResNeSt (line 266) | class ResNeSt(ResNetV1d):
    method __init__ (line 330) | def __init__(self,
    method make_res_layer (line 345) | def make_res_layer(self, **kwargs):

FILE: mmpose/models/backbones/resnet.py
  class BasicBlock (line 14) | class BasicBlock(BaseModule):
    method __init__ (line 39) | def __init__(self,
    method norm1 (line 95) | def norm1(self):
    method norm2 (line 100) | def norm2(self):
    method forward (line 104) | def forward(self, x):
  class Bottleneck (line 134) | class Bottleneck(BaseModule):
    method __init__ (line 159) | def __init__(self,
    method norm1 (line 233) | def norm1(self):
    method norm2 (line 238) | def norm2(self):
    method norm3 (line 243) | def norm3(self):
    method forward (line 247) | def forward(self, x):
  function get_expansion (line 281) | def get_expansion(block, expansion=None):
  class ResLayer (line 316) | class ResLayer(nn.Sequential):
    method __init__ (line 340) | def __init__(self,
  class ResNet (line 430) | class ResNet(BaseBackbone):
    method __init__ (line 501) | def __init__(self,
    method make_res_layer (line 586) | def make_res_layer(self, **kwargs):
    method norm1 (line 591) | def norm1(self):
    method _make_stem_layer (line 595) | def _make_stem_layer(self, in_channels, stem_channels):
    method _freeze_stages (line 641) | def _freeze_stages(self):
    method init_weights (line 660) | def init_weights(self):
    method forward (line 676) | def forward(self, x):
    method train (line 693) | def train(self, mode=True):
  class ResNetV1d (line 705) | class ResNetV1d(ResNet):
    method __init__ (line 714) | def __init__(self, **kwargs):

FILE: mmpose/models/backbones/resnext.py
  class Bottleneck (line 9) | class Bottleneck(_Bottleneck):
    method __init__ (line 34) | def __init__(self,
  class ResNeXt (line 90) | class ResNeXt(ResNet):
    method __init__ (line 161) | def __init__(self, depth, groups=32, width_per_group=4, **kwargs):
    method make_res_layer (line 166) | def make_res_layer(self, **kwargs):

FILE: mmpose/models/backbones/rsn.py
  class RSB (line 14) | class RSB(BaseModule):
    method __init__ (line 37) | def __init__(self,
    method forward (line 93) | def forward(self, x):
  class Downsample_module (line 128) | class Downsample_module(BaseModule):
    method __init__ (line 148) | def __init__(self,
    method _make_layer (line 186) | def _make_layer(self,
    method forward (line 228) | def forward(self, x, skip1, skip2):
  class Upsample_unit (line 242) | class Upsample_unit(BaseModule):
    method __init__ (line 266) | def __init__(self,
    method forward (line 335) | def forward(self, x, up_x):
  class Upsample_module (line 361) | class Upsample_module(BaseModule):
    method __init__ (line 380) | def __init__(self,
    method forward (line 413) | def forward(self, x):
  class Single_stage_RSN (line 435) | class Single_stage_RSN(BaseModule):
    method __init__ (line 460) | def __init__(self,
    method forward (line 492) | def forward(self, x, skip1, skip2):
  class ResNet_top (line 499) | class ResNet_top(BaseModule):
    method __init__ (line 510) | def __init__(self, norm_cfg=dict(type='BN'), channels=64, init_cfg=None):
    method forward (line 524) | def forward(self, img):
  class RSN (line 529) | class RSN(BaseBackbone):
    method __init__ (line 579) | def __init__(self,
    method forward (line 630) | def forward(self, x):

FILE: mmpose/models/backbones/scnet.py
  class SCConv (line 15) | class SCConv(BaseModule):
    method __init__ (line 31) | def __init__(self,
    method forward (line 81) | def forward(self, x):
  class SCBottleneck (line 94) | class SCBottleneck(Bottleneck):
    method __init__ (line 104) | def __init__(self, in_channels, out_channels, **kwargs):
    method forward (line 157) | def forward(self, x):
  class SCNet (line 196) | class SCNet(ResNet):
    method __init__ (line 249) | def __init__(self, depth, **kwargs):

FILE: mmpose/models/backbones/seresnet.py
  class SEBottleneck (line 9) | class SEBottleneck(Bottleneck):
    method __init__ (line 18) | def __init__(self, in_channels, out_channels, se_ratio=16, **kwargs):
    method forward (line 22) | def forward(self, x):
  class SEResNet (line 58) | class SEResNet(ResNet):
    method __init__ (line 127) | def __init__(self, depth, se_ratio=16, **kwargs):
    method make_res_layer (line 133) | def make_res_layer(self, **kwargs):

FILE: mmpose/models/backbones/seresnext.py
  class SEBottleneck (line 10) | class SEBottleneck(_SEBottleneck):
    method __init__ (line 39) | def __init__(self,
  class SEResNeXt (line 97) | class SEResNeXt(SEResNet):
    method __init__ (line 169) | def __init__(self, depth, groups=32, width_per_group=4, **kwargs):
    method make_res_layer (line 174) | def make_res_layer(self, **kwargs):

FILE: mmpose/models/backbones/shufflenet_v1.py
  class ShuffleUnit (line 16) | class ShuffleUnit(BaseModule):
    method __init__ (line 48) | def __init__(self,
    method _add (line 119) | def _add(x, out):
    method _concat (line 124) | def _concat(x, out):
    method forward (line 128) | def forward(self, x):
  class ShuffleNetV1 (line 159) | class ShuffleNetV1(BaseBackbone):
    method __init__ (line 194) | def __init__(self,
    method _freeze_stages (line 270) | def _freeze_stages(self):
    method init_weights (line 280) | def init_weights(self, pretrained=None):
    method make_layer (line 291) | def make_layer(self, out_channels, num_blocks, first_block=False):
    method forward (line 320) | def forward(self, x):
    method train (line 332) | def train(self, mode=True):

FILE: mmpose/models/backbones/shufflenet_v2.py
  class InvertedResidual (line 15) | class InvertedResidual(BaseModule):
    method __init__ (line 34) | def __init__(self,
    method forward (line 115) | def forward(self, x):
  class ShuffleNetV2 (line 137) | class ShuffleNetV2(BaseBackbone):
    method __init__ (line 170) | def __init__(self,
    method _make_layer (line 248) | def _make_layer(self, out_channels, num_blocks):
    method _freeze_stages (line 271) | def _freeze_stages(self):
    method init_weights (line 282) | def init_weights(self):
    method forward (line 293) | def forward(self, x):
    method train (line 305) | def train(self, mode=True):

FILE: mmpose/models/backbones/swin.py
  class WindowMSA (line 23) | class WindowMSA(BaseModule):
    method __init__ (line 42) | def __init__(self,
    method init_weights (line 78) | def init_weights(self):
    method forward (line 81) | def forward(self, x, mask=None):
    method double_step_seq (line 122) | def double_step_seq(step1, len1, step2, len2):
  class ShiftWindowMSA (line 128) | class ShiftWindowMSA(BaseModule):
    method __init__ (line 151) | def __init__(self,
    method forward (line 179) | def forward(self, query, hw_shape):
    method window_reverse (line 255) | def window_reverse(self, windows, H, W):
    method window_partition (line 271) | def window_partition(self, x):
  class SwinBlock (line 287) | class SwinBlock(BaseModule):
    method __init__ (line 312) | def __init__(self,
    method forward (line 355) | def forward(self, x, hw_shape):
  class SwinBlockSequence (line 378) | class SwinBlockSequence(BaseModule):
    method __init__ (line 407) | def __init__(self,
    method forward (line 451) | def forward(self, x, hw_shape):
  class SwinTransformer (line 463) | class SwinTransformer(BaseBackbone):
    method __init__ (line 523) | def __init__(self,
    method train (line 632) | def train(self, mode=True):
    method _freeze_stages (line 637) | def _freeze_stages(self):
    method init_weights (line 659) | def init_weights(self, pretrained=None):
    method forward (line 721) | def forward(self, x):

FILE: mmpose/models/backbones/tcn.py
  class BasicTemporalBlock (line 13) | class BasicTemporalBlock(BaseModule):
    method __init__ (line 40) | def __init__(self,
    method forward (line 103) | def forward(self, x):
  class TCN (line 136) | class TCN(BaseBackbone):
    method __init__ (line 195) | def __init__(self,
    method forward (line 272) | def forward(self, x):

FILE: mmpose/models/backbones/utils/channel_shuffle.py
  function channel_shuffle (line 5) | def channel_shuffle(x, groups):

FILE: mmpose/models/backbones/utils/ckpt_convert.py
  function swin_converter (line 10) | def swin_converter(ckpt):

FILE: mmpose/models/backbones/utils/inverted_residual.py
  class InvertedResidual (line 11) | class InvertedResidual(nn.Module):
    method __init__ (line 41) | def __init__(self,
    method forward (line 104) | def forward(self, x):

FILE: mmpose/models/backbones/utils/make_divisible.py
  function make_divisible (line 2) | def make_divisible(value, divisor, min_value=None, min_ratio=0.9):

FILE: mmpose/models/backbones/utils/se_layer.py
  class SELayer (line 7) | class SELayer(nn.Module):
    method __init__ (line 24) | def __init__(self,
    method forward (line 50) | def forward(self, x):

FILE: mmpose/models/backbones/utils/utils.py
  function load_checkpoint (line 7) | def load_checkpoint(model,
  function get_state_dict (line 55) | def get_state_dict(filename, map_location='cpu'):

FILE: mmpose/models/backbones/v2v_net.py
  class Basic3DBlock (line 17) | class Basic3DBlock(BaseModule):
    method __init__ (line 32) | def __init__(self,
    method forward (line 50) | def forward(self, x):
  class Res3DBlock (line 55) | class Res3DBlock(BaseModule):
    method __init__ (line 71) | def __init__(self,
    method forward (line 114) | def forward(self, x):
  class Pool3DBlock (line 121) | class Pool3DBlock(BaseModule):
    method __init__ (line 128) | def __init__(self, pool_size):
    method forward (line 132) | def forward(self, x):
  class Upsample3DBlock (line 138) | class Upsample3DBlock(BaseModule):
    method __init__ (line 152) | def __init__(self,
    method forward (line 170) | def forward(self, x):
  class EncoderDecorder (line 175) | class EncoderDecorder(BaseModule):
    method __init__ (line 184) | def __init__(self, in_channels=32, init_cfg=None):
    method forward (line 204) | def forward(self, x):
  class V2VNet (line 228) | class V2VNet(BaseBackbone):
    method __init__ (line 249) | def __init__(self,
    method forward (line 269) | def forward(self, x):

FILE: mmpose/models/backbones/vgg.py
  function make_vgg_layer (line 10) | def make_vgg_layer(in_channels,
  class VGG (line 39) | class VGG(BaseBackbone):
    method __init__ (line 90) | def __init__(self,
    method forward (line 169) | def forward(self, x):
    method _freeze_stages (line 185) | def _freeze_stages(self):
    method train (line 194) | def train(self, mode=True):

FILE: mmpose/models/backbones/vipnas_mbv3.py
  class ViPNAS_MobileNetV3 (line 13) | class ViPNAS_MobileNetV3(BaseBackbone):
    method __init__ (line 52) | def __init__(
    method _make_layer (line 101) | def _make_layer(self):
    method forward (line 148) | def forward(self, x):
    method _freeze_stages (line 157) | def _freeze_stages(self):
    method train (line 167) | def train(self, mode=True):

FILE: mmpose/models/backbones/vipnas_resnet.py
  class ViPNAS_Bottleneck (line 15) | class ViPNAS_Bottleneck(BaseModule):
    method __init__ (line 44) | def __init__(self,
    method norm1 (line 128) | def norm1(self):
    method norm2 (line 133) | def norm2(self):
    method norm3 (line 138) | def norm3(self):
    method forward (line 142) | def forward(self, x):
  function get_expansion (line 179) | def get_expansion(block, expansion=None):
  class ViPNAS_ResLayer (line 212) | class ViPNAS_ResLayer(Sequential):
    method __init__ (line 244) | def __init__(self,
  class ViPNAS_ResNet (line 350) | class ViPNAS_ResNet(BaseBackbone):
    method __init__ (line 408) | def __init__(self,
    method make_res_layer (line 497) | def make_res_layer(self, **kwargs):
    method norm1 (line 502) | def norm1(self):
    method _make_stem_layer (line 506) | def _make_stem_layer(self, in_channels, stem_channels, kernel_size):
    method _freeze_stages (line 552) | def _freeze_stages(self):
    method forward (line 571) | def forward(self, x):
    method train (line 588) | def train(self, mode=True):

FILE: mmpose/models/builder.py
  function build_backbone (line 13) | def build_backbone(cfg):
  function build_neck (line 18) | def build_neck(cfg):
  function build_head (line 23) | def build_head(cfg):
  function build_loss (line 28) | def build_loss(cfg):
  function build_pose_estimator (line 33) | def build_pose_estimator(cfg):
  function build_posenet (line 38) | def build_posenet(cfg):

FILE: mmpose/models/data_preprocessors/batch_augmentation.py
  class BatchSyncRandomResize (line 18) | class BatchSyncRandomResize(nn.Module):
    method __init__ (line 30) | def __init__(self,
    method forward (line 42) | def forward(self, inputs: Tensor, data_samples: List[PoseDataSample]
    method _get_random_size (line 101) | def _get_random_size(self, aspect_ratio: float,

FILE: mmpose/models/data_preprocessors/data_preprocessor.py
  class PoseDataPreprocessor (line 14) | class PoseDataPreprocessor(ImgDataPreprocessor):
    method __init__ (line 53) | def __init__(self,
    method forward (line 77) | def forward(self, data: dict, training: bool = False) -> dict:
    method _get_pad_shape (line 107) | def _get_pad_shape(self, data: dict) -> List[tuple]:

FILE: mmpose/models/distillers/dwpose_distiller.py
  class DWPoseDistiller (line 22) | class DWPoseDistiller(BaseModel, metaclass=ABCMeta):
    method __init__ (line 49) | def __init__(self,
    method init_weights (line 87) | def init_weights(self):
    method set_epoch (line 93) | def set_epoch(self):
    method forward (line 102) | def forward(self,
    method loss (line 120) | def loss(self, inputs: Tensor, data_samples: SampleList) -> dict:
    method predict (line 170) | def predict(self, inputs, data_samples):
    method extract_feat (line 218) | def extract_feat(self, inputs: Tensor) -> Tuple[Tensor]:
    method head_loss (line 231) | def head_loss(
    method _forward (line 280) | def _forward(self, inputs: Tensor):

FILE: mmpose/models/heads/base_head.py
  class BaseHead (line 14) | class BaseHead(BaseModule, metaclass=ABCMeta):
    method forward (line 23) | def forward(self, feats: Tuple[Tensor]):
    method predict (line 27) | def predict(self,
    method loss (line 34) | def loss(self,
    method decode (line 40) | def decode(self, batch_outputs: Union[Tensor,

FILE: mmpose/models/heads/coord_cls_heads/rtmcc_head.py
  class RTMCCHead (line 24) | class RTMCCHead(BaseHead):
    method __init__ (line 58) | def __init__(
    method forward (line 134) | def forward(self, feats: Tuple[Tensor]) -> Tuple[Tensor, Tensor]:
    method predict (line 163) | def predict(
    method loss (line 248) | def loss(
    method default_init_cfg (line 297) | def default_init_cfg(self):

FILE: mmpose/models/heads/coord_cls_heads/rtmw_head.py
  class RTMWHead (line 25) | class RTMWHead(BaseHead):
    method __init__ (line 56) | def __init__(
    method forward (line 159) | def forward(self, feats: Tuple[Tensor]) -> Tuple[Tensor, Tensor]:
    method predict (line 197) | def predict(
    method loss (line 282) | def loss(
    method default_init_cfg (line 331) | def default_init_cfg(self):

FILE: mmpose/models/heads/coord_cls_heads/simcc_head.py
  class SimCCHead (line 24) | class SimCCHead(BaseHead):
    method __init__ (line 73) | def __init__(
    method _make_deconv_head (line 161) | def _make_deconv_head(
    method forward (line 200) | def forward(self, feats: Tuple[Tensor]) -> Tuple[Tensor, Tensor]:
    method predict (line 228) | def predict(
    method loss (line 315) | def loss(
    method default_init_cfg (line 364) | def default_init_cfg(self):

FILE: mmpose/models/heads/heatmap_heads/ae_head.py
  class AssociativeEmbeddingHead (line 20) | class AssociativeEmbeddingHead(HeatmapHead):
    method __init__ (line 22) | def __init__(self,
    method predict (line 62) | def predict(self,
    method _flip_tags (line 197) | def _flip_tags(self,
    method decode (line 230) | def decode(self, batch_outputs: Union[Tensor,
    method forward (line 281) | def forward(self, feats: Tuple[Tensor]) -> Tuple[Tensor, Tensor]:
    method loss (line 299) | def loss(self,

FILE: mmpose/models/heads/heatmap_heads/cid_head.py
  function smooth_heatmaps (line 20) | def smooth_heatmaps(heatmaps: Tensor, blur_kernel_size: int) -> Tensor:
  class TruncSigmoid (line 36) | class TruncSigmoid(nn.Sigmoid):
    method __init__ (line 47) | def __init__(self, min: float = 0.0, max: float = 1.0):
    method forward (line 52) | def forward(self, input: Tensor) -> Tensor:
  class IIAModule (line 59) | class IIAModule(BaseModule):
    method __init__ (line 72) | def __init__(
    method forward (line 89) | def forward(self, feats: Tensor):
    method _sample_feats (line 94) | def _sample_feats(self, feats: Tensor, indices: Tensor) -> Tensor:
    method _hierarchical_pool (line 121) | def _hierarchical_pool(self, heatmaps: Tensor) -> Tensor:
    method forward_train (line 140) | def forward_train(self, feats: Tensor, instance_coords: Tensor,
    method forward_test (line 160) | def forward_test(
  class ChannelAttention (line 209) | class ChannelAttention(nn.Module):
    method __init__ (line 219) | def __init__(self, in_channels: int, out_channels: int):
    method forward (line 223) | def forward(self, global_feats: Tensor, instance_feats: Tensor) -> Ten...
  class SpatialAttention (line 230) | class SpatialAttention(nn.Module):
    method __init__ (line 240) | def __init__(self, in_channels, out_channels):
    method _get_pixel_coords (line 246) | def _get_pixel_coords(self, heatmap_size: Tuple, device: str = 'cpu'):
    method forward (line 263) | def forward(self, global_feats: Tensor, instance_feats: Tensor,
  class GFDModule (line 294) | class GFDModule(BaseModule):
    method __init__ (line 309) | def __init__(
    method forward (line 342) | def forward(
  class CIDHead (line 381) | class CIDHead(BaseHead):
    method __init__ (line 414) | def __init__(self,
    method default_init_cfg (line 483) | def default_init_cfg(self):
    method forward (line 490) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method predict (line 510) | def predict(self,
    method loss (line 603) | def loss(self,
    method _load_state_dict_pre_hook (line 699) | def _load_state_dict_pre_hook(self, state_dict, prefix, local_meta, *a...

FILE: mmpose/models/heads/heatmap_heads/cpm_head.py
  class CPMHead (line 21) | class CPMHead(BaseHead):
    method __init__ (line 54) | def __init__(self,
    method default_init_cfg (line 128) | def default_init_cfg(self):
    method _make_deconv_layers (line 136) | def _make_deconv_layers(self, in_channels: int,
    method forward (line 173) | def forward(self, feats: Sequence[Tensor]) -> List[Tensor]:
    method predict (line 194) | def predict(self,
    method loss (line 254) | def loss(self,

FILE: mmpose/models/heads/heatmap_heads/heatmap_head.py
  class HeatmapHead (line 21) | class HeatmapHead(BaseHead):
    method __init__ (line 57) | def __init__(self,
    method _make_conv_layers (line 132) | def _make_conv_layers(self, in_channels: int,
    method _make_deconv_layers (line 155) | def _make_deconv_layers(self, in_channels: int,
    method default_init_cfg (line 193) | def default_init_cfg(self):
    method forward (line 201) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method predict (line 219) | def predict(self,
    method loss (line 278) | def loss(self,
    method _load_state_dict_pre_hook (line 319) | def _load_state_dict_pre_hook(self, state_dict, prefix, local_meta, *a...

FILE: mmpose/models/heads/heatmap_heads/internet_head.py
  function make_linear_layers (line 23) | def make_linear_layers(feat_dims, relu_final=False):
  class Heatmap3DHead (line 34) | class Heatmap3DHead(HeatmapHead):
    method __init__ (line 56) | def __init__(self,
    method forward (line 76) | def forward(self, feats: Tensor) -> Tensor:
  class Heatmap1DHead (line 96) | class Heatmap1DHead(nn.Module):
    method __init__ (line 107) | def __init__(self,
    method soft_argmax_1d (line 120) | def soft_argmax_1d(self, heatmap1d):
    method forward (line 128) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method init_weights (line 141) | def init_weights(self):
  class MultilabelClassificationHead (line 148) | class MultilabelClassificationHead(nn.Module):
    method __init__ (line 159) | def __init__(self,
    method init_weights (line 171) | def init_weights(self):
    method forward (line 176) | def forward(self, x):
  class InternetHead (line 183) | class InternetHead(BaseHead):
    method __init__ (line 209) | def __init__(self,
    method forward (line 241) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method predict (line 262) | def predict(self,
    method loss (line 327) | def loss(self,
    method decode (line 393) | def decode(self, batch_outputs: Union[Tensor,

FILE: mmpose/models/heads/heatmap_heads/mspn_head.py
  class PRM (line 23) | class PRM(nn.Module):
    method __init__ (line 36) | def __init__(self,
    method forward (line 80) | def forward(self, x: Tensor) -> Tensor:
  class PredictHeatmap (line 104) | class PredictHeatmap(nn.Module):
    method __init__ (line 116) | def __init__(self,
    method forward (line 152) | def forward(self, feature: Tensor) -> Tensor:
  class MSPNHead (line 170) | class MSPNHead(BaseHead):
    method __init__ (line 203) | def __init__(self,
    method default_init_cfg (line 267) | def default_init_cfg(self):
    method forward (line 276) | def forward(self, feats: Sequence[Sequence[Tensor]]) -> List[Tensor]:
    method predict (line 307) | def predict(self,
    method loss (line 367) | def loss(self,

FILE: mmpose/models/heads/heatmap_heads/vipnas_head.py
  class ViPNASHead (line 15) | class ViPNASHead(HeatmapHead):
    method __init__ (line 57) | def __init__(self,
    method _make_deconv_layers (line 141) | def _make_deconv_layers(self, in_channels: int,

FILE: mmpose/models/heads/hybrid_heads/dekr_head.py
  class AdaptiveActivationBlock (line 27) | class AdaptiveActivationBlock(BaseModule):
    method __init__ (line 40) | def __init__(self,
    method forward (line 82) | def forward(self, x):
  class RescoreNet (line 100) | class RescoreNet(BaseModule):
    method __init__ (line 110) | def __init__(
    method make_feature (line 127) | def make_feature(self, keypoints, keypoint_scores, skeleton):
    method forward (line 160) | def forward(self, keypoints, keypoint_scores, skeleton):
  class DEKRHead (line 169) | class DEKRHead(BaseHead):
    method __init__ (line 200) | def __init__(self,
    method default_init_cfg (line 260) | def default_init_cfg(self):
    method _make_heatmap_conv_layers (line 268) | def _make_heatmap_conv_layers(self, in_channels: int, out_channels: int,
    method _make_displacement_conv_layers (line 288) | def _make_displacement_conv_layers(self, in_channels: int,
    method forward (line 311) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method loss (line 328) | def loss(self,
    method predict (line 375) | def predict(self,
    method decode (line 476) | def decode(self,
    method _load_state_dict_pre_hook (line 548) | def _load_state_dict_pre_hook(self, state_dict, prefix, local_meta, *a...

FILE: mmpose/models/heads/hybrid_heads/rtmo_head.py
  class RTMOHeadModule (line 25) | class RTMOHeadModule(BaseModule):
    method __init__ (line 60) | def __init__(
    method _init_layers (line 99) | def _init_layers(self):
    method _init_cls_branch (line 104) | def _init_cls_branch(self):
    method _init_pose_branch (line 130) | def _init_pose_branch(self):
    method init_weights (line 169) | def init_weights(self):
    method forward (line 180) | def forward(self, x: Tuple[Tensor]) -> Tuple[List]:
  class DCC (line 222) | class DCC(BaseModule):
    method __init__ (line 238) | def __init__(
    method _build_layers (line 273) | def _build_layers(self):
    method _build_basic_bins (line 303) | def _build_basic_bins(self):
    method _apply_softmax (line 310) | def _apply_softmax(self, x_hms, y_hms):
    method _get_bin_enc (line 332) | def _get_bin_enc(self, bbox_cs, grids):
    method _pose_feats_to_heatmaps (line 367) | def _pose_feats_to_heatmaps(self, pose_feats, x_bins_enc, y_bins_enc):
    method _decode_xy_heatmaps (line 401) | def _decode_xy_heatmaps(self, x_hms, y_hms, bbox_cs):
    method generate_target_heatmap (line 431) | def generate_target_heatmap(self, kpt_targets, bbox_cs, sigmas, areas):
    method forward_train (line 471) | def forward_train(self, pose_feats, bbox_cs, grids):
    method forward_test (line 496) | def forward_test(self, pose_feats, bbox_cs, grids):
    method switch_to_deploy (line 518) | def switch_to_deploy(self, test_cfg: Optional[Dict] = None):
    method _convert_pose_to_kpts (line 529) | def _convert_pose_to_kpts(self):
    method _convert_gau (line 550) | def _convert_gau(self):
    method _convert_forward_test (line 599) | def _convert_forward_test(self):
  class RTMOHead (line 662) | class RTMOHead(YOLOXPoseHead):
    method __init__ (line 695) | def __init__(
    method loss (line 748) | def loss(self,
    method predict (line 889) | def predict(self,
    method switch_to_deploy (line 1016) | def switch_to_deploy(self, test_cfg: Optional[Dict]):

FILE: mmpose/models/heads/hybrid_heads/vis_head.py
  class VisPredictHead (line 16) | class VisPredictHead(BaseHead):
    method __init__ (line 30) | def __init__(self,
    method vis_forward (line 68) | def vis_forward(self, feats: Tuple[Tensor]):
    method forward (line 84) | def forward(self, feats: Tuple[Tensor]):
    method integrate (line 99) | def integrate(self, batch_vis: Tensor,
    method predict (line 119) | def predict(self,
    method vis_accuracy (line 179) | def vis_accuracy(self, vis_pred_outputs, vis_labels, vis_weights=None):
    method loss (line 193) | def loss(self,
    method default_init_cfg (line 239) | def default_init_cfg(self):

FILE: mmpose/models/heads/hybrid_heads/yoloxpose_head.py
  class YOLOXPoseHeadModule (line 22) | class YOLOXPoseHeadModule(BaseModule):
    method __init__ (line 58) | def __init__(
    method _init_layers (line 92) | def _init_layers(self):
    method _init_cls_branch (line 98) | def _init_cls_branch(self):
    method _init_reg_branch (line 125) | def _init_reg_branch(self):
    method _init_pose_branch (line 152) | def _init_pose_branch(self):
    method init_weights (line 181) | def init_weights(self):
    method forward (line 190) | def forward(self, x: Tuple[Tensor]) -> Tuple[List]:
  class YOLOXPoseHead (line 224) | class YOLOXPoseHead(BaseModule):
    method __init__ (line 226) | def __init__(
    method forward (line 272) | def forward(self, feats: Features):
    method loss (line 276) | def loss(self,
    method _get_targets (line 389) | def _get_targets(
    method _get_targets_single (line 450) | def _get_targets_single(
    method predict (line 593) | def predict(self,
    method decode_bbox (line 713) | def decode_bbox(self, pred_bboxes: torch.Tensor, priors: torch.Tensor,
    method decode_kpt_reg (line 750) | def decode_kpt_reg(self, pred_kpt_offsets: torch.Tensor,
    method _flatten_predictions (line 775) | def _flatten_predictions(self, preds: List[Tensor]):

FILE: mmpose/models/heads/regression_heads/dsnt_head.py
  class DSNTHead (line 19) | class DSNTHead(IntegralRegressionHead):
    method __init__ (line 65) | def __init__(self,
    method loss (line 103) | def loss(self,

FILE: mmpose/models/heads/regression_heads/integral_regression_head.py
  class IntegralRegressionHead (line 25) | class IntegralRegressionHead(BaseHead):
    method __init__ (line 69) | def __init__(self,
    method _linear_expectation (line 151) | def _linear_expectation(self, heatmaps: Tensor,
    method _flat_softmax (line 161) | def _flat_softmax(self, featmaps: Tensor) -> Tensor:
    method forward (line 171) | def forward(self, feats: Tuple[Tensor]) -> Union[Tensor, Tuple[Tensor]]:
    method predict (line 202) | def predict(self,
    method loss (line 274) | def loss(self,
    method default_init_cfg (line 309) | def default_init_cfg(self):
    method _load_state_dict_pre_hook (line 313) | def _load_state_dict_pre_hook(self, state_dict, prefix, local_meta, *a...

FILE: mmpose/models/heads/regression_heads/motion_regression_head.py
  class MotionRegressionHead (line 19) | class MotionRegressionHead(BaseHead):
    method __init__ (line 38) | def __init__(self,
    method forward (line 68) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method predict (line 84) | def predict(self,
    method loss (line 155) | def loss(self,
    method default_init_cfg (line 192) | def default_init_cfg(self):

FILE: mmpose/models/heads/regression_heads/regression_head.py
  class RegressionHead (line 20) | class RegressionHead(BaseHead):
    method __init__ (line 40) | def __init__(self,
    method forward (line 64) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method predict (line 81) | def predict(self,
    method loss (line 109) | def loss(self,
    method default_init_cfg (line 144) | def default_init_cfg(self):

FILE: mmpose/models/heads/regression_heads/rle_head.py
  class RLEHead (line 20) | class RLEHead(BaseHead):
    method __init__ (line 40) | def __init__(self,
    method forward (line 67) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method predict (line 84) | def predict(self,
    method loss (line 118) | def loss(self,
    method _load_state_dict_pre_hook (line 155) | def _load_state_dict_pre_hook(self, state_dict, prefix, local_meta, *a...
    method default_init_cfg (line 185) | def default_init_cfg(self):

FILE: mmpose/models/heads/regression_heads/temporal_regression_head.py
  class TemporalRegressionHead (line 18) | class TemporalRegressionHead(BaseHead):
    method __init__ (line 36) | def __init__(self,
    method forward (line 60) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method predict (line 76) | def predict(self,
    method loss (line 110) | def loss(self,
    method default_init_cfg (line 147) | def default_init_cfg(self):

FILE: mmpose/models/heads/regression_heads/trajectory_regression_head.py
  class TrajectoryRegressionHead (line 18) | class TrajectoryRegressionHead(BaseHead):
    method __init__ (line 36) | def __init__(self,
    method forward (line 60) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method predict (line 76) | def predict(self,
    method loss (line 110) | def loss(self,
    method default_init_cfg (line 146) | def default_init_cfg(self):

FILE: mmpose/models/heads/transformer_heads/base_transformer_head.py
  class TransformerHead (line 15) | class TransformerHead(BaseHead):
    method __init__ (line 37) | def __init__(self,
    method forward (line 57) | def forward(self,
    method predict (line 70) | def predict(self,
    method loss (line 77) | def loss(self,
    method forward_encoder (line 85) | def forward_encoder(self, feat: Tensor, feat_mask: Tensor,
    method forward_decoder (line 90) | def forward_decoder(self, query: Tensor, query_pos: Tensor, memory: Te...
    method forward_out_head (line 95) | def forward_out_head(self, query: Tensor, query_pos: Tensor,
    method get_valid_ratio (line 100) | def get_valid_ratio(mask: Tensor) -> Tensor:

FILE: mmpose/models/heads/transformer_heads/edpose_head.py
  class EDPoseDecoder (line 30) | class EDPoseDecoder(BaseModule):
    method __init__ (line 49) | def __init__(self,
    method forward (line 103) | def forward(self, query: Tensor, value: Tensor, key_padding_mask: Tensor,
    method get_proposal_pos_embed (line 287) | def get_proposal_pos_embed(pos_tensor: Tensor,
  class EDPoseOutHead (line 343) | class EDPoseOutHead(BaseModule):
    method __init__ (line 369) | def __init__(self,
    method init_weights (line 457) | def init_weights(self) -> None:
    method forward (line 465) | def forward(self, hidden_states: List[Tensor], references: List[Tensor],
    method keypoint_xyzxyz_to_xyxyzz (line 581) | def keypoint_xyzxyz_to_xyxyzz(self, keypoints: torch.Tensor):
  class EDPoseHead (line 595) | class EDPoseHead(TransformerHead):
    method __init__ (line 634) | def __init__(self,
    method init_weights (line 716) | def init_weights(self) -> None:
    method pre_transformer (line 731) | def pre_transformer(self,
    method forward_encoder (line 842) | def forward_encoder(self,
    method pre_decoder (line 870) | def pre_decoder(self, memory: Tensor, memory_mask: Tensor,
    method forward_decoder (line 947) | def forward_decoder(self, memory: Tensor, memory_mask: Tensor,
    method forward_out_head (line 1003) | def forward_out_head(self, batch_data_samples: OptSampleList,
    method predict (line 1013) | def predict(self,
    method decode (line 1036) | def decode(self, input_shapes: np.ndarray, pred_logits: Tensor,
    method gen_encoder_output_proposals (line 1079) | def gen_encoder_output_proposals(self, memory: Tensor, memory_mask: Te...
    method default_init_cfg (line 1146) | def default_init_cfg(self):
    method prepare_for_denosing (line 1150) | def prepare_for_denosing(self, targets: OptSampleList, device):
    method loss (line 1338) | def loss(self,

FILE: mmpose/models/heads/transformer_heads/transformers/deformable_detr_layers.py
  class DeformableDetrTransformerEncoder (line 16) | class DeformableDetrTransformerEncoder(DetrTransformerEncoder):
    method _init_layers (line 19) | def _init_layers(self) -> None:
    method forward (line 27) | def forward(self, query: Tensor, query_pos: Tensor,
    method get_encoder_reference_points (line 68) | def get_encoder_reference_points(spatial_shapes: Tensor,
  class DeformableDetrTransformerDecoder (line 107) | class DeformableDetrTransformerDecoder(DetrTransformerDecoder):
    method _init_layers (line 110) | def _init_layers(self) -> None:
    method forward (line 121) | def forward(self,
  class DeformableDetrTransformerEncoderLayer (line 223) | class DeformableDetrTransformerEncoderLayer(DetrTransformerEncoderLayer):
    method _init_layers (line 226) | def _init_layers(self) -> None:
  class DeformableDetrTransformerDecoderLayer (line 238) | class DeformableDetrTransformerDecoderLayer(DetrTransformerDecoderLayer):
    method _init_layers (line 241) | def _init_layers(self) -> None:

FILE: mmpose/models/heads/transformer_heads/transformers/detr_layers.py
  class DetrTransformerEncoder (line 14) | class DetrTransformerEncoder(BaseModule):
    method __init__ (line 25) | def __init__(self,
    method _init_layers (line 35) | def _init_layers(self) -> None:
    method forward (line 43) | def forward(self, query: Tensor, query_pos: Tensor,
  class DetrTransformerDecoder (line 64) | class DetrTransformerDecoder(BaseModule):
    method __init__ (line 79) | def __init__(self,
    method _init_layers (line 92) | def _init_layers(self) -> None:
    method forward (line 102) | def forward(self, query: Tensor, key: Tensor, value: Tensor,
  class DetrTransformerEncoderLayer (line 142) | class DetrTransformerEncoderLayer(BaseModule):
    method __init__ (line 156) | def __init__(self,
    method _init_layers (line 182) | def _init_layers(self) -> None:
    method forward (line 193) | def forward(self, query: Tensor, query_pos: Tensor,
  class DetrTransformerDecoderLayer (line 221) | class DetrTransformerDecoderLayer(BaseModule):
    method __init__ (line 237) | def __init__(self,
    method _init_layers (line 280) | def _init_layers(self) -> None:
    method forward (line 292) | def forward(self,

FILE: mmpose/models/heads/transformer_heads/transformers/utils.py
  class FFN (line 11) | class FFN(BaseModule):
    method __init__ (line 22) | def __init__(self, input_dim: int, hidden_dim: int, output_dim: int,
    method forward (line 34) | def forward(self, x: Tensor) -> Tensor:
  class PositionEmbeddingSineHW (line 51) | class PositionEmbeddingSineHW(BaseModule):
    method __init__ (line 56) | def __init__(self,
    method forward (line 73) | def forward(self, mask: Tensor):

FILE: mmpose/models/losses/ae_loss.py
  class AssociativeEmbeddingLoss (line 14) | class AssociativeEmbeddingLoss(nn.Module):
    method __init__ (line 35) | def __init__(self,
    method _ae_loss_per_image (line 42) | def _ae_loss_per_image(self, tags: Tensor, keypoint_indices: Tensor):
    method forward (line 93) | def forward(self, tags: Tensor, keypoint_indices: Union[List[Tensor],

FILE: mmpose/models/losses/bbox_loss.py
  class IoULoss (line 12) | class IoULoss(nn.Module):
    method __init__ (line 23) | def __init__(self,
    method forward (line 44) | def forward(self, output, target, target_weight=None):

FILE: mmpose/models/losses/classification_loss.py
  class BCELoss (line 12) | class BCELoss(nn.Module):
    method __init__ (line 24) | def __init__(self,
    method forward (line 43) | def forward(self, output, target, target_weight=None):
  class JSDiscretLoss (line 75) | class JSDiscretLoss(nn.Module):
    method __init__ (line 87) | def __init__(
    method kl (line 97) | def kl(self, p, q):
    method js (line 104) | def js(self, pred_hm, gt_hm):
    method forward (line 111) | def forward(self, pred_hm, gt_hm, target_weight=None):
  class KLDiscretLoss (line 142) | class KLDiscretLoss(nn.Module):
    method __init__ (line 159) | def __init__(self,
    method criterion (line 177) | def criterion(self, dec_outs, labels):
    method forward (line 185) | def forward(self, pred_simcc, gt_simcc, target_weight):
  class InfoNCELoss (line 219) | class InfoNCELoss(nn.Module):
    method __init__ (line 234) | def __init__(self, temperature: float = 1.0, loss_weight=1.0) -> None:
    method forward (line 241) | def forward(self, features: torch.Tensor) -> torch.Tensor:
  class VariFocalLoss (line 260) | class VariFocalLoss(nn.Module):
    method __init__ (line 274) | def __init__(self,
    method criterion (line 292) | def criterion(self, output, target):
    method forward (line 302) | def forward(self, output, target, target_weight=None):

FILE: mmpose/models/losses/fea_dis_loss.py
  class FeaLoss (line 8) | class FeaLoss(nn.Module):
    method __init__ (line 19) | def __init__(
    method forward (line 40) | def forward(self, preds_S, preds_T):
    method get_dis_loss (line 57) | def get_dis_loss(self, preds_S, preds_T):

FILE: mmpose/models/losses/heatmap_loss.py
  class KeypointMSELoss (line 13) | class KeypointMSELoss(nn.Module):
    method __init__ (line 27) | def __init__(self,
    method forward (line 36) | def forward(self,
    method _get_mask (line 72) | def _get_mask(self, target: Tensor, target_weights: Optional[Tensor],
  class CombinedTargetMSELoss (line 122) | class CombinedTargetMSELoss(nn.Module):
    method __init__ (line 137) | def __init__(self,
    method forward (line 145) | def forward(self, output: Tensor, target: Tensor,
  class KeypointOHKMMSELoss (line 196) | class KeypointOHKMMSELoss(nn.Module):
    method __init__ (line 207) | def __init__(self,
    method _ohkm (line 218) | def _ohkm(self, losses: Tensor) -> Tensor:
    method forward (line 242) | def forward(self, output: Tensor, target: Tensor,
  class AdaptiveWingLoss (line 283) | class AdaptiveWingLoss(nn.Module):
    method __init__ (line 295) | def __init__(self,
    method criterion (line 310) | def criterion(self, pred, target):
    method forward (line 341) | def forward(self,
  class FocalHeatmapLoss (line 375) | class FocalHeatmapLoss(KeypointMSELoss):
    method __init__ (line 397) | def __init__(self,
    method forward (line 408) | def forward(self,
  class MLECCLoss (line 459) | class MLECCLoss(nn.Module):
    method __init__ (line 480) | def __init__(self,
    method forward (line 498) | def forward(self, outputs, targets, target_weight=None):

FILE: mmpose/models/losses/logit_dis_loss.py
  class KDLoss (line 10) | class KDLoss(nn.Module):
    method __init__ (line 19) | def __init__(
    method forward (line 31) | def forward(self, pred, pred_t, beta, target_weight):
    method loss (line 46) | def loss(self, logit_s, logit_t, beta, weight):

FILE: mmpose/models/losses/loss_wrappers.py
  class MultipleLossWrapper (line 11) | class MultipleLossWrapper(nn.Module):
    method __init__ (line 19) | def __init__(self, losses: list):
    method forward (line 29) | def forward(self, input_list, target_list, keypoint_weights=None):
  class CombinedLoss (line 59) | class CombinedLoss(nn.ModuleDict):
    method __init__ (line 79) | def __init__(self, losses: Dict[str, ConfigType]):

FILE: mmpose/models/losses/regression_loss.py
  class RLELoss (line 16) | class RLELoss(nn.Module):
    method __init__ (line 35) | def __init__(self,
    method forward (line 48) | def forward(self, pred, sigma, target, target_weight=None):
  class SmoothL1Loss (line 96) | class SmoothL1Loss(nn.Module):
    method __init__ (line 105) | def __init__(self, use_target_weight=False, loss_weight=1.):
    method forward (line 111) | def forward(self, output, target, target_weight=None):
  class SoftWeightSmoothL1Loss (line 142) | class SoftWeightSmoothL1Loss(nn.Module):
    method __init__ (line 155) | def __init__(self,
    method smooth_l1_loss (line 171) | def smooth_l1_loss(input, target, reduction='none', beta=1.0):
    method forward (line 189) | def forward(self, output, target, target_weight=None):
  class WingLoss (line 223) | class WingLoss(nn.Module):
    method __init__ (line 235) | def __init__(self,
    method criterion (line 250) | def criterion(self, pred, target):
    method forward (line 268) | def forward(self, output, target, target_weight=None):
  class SoftWingLoss (line 293) | class SoftWingLoss(nn.Module):
    method __init__ (line 310) | def __init__(self,
    method criterion (line 328) | def criterion(self, pred, target):
    method forward (line 346) | def forward(self, output, target, target_weight=None):
  class MPJPEVelocityJointLoss (line 371) | class MPJPEVelocityJointLoss(nn.Module):
    method __init__ (line 380) | def __init__(self,
    method forward (line 391) | def forward(self, output, target, target_weight=None):
  class MPJPELoss (line 449) | class MPJPELoss(nn.Module):
    method __init__ (line 458) | def __init__(self, use_target_weight=False, loss_weight=1.):
    method forward (line 463) | def forward(self, output, target, target_weight=None):
  class L1Loss (line 489) | class L1Loss(nn.Module):
    method __init__ (line 492) | def __init__(self,
    method forward (line 506) | def forward(self, output, target, target_weight=None):
  class MSELoss (line 532) | class MSELoss(nn.Module):
    method __init__ (line 535) | def __init__(self, use_target_weight=False, loss_weight=1.):
    method forward (line 541) | def forward(self, output, target, target_weight=None):
  class BoneLoss (line 566) | class BoneLoss(nn.Module):
    method __init__ (line 576) | def __init__(self,
    method forward (line 593) | def forward(self, output, target, target_weight=None):
    method loss_name (line 626) | def loss_name(self):
  class SemiSupervisionLoss (line 636) | class SemiSupervisionLoss(nn.Module):
    method __init__ (line 658) | def __init__(self,
    method project_joints (line 672) | def project_joints(x, intrinsics):
    method forward (line 700) | def forward(self, output, target):
  class OKSLoss (line 728) | class OKSLoss(nn.Module):
    method __init__ (line 754) | def __init__(self,
    method forward (line 783) | def forward(self, output, target, target_weight=None, areas=None):

FILE: mmpose/models/necks/channel_mapper.py
  class ChannelMapper (line 14) | class ChannelMapper(BaseModule):
    method __init__ (line 50) | def __init__(
    method forward (line 99) | def forward(self, inputs: Tuple[Tensor]) -> Tuple[Tensor]:

FILE: mmpose/models/necks/cspnext_pafpn.py
  class CSPNeXtPAFPN (line 17) | class CSPNeXtPAFPN(BaseModule):
    method __init__ (line 42) | def __init__(
    method forward (line 147) | def forward(self, inputs: Tuple[Tensor, ...]) -> Tuple[Tensor, ...]:

FILE: mmpose/models/necks/fmap_proc_neck.py
  class FeatureMapProcessor (line 14) | class FeatureMapProcessor(nn.Module):
    method __init__ (line 32) | def __init__(
    method forward (line 55) | def forward(self, inputs: Union[Tensor, Sequence[Tensor]]
    method _concat (line 81) | def _concat(self, inputs: Sequence[Tensor]) -> List[Tensor]:
    method _rescale (line 92) | def _rescale(self, inputs: Sequence[Tensor]) -> List[Tensor]:

FILE: mmpose/models/necks/fpn.py
  class FPN (line 11) | class FPN(nn.Module):
    method __init__ (line 61) | def __init__(self,
    method init_weights (line 148) | def init_weights(self):
    method forward (line 154) | def forward(self, inputs):

FILE: mmpose/models/necks/gap_neck.py
  class GlobalAveragePooling (line 9) | class GlobalAveragePooling(nn.Module):
    method __init__ (line 17) | def __init__(self):
    method init_weights (line 21) | def init_weights(self):
    method forward (line 24) | def forward(self, inputs):

FILE: mmpose/models/necks/hybrid_encoder.py
  class CSPRepLayer (line 17) | class CSPRepLayer(BaseModule):
    method __init__ (line 35) | def __init__(self,
    method forward (line 71) | def forward(self, x: Tensor) -> Tensor:
  class HybridEncoder (line 87) | class HybridEncoder(BaseModule):
    method __init__ (line 124) | def __init__(self,
    method forward (line 224) | def forward(self, inputs: Tuple[Tensor]) -> Tuple[Tensor]:
    method switch_to_deploy (line 283) | def switch_to_deploy(self, test_cfg):

FILE: mmpose/models/necks/posewarper_neck.py
  class PoseWarperNeck (line 22) | class PoseWarperNeck(nn.Module):
    method __init__ (line 68) | def __init__(self,
    method freeze_layers (line 205) | def freeze_layers(self):
    method init_weights (line 212) | def init_weights(self):
    method _transform_inputs (line 238) | def _transform_inputs(self, inputs):
    method forward (line 267) | def forward(self, inputs, frame_weight):
    method train (line 322) | def train(self, mode=True):

FILE: mmpose/models/necks/yolox_pafpn.py
  class YOLOXPAFPN (line 14) | class YOLOXPAFPN(BaseModule):
    method __init__ (line 35) | def __init__(self,
    method forward (line 117) | def forward(self, inputs):

FILE: mmpose/models/pose_estimators/base.py
  class BasePoseEstimator (line 19) | class BasePoseEstimator(BaseModel, metaclass=ABCMeta):
    method __init__ (line 37) | def __init__(self,
    method switch_to_deploy (line 76) | def switch_to_deploy(self):
    method with_neck (line 87) | def with_neck(self) -> bool:
    method with_head (line 92) | def with_head(self) -> bool:
    method _load_metainfo (line 97) | def _load_metainfo(metainfo: dict = None) -> dict:
    method forward (line 117) | def forward(self,
    method loss (line 169) | def loss(self, inputs: Tensor, data_samples: SampleList) -> dict:
    method predict (line 173) | def predict(self, inputs: Tensor, data_samples: SampleList) -> SampleL...
    method _forward (line 177) | def _forward(self,
    method extract_feat (line 197) | def extract_feat(self, inputs: Tensor) -> Tuple[Tensor]:
    method _load_state_dict_pre_hook (line 213) | def _load_state_dict_pre_hook(self, state_dict, prefix, local_meta, *a...

FILE: mmpose/models/pose_estimators/bottomup.py
  class BottomupPoseEstimator (line 15) | class BottomupPoseEstimator(BasePoseEstimator):
    method __init__ (line 34) | def __init__(self,
    method loss (line 53) | def loss(self, inputs: Tensor, data_samples: SampleList) -> dict:
    method predict (line 74) | def predict(self, inputs: Union[Tensor, List[Tensor]],
    method add_pred_to_datasample (line 143) | def add_pred_to_datasample(self, batch_pred_instances: InstanceList,

FILE: mmpose/models/pose_estimators/pose_lifter.py
  class PoseLifter (line 18) | class PoseLifter(BasePoseEstimator):
    method __init__ (line 50) | def __init__(self,
    method with_traj_backbone (line 100) | def with_traj_backbone(self):
    method with_traj_neck (line 106) | def with_traj_neck(self):
    method with_traj (line 111) | def with_traj(self):
    method causal (line 116) | def causal(self):
    method extract_feat (line 125) | def extract_feat(self, inputs: Tensor) -> Tuple[Tensor]:
    method _forward (line 154) | def _forward(self,
    method loss (line 184) | def loss(self, inputs: Tensor, data_samples: SampleList) -> dict:
    method predict (line 219) | def predict(self, inputs: Tensor, data_samples: SampleList) -> SampleL...
    method add_pred_to_datasample (line 296) | def add_pred_to_datasample(

FILE: mmpose/models/pose_estimators/topdown.py
  class TopdownPoseEstimator (line 14) | class TopdownPoseEstimator(BasePoseEstimator):
    method __init__ (line 38) | def __init__(self,
    method loss (line 57) | def loss(self, inputs: Tensor, data_samples: SampleList) -> dict:
    method predict (line 78) | def predict(self, inputs: Tensor, data_samples: SampleList) -> SampleL...
    method add_pred_to_datasample (line 122) | def add_pred_to_datasample(self, batch_pred_instances: InstanceList,

FILE: mmpose/models/task_modules/assigners/metric_calculators.py
  function cast_tensor_type (line 12) | def cast_tensor_type(x, scale=1., dtype=None):
  class BBoxOverlaps2D (line 20) | class BBoxOverlaps2D:
    method __init__ (line 23) | def __init__(self, scale=1., dtype=None):
    method __call__ (line 28) | def __call__(self, bboxes1, bboxes2, mode='iou', is_aligned=False):
    method __repr__ (line 67) | def __repr__(self):
  class PoseOKS (line 75) | class PoseOKS:
    method __init__ (line 78) | def __init__(self,
    method __call__ (line 88) | def __call__(self,

FILE: mmpose/models/task_modules/assigners/sim_ota_assigner.py
  class SimOTAAssigner (line 17) | class SimOTAAssigner:
    method __init__ (line 39) | def __init__(self,
    method assign (line 65) | def assign(self, pred_instances: InstanceData, gt_instances: InstanceD...
    method get_in_gt_and_in_center_info (line 210) | def get_in_gt_and_in_center_info(
    method dynamic_k_matching (line 271) | def dynamic_k_matching(self, cost: Tensor, pairwise_ious: Tensor,

FILE: mmpose/models/task_modules/prior_generators/mlvl_point_generator.py
  class MlvlPointGenerator (line 15) | class MlvlPointGenerator:
    method __init__ (line 28) | def __init__(self,
    method num_levels (line 37) | def num_levels(self) -> int:
    method num_base_priors (line 42) | def num_base_priors(self) -> List[int]:
    method _meshgrid (line 47) | def _meshgrid(self,
    method grid_priors (line 60) | def grid_priors(self,
    method single_level_grid_priors (line 100) | def single_level_grid_priors(self,
    method valid_flags (line 163) | def valid_flags(self,
    method single_level_valid_flags (line 195) | def single_level_valid_flags(self,
    method sparse_priors (line 224) | def sparse_priors(self,

FILE: mmpose/models/utils/check_and_update_config.py
  function process_input_transform (line 11) | def process_input_transform(input_transform: str, head: Dict, head_new: ...
  function process_extra_field (line 54) | def process_extra_field(extra: Dict, head_new: Dict, head_deleted_dict: ...
  function process_has_final_layer (line 83) | def process_has_final_layer(has_final_layer: bool, head_new: Dict,
  function check_and_update_config (line 94) | def check_and_update_config(neck: Optional[ConfigType],
  function display_modifications (line 148) | def display_modifications(head_deleted_dict: Dict, head_append_dict: Dict,
  function build_model_info (line 176) | def build_model_info(head_deleted_dict: Dict, head_append_dict: Dict,
  function build_head_info (line 198) | def build_head_info(head_dict: Dict) -> str:
  function build_neck_info (line 213) | def build_neck_info(neck: Dict) -> str:

FILE: mmpose/models/utils/ckpt_convert.py
  function pvt_convert (line 12) | def pvt_convert(ckpt):

FILE: mmpose/models/utils/csp_layer.py
  class ChannelAttention (line 12) | class ChannelAttention(BaseModule):
    method __init__ (line 21) | def __init__(self, channels: int, init_cfg: OptMultiConfig = None) -> ...
    method forward (line 30) | def forward(self, x: Tensor) -> Tensor:
  class DarknetBottleneck (line 39) | class DarknetBottleneck(BaseModule):
    method __init__ (line 64) | def __init__(self,
    method forward (line 97) | def forward(self, x: Tensor) -> Tensor:
  class CSPNeXtBlock (line 109) | class CSPNeXtBlock(BaseModule):
    method __init__ (line 133) | def __init__(self,
    method forward (line 168) | def forward(self, x: Tensor) -> Tensor:
  class CSPLayer (line 180) | class CSPLayer(BaseModule):
    method __init__ (line 208) | def __init__(self,
    method forward (line 262) | def forward(self, x: Tensor) -> Tensor:

FILE: mmpose/models/utils/geometry.py
  function rot6d_to_rotmat (line 6) | def rot6d_to_rotmat(x):
  function batch_rodrigues (line 25) | def batch_rodrigues(theta):
  function quat_to_rotmat (line 43) | def quat_to_rotmat(quat):

FILE: mmpose/models/utils/misc.py
  function multi_apply (line 8) | def multi_apply(func, *args, **kwargs):
  function filter_scores_and_topk (line 30) | def filter_scores_and_topk(scores, score_thr, topk, results=None):

FILE: mmpose/models/utils/ops.py
  function resize (line 12) | def resize(input: torch.Tensor,
  class FrozenBatchNorm2d (line 59) | class FrozenBatchNorm2d(torch.nn.Module):
    method __init__ (line 68) | def __init__(self, n, eps: int = 1e-5):
    method _load_from_state_dict (line 76) | def _load_from_state_dict(self, state_dict, prefix, local_metadata, st...
    method forward (line 87) | def forward(self, x):
  function inverse_sigmoid (line 97) | def inverse_sigmoid(x: Tensor, eps: float = 1e-3) -> Tensor:

FILE: mmpose/models/utils/realnvp.py
  class RealNVP (line 7) | class RealNVP(nn.Module):
    method get_scale_net (line 21) | def get_scale_net():
    method get_trans_net (line 28) | def get_trans_net():
    method prior (line 35) | def prior(self):
    method __init__ (line 39) | def __init__(self):
    method init_weights (line 53) | def init_weights(self):
    method backward_p (line 59) | def backward_p(self, x):
    method log_prob (line 72) | def log_prob(self, x):

FILE: mmpose/models/utils/regularizations.py
  class PytorchModuleHook (line 7) | class PytorchModuleHook(metaclass=ABCMeta):
    method hook (line 21) | def hook(self, *args, **kwargs):
    method hook_type (line 25) | def hook_type(self) -> str:
    method register (line 32) | def register(self, module):
  class WeightNormClipHook (line 56) | class WeightNormClipHook(PytorchModuleHook):
    method __init__ (line 68) | def __init__(self, max_norm=1.0, module_param_names='weight'):
    method hook_type (line 74) | def hook_type(self):
    method hook (line 77) | def hook(self, module, _input):

FILE: mmpose/models/utils/reparam_layers.py
  class RepVGGBlock (line 15) | class RepVGGBlock(BaseModule):
    method __init__ (line 39) | def __init__(self,
    method forward (line 90) | def forward(self, x: Tensor) -> Tensor:
    method _pad_1x1_to_3x3_tensor (line 115) | def _pad_1x1_to_3x3_tensor(self, kernel1x1):
    method _fuse_bn_tensor (line 128) | def _fuse_bn_tensor(self, branch: nn.Module) -> Tensor:
    method get_equivalent_kernel_bias (line 169) | def get_equivalent_kernel_bias(self):
    method switch_to_deploy (line 183) | def switch_to_deploy(self, test_cfg: Optional[Dict] = None):

FILE: mmpose/models/utils/rtmcc_block.py
  function rope (line 14) | def rope(x, dim):
  class Scale (line 60) | class Scale(nn.Module):
    method __init__ (line 71) | def __init__(self, dim, init_value=1., trainable=True):
    method forward (line 76) | def forward(self, x):
  class RTMCCBlock (line 82) | class RTMCCBlock(nn.Module):
    method __init__ (line 122) | def __init__(self,
    method rel_pos_bias (line 194) | def rel_pos_bias(self, seq_len, k_len=None):
    method _forward (line 208) | def _forward(self, inputs):
    method forward (line 266) | def forward(self, x):

FILE: mmpose/models/utils/transformer.py
  function nlc_to_nchw (line 24) | def nlc_to_nchw(x, hw_shape):
  function nchw_to_nlc (line 41) | def nchw_to_nlc(x):
  class AdaptivePadding (line 54) | class AdaptivePadding(nn.Module):
    method __init__ (line 85) | def __init__(self, kernel_size=1, stride=1, dilation=1, padding='corne...
    method get_pad_shape (line 101) | def get_pad_shape(self, input_shape):
    method forward (line 115) | def forward(self, x):
  class PatchEmbed (line 130) | class PatchEmbed(BaseModule):
    method __init__ (line 158) | def __init__(
    method forward (line 232) | def forward(self, x):
  class PatchMerging (line 256) | class PatchMerging(BaseModule):
    method __init__ (line 287) | def __init__(self,
    method forward (line 336) | def forward(self, x, input_size):
  class ScaleNorm (line 384) | class ScaleNorm(nn.Module):
    method __init__ (line 396) | def __init__(self, dim, eps=1e-5):
    method forward (line 402) | def forward(self, x):
  class SinePositionalEncoding (line 423) | class SinePositionalEncoding(nn.Module):
    method __init__ (line 443) | def __init__(
    method forward (line 479) | def forward(self, *args, **kwargs):
    method generate_pos_encoding (line 482) | def generate_pos_encoding(self,
    method apply_additional_pos_enc (line 540) | def apply_additional_pos_enc(feature: Tensor,
    method apply_rotary_pos_enc (line 560) | def apply_rotary_pos_enc(feature: Tensor,
  class ChannelWiseScale (line 592) | class ChannelWiseScale(nn.Module):
    method __init__ (line 603) | def __init__(self, dim, init_value=1., trainable=True):
    method forward (line 608) | def forward(self, x):
  class GAUEncoder (line 614) | class GAUEncoder(BaseModule):
    method __init__ (line 645) | def __init__(self,
    method _build_layers (line 696) | def _build_layers(self):
    method _forward (line 702) | def _forward(self, x, mask=None, pos_enc=None):
    method forward (line 752) | def forward(self, x, mask=None, pos_enc=None):
  class DetrTransformerEncoder (line 761) | class DetrTransformerEncoder(BaseModule):
    method __init__ (line 774) | def __init__(self,
    method _init_layers (line 787) | def _init_layers(self) -> None:
    method forward (line 805) | def forward(self, query: Tensor, query_pos: Tensor,
  class DetrTransformerEncoderLayer (line 826) | class DetrTransformerEncoderLayer(BaseModule):
    method __init__ (line 840) | def __init__(self,
    method _init_layers (line 866) | def _init_layers(self) -> None:
    method forward (line 877) | def forward(self, query: Tensor, query_pos: Tensor,

FILE: mmpose/models/utils/tta.py
  function flip_heatmaps (line 9) | def flip_heatmaps(heatmaps: Tensor,
  function flip_vectors (line 71) | def flip_vectors(x_labels: Tensor, y_labels: Tensor, flip_indices: List[...
  function flip_coordinates (line 91) | def flip_coordinates(coords: Tensor, flip_indices: List[int],
  function flip_visibility (line 117) | def flip_visibility(vis: Tensor, flip_indices: List[int]):
  function aggregate_heatmaps (line 132) | def aggregate_heatmaps(heatmaps: List[Tensor],

FILE: mmpose/structures/bbox/bbox_overlaps.py
  function fp16_clamp (line 5) | def fp16_clamp(x, min_val=None, max_val=None):
  function bbox_overlaps (line 11) | def bbox_overlaps(bboxes1,

FILE: mmpose/structures/bbox/transforms.py
  function bbox_xyxy2xywh (line 9) | def bbox_xyxy2xywh(bbox_xyxy: np.ndarray) -> np.ndarray:
  function bbox_xywh2xyxy (line 27) | def bbox_xywh2xyxy(bbox_xywh: np.ndarray) -> np.ndarray:
  function bbox_xyxy2cs (line 44) | def bbox_xyxy2cs(bbox: np.ndarray,
  function bbox_xywh2cs (line 76) | def bbox_xywh2cs(bbox: np.ndarray,
  function bbox_cs2xyxy (line 110) | def bbox_cs2xyxy(center: np.ndarray,
  function bbox_cs2xywh (line 142) | def bbox_cs2xywh(center: np.ndarray,
  function bbox_xyxy2corner (line 174) | def bbox_xyxy2corner(bbox: np.ndarray):
  function bbox_corner2xyxy (line 207) | def bbox_corner2xyxy(bbox: np.ndarray):
  function bbox_clip_border (line 242) | def bbox_clip_border(bbox: np.ndarray, shape: Tuple[int, int]) -> np.nda...
  function flip_bbox (line 271) | def flip_bbox(bbox: np.ndarray,
  function get_udp_warp_matrix (line 325) | def get_udp_warp_matrix(
  function get_warp_matrix (line 372) | def get_warp_matrix(
  function get_pers_warp_matrix (line 438) | def get_pers_warp_matrix(center: np.ndarray, translate: np.ndarray,
  function _rotate_point (line 493) | def _rotate_point(pt: np.ndarray, angle_rad: float) -> np.ndarray:
  function _get_3rd_point (line 509) | def _get_3rd_point(a: np.ndarray, b: np.ndarray):

FILE: mmpose/structures/keypoint/transforms.py
  function flip_keypoints (line 7) | def flip_keypoints(keypoints: np.ndarray,
  function flip_keypoints_custom_center (line 69) | def flip_keypoints_custom_center(keypoints: np.ndarray,
  function keypoint_clip_border (line 128) | def keypoint_clip_border(keypoints: np.ndarray, keypoints_visible: np.nd...

FILE: mmpose/structures/multilevel_pixel_data.py
  class MultilevelPixelData (line 15) | class MultilevelPixelData(BaseDataElement):
    method __init__ (line 53) | def __init__(self, *, metainfo: Optional[dict] = None, **kwargs) -> None:
    method nlevel (line 58) | def nlevel(self):
    method __getitem__ (line 67) | def __getitem__(self, item: Union[int, str, list,
    method levels (line 85) | def levels(self) -> List[PixelData]:
    method shape (line 91) | def shape(self) -> Optional[Tuple[Tuple]]:
    method set_data (line 103) | def set_data(self, data: dict) -> None:
    method set_field (line 116) | def set_field(self,
    method __delattr__ (line 176) | def __delattr__(self, item: str):
    method __getattr__ (line 193) | def __getattr__(self, name):
    method pop (line 202) | def pop(self, *args) -> Any:
    method _convert (line 222) | def _convert(self, apply_to: Type,
    method cpu (line 242) | def cpu(self) -> 'MultilevelPixelData':
    method cuda (line 246) | def cuda(self) -> 'MultilevelPixelData':
    method detach (line 250) | def detach(self) -> 'MultilevelPixelData':
    method numpy (line 254) | def numpy(self) -> 'MultilevelPixelData':
    method to_tensor (line 259) | def to_tensor(self) -> 'MultilevelPixelData':
    method to (line 265) | def to(self, *args, **kwargs) -> 'MultilevelPixelData':

FILE: mmpose/structures/pose_data_sample.py
  class PoseDataSample (line 9) | class PoseDataSample(BaseDataElement):
    method gt_instances (line 47) | def gt_instances(self) -> InstanceData:
    method gt_instances (line 51) | def gt_instances(self, value: InstanceData):
    method gt_instances (line 55) | def gt_instances(self):
    method gt_instance_labels (line 59) | def gt_instance_labels(self) -> InstanceData:
    method gt_instance_labels (line 63) | def gt_instance_labels(self, value: InstanceData):
    method gt_instance_labels (line 67) | def gt_instance_labels(self):
    method pred_instances (line 71) | def pred_instances(self) -> InstanceData:
    method pred_instances (line 75) | def pred_instances(self, value: InstanceData):
    method pred_instances (line 79) | def pred_instances(self):
    method gt_fields (line 83) | def gt_fields(self) -> Union[PixelData, MultilevelPixelData]:
    method gt_fields (line 87) | def gt_fields(self, value: Union[PixelData, MultilevelPixelData]):
    method gt_fields (line 91) | def gt_fields(self):
    method pred_fields (line 95) | def pred_fields(self) -> PixelData:
    method pred_fields (line 99) | def pred_fields(self, value: PixelData):
    method pred_fields (line 103) | def pred_fields(self):

FILE: mmpose/structures/utils.py
  function merge_data_samples (line 15) | def merge_data_samples(data_samples: List[PoseDataSample]) -> PoseDataSa...
  function revert_heatmap (line 80) | def revert_heatmap(heatmap, input_center, input_scale, img_shape):
  function split_instances (line 116) | def split_instances(instances: InstanceData) -> List[InstanceData]:

FILE: mmpose/testing/_utils.py
  function get_coco_sample (line 16) | def get_coco_sample(
  function get_packed_inputs (line 81) | def get_packed_inputs(batch_size=2,
  function _rand_keypoints (line 193) | def _rand_keypoints(rng, bboxes, num_keypoints):
  function _rand_simcc_label (line 202) | def _rand_simcc_label(rng, num_instances, num_keypoints, len_feats):
  function _rand_bboxes (line 207) | def _rand_bboxes(rng, num_instances, img_w, img_h):
  function get_repo_dir (line 220) | def get_repo_dir():
  function get_config_file (line 233) | def get_config_file(fn: str):
  function get_pose_estimator_cfg (line 247) | def get_pose_estimator_cfg(fn: str):

FILE: mmpose/utils/camera.py
  class SingleCameraBase (line 11) | class SingleCameraBase(metaclass=ABCMeta):
    method __init__ (line 29) | def __init__(self, param):
    method world_to_camera (line 32) | def world_to_camera(self, X):
    method camera_to_world (line 36) | def camera_to_world(self, X):
    method camera_to_pixel (line 40) | def camera_to_pixel(self, X):
    method world_to_pixel (line 44) | def world_to_pixel(self, X):
  class SimpleCamera (line 51) | class SimpleCamera(SingleCameraBase):
    method __init__ (line 84) | def __init__(self, param):
    method world_to_camera (line 128) | def world_to_camera(self, X):
    method camera_to_world (line 133) | def camera_to_world(self, X):
    method camera_to_pixel (line 138) | def camera_to_pixel(self, X):
    method pixel_to_camera (line 160) | def pixel_to_camera(self, X):
  class SimpleCameraTorch (line 170) | class SimpleCameraTorch(SingleCameraBase):
    method __init__ (line 203) | def __init__(self, param, device):
    method world_to_camera (line 250) | def world_to_camera(self, X):
    method camera_to_world (line 255) | def camera_to_world(self, X):
    method camera_to_pixel (line 260) | def camera_to_pixel(self, X):

FILE: mmpose/utils/collect_env.py
  function collect_env (line 8) | def collect_env():

FILE: mmpose/utils/config_utils.py
  function adapt_mmdet_pipeline (line 5) | def adapt_mmdet_pipeline(cfg: ConfigDict) -> ConfigDict:

FILE: mmpose/utils/dist_utils.py
  function reduce_mean (line 5) | def reduce_mean(tensor):

FILE: mmpose/utils/hooks.py
  class OutputHook (line 5) | class OutputHook:
    method __init__ (line 7) | def __init__(self, module, outputs=None, as_tensor=False):
    method register (line 13) | def register(self, module):
    method remove (line 42) | def remove(self):
    method __enter__ (line 46) | def __enter__(self):
    method __exit__ (line 49) | def __exit__(self, exc_type, exc_val, exc_tb):
  function rsetattr (line 55) | def rsetattr(obj, attr, val):
  function rgetattr (line 72) | def rgetattr(obj, attr, *args):

FILE: mmpose/utils/logger.py
  function get_root_logger (line 7) | def get_root_logger(log_file=None, log_level=logging.INFO):

FILE: mmpose/utils/setup_env.py
  function setup_multi_processes (line 12) | def setup_multi_processes(cfg):
  function register_all_modules (line 52) | def register_all_modules(init_default_scope: bool = True) -> None:

FILE: mmpose/utils/tensor_utils.py
  function to_numpy (line 11) | def to_numpy(x: Union[Tensor, Sequence[Tensor]],
  function to_tensor (line 56) | def to_tensor(x: Union[np.ndarray, Sequence[np.ndarray]],

FILE: mmpose/utils/timer.py
  class RunningAverage (line 10) | class RunningAverage():
    method __init__ (line 17) | def __init__(self, window: int = 1):
    method update (line 21) | def update(self, value):
    method average (line 26) | def average(self):
  class StopWatch (line 31) | class StopWatch:
    method __init__ (line 54) | def __init__(self, window=1):
    method timeit (line 60) | def timeit(self, timer_name='_FPS_'):
    method report (line 80) | def report(self, key=None):
    method report_strings (line 99) | def report_strings(self):
    method reset (line 115) | def reset(self):

FILE: mmpose/version.py
  function parse_version_info (line 7) | def parse_version_info(version_str):

FILE: mmpose/visualization/fast_visualizer.py
  class Instances (line 8) | class Instances:
  class FastVisualizer (line 13) | class FastVisualizer:
    method __init__ (line 29) | def __init__(self,
    method draw_pose (line 45) | def draw_pose(self, img: np.ndarray, instances: Instances):
    method draw_points (line 93) | def draw_points(self, img: np.ndarray, instances: Union[Instances, Dict,

FILE: mmpose/visualization/local_visualizer.py
  function _get_adaptive_scales (line 20) | def _get_adaptive_scales(areas: np.ndarray,
  class PoseLocalVisualizer (line 46) | class PoseLocalVisualizer(OpencvBackendVisualizer):
    method __init__ (line 105) | def __init__(self,
    method set_dataset_meta (line 148) | def set_dataset_meta(self,
    method _draw_instances_bbox (line 184) | def _draw_instances_bbox(self, image: np.ndarray,
    method _draw_instances_kpts (line 242) | def _draw_instances_kpts(self,
    method _draw_instances_kpts_openpose (line 366) | def _draw_instances_kpts_openpose(self,
    method _draw_instance_heatmap (line 516) | def _draw_instance_heatmap(
    method _draw_instance_xy_heatmap (line 542) | def _draw_instance_xy_heatmap(
    method add_datasample (line 571) | def add_datasample(self,

FILE: mmpose/visualization/local_visualizer_3d.py
  class Pose3dLocalVisualizer (line 19) | class Pose3dLocalVisualizer(PoseLocalVisualizer):
    method __init__ (line 50) | def __init__(
    method _draw_3d_data_samples (line 78) | def _draw_3d_data_samples(self,
    method _draw_instances_kpts (line 309) | def _draw_instances_kpts(self,
    method add_datasample (line 490) | def add_datasample(self,

FILE: mmpose/visualization/opencv_backend_visualizer.py
  class OpencvBackendVisualizer (line 12) | class OpencvBackendVisualizer(Visualizer):
    method __init__ (line 32) | def __init__(self,
    method set_image (line 44) | def set_image(self, image: np.ndarray) -> None:
    method get_image (line 73) | def get_image(self) -> np.ndarray:
    method draw_circles (line 86) | def draw_circles(self,
    method draw_texts (line 148) | def draw_texts(
    method draw_bboxes (line 269) | def draw_bboxes(self,
    method draw_lines (line 323) | def draw_lines(self,
    method draw_polygons (line 376) | def draw_polygons(self,
    method show (line 432) | def show(self,

FILE: mmpose/visualization/simcc_vis.py
  class SimCCVisualizer (line 10) | class SimCCVisualizer:
    method draw_instance_xy_heatmap (line 12) | def draw_instance_xy_heatmap(self,
    method split_simcc_xy (line 49) | def split_simcc_xy(self, heatmap: Union[np.ndarray, torch.Tensor]):
    method merge_maps (line 62) | def merge_maps(self, map_2d):
    method draw_1d_heatmaps (line 68) | def draw_1d_heatmaps(self, heatmap_1d):
    method creat_blank (line 81) | def creat_blank(self,
    method draw_2d_heatmaps (line 94) | def draw_2d_heatmaps(self, heatmap_2d):
    method image_cover (line 101) | def image_cover(self, background: np.ndarray, foreground: np.ndarray,
    method add_1d_heatmaps (line 108) | def add_1d_heatmaps(self,

FILE: projects/example_project/models/example_head.py
  class ExampleHead (line 7) | class ExampleHead(HeatmapHead):
    method __init__ (line 13) | def __init__(self, **kwargs) -> None:
    method forward (line 17) | def forward(self, feats):
    method predict (line 29) | def predict(self, feats, batch_data_samples, test_cfg={}):
    method loss (line 62) | def loss(self, feats, batch_data_samples, train_cfg={}) -> dict:

FILE: projects/example_project/models/example_loss.py
  class ExampleLoss (line 7) | class ExampleLoss(KeypointMSELoss):
    method __init__ (line 13) | def __init__(self, **kwargs) -> None:
    method forward (line 17) | def forward(self, output, target, target_weights=None, mask=None):

FILE: projects/just_dance/app.py
  function process_video (line 26) | def process_video(

FILE: projects/just_dance/calculate_similarity.py
  function _calculate_similarity (line 10) | def _calculate_similarity(tch_kpts: np.ndarray, stu_kpts: np.ndarray):
  function calculate_similarity (line 57) | def calculate_similarity(tch_kpts: np.ndarray, stu_kpts: np.ndarray):
  function select_piece_from_similarity (line 75) | def select_piece_from_similarity(similarity):

FILE: projects/just_dance/process_video.py
  class VideoProcessor (line 45) | class VideoProcessor:
    method __init__ (line 48) | def __init__(self):
    method _set_category (line 51) | def _set_category(self, category):
    method pose_estimator (line 56) | def pose_estimator(self) -> Pose2DInferencer:
    method visualizer (line 67) | def visualizer(self) -> PoseLocalVisualizer:
    method get_keypoints_from_frame (line 83) | def get_keypoints_from_frame(self, image: np.ndarray) -> np.ndarray:
    method get_keypoints_from_video (line 121) | def get_keypoints_from_video(self, video: str) -> np.ndarray:
    method run (line 150) | def run(self,
    method generate_output_video (line 173) | def generate_output_video(self, tch_video: str, stu_video: str,

FILE: projects/just_dance/utils.py
  function resize_image_to_fixed_height (line 9) | def resize_image_to_fixed_height(image: np.ndarray,
  function blend_images (line 30) | def blend_images(img1: np.ndarray,
  function convert_video_fps (line 60) | def convert_video_fps(video):
  function get_smoothed_kpt (line 75) | def get_smoothed_kpt(kpts, index, sigma=5):

FILE: projects/mmpose4aigc/openpose_visualization.py
  function mmpose_to_openpose_visualization (line 42) | def mmpose_to_openpose_visualization(args, img_path, detector, pose_esti...
  function main (line 117) | def main():

FILE: projects/pose_anything/datasets/builder.py
  function _concat_cfg (line 8) | def _concat_cfg(cfg):
  function _check_vaild (line 27) | def _check_vaild(cfg):
  function build_dataset (line 35) | def build_dataset(cfg, default_args=None):

FILE: projects/pose_anything/datasets/datasets/mp100/fewshot_base_dataset.py
  class FewShotBaseDataset (line 15) | class FewShotBaseDataset(Dataset, metaclass=ABCMeta):
    method __init__ (line 17) | def __init__(self,
    method _get_db (line 49) | def _get_db(self):
    method _select_kpt (line 54) | def _select_kpt(self, obj, kpt_id):
    method evaluate (line 59) | def evaluate(self, cfg, preds, output_dir, *args, **kwargs):
    method _write_keypoint_results (line 64) | def _write_keypoint_results(keypoints, res_file):
    method _report_metric (line 70) | def _report_metric(self,
    method _merge_obj (line 137) | def _merge_obj(self, Xs_list, Xq, idx):
    method __len__ (line 168) | def __len__(self):
    method __getitem__ (line 172) | def __getitem__(self, idx):
    method _sort_and_unique_bboxes (line 227) | def _sort_and_unique_bboxes(self, kpts, key='bbox_id'):

FILE: projects/pose_anything/datasets/datasets/mp100/fewshot_dataset.py
  class FewShotKeypointDataset (line 13) | class FewShotKeypointDataset(FewShotBaseDataset):
    method __init__ (line 15) | def __init__(self,
    method random_paired_samples (line 73) | def random_paired_samples(self):
    method make_paired_samples (line 91) | def make_paired_samples(self):
    method _select_kpt (line 107) | def _select_kpt(self, obj, kpt_id):
    method _get_mapping_id_name (line 115) | def _get_mapping_id_name(imgs):
    method _get_db (line 135) | def _get_db(self):
    method _load_coco_keypoint_annotation_kernel (line 148) | def _load_coco_keypoint_annotation_kernel(self, img_id):
    method _xywh2cs (line 238) | def _xywh2cs(self, x, y, w, h):
    method evaluate (line 269) | def evaluate(self, outputs, res_folder, metric='PCK', **kwargs):

FILE: projects/pose_anything/datasets/datasets/mp100/test_base_dataset.py
  class TestBaseDataset (line 17) | class TestBaseDataset(Dataset, metaclass=ABCMeta):
    method __init__ (line 19) | def __init__(self,
    method _get_db (line 53) | def _get_db(self):
    method _select_kpt (line 58) | def _select_kpt(self, obj, kpt_id):
    method evaluate (line 63) | def evaluate(self, cfg, preds, output_dir, *args, **kwargs):
    method _write_keypoint_results (line 68) | def _write_keypoint_results(keypoints, res_file):
    method _report_metric (line 74) | def _report_metric(self, res_file, metrics):
    method _merge_obj (line 175) | def _merge_obj(self, Xs_list, Xq, idx):
    method __len__ (line 206) | def __len__(self):
    method __getitem__ (line 210) | def __getitem__(self, idx):
    method _sort_and_unique_bboxes (line 240) | def _sort_and_unique_bboxes(self, kpts, key='bbox_id'):

FILE: projects/pose_anything/datasets/datasets/mp100/test_dataset.py
  class TestPoseDataset (line 13) | class TestPoseDataset(TestBaseDataset):
    method __init__ (line 15) | def __init__(self,
    method random_paired_samples (line 81) | def random_paired_samples(self):
    method make_paired_samples (line 99) | def make_paired_samples(self):
    method _select_kpt (line 115) | def _select_kpt(self, obj, kpt_id):
    method _get_mapping_id_name (line 123) | def _get_mapping_id_name(imgs):
    method _get_db (line 143) | def _get_db(self):
    method _load_coco_keypoint_annotation_kernel (line 156) | def _load_coco_keypoint_annotation_kernel(self, img_id):
    method _xywh2cs (line 251) | def _xywh2cs(self, x, y, w, h):
    method evaluate (line 282) | def evaluate(self, outputs, res_folder, metric='PCK', **kwargs):

FILE: projects/pose_anything/datasets/datasets/mp100/transformer_base_dataset.py
  class TransformerBaseDataset (line 15) | class TransformerBaseDataset(Dataset, metaclass=ABCMeta):
    method __init__ (line 17) | def __init__(self,
    method _get_db (line 49) | def _get_db(self):
    method _select_kpt (line 54) | def _select_kpt(self, obj, kpt_id):
    method evaluate (line 59) | def evaluate(self, cfg, preds, output_dir, *args, **kwargs):
    method _write_keypoint_results (line 64) | def _write_keypoint_results(keypoints, res_file):
    method _report_metric (line 70) | def _report_metric(self,
    method _merge_obj (line 137) | def _merge_obj(self, Xs_list, Xq, idx):
    method __len__ (line 168) | def __len__(self):
    method __getitem__ (line 172) | def __getitem__(self, idx):
    method _sort_and_unique_bboxes (line 201) | def _sort_and_unique_bboxes(self, kpts, key='bbox_id'):

FILE: projects/pose_anything/datasets/datasets/mp100/transformer_dataset.py
  class TransformerPoseDataset (line 13) | class TransformerPoseDataset(TransformerBaseDataset):
    method __init__ (line 15) | def __init__(self,
    method random_paired_samples (line 75) | def random_paired_samples(self):
    method make_paired_samples (line 93) | def make_paired_samples(self):
    method _select_kpt (line 109) | def _select_kpt(self, obj, kpt_id):
    method _get_mapping_id_name (line 117) | def _get_mapping_id_name(imgs):
    method _get_db (line 137) | def _get_db(self):
    method _load_coco_keypoint_annotation_kernel (line 151) | def _load_coco_keypoint_annotation_kernel(self, img_id):
    method _xywh2cs (line 246) | def _xywh2cs(self, x, y, w, h):
    method evaluate (line 277) | def evaluate(self, outputs, res_folder, metric='PCK', **kwargs):

FILE: projects/pose_anything/datasets/pipelines/top_down_transform.py
  class TopDownGenerateTargetFewShot (line 4) | class TopDownGenerateTargetFewShot:
    method __init__ (line 32) | def __init__(self,
    method _msra_generate_target (line 46) | def _msra_generate_target(self, cfg, joints_3d, joints_3d_visible, sig...
    method _udp_generate_target (line 134) | def _udp_generate_target(self, cfg, joints_3d, joints_3d_visible, factor,
    method __call__ (line 255) | def __call__(self, results):

FILE: projects/pose_anything/demo.py
  class ResizePad (line 20) | class ResizePad:
    method __init__ (line 22) | def __init__(self, w=256, h=256):
    method __call__ (line 26) | def __call__(self, image):
  function parse_args (line 47) | def parse_args():
  function merge_configs (line 75) | def merge_configs(cfg1, cfg2):
  function main (line 86) | def main():

FILE: projects/pose_anything/models/backbones/simmim.py
  function norm_targets (line 17) | def norm_targets(targets, patch_size):
  class SwinTransformerForSimMIM (line 54) | class SwinTransformerForSimMIM(SwinTransformer):
    method __init__ (line 56) | def __init__(self, **kwargs):
    method forward (line 64) | def forward(self, x, mask):
    method no_weight_decay (line 89) | def no_weight_decay(self):
  class SwinTransformerV2ForSimMIM (line 93) | class SwinTransformerV2ForSimMIM(SwinTransformerV2):
    method __init__ (line 95) | def __init__(self, **kwargs):
    method forward (line 103) | def forward(self, x, mask):
    method no_weight_decay (line 128) | def no_weight_decay(self):
  class SimMIM (line 132) | class SimMIM(nn.Module):
    method __init__ (line 134) | def __init__(self, config, encoder, encoder_stride, in_chans, patch_si...
    method forward (line 151) | def forward(self, x, mask):
    method no_weight_decay (line 167) | def no_weight_decay(self):
    method no_weight_decay_keywords (line 173) | def no_weight_decay_keywords(self):
  function build_simmim (line 182) | def build_simmim(config):

FILE: projects/pose_anything/models/backbones/swin_mlp.py
  class Mlp (line 15) | class Mlp(nn.Module):
    method __init__ (line 17) | def __init__(self,
    method forward (line 31) | def forward(self, x):
  function window_partition (line 40) | def window_partition(x, window_size):
  function window_reverse (line 57) | def window_reverse(windows, window_size, H, W):
  class SwinMLPBlock (line 75) | class SwinMLPBlock(nn.Module):
    method __init__ (line 88) | def __init__(self,
    method forward (line 137) | def forward(self, x):
    method extra_repr (line 197) | def extra_repr(self) -> str:
    method flops (line 204) | def flops(self):
  class PatchMerging (line 224) | class PatchMerging(nn.Module):
    method __init__ (line 234) | def __init__(self, input_resolution, dim, norm_layer=nn.LayerNorm):
    method forward (line 241) | def forward(self, x):
    method extra_repr (line 264) | def extra_repr(self) -> str:
    method flops (line 267) | def flops(self):
  class BasicLayer (line 274) | class BasicLayer(nn.Module):
    method __init__ (line 295) | def __init__(self,
    method forward (line 336) | def forward(self, x):
    method extra_repr (line 346) | def extra_repr(self) -> str:
    method flops (line 350) | def flops(self):
  class PatchEmbed (line 359) | class PatchEmbed(nn.Module):
    method __init__ (line 371) | def __init__(self,
    method forward (line 398) | def forward(self, x):
    method flops (line 409) | def flops(self):
  class SwinMLP (line 418) | class SwinMLP(nn.Module):
    method __init__ (line 443) | def __init__(self,
    method _init_weights (line 521) | def _init_weights(self, m):
    method no_weight_decay (line 531) | def no_weight_decay(self):
    method no_weight_decay_keywords (line 535) | def no_weight_decay_keywords(self):
    method forward_features (line 538) | def forward_features(self, x):
    method forward (line 552) | def forward(self, x):
    method flops (line 557) | def flops(self):

FILE: projects/pose_anything/models/backbones/swin_transformer.py
  class Mlp (line 30) | class Mlp(nn.Module):
    method __init__ (line 32) | def __init__(self,
    method forward (line 46) | def forward(self, x):
  function window_partition (line 55) | def window_partition(x, window_size):
  function window_reverse (line 72) | def window_reverse(windows, window_size, H, W):
  class WindowAttention (line 90) | class WindowAttention(nn.Module):
    method __init__ (line 103) | def __init__(self,
    method forward (line 149) | def forward(self, x, mask=None):
    method extra_repr (line 188) | def extra_repr(self) -> str:
    method flops (line 192) | def flops(self, N):
  class SwinTransformerBlock (line 206) | class SwinTransformerBlock(nn.Module):
    method __init__ (line 225) | def __init__(self,
    method forward (line 305) | def forward(self, x):
    method extra_repr (line 372) | def extra_repr(self) -> str:
    method flops (line 380) | def flops(self):
  class PatchMerging (line 395) | class PatchMerging(nn.Module):
    method __init__ (line 403) | def __init__(self, input_resolution, dim, norm_layer=nn.LayerNorm):
    method forward (line 410) | def forward(self, x):
    method extra_repr (line 433) | def extra_repr(self) -> str:
    method flops (line 436) | def flops(self):
  class BasicLayer (line 443) | class BasicLayer(nn.Module):
    method __init__ (line 464) | def __init__(self,
    method forward (line 514) | def forward(self, x):
    method extra_repr (line 524) | def extra_repr(self) -> str:
    method flops (line 528) | def flops(self):
  class PatchEmbed (line 537) | class PatchEmbed(nn.Module):
    method __init__ (line 547) | def __init__(self,
    method forward (line 574) | def forward(self, x):
    method flops (line 585) | def flops(self):
  class SwinTransformer (line 594) | class SwinTransformer(nn.Module):
    method __init__ (line 621) | def __init__(self,
    method _init_weights (line 707) | def _init_weights(self, m):
    method no_weight_decay (line 717) | def no_weight_decay(self):
    method no_weight_decay_keywords (line 721) | def no_weight_decay_keywords(self):
    method forward_features (line 724) | def forward_features(self, x):
    method forward (line 738) | def forward(self, x):
    method flops (line 743) | def flops(self):

FILE: projects/pose_anything/models/backbones/swin_transformer_moe.py
  class Mlp (line 25) | class Mlp(nn.Module):
    method __init__ (line 27) | def __init__(self,
    method forward (line 42) | def forward(self, x):
  class MoEMlp (line 51) | class MoEMlp(nn.Module):
    method __init__ (line 53) | def __init__(self,
    method forward (line 115) | def forward(self, x):
    method extra_repr (line 119) | def extra_repr(self) -> str:
    method _init_weights (line 129) | def _init_weights(self):
  function window_partition (line 139) | def window_partition(x, window_size):
  function window_reverse (line 156) | def window_reverse(windows, window_size, H, W):
  class WindowAttention (line 174) | class WindowAttention(nn.Module):
    method __init__ (line 194) | def __init__(self,
    method forward (line 267) | def forward(self, x, mask=None):
    method extra_repr (line 310) | def extra_repr(self) -> str:
    method flops (line 315) | def flops(self, N):
  class SwinTransformerBlock (line 329) | class SwinTransformerBlock(nn.Module):
    method __init__ (line 371) | def __init__(self,
    method forward (line 488) | def forward(self, x):
    method extra_repr (line 542) | def extra_repr(self) -> str:
    method flops (line 550) | def flops(self):
  class PatchMerging (line 569) | class PatchMerging(nn.Module):
    method __init__ (line 579) | def __init__(self, input_resolution, dim, norm_layer=nn.LayerNorm):
    method forward (line 586) | def forward(self, x):
    method extra_repr (line 609) | def extra_repr(self) -> str:
    method flops (line 612) | def flops(self):
  class BasicLayer (line 619) | class BasicLayer(nn.Module):
    method __init__ (line 665) | def __init__(self,
    method forward (line 742) | def forward(self, x):
    method extra_repr (line 760) | def extra_repr(self) -> str:
    method flops (line 764) | def flops(self):
  class PatchEmbed (line 773) | class PatchEmbed(nn.Module):
    method __init__ (line 785) | def __init__(self,
    method forward (line 812) | def forward(self, x):
    method flops (line 823) | def flops(self):
  class SwinTransformerMoE (line 832) | class SwinTransformerMoE(nn.Module):
    method __init__ (line 888) | def __init__(self,
    method _init_weights (line 1013) | def _init_weights(self, m):
    method no_weight_decay (line 1025) | def no_weight_decay(self):
    method no_weight_decay_keywords (line 1029) | def no_weight_decay_keywords(self):
    method forward_features (line 1035) | def forward_features(self, x):
    method forward (line 1050) | def forward(self, x):
    method add_param_to_skip_allreduce (line 1055) | def add_param_to_skip_allreduce(self, param_name):
    method flops (line 1058) | def flops(self):

FILE: projects/pose_anything/models/backbones/swin_transformer_v2.py
  class Mlp (line 18) | class Mlp(nn.Module):
    method __init__ (line 20) | def __init__(self,
    method forward (line 34) | def forward(self, x):
  function window_partition (line 43) | def window_partition(x, window_size):
  function window_reverse (line 60) | def window_reverse(windows, window_size, H, W):
  class WindowAttention (line 78) | class WindowAttention(nn.Module):
    method __init__ (line 91) | def __init__(self,
    method forward (line 171) | def forward(self, x, mask=None):
    method extra_repr (line 224) | def extra_repr(self) -> str:
    method flops (line 229) | def flops(self, N):
  class SwinTransformerBlock (line 243) | class SwinTransformerBlock(nn.Module):
    method __init__ (line 259) | def __init__(self,
    method forward (line 337) | def forward(self, x):
    method extra_repr (line 384) | def extra_repr(self) -> str:
    method flops (line 391) | def flops(self):
  class PatchMerging (line 406) | class PatchMerging(nn.Module):
    method __init__ (line 414) | def __init__(self, input_resolution, dim, norm_layer=nn.LayerNorm):
    method forward (line 421) | def forward(self, x):
    method extra_repr (line 444) | def extra_repr(self) -> str:
    method flops (line 447) | def flops(self):
  class BasicLayer (line 454) | class BasicLayer(nn.Module):
    method __init__ (line 472) | def __init__(self,
    method forward (line 520) | def forward(self, x):
    method extra_repr (line 530) | def extra_repr(self) -> str:
    method flops (line 534) | def flops(self):
    method _init_respostnorm (line 542) | def _init_respostnorm(self):
  class PatchEmbed (line 550) | class PatchEmbed(nn.Module):
    method __init__ (line 560) | def __init__(self,
    method forward (line 587) | def forward(self, x):
    method flops (line 598) | def flops(self):
  class SwinTransformerV2 (line 608) | class SwinTransformerV2(nn.Module):
    method __init__ (line 633) | def __init__(self,
    method _init_weights (line 762) | def _init_weights(self, m):
    method no_weight_decay (line 772) | def no_weight_decay(self):
    method no_weight_decay_keywords (line 776) | def no_weight_decay_keywords(self):
    method forward_features (line 779) | def forward_features(self, x):
    method forward (line 813) | def forward(self, x):
    method flops (line 818) | def flops(self):

FILE: projects/pose_anything/models/backbones/swin_utils.py
  function load_pretrained (line 14) | def load_pretrained(config, model, logger):
  function remap_pretrained_keys_swin (line 34) | def remap_pretrained_keys_swin(model, checkpoint_model, logger):

FILE: projects/pose_anything/models/detectors/pam.py
  class PoseAnythingModel (line 17) | class PoseAnythingModel(BaseModel, metaclass=ABCMeta):
    method __init__ (line 28) | def __init__(self,
    method init_backbone (line 44) | def init_backbone(self, pretrained, encoder_config):
    method with_keypoint (line 69) | def with_keypoint(self):
    method init_weights (line 73) | def init_weights(self, pretrained=None):
    method forward (line 79) | def forward(self,
    method forward_dummy (line 100) | def forward_dummy(self, img_s, target_s, target_weight_s, img_q, targe...
    method forward_train (line 104) | def forward_train(self, img_s, target_s, target_weight_s, img_q, targe...
    method forward_test (line 136) | def forward_test(self,
    method predict (line 168) | def predict(self, img_s, target_s, target_weight_s, img_q, img_metas=N...
    method extract_features (line 187) | def extract_features(self, img_s, img_q):
    method parse_keypoints_from_img_meta (line 218) | def parse_keypoints_from_img_meta(self, img_meta, device, keyword='que...
    method show_result (line 249) | def show_result(self,

FILE: projects/pose_anything/models/keypoint_heads/head.py
  function transform_preds (line 17) | def transform_preds(coords, center, scale, output_size, use_udp=False):
  function inverse_sigmoid (line 64) | def inverse_sigmoid(x, eps=1e-3):
  class TokenDecodeMLP (line 71) | class TokenDecodeMLP(nn.Module):
    method __init__ (line 75) | def __init__(self,
    method forward (line 92) | def forward(self, x):
  class PoseHead (line 97) | class PoseHead(nn.Module):
    method __init__ (line 105) | def __init__(self,
    method init_weights (line 168) | def init_weights(self):
    method forward (line 185) | def forward(self, x, feature_s, target_s, mask_s, skeleton):
    method get_loss (line 258) | def get_loss(self, output, initial_proposals, similarity_map, target,
    method get_max_coords (line 302) | def get_max_coords(self, heatmap, heatmap_size=64):
    method heatmap_loss (line 311) | def heatmap_loss(self, similarity_map, target_heatmap, target_weight,
    method get_accuracy (line 337) | def get_accuracy(self,
    method decode (line 373) | def decode(self, img_metas, output, img_size, **kwargs):

FILE: projects/pose_anything/models/utils/builder.py
  function build_positional_encoding (line 13) | def build_positional_encoding(cfg, default_args=None):
  function build_backbone (line 18) | def build_backbone(cfg, default_args=None):
  function build_transformer (line 23) | def build_transformer(cfg, default_args=None):
  function build_linear_layer (line 31) | def build_linear_layer(cfg, *args, **kwargs):

FILE: projects/pose_anything/models/utils/encoder_decoder.py
  function inverse_sigmoid (line 12) | def inverse_sigmoid(x, eps=1e-3):
  class MLP (line 19) | class MLP(nn.Module):
    method __init__ (line 22) | def __init__(self, input_dim, hidden_dim, output_dim, num_layers):
    method forward (line 29) | def forward(self, x):
  class ProposalGenerator (line 35) | class ProposalGenerator(nn.Module):
    method __init__ (line 37) | def __init__(self, hidden_dim, proj_dim, dynamic_proj_dim):
    method forward (line 46) | def forward(self, query_feat, support_feat, spatial_shape):
  class EncoderDecoder (line 126) | class EncoderDecoder(nn.Module):
    method __init__ (line 128) | def __init__(self,
    method init_weights (line 175) | def init_weights(self):
    method forward (line 181) | def forward(self,
  class GraphTransformerDecoder (line 233) | class GraphTransformerDecoder(nn.Module):
    method __init__ (line 235) | def __init__(self,
    method forward (line 252) | def forward(self,
    method update (line 340) | def update(self, query_coordinates, delta_unsig):
  class GraphTransformerDecoderLayer (line 347) | class GraphTransformerDecoderLayer(nn.Module):
    method __init__ (line 349) | def __init__(self,
    method with_pos_embed (line 389) | def with_pos_embed(self, tensor, pos: Optional[Tensor]):
    method forward (line 392) | def forward(self,
  class TransformerEncoder (line 464) | class TransformerEncoder(nn.Module):
    method __init__ (line 466) | def __init__(self, encoder_layer, num_layers, norm=None):
    method forward (line 472) | def forward(self,
  class TransformerEncoderLayer (line 512) | class TransformerEncoderLayer(nn.Module):
    method __init__ (line 514) | def __init__(self,
    method with_pos_embed (line 536) | def with_pos_embed(self, tensor, pos: Optional[Tensor]):
    method forward (line 539) | def forward(self,
  function adj_from_skeleton (line 563) | def adj_from_skeleton(num_pts, skeleton, mask, device='cuda'):
  class GCNLayer (line 580) | class GCNLayer(nn.Module):
    method __init__ (line 582) | def __init__(self,
    method forward (line 602) | def forward(self, x, adj):
  function _get_clones (line 621) | def _get_clones(module, N):
  function _get_activation_fn (line 625) | def _get_activation_fn(activation):
  function clones (line 636) | def clones(module, N):

FILE: projects/pose_anything/models/utils/positional_encoding.py
  class SinePositionalEncoding (line 12) | class SinePositionalEncoding(BaseModule):
    method __init__ (line 37) | def __init__(self,
    method forward (line 58) | def forward(self, mask):
    method forward_coordinates (line 99) | def forward_coordinates(self, coord):
    method __repr__ (line 127) | def __repr__(self):
  class LearnedPositionalEncoding (line 139) | class LearnedPositionalEncoding(BaseModule):
    method __init__ (line 153) | def __init__(self,
    method forward (line 165) | def forward(self, mask):
    method __repr__ (line 189) | def __repr__(self):

FILE: projects/pose_anything/models/utils/transformer.py
  class Transformer (line 12) | class Transformer(BaseModule):
    method __init__ (line 31) | def __init__(self, encoder=None, decoder=None, init_cfg=None):
    method init_weights (line 37) | def init_weights(self):
    method forward (line 44) | def forward(self, x, mask, query_embed, pos_embed, mask_query):
  class DetrTransformerDecoderLayer (line 109) | class DetrTransformerDecoderLayer(BaseTransformerLayer):
    method __init__ (line 131) | def __init__(self,
  class DetrTransformerEncoder (line 155) | class DetrTransformerEncoder(TransformerLayerSequence):
    method __init__ (line 163) | def __init__(self, *args, post_norm_cfg=dict(type='LN'), **kwargs):
    method forward (line 174) | def forward(self, *args, **kwargs):
  class DetrTransformerDecoder (line 187) | class DetrTransformerDecoder(TransformerLayerSequence):
    method __init__ (line 196) | def __init__(self,
    method forward (line 210) | def forward(self, query, *args, **kwargs):
  class DynamicConv (line 238) | class DynamicConv(BaseModule):
    method __init__ (line 264) | def __init__(self,
    method forward (line 298) | def forward(self, param_feature, input_feature):

FILE: projects/pose_anything/tools/visualization.py
  function plot_results (line 19) | def plot_results(support_img,
  function str_is_int (line 84) | def str_is_int(s):

FILE: projects/rtmpose/app.py
  function predict (line 38) | def predict(input,

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/OnnxRumtime-CPU/src/RTMPoseOnnxRuntime/characterset_convert.h
  function namespace (line 17) | namespace stubbornhuang

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/OnnxRumtime-CPU/src/RTMPoseOnnxRuntime/main.cpp
  function main (line 14) | int main()

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/OnnxRumtime-CPU/src/RTMPoseOnnxRuntime/rtmdet_onnxruntime.cpp
  function DetectBox (line 35) | DetectBox RTMDetOnnxruntime::Inference(const cv::Mat& input_mat)

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/OnnxRumtime-CPU/src/RTMPoseOnnxRuntime/rtmdet_onnxruntime.h
  function class (line 13) | class RTMDetOnnxruntime

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/OnnxRumtime-CPU/src/RTMPoseOnnxRuntime/rtmpose_onnxruntime.h
  function class (line 13) | class RTMPoseOnnxruntime

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/OnnxRumtime-CPU/src/RTMPoseOnnxRuntime/rtmpose_tracker_onnxruntime.h
  function class (line 10) | class RTMPoseTrackerOnnxruntime

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/OnnxRumtime-CPU/src/RTMPoseOnnxRuntime/rtmpose_utils.h
  function std (line 6) | const std::vector<float> IMAGE_MEAN{ 123.675, 116.28, 103.53 };
  type PosePoint (line 54) | typedef PosePoint Vector2D;

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/TensorRT/python/convert_rtmdet.py
  function build_model_from_cfg (line 9) | def build_model_from_cfg(config_path: str, checkpoint_path: str, device):
  class RTMDet (line 15) | class RTMDet(nn.Module):
    method __init__ (line 22) | def __init__(self, model: nn.Module) -> None:
    method forward (line 28) | def forward(self, inputs):
    method decode (line 40) | def decode(self, box: torch.Tensor, cls: torch.Tensor, stage: int):
  function parse_args (line 76) | def parse_args():

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/TensorRT/src/RTMPoseTensorRT/inference.cpp
  function inference (line 11) | std::vector<std::vector<PosePoint>> inference(cv::Mat& image, RTMDet& de...

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/TensorRT/src/RTMPoseTensorRT/main.cpp
  class Logger (line 18) | class Logger : public nvinfer1::ILogger
    method log (line 20) | void log(Severity severity, const char* msg) noexcept override
  function main (line 29) | int main()

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/TensorRT/src/RTMPoseTensorRT/rtmdet.h
  function class (line 13) | class RTMDet

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/TensorRT/src/RTMPoseTensorRT/rtmpose.h
  function class (line 15) | class RTMPose

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/TensorRT/src/RTMPoseTensorRT/utils.cpp
  function MixImage (line 18) | bool MixImage(cv::Mat& srcImage, cv::Mat mixImage, cv::Point startPoint)
  function resize (line 47) | std::tuple<cv::Mat, int, int> resize(cv::Mat& img, int w, int h)
  function compare_boxes (line 82) | bool compare_boxes(const Box& b1, const Box& b2)
  function intersection_over_union (line 94) | float intersection_over_union(const Box& b1, const Box& b2)
  function non_maximum_suppression (line 122) | std::vector<Box> non_maximum_suppression(std::vector<Box> boxes, float i...
  function img_cut (line 157) | cv::Mat img_cut(cv::Mat& image, int x1, int y1, int x2, int y2)
  function isEqual (line 171) | bool isEqual(float a, float b)
  function draw_pose (line 182) | void draw_pose(cv::Mat& image, std::vector<std::vector<PosePoint>> points)

FILE: projects/rtmpose/examples/RTMPose-Deploy/Windows/TensorRT/src/RTMPoseTensorRT/utils.h
  type PosePoint (line 12) | struct PosePoint

FILE: projects/rtmpose/examples/onnxruntime/main.py
  function parse_args (line 14) | def parse_args():
  function preprocess (line 29) | def preprocess(
  function build_session (line 62) | def build_session(onnx_file: str, device: str = 'cpu') -> ort.InferenceS...
  function inference (line 79) | def inference(sess: ort.InferenceSession, img: np.ndarray) -> np.ndarray:
  function postprocess (line 104) | def postprocess(outputs: List[np.ndarray],
  function visualize (line 134) | def visualize(img: np.ndarray,
  function bbox_xyxy2cs (line 198) | def bbox_xyxy2cs(bbox: np.ndarray,
  function _fix_aspect_ratio (line 232) | def _fix_aspect_ratio(bbox_scale: np.ndarray,
  function _rotate_point (line 250) | def _rotate_point(pt: np.ndarray, angle_rad: float) -> np.ndarray:
  function _get_3rd_point (line 265) | def _get_3rd_point(a: np.ndarray, b: np.ndarray) -> np.ndarray:
  function get_warp_matrix (line 284) | def get_warp_matrix(center: np.ndarray,
  function top_down_affine (line 338) | def top_down_affine(input_size: dict, bbox_scale: dict, bbox_center: dict,
  function get_simcc_maximum (line 371) | def get_simcc_maximum(simcc_x: np.ndarray,
  function decode (line 416) | def decode(simcc_x: np.ndarray, simcc_y: np.ndarray,
  function main (line 436) | def main():

FILE: projects/rtmpose3d/demo/body3d_img2pose_demo.py
  function parse_args (line 32) | def parse_args():
  function process_one_image (line 127) | def process_one_image(args, detector, frame: np.ndarray, frame_idx: int,
  function main (line 261) | def main():

FILE: projects/rtmpose3d/rtmpose3d/loss.py
  class KLDiscretLossWithWeight (line 6) | class KLDiscretLossWithWeight(KLDiscretLoss):
    method __init__ (line 8) | def __init__(self, **kwargs):
    method forward (line 12) | def forward(self, pred_simcc, gt_simcc, target_weight):
    method loss_name (line 32) | def loss_name(self):

FILE: projects/rtmpose3d/rtmpose3d/pose_estimator.py
  class TopdownPoseEstimator3D (line 12) | class TopdownPoseEstimator3D(TopdownPoseEstimator):
    method __init__ (line 14) | def __init__(self, **kwargs):
    method add_pred_to_datasample (line 23) | def add_pred_to_datasample(self, batch_pred_instances: InstanceList,

FILE: projects/rtmpose3d/rtmpose3d/rtmw3d_head.py
  class RTMW3DHead (line 24) | class RTMW3DHead(BaseHead):
    method __init__ (line 55) | def __init__(
    method forward (line 169) | def forward(self, feats: Tuple[Tensor,
    method decode (line 209) | def decode(self, batch_outputs: Union[Tensor,
    method predict (line 256) | def predict(
    method loss (line 294) | def loss(
    method default_init_cfg (line 369) | def default_init_cfg(self):
  function simcc_mpjpe (line 378) | def simcc_mpjpe(output: Tuple[np.ndarray, np.ndarray, np.ndarray],
  function get_3d_coord (line 428) | def get_3d_coord(simcc_x, simcc_y, simcc_z, with_z_labels):

FILE: projects/rtmpose3d/rtmpose3d/simcc_3d_label.py
  class SimCC3DLabel (line 15) | class SimCC3DLabel(BaseKeypointCodec):
    method __init__ (line 74) | def __init__(self,
    method encode (line 102) | def encode(self,
    method decode (line 152) | def decode(self, x: np.ndarray, y: np.ndarray, z: np.ndarray):
    method _map_coordinates (line 195) | def _map_coordinates(
    method _generate_gaussian (line 209) | def _generate_gaussian(

FILE: projects/rtmpose3d/rtmpose3d/utils.py
  function get_simcc_maximum (line 6) | def get_simcc_maximum(simcc_x: np.ndarray,

FILE: projects/skps/custom_codecs/skps_heatmap.py
  class SKPSHeatmap (line 14) | class SKPSHeatmap(BaseKeypointCodec):
    method __init__ (line 42) | def __init__(self, input_size: Tuple[int, int],
    method encode (line 56) | def encode(self,
    method generate_offset_map (line 103) | def generate_offset_map(self, heatmap_size: Tuple[int, int],
    method decode (line 123) | def decode(self, encoded: np.ndarray,

FILE: projects/skps/models/skps_head.py
  class SKPSHead (line 24) | class SKPSHead(BaseHead):
    method __init__ (line 55) | def __init__(self,
    method default_init_cfg (line 122) | def default_init_cfg(self):
    method _make_conv_layers (line 129) | def _make_conv_layers(self, in_channels: int,
    method forward (line 152) | def forward(self, feats: Tuple[Tensor]) -> Tensor:
    method loss (line 170) | def loss(self,
    method predict (line 227) | def predict(self,
    method decode (line 307) | def decode(self,
    method _load_state_dict_pre_hook (line 351) | def _load_state_dict_pre_hook(self, state_dict, prefix, local_meta, *a...

FILE: projects/uniformer/models/uniformer.py
  class Mlp (line 19) | class Mlp(BaseModule):
    method __init__ (line 33) | def __init__(self,
    method forward (line 47) | def forward(self, x):
  class CMlp (line 54) | class CMlp(BaseModule):
    method __init__ (line 68) | def __init__(self,
    method forward (line 82) | def forward(self, x):
  class CBlock (line 89) | class CBlock(BaseModule):
    method __init__ (line 104) | def __init__(self,
    method forward (line 130) | def forward(self, x):
  class Attention (line 138) | class Attention(BaseModule):
    method __init__ (line 159) | def __init__(self,
    method forward (line 179) | def forward(self, x):
  class PatchEmbed (line 196) | class PatchEmbed(BaseModule):
    method __init__ (line 212) | def __init__(self,
    method forward (line 230) | def forward(self, x):
  class SABlock (line 240) | class SABlock(BaseModule):
    method __init__ (line 260) | def __init__(self,
    method forward (line 294) | def forward(self, x):
  class WindowSABlock (line 304) | class WindowSABlock(BaseModule):
    method __init__ (line 325) | def __init__(self,
    method window_reverse (line 361) | def window_reverse(self, windows, H, W):
    method window_partition (line 377) | def window_partition(self, x):
    method forward (line 393) | def forward(self, x):
  class UniFormer (line 430) | class UniFormer(BaseBackbone):
    method __init__ (line 468) | def __init__(
    method init_weights (line 634) | def init_weights(self):
    method _init_weights (line 652) | def _init_weights(self, m):
    method no_weight_decay (line 662) | def no_weight_decay(self):
    method get_classifier (line 665) | def get_classifier(self):
    method reset_classifier (line 668) | def reset_classifier(self, num_classes, global_pool=''):
    method forward (line 674) | def forward(self, x):

FILE: projects/yolox_pose/datasets/bbox_keypoint_structure.py
  class BBoxKeypoints (line 16) | class BBoxKeypoints(HorizontalBoxes):
    method __init__ (line 42) | def __init__(self,
    method flip_ (line 80) | def flip_(self,
    method translate_ (line 96) | def translate_(self, distances: Tuple[float, float]) -> None:
    method rescale_ (line 109) | def rescale_(self, scale_factor: Tuple[float, float]) -> None:
    method clip_ (line 129) | def clip_(self, img_shape: Tuple[int, int]) -> None:
    method project_ (line 147) | def project_(self, homography_matrix: Union[Tensor, np.ndarray]) -> None:
    method cat (line 193) | def cat(cls: Type[T], box_list: Sequence[T], dim: int = 0) -> T:
    method __getitem__ (line 225) | def __getitem__(self: T, index: IndexType) -> T:
    method num_keypoints (line 254) | def num_keypoints(self) -> Tensor:
    method __deepcopy__ (line 258) | def __deepcopy__(self, memo):
    method clone (line 269) | def clone(self: T) -> T:
    method to (line 278) | def to(self: T, *args, **kwargs) -> T:

FILE: projects/yolox_pose/datasets/coco_dataset.py
  class CocoDataset (line 11) | class CocoDataset(MMPoseCocoDataset):
    method prepare_data (line 14) | def prepare_data(self, idx) -> Any:

FILE: projects/yolox_pose/datasets/transforms.py
  class PoseToDetConverter (line 15) | class PoseToDetConverter(BaseTransform):
    method transform (line 19) | def transform(self, results: dict) -> dict:
  class PackDetPoseInputs (line 49) | class PackDetPoseInputs(PackDetInputs):
    method __init__ (line 58) | def __init__(self,
    method transform (line 65) | def transform(self, results: dict) -> dict:
  class FilterDetPoseAnnotations (line 81) | class FilterDetPoseAnnotations(FilterDetAnnotations):
    method transform (line 90) | def transform(self, results: dict) -> Union[dict, None]:

FILE: projects/yolox_pose/models/assigner.py
  class PoseSimOTAAssigner (line 17) | class PoseSimOTAAssigner(SimOTAAssigner):
    method __init__ (line 19) | def __init__(self,
    method assign (line 38) | def assign(self,
    method dynamic_k_matching (line 177) | def dynamic_k_matching(self, cost: Tensor, pairwise_ious: Tensor,

FILE: projects/yolox_pose/models/data_preprocessor.py
  class PoseBatchSyncRandomResize (line 12) | class PoseBatchSyncRandomResize(BatchSyncRandomResize):
    method forward (line 19) | def forward(self, inputs: Tensor, data_samples: List[PoseDataSample]

FILE: projects/yolox_pose/models/oks_loss.py
  class OksLoss (line 13) | class OksLoss(nn.Module):
    method __init__ (line 33) | def __init__(self,
    method forward (line 45) | def forward(self,
    method compute_oks (line 54) | def compute_oks(self,

FILE: projects/yolox_pose/models/utils.py
  class OutputSaveObjectWrapper (line 7) | class OutputSaveObjectWrapper:
    method __init__ (line 10) | def __init__(self, obj: Any) -> None:
    method __getattr__ (line 14) | def __getattr__(self, attr: str) -> Any:
    method clear (line 37) | def clear(self):
    method __deepcopy__ (line 41) | def __deepcopy__(self, memo):
  class OutputSaveFunctionWrapper (line 48) | class OutputSaveFunctionWrapper:
    method __init__ (line 62) | def __init__(self, func: Callable, spec: Optional[Dict]) -> None:
    method __call__ (line 76) | def __call__(self, *args, **kwargs) -> Any:
    method __enter__ (line 83) | def __enter__(self) -> None:
    method __exit__ (line 89) | def __exit__(self, exc_type, exc_val, exc_tb) -> None:

FILE: projects/yolox_pose/models/yolox_pose_head.py
  class YOLOXPoseHeadModule (line 21) | class YOLOXPoseHeadModule(YOLOXHeadModule):
    method __init__ (line 28) | def __init__(self, num_keypoints: int, *args, **kwargs):
    method _init_layers (line 32) | def _init_layers(self):
    method init_weights (line 52) | def init_weights(self):
    method forward (line 61) | def forward(self, x: Tuple[Tensor]) -> Tuple[List]:
  class YOLOXPoseHead (line 73) | class YOLOXPoseHead(YOLOXHead):
    method __init__ (line 82) | def __init__(
    method _clear (line 103) | def _clear(self):
    method loss_by_feat (line 108) | def loss_by_feat(self,
    method _get_targets_single (line 201) | def _get_targets_single(self,
    method predict_by_feat (line 233) | def predict_by_feat(self,
    method predict (line 323) | def predict(self,
    method decode_pose (line 333) | def decode_pose(self, grids: torch.Tensor, offsets: torch.Tensor,
    method gt_instances_preprocess (line 357) | def gt_instances_preprocess(batch_gt_instances: List[InstanceData], *a...

FILE: setup.py
  function readme (line 16) | def readme():
  function get_version (line 25) | def get_version():
  function parse_requirements (line 37) | def parse_requirements(fname='requirements.txt', with_version=True):
  function add_mim_extension (line 125) | def add_mim_extension():

FILE: tests/test_apis/test_inference.py
  class TestInference (line 19) | class TestInference(TestCase):
    method setUp (line 21) | def setUp(self) -> None:
    method test_init_model (line 27) | def test_init_model(self, config, devices):
    method test_inference_topdown (line 50) | def test_inference_topdown(self, config, devices):
    method test_inference_bottomup (line 95) | def test_inference_bottomup(self, config, devices):

FILE: tests/test_apis/test_inferencers/test_hand3d_inferencer.py
  class TestHand3DInferencer (line 16) | class TestHand3DInferencer(TestCase):
    method tearDown (line 18) | def tearDown(self) -> None:
    method test_init (line 22) | def test_init(self):
    method test_call (line 27) | def test_call(self):

FILE: tests/test_apis/test_inferencers/test_mmpose_inferencer.py
  class TestMMPoseInferencer (line 17) | class TestMMPoseInferencer(TestCase):
    method tearDown (line 19) | def tearDown(self) -> None:
    method test_pose2d_call (line 23) | def test_pose2d_call(self):
    method test_pose3d_call (line 97) | def test_pose3d_call(self):
    method test_hand3d_call (line 131) | def test_hand3d_call(self):

FILE: tests/test_apis/test_inferencers/test_pose2d_inferencer.py
  class TestPose2DInferencer (line 19) | class TestPose2DInferencer(TestCase):
    method tearDown (line 21) | def tearDown(self) -> None:
    method _get_det_model_weights (line 25) | def _get_det_model_weights(self):
    method test_init (line 38) | def test_init(self):
    method test_call (line 94) | def test_call(self):

FILE: tests/test_apis/test_inferencers/test_pose3d_inferencer.py
  class TestPose3DInferencer (line 18) | class TestPose3DInferencer(TestCase):
    method tearDown (line 20) | def tearDown(self) -> None:
    method _get_det_model_weights (line 24) | def _get_det_model_weights(self):
    method test_init (line 37) | def test_init(self):
    method test_call (line 84) | def test_call(self):

FILE: tests/test_codecs/test_annotation_processors.py
  class TestYOLOXPoseAnnotationProcessor (line 10) | class TestYOLOXPoseAnnotationProcessor(TestCase):
    method test_encode (line 12) | def test_encode(self):
    method test_decode (line 32) | def test_decode(self):

FILE: tests/test_codecs/test_associative_embedding.py
  class TestAssociativeEmbedding (line 14) | class TestAssociativeEmbedding(TestCase):
    method setUp (line 16) | def setUp(self) -> None:
    method test_build (line 21) | def test_build(self):
    method test_encode (line 32) | def test_encode(self):
    method _get_tags (line 79) | def _get_tags(self,
    method _sort_preds (line 102) | def _sort_preds(self, keypoints_pred, scores_pred, keypoints_gt):
    method test_decode (line 126) | def test_decode(self):

FILE: tests/test_codecs/test_decoupled_heatmap.py
  class TestDecoupledHeatmap (line 11) | class TestDecoupledHeatmap(TestCase):
    method setUp (line 13) | def setUp(self) -> None:
    method _make_multi_instance_data (line 16) | def _make_multi_instance_data(self, data):
    method test_build (line 47) | def test_build(self):
    method test_encode (line 56) | def test_encode(self):
    method test_decode (line 126) | def test_decode(self):
    method test_cicular_verification (line 148) | def test_cicular_verification(self):

FILE: tests/test_codecs/test_edpose_label.py
  class TestEDPoseLabel (line 10) | class TestEDPoseLabel(TestCase):
    method setUp (line 12) | def setUp(self):
    method test_encode (line 19) | def test_encode(self):
    method test_decode (line 39) | def test_decode(self):

FILE: tests/test_codecs/test_hand_3d_heatmap.py
  class TestHand3DHeatmap (line 9) | class TestHand3DHeatmap(TestCase):
    method build_hand_3d_heatmap (line 11) | def build_hand_3d_heatmap(self, **kwargs):
    method setUp (line 16) | def setUp(self) -> None:
    method test_encode (line 32) | def test_encode(self):
    method test_decode (line 94) | def test_decode(self):
    method test_cicular_verification (line 106) | def test_cicular_verification(self):

FILE: tests/test_codecs/test_image_pose_lifting.py
  class TestImagePoseLifting (line 10) | class TestImagePoseLifting(TestCase):
    method setUp (line 12) | def setUp(self) -> None:
    method build_pose_lifting_label (line 36) | def build_pose_lifting_label(self, **kwargs):
    method test_build (line 45) | def test_build(self):
    method test_encode (line 49) | def test_encode(self):
    method test_decode (line 106) | def test_decode(self):
    method test_cicular_verification (line 126) | def test_cicular_verification(self):

FILE: tests/test_codecs/test_integral_regression_label.py
  class TestRegressionLabel (line 10) | class TestRegressionLabel(TestCase):
    method setUp (line 13) | def setUp(self) -> None:
    method test_encode (line 38) | def test_encode(self):
    method test_decode (line 57) | def test_decode(self):
    method test_cicular_verification (line 69) | def test_cicular_verification(self):

FILE: tests/test_codecs/test_megvii_heatmap.py
  class TestMegviiHeatmap (line 10) | class TestMegviiHeatmap(TestCase):
    method setUp (line 12) | def setUp(self) -> None:
    method test_encode (line 36) | def test_encode(self):
    method test_decode (line 50) | def test_decode(self):
    method test_cicular_verification (line 62) | def test_cicular_verification(self):
    method test_errors (line 76) | def test_errors(self):

FILE: tests/test_codecs/test_motionbert_label.py
  class TestMotionBERTLabel (line 12) | class TestMotionBERTLabel(TestCase):
    method get_camera_param (line 14) | def get_camera_param(self, imgname, camera_param) -> dict:
    method build_pose_lifting_label (line 21) | def build_pose_lifting_label(self, **kwargs):
    method setUp (line 26) | def setUp(self) -> None:
    method test_build (line 53) | def test_build(self):
    method test_encode (line 57) | def test_encode(self):
    method test_decode (line 85) | def test_decode(self):
    method test_cicular_verification (line 117) | def test_cicular_verification(self):

FILE: tests/test_codecs/test_msra_heatmap.py
  class TestMSRAHeatmap (line 10) | class TestMSRAHeatmap(TestCase):
    method setUp (line 12) | def setUp(self) -> None:
    method test_encode (line 45) | def test_encode(self):
    method test_decode (line 59) | def test_decode(self):
    method test_cicular_verification (line 71) | def test_cicular_verification(self):
    method test_errors (line 85) | def test_errors(self):

FILE: tests/test_codecs/test_regression_label.py
  class TestRegressionLabel (line 10) | class TestRegressionLabel(TestCase):
    method setUp (line 13) | def setUp(self) -> None:
    method test_encode (line 37) | def test_encode(self):
    method test_decode (line 51) | def test_decode(self):
    method test_cicular_verification (line 68) | def test_cicular_verification(self):

FILE: tests/test_codecs/test_simcc_label.py
  class TestSimCCLabel (line 10) | class TestSimCCLabel(TestCase):
    method setUp (line 13) | def setUp(self) -> None:
    method test_encode (line 72) | def test_encode(self):
    method test_decode (line 90) | def test_decode(self):
    method test_cicular_verification (line 120) | def test_cicular_verification(self):
    method test_errors (line 137) | def test_errors(self):

FILE: tests/test_codecs/test_spr.py
  class TestSPR (line 12) | class TestSPR(TestCase):
    method setUp (line 14) | def setUp(self) -> None:
    method _make_multi_instance_data (line 17) | def _make_multi_instance_data(self, data):
    method test_build (line 40) | def test_build(self):
    method test_encode (line 50) | def test_encode(self):
    method test_decode (line 131) | def test_decode(self):
    method test_cicular_verification (line 171) | def test_cicular_verification(self):

FILE: tests/test_codecs/test_udp_heatmap.py
  class TestUDPHeatmap (line 10) | class TestUDPHeatmap(TestCase):
    method setUp (line 12) | def setUp(self) -> None:
    method test_encode (line 42) | def test_encode(self):
    method test_decode (line 62) | def test_decode(self):
    method test_cicular_verification (line 80) | def test_cicular_verification(self):
    method test_errors (line 94) | def test_errors(self):

FILE: tests/test_codecs/test_video_pose_lifting.py
  class TestVideoPoseLifting (line 12) | class TestVideoPoseLifting(TestCase):
    method get_camera_param (line 14) | def get_camera_param(self, imgname, camera_param) -> dict:
    method build_pose_lifting_label (line 21) | def build_pose_lifting_label(self, **kwargs):
    method setUp (line 27) | def setUp(self) -> None:
    method test_build (line 52) | def test_build(self):
    method test_encode (line 56) | def test_encode(self):
    method test_decode (line 176) | def test_decode(self):
    method test_cicular_verification (line 196) | def test_cicular_verification(self):

FILE: tests/test_datasets/test_datasets/test_animal_datasets/test_animalkingdom_dataset.py
  class TestAnimalKingdomDataset (line 9) | class TestAnimalKingdomDataset(TestCase):
    method build_ak_dataset (line 11) | def build_ak_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 94) | def test_topdown(self):
    method test_bottomup (line 109) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 120) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_animal_datasets/test_animalpose_dataset.py
  class TestAnimalPoseDataset (line 9) | class TestAnimalPoseDataset(TestCase):
    method build_animalpose_dataset (line 11) | def build_animalpose_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 94) | def test_topdown(self):
    method test_bottomup (line 110) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 122) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_animal_datasets/test_ap10k_dataset.py
  class TestAP10KDataset (line 9) | class TestAP10KDataset(TestCase):
    method build_ap10k_dataset (line 11) | def build_ap10k_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 94) | def test_topdown(self):
    method test_bottomup (line 110) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 122) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_animal_datasets/test_atrw_dataset.py
  class TestATRWDataset (line 9) | class TestATRWDataset(TestCase):
    method build_atrw_dataset (line 11) | def build_atrw_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 94) | def test_topdown(self):
    method test_bottomup (line 109) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 120) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_animal_datasets/test_fly_dataset.py
  class TestFlyDataset (line 9) | class TestFlyDataset(TestCase):
    method build_fly_dataset (line 11) | def build_fly_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 92) | def test_topdown(self):
    method test_bottomup (line 107) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 118) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_animal_datasets/test_horse10_dataset.py
  class TestHorse10Dataset (line 9) | class TestHorse10Dataset(TestCase):
    method build_horse10_dataset (line 11) | def build_horse10_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 92) | def test_topdown(self):
    method test_bottomup (line 108) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 120) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_animal_datasets/test_locust_dataset.py
  class TestLocustDataset (line 9) | class TestLocustDataset(TestCase):
    method build_locust_dataset (line 11) | def build_locust_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 92) | def test_topdown(self):
    method test_bottomup (line 108) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 120) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_animal_datasets/test_macaque_dataset.py
  class TestMacaqueDataset (line 9) | class TestMacaqueDataset(TestCase):
    method build_macaque_dataset (line 11) | def build_macaque_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 94) | def test_topdown(self):
    method test_bottomup (line 110) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 122) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_animal_datasets/test_zebra_dataset.py
  class TestZebraDataset (line 9) | class TestZebraDataset(TestCase):
    method build_zebra_dataset (line 11) | def build_zebra_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 92) | def test_topdown(self):
    method test_bottomup (line 107) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 119) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_aic_dataset.py
  class TestAicDataset (line 9) | class TestAicDataset(TestCase):
    method build_aic_dataset (line 11) | def build_aic_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 54) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 74) | def test_metainfo(self):
    method test_topdown (line 95) | def test_topdown(self):
    method test_bottomup (line 108) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 119) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_coco_dataset.py
  class TestCocoDataset (line 9) | class TestCocoDataset(TestCase):
    method build_coco_dataset (line 11) | def build_coco_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 54) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 74) | def test_metainfo(self):
    method test_topdown (line 95) | def test_topdown(self):
    method test_bottomup (line 122) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 133) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_crowdpose_dataset.py
  class TestCrowdPoseDataset (line 9) | class TestCrowdPoseDataset(TestCase):
    method build_crowdpose_dataset (line 11) | def build_crowdpose_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 54) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 74) | def test_metainfo(self):
    method test_topdown (line 95) | def test_topdown(self):
    method test_bottomup (line 125) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 137) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_exlpose_dataset.py
  class TestExlposeDataset (line 9) | class TestExlposeDataset(TestCase):
    method build_exlpose_dataset (line 11) | def build_exlpose_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 54) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 74) | def test_metainfo(self):
    method test_topdown (line 95) | def test_topdown(self):
    method test_bottomup (line 109) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 121) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_h36m_dataset.py
  class TestH36MDataset (line 9) | class TestH36MDataset(TestCase):
    method build_h36m_dataset (line 11) | def build_h36m_dataset(self, **kwargs):
    method check_data_info_keys (line 23) | def check_data_info_keys(self,
    method check_metainfo_keys (line 52) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 72) | def test_metainfo(self):
    method test_topdown (line 91) | def test_topdown(self):
    method test_bottomup (line 144) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 165) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_humanart21_dataset.py
  class TestHumanart21Dataset (line 9) | class TestHumanart21Dataset(TestCase):
    method build_humanart_dataset (line 11) | def build_humanart_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 94) | def test_topdown(self):
    method test_bottomup (line 122) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 134) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_humanart_dataset.py
  class TestHumanartDataset (line 9) | class TestHumanartDataset(TestCase):
    method build_humanart_dataset (line 11) | def build_humanart_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 53) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 73) | def test_metainfo(self):
    method test_topdown (line 94) | def test_topdown(self):
    method test_bottomup (line 122) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 134) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_jhmdb_dataset.py
  class TestJhmdbDataset (line 9) | class TestJhmdbDataset(TestCase):
    method build_jhmdb_dataset (line 11) | def build_jhmdb_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 54) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 74) | def test_metainfo(self):
    method test_topdown (line 95) | def test_topdown(self):
    method test_bottomup (line 108) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 120) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_mhp_dataset.py
  class TestMhpDataset (line 9) | class TestMhpDataset(TestCase):
    method build_mhp_dataset (line 11) | def build_mhp_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 57) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 77) | def test_metainfo(self):
    method test_topdown (line 98) | def test_topdown(self):
    method test_bottomup (line 111) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 122) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_mpii_dataset.py
  class TestMpiiDataset (line 9) | class TestMpiiDataset(TestCase):
    method build_mpii_dataset (line 11) | def build_mpii_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 56) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 76) | def test_metainfo(self):
    method test_topdown (line 97) | def test_topdown(self):
    method test_bottomup (line 108) | def test_bottomup(self):
    method test_exceptions_and_warnings (line 119) | def test_exceptions_and_warnings(self):

FILE: tests/test_datasets/test_datasets/test_body_datasets/test_mpii_trb_dataset.py
  class TestMpiiTrbDataset (line 9) | class TestMpiiTrbDataset(TestCase):
    method build_mpii_trb_dataset (line 11) | def build_mpii_trb_dataset(self, **kwargs):
    method check_data_info_keys (line 24) | def check_data_info_keys(self,
    method check_metainfo_keys (line 55) | def check_metainfo_keys(self, metainfo: dict):
    method test_metainfo (line 75) | def test_metainfo(self):
    method test_topdown (line 94) | def test_topdown(self)
Copy disabled (too large) Download .json
Condensed preview — 1866 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (13,291K chars).
[
  {
    "path": ".circleci/config.yml",
    "chars": 1277,
    "preview": "version: 2.1\n\n# this allows you to use CircleCI's dynamic configuration feature\nsetup: true\n\n# the path-filtering orb is"
  },
  {
    "path": ".circleci/docker/Dockerfile",
    "chars": 527,
    "preview": "ARG PYTORCH=\"1.7.1\"\nARG CUDA=\"11.0\"\nARG CUDNN=\"8\"\n\nFROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel\n\n# To"
  },
  {
    "path": ".circleci/scripts/get_mmcv_var.sh",
    "chars": 574,
    "preview": "#!/bin/bash\n\nTORCH=$1\nCUDA=$2\n\n# 10.2 -> cu102\nMMCV_CUDA=\"cu`echo ${CUDA} | tr -d '.'`\"\n\n# MMCV only provides pre-compil"
  },
  {
    "path": ".circleci/test.yml",
    "chars": 6264,
    "preview": "version: 2.1\n\n# the default pipeline parameters, which will be updated according to\n# the results of the path-filtering "
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "chars": 3461,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/1-bug-report.yml",
    "chars": 3411,
    "preview": "name: \"🐞 Bug report\"\ndescription: \"Create a report to help us reproduce and fix the bug\"\nlabels: bug\ntitle: \"[Bug] \"\n\nbo"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/2-feature_request.yml",
    "chars": 1396,
    "preview": "name: 🚀 Feature request\ndescription: Suggest an idea for this project\nlabels: feature-request\ntitle: \"[Feature] \"\n\nbody:"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/3-documentation.yml",
    "chars": 1259,
    "preview": "name: 📚 Documentation\ndescription: Report an issue related to the documentation.\nlabels: \"docs\"\ntitle: \"[Docs] \"\n\nbody:\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 314,
    "preview": "blank_issues_enabled: false\n\ncontact_links:\n  - name: Common Issues\n    url: https://mmpose.readthedocs.io/en/latest/faq"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 1720,
    "preview": "<!-- Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request mo"
  },
  {
    "path": ".github/workflows/deploy.yml",
    "chars": 560,
    "preview": "name: deploy\n\non: push\n\njobs:\n  build-n-publish:\n    runs-on: ubuntu-latest\n    if: startsWith(github.event.ref, 'refs/t"
  },
  {
    "path": ".github/workflows/lint.yml",
    "chars": 723,
    "preview": "name: lint\n\non: [push, pull_request]\n\nconcurrency:\n  group: github.workflow−{{ github.ref }}\n  cancel-in-progress: true\n"
  },
  {
    "path": ".github/workflows/merge_stage_test.yml",
    "chars": 8169,
    "preview": "name: merge_stage_test\n\non:\n  push:\n    paths-ignore:\n      - 'README.md'\n      - 'README_zh-CN.md'\n      - 'docs/**'\n  "
  },
  {
    "path": ".github/workflows/pr_stage_test.yml",
    "chars": 7377,
    "preview": "name: pr_stage_test\n\non:\n  pull_request:\n    paths-ignore:\n      - 'README.md'\n      - 'README_zh-CN.md'\n      - 'docs/*"
  },
  {
    "path": ".github/workflows/scripts/get_mmcv_var.sh",
    "chars": 564,
    "preview": "#!/bin/bash\n\nTORCH=$1\nCUDA=$2\n\n# 10.2 -> cu102\nMMCV_CUDA=\"cu`echo ${CUDA} | tr -d '.'`\"\n\n# MMCV only provides pre-compil"
  },
  {
    "path": ".gitignore",
    "chars": 1568,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n**/*.pyc\n\n# C extensions\n*.so\n\n# Distribution "
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 1504,
    "preview": "exclude: ^tests/data/\nrepos:\n  - repo: https://github.com/PyCQA/flake8\n    rev: 5.0.4\n    hooks:\n      - id: flake8\n  - "
  },
  {
    "path": ".pylintrc",
    "chars": 18931,
    "preview": "[MASTER]\n\n# A comma-separated list of package or module names from where C extensions may\n# be loaded. Extensions are lo"
  },
  {
    "path": "CITATION.cff",
    "chars": 269,
    "preview": "cff-version: 1.3.1\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n  - name: \"MMPose Contributors"
  },
  {
    "path": "LICENSE",
    "chars": 11400,
    "preview": "Copyright 2018-2020 Open-MMLab. All rights reserved.\n\n                                 Apache License\n                  "
  },
  {
    "path": "LICENSES.md",
    "chars": 772,
    "preview": "# Licenses for special algorithms\n\nIn this file, we list the algorithms with other licenses instead of Apache 2.0. Users"
  },
  {
    "path": "MANIFEST.in",
    "chars": 236,
    "preview": "include requirements/*.txt\ninclude mmpose/.mim/model-index.yml\ninclude mmpose/.mim/dataset-index.yml\nrecursive-include m"
  },
  {
    "path": "README.md",
    "chars": 27179,
    "preview": "<div align=\"center\">\n  <img src=\"resources/mmpose-logo.png\" width=\"450\"/>\n  <div>&nbsp;</div>\n  <div align=\"center\">\n   "
  },
  {
    "path": "README_CN.md",
    "chars": 23644,
    "preview": "<div align=\"center\">\n  <img src=\"resources/mmpose-logo.png\" width=\"450\"/>\n  <div>&nbsp;</div>\n  <div align=\"center\">\n   "
  },
  {
    "path": "configs/_base_/datasets/300vw.py",
    "chars": 6655,
    "preview": "dataset_info = dict(\n    dataset_name='300vw',\n    paper_info=dict(\n        author='Jie Shen, Stefanos Zafeiriou, Grigor"
  },
  {
    "path": "configs/_base_/datasets/300w.py",
    "chars": 6588,
    "preview": "dataset_info = dict(\n    dataset_name='300w',\n    paper_info=dict(\n        author='Sagonas, Christos and Antonakos, Epam"
  },
  {
    "path": "configs/_base_/datasets/300wlp.py",
    "chars": 5742,
    "preview": "dataset_info = dict(\n    dataset_name='300wlp',\n    paper_info=dict(\n        author='Xiangyu Zhu1, and Zhen Lei1 '\n     "
  },
  {
    "path": "configs/_base_/datasets/aflw.py",
    "chars": 2227,
    "preview": "dataset_info = dict(\n    dataset_name='aflw',\n    paper_info=dict(\n        author='Koestinger, Martin and Wohlhart, Paul"
  },
  {
    "path": "configs/_base_/datasets/aic.py",
    "chars": 4400,
    "preview": "dataset_info = dict(\n    dataset_name='aic',\n    paper_info=dict(\n        author='Wu, Jiahong and Zheng, He and Zhao, Bo"
  },
  {
    "path": "configs/_base_/datasets/ak.py",
    "chars": 7327,
    "preview": "dataset_info = dict(\n    dataset_name='Animal Kingdom',\n    paper_info=dict(\n        author='Singapore University of Tec"
  },
  {
    "path": "configs/_base_/datasets/animalpose.py",
    "chars": 5415,
    "preview": "dataset_info = dict(\n    dataset_name='animalpose',\n    paper_info=dict(\n        author='Cao, Jinkun and Tang, Hongyang "
  },
  {
    "path": "configs/_base_/datasets/ap10k.py",
    "chars": 4508,
    "preview": "dataset_info = dict(\n    dataset_name='ap10k',\n    paper_info=dict(\n        author='Yu, Hang and Xu, Yufei and Zhang, Ji"
  },
  {
    "path": "configs/_base_/datasets/atrw.py",
    "chars": 4273,
    "preview": "dataset_info = dict(\n    dataset_name='atrw',\n    paper_info=dict(\n        author='Li, Shuyuan and Li, Jianguo and Tang,"
  },
  {
    "path": "configs/_base_/datasets/campus.py",
    "chars": 4417,
    "preview": "dataset_info = dict(\n    dataset_name='campus',\n    paper_info=dict(\n        author='Belagiannis, Vasileios and Amin, Si"
  },
  {
    "path": "configs/_base_/datasets/coco.py",
    "chars": 5252,
    "preview": "dataset_info = dict(\n    dataset_name='coco',\n    paper_info=dict(\n        author='Lin, Tsung-Yi and Maire, Michael and "
  },
  {
    "path": "configs/_base_/datasets/coco_aic.py",
    "chars": 6151,
    "preview": "dataset_info = dict(\n    dataset_name='coco',\n    paper_info=[\n        dict(\n            author='Lin, Tsung-Yi and Maire"
  },
  {
    "path": "configs/_base_/datasets/coco_openpose.py",
    "chars": 4866,
    "preview": "dataset_info = dict(\n    dataset_name='coco_openpose',\n    paper_info=dict(\n        author='Zhe, Cao and Tomas, Simon an"
  },
  {
    "path": "configs/_base_/datasets/coco_wholebody.py",
    "chars": 30735,
    "preview": "dataset_info = dict(\n    dataset_name='coco_wholebody',\n    paper_info=dict(\n        author='Jin, Sheng and Xu, Lumin an"
  },
  {
    "path": "configs/_base_/datasets/coco_wholebody_face.py",
    "chars": 7566,
    "preview": "dataset_info = dict(\n    dataset_name='coco_wholebody_face',\n    paper_info=dict(\n        author='Jin, Sheng and Xu, Lum"
  },
  {
    "path": "configs/_base_/datasets/coco_wholebody_hand.py",
    "chars": 4998,
    "preview": "dataset_info = dict(\n    dataset_name='coco_wholebody_hand',\n    paper_info=dict(\n        author='Jin, Sheng and Xu, Lum"
  },
  {
    "path": "configs/_base_/datasets/coco_wholebody_openpose.py",
    "chars": 29756,
    "preview": "dataset_info = dict(\n    dataset_name='coco_wholebody_openpose',\n    paper_info=dict(\n        author='Jin, Sheng and Xu,"
  },
  {
    "path": "configs/_base_/datasets/cofw.py",
    "chars": 2936,
    "preview": "dataset_info = dict(\n    dataset_name='cofw',\n    paper_info=dict(\n        author='Burgos-Artizzu, Xavier P and Perona, "
  },
  {
    "path": "configs/_base_/datasets/crowdpose.py",
    "chars": 4341,
    "preview": "dataset_info = dict(\n    dataset_name='crowdpose',\n    paper_info=dict(\n        author='Li, Jiefeng and Wang, Can and Zh"
  },
  {
    "path": "configs/_base_/datasets/deepfashion2.py",
    "chars": 75480,
    "preview": "colors = dict(\n    sss=[255, 128, 0],  # short_sleeve_shirt\n    lss=[255, 0, 128],  # long_sleeved_shirt\n    sso=[128, 0"
  },
  {
    "path": "configs/_base_/datasets/deepfashion_full.py",
    "chars": 1951,
    "preview": "dataset_info = dict(\n    dataset_name='deepfashion_full',\n    paper_info=dict(\n        author='Liu, Ziwei and Luo, Ping "
  },
  {
    "path": "configs/_base_/datasets/deepfashion_lower.py",
    "chars": 1292,
    "preview": "dataset_info = dict(\n    dataset_name='deepfashion_lower',\n    paper_info=dict(\n        author='Liu, Ziwei and Luo, Ping"
  },
  {
    "path": "configs/_base_/datasets/deepfashion_upper.py",
    "chars": 1610,
    "preview": "dataset_info = dict(\n    dataset_name='deepfashion_upper',\n    paper_info=dict(\n        author='Liu, Ziwei and Luo, Ping"
  },
  {
    "path": "configs/_base_/datasets/exlpose.py",
    "chars": 3869,
    "preview": "dataset_info = dict(\n    dataset_name='exlpose',\n    paper_info=dict(\n        author='Sohyun Lee, Jaesung Rim, Boseung J"
  },
  {
    "path": "configs/_base_/datasets/fly.py",
    "chars": 7150,
    "preview": "dataset_info = dict(\n    dataset_name='fly',\n    paper_info=dict(\n        author='Pereira, Talmo D and Aldarondo, Diego "
  },
  {
    "path": "configs/_base_/datasets/freihand2d.py",
    "chars": 4879,
    "preview": "dataset_info = dict(\n    dataset_name='freihand',\n    paper_info=dict(\n        author='Zimmermann, Christian and Ceylan,"
  },
  {
    "path": "configs/_base_/datasets/h36m.py",
    "chars": 4589,
    "preview": "dataset_info = dict(\n    dataset_name='h36m',\n    paper_info=dict(\n        author='Ionescu, Catalin and Papava, Dragos a"
  },
  {
    "path": "configs/_base_/datasets/h3wb.py",
    "chars": 30731,
    "preview": "dataset_info = dict(\n    dataset_name='h3wb',\n    paper_info=dict(\n        author='Yue Zhu, Nermin Samet, David Picard',"
  },
  {
    "path": "configs/_base_/datasets/halpe.py",
    "chars": 31008,
    "preview": "dataset_info = dict(\n    dataset_name='halpe',\n    paper_info=dict(\n        author='Li, Yong-Lu and Xu, Liang and Liu, X"
  },
  {
    "path": "configs/_base_/datasets/halpe26.py",
    "chars": 7740,
    "preview": "dataset_info = dict(\n    dataset_name='halpe26',\n    paper_info=dict(\n        author='Li, Yong-Lu and Xu, Liang and Liu,"
  },
  {
    "path": "configs/_base_/datasets/horse10.py",
    "chars": 5586,
    "preview": "dataset_info = dict(\n    dataset_name='horse10',\n    paper_info=dict(\n        author='Mathis, Alexander and Biasi, Thoma"
  },
  {
    "path": "configs/_base_/datasets/humanart.py",
    "chars": 5279,
    "preview": "dataset_info = dict(\n    dataset_name='Human-Art',\n    paper_info=dict(\n        author='Ju, Xuan and Zeng, Ailing and '\n"
  },
  {
    "path": "configs/_base_/datasets/humanart21.py",
    "chars": 6351,
    "preview": "dataset_info = dict(\n    dataset_name='Human-Art',\n    paper_info=dict(\n        author='Ju, Xuan and Zeng, Ailing and '\n"
  },
  {
    "path": "configs/_base_/datasets/humanart_aic.py",
    "chars": 6100,
    "preview": "dataset_info = dict(\n    dataset_name='humanart',\n    paper_info=[\n        dict(\n            author='Ju, Xuan and Zeng, "
  },
  {
    "path": "configs/_base_/datasets/interhand2d.py",
    "chars": 4773,
    "preview": "dataset_info = dict(\n    dataset_name='interhand2d',\n    paper_info=dict(\n        author='Moon, Gyeongsik and Yu, Shoou-"
  },
  {
    "path": "configs/_base_/datasets/interhand3d.py",
    "chars": 13089,
    "preview": "dataset_info = dict(\n    dataset_name='interhand3d',\n    paper_info=dict(\n        author='Moon, Gyeongsik and Yu, Shoou-"
  },
  {
    "path": "configs/_base_/datasets/jhmdb.py",
    "chars": 4056,
    "preview": "dataset_info = dict(\n    dataset_name='jhmdb',\n    paper_info=dict(\n        author='H. Jhuang and J. Gall and S. Zuffi a"
  },
  {
    "path": "configs/_base_/datasets/lapa.py",
    "chars": 10825,
    "preview": "dataset_info = dict(\n    dataset_name='lapa',\n    paper_info=dict(\n        author='Liu, Yinglu and Shi, Hailin and Shen,"
  },
  {
    "path": "configs/_base_/datasets/locust.py",
    "chars": 7793,
    "preview": "dataset_info = dict(\n    dataset_name='locust',\n    paper_info=dict(\n        author='Graving, Jacob M and Chae, Daniel a"
  },
  {
    "path": "configs/_base_/datasets/macaque.py",
    "chars": 5364,
    "preview": "dataset_info = dict(\n    dataset_name='macaque',\n    paper_info=dict(\n        author='Labuguen, Rollyn and Matsumoto, Ju"
  },
  {
    "path": "configs/_base_/datasets/mhp.py",
    "chars": 4684,
    "preview": "dataset_info = dict(\n    dataset_name='mhp',\n    paper_info=dict(\n        author='Zhao, Jian and Li, Jianshu and Cheng, "
  },
  {
    "path": "configs/_base_/datasets/mpi_inf_3dhp.py",
    "chars": 4307,
    "preview": "dataset_info = dict(\n    dataset_name='mpi_inf_3dhp',\n    paper_info=dict(\n        author='ehta, Dushyant and Rhodin, He"
  },
  {
    "path": "configs/_base_/datasets/mpii.py",
    "chars": 4610,
    "preview": "dataset_info = dict(\n    dataset_name='mpii',\n    paper_info=dict(\n        author='Mykhaylo Andriluka and Leonid Pishchu"
  },
  {
    "path": "configs/_base_/datasets/mpii_trb.py",
    "chars": 10582,
    "preview": "dataset_info = dict(\n    dataset_name='mpii_trb',\n    paper_info=dict(\n        author='Duan, Haodong and Lin, Kwan-Yee a"
  },
  {
    "path": "configs/_base_/datasets/ochuman.py",
    "chars": 5316,
    "preview": "dataset_info = dict(\n    dataset_name='ochuman',\n    paper_info=dict(\n        author='Zhang, Song-Hai and Li, Ruilong an"
  },
  {
    "path": "configs/_base_/datasets/onehand10k.py",
    "chars": 4776,
    "preview": "dataset_info = dict(\n    dataset_name='onehand10k',\n    paper_info=dict(\n        author='Wang, Yangang and Peng, Cong an"
  },
  {
    "path": "configs/_base_/datasets/panoptic_body3d.py",
    "chars": 5000,
    "preview": "dataset_info = dict(\n    dataset_name='panoptic_pose_3d',\n    paper_info=dict(\n        author='Joo, Hanbyul and Simon, T"
  },
  {
    "path": "configs/_base_/datasets/panoptic_hand2d.py",
    "chars": 4817,
    "preview": "dataset_info = dict(\n    dataset_name='panoptic_hand2d',\n    paper_info=dict(\n        author='Simon, Tomas and Joo, Hanb"
  },
  {
    "path": "configs/_base_/datasets/posetrack18.py",
    "chars": 5116,
    "preview": "dataset_info = dict(\n    dataset_name='posetrack18',\n    paper_info=dict(\n        author='Andriluka, Mykhaylo and Iqbal,"
  },
  {
    "path": "configs/_base_/datasets/rhd2d.py",
    "chars": 5364,
    "preview": "dataset_info = dict(\n    dataset_name='rhd2d',\n    paper_info=dict(\n        author='Christian Zimmermann and Thomas Brox"
  },
  {
    "path": "configs/_base_/datasets/shelf.py",
    "chars": 4416,
    "preview": "dataset_info = dict(\n    dataset_name='shelf',\n    paper_info=dict(\n        author='Belagiannis, Vasileios and Amin, Sik"
  },
  {
    "path": "configs/_base_/datasets/ubody2d.py",
    "chars": 30694,
    "preview": "dataset_info = dict(\n    dataset_name='ubody2d',\n    paper_info=dict(\n        author='Jing Lin, Ailing Zeng, Haoqian Wan"
  },
  {
    "path": "configs/_base_/datasets/ubody3d.py",
    "chars": 25878,
    "preview": "dataset_info = dict(\n    dataset_name='ubody3d',\n    paper_info=dict(\n        author='Jing Lin, Ailing Zeng, Haoqian Wan"
  },
  {
    "path": "configs/_base_/datasets/wflw.py",
    "chars": 9472,
    "preview": "dataset_info = dict(\n    dataset_name='wflw',\n    paper_info=dict(\n        author='Wu, Wayne and Qian, Chen and Yang, Sh"
  },
  {
    "path": "configs/_base_/datasets/zebra.py",
    "chars": 2237,
    "preview": "dataset_info = dict(\n    dataset_name='zebra',\n    paper_info=dict(\n        author='Graving, Jacob M and Chae, Daniel an"
  },
  {
    "path": "configs/_base_/default_runtime.py",
    "chars": 1431,
    "preview": "default_scope = 'mmpose'\n\n# hooks\ndefault_hooks = dict(\n    timer=dict(type='IterTimerHook'),\n    logger=dict(type='Logg"
  },
  {
    "path": "configs/animal_2d_keypoint/README.md",
    "chars": 1032,
    "preview": "# 2D Animal Keypoint Detection\n\n2D animal keypoint detection (animal pose estimation) aims to detect the key-point of di"
  },
  {
    "path": "configs/animal_2d_keypoint/rtmpose/README.md",
    "chars": 1279,
    "preview": "# RTMPose\n\nRecent studies on 2D pose estimation have achieved excellent performance on public benchmarks, yet its applic"
  },
  {
    "path": "configs/animal_2d_keypoint/rtmpose/ap10k/rtmpose-m_8xb64-210e_ap10k-256x256.py",
    "chars": 6980,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 210\nstage2_num_epochs = 30\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/animal_2d_keypoint/rtmpose/ap10k/rtmpose_ap10k.md",
    "chars": 1432,
    "preview": "<!-- [ALGORITHM] -->\n\n<!-- [DATASET] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/abs/2108.12617\">AP"
  },
  {
    "path": "configs/animal_2d_keypoint/rtmpose/ap10k/rtmpose_ap10k.yml",
    "chars": 561,
    "preview": "Models:\n- Config: configs/animal_2d_keypoint/rtmpose/ap10k/rtmpose-m_8xb64-210e_ap10k-256x256.py\n  In Collection: RTMPos"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/README.md",
    "chars": 4286,
    "preview": "# Top-down heatmap-based pose estimation\n\nTop-down methods divide the task into two stages: object detection, followed b"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ak/hrnet_animalkingdom.md",
    "chars": 5463,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"http://openaccess.thecvf.com/content_CVPR_2019/html/Sun_"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ak/hrnet_animalkingdom.yml",
    "chars": 3944,
    "preview": "Models:\n- Config: configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256.py\n "
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256.py",
    "chars": 4050,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=300, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P2-256x256.py",
    "chars": 4050,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=300, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_amphibian-256x256.py",
    "chars": 4070,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=300, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_bird-256x256.py",
    "chars": 4060,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=300, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_fish-256x256.py",
    "chars": 4060,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=300, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_mammal-256x256.py",
    "chars": 4064,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=300, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ak/td-hm_hrnet-w32_8xb32-300e_animalkingdom_P3_reptile-256x256.py",
    "chars": 4066,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=300, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/animalpose/hrnet_animalpose.md",
    "chars": 2539,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"http://openaccess.thecvf.com/content_CVPR_2019/html/Sun_"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/animalpose/hrnet_animalpose.yml",
    "chars": 1104,
    "preview": "Models:\n- Config: configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_hrnet-w32_8xb64-210e_animalpose-256x256.py"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/animalpose/resnet_animalpose.md",
    "chars": 2871,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"http://openaccess.thecvf.com/content_ECCV_2018/html/Bin_"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/animalpose/resnet_animalpose.yml",
    "chars": 1676,
    "preview": "Models:\n- Config: configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_res50_8xb64-210e_animalpose-256x256.py\n  I"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_hrnet-w32_8xb64-210e_animalpose-256x256.py",
    "chars": 4083,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_hrnet-w48_8xb64-210e_animalpose-256x256.py",
    "chars": 4083,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_res101_8xb64-210e_animalpose-256x256.py",
    "chars": 3132,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_res152_8xb32-210e_animalpose-256x256.py",
    "chars": 3132,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_res50_8xb64-210e_animalpose-256x256.py",
    "chars": 3130,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/cspnext-m_udp_8xb64-210e_ap10k-256x256.py",
    "chars": 6227,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 210\nstage2_num_epochs = 30\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/cspnext_udp_ap10k.md",
    "chars": 2512,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/abs/2212.07784\">RTMDet (ArXiv 2022)</a"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/cspnext_udp_ap10k.yml",
    "chars": 565,
    "preview": "Models:\n- Config: configs/animal_2d_keypoint/topdown_heatmap/ap10k/cspnext-m_udp_8xb64-210e_ap10k-256x256.py\n  In Collec"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/hrnet_ap10k.md",
    "chars": 2375,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"http://openaccess.thecvf.com/content_CVPR_2019/html/Sun_"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/hrnet_ap10k.yml",
    "chars": 1052,
    "preview": "Models:\n- Config: configs/animal_2d_keypoint/topdown_heatmap/ap10k/td-hm_hrnet-w32_8xb64-210e_ap10k-256x256.py\n  In Coll"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/resnet_ap10k.md",
    "chars": 2285,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"http://openaccess.thecvf.com/content_ECCV_2018/html/Bin_"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/resnet_ap10k.yml",
    "chars": 1079,
    "preview": "Models:\n- Config: configs/animal_2d_keypoint/topdown_heatmap/ap10k/td-hm_res50_8xb64-210e_ap10k-256x256.py\n  In Collecti"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/td-hm_hrnet-w32_8xb64-210e_ap10k-256x256.py",
    "chars": 4581,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/td-hm_hrnet-w48_8xb64-210e_ap10k-256x256.py",
    "chars": 4581,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/td-hm_res101_8xb64-210e_ap10k-256x256.py",
    "chars": 3630,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/ap10k/td-hm_res50_8xb64-210e_ap10k-256x256.py",
    "chars": 3628,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/locust/resnet_locust.md",
    "chars": 2635,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"http://openaccess.thecvf.com/content_ECCV_2018/html/Bin_"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/locust/resnet_locust.yml",
    "chars": 1511,
    "preview": "Models:\n- Config: configs/animal_2d_keypoint/topdown_heatmap/locust/td-hm_res50_8xb64-210e_locust-160x160.py\n  In Collec"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/locust/td-hm_res101_8xb64-210e_locust-160x160.py",
    "chars": 3218,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/locust/td-hm_res152_8xb32-210e_locust-160x160.py",
    "chars": 3218,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/locust/td-hm_res50_8xb64-210e_locust-160x160.py",
    "chars": 3216,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/zebra/resnet_zebra.md",
    "chars": 2623,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"http://openaccess.thecvf.com/content_ECCV_2018/html/Bin_"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/zebra/resnet_zebra.yml",
    "chars": 1565,
    "preview": "Models:\n- Config: configs/animal_2d_keypoint/topdown_heatmap/zebra/td-hm_res50_8xb64-210e_zebra-160x160.py\n  In Collecti"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/zebra/td-hm_res101_8xb64-210e_zebra-160x160.py",
    "chars": 3213,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/zebra/td-hm_res152_8xb32-210e_zebra-160x160.py",
    "chars": 3213,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/animal_2d_keypoint/topdown_heatmap/zebra/td-hm_res50_8xb64-210e_zebra-160x160.py",
    "chars": 3211,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/README.md",
    "chars": 968,
    "preview": "# Human Body 2D Pose Estimation\n\nMulti-person human pose estimation is defined as the task of detecting the poses (or ke"
  },
  {
    "path": "configs/body_2d_keypoint/associative_embedding/README.md",
    "chars": 659,
    "preview": "# Associative embedding: End-to-end learning for joint detection and grouping (AE)\n\nAssociative Embedding is one of the "
  },
  {
    "path": "configs/body_2d_keypoint/associative_embedding/coco/ae_hrnet-w32_8xb24-300e_coco-512x512.py",
    "chars": 4733,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=300, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/associative_embedding/coco/hrnet_coco.md",
    "chars": 2498,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/abs/1611.05424\">Associative Embedding "
  },
  {
    "path": "configs/body_2d_keypoint/associative_embedding/coco/hrnet_coco.yml",
    "chars": 789,
    "preview": "Collections:\n- Name: AE\n  Paper:\n    Title: \"Associative embedding: End-to-end learning for joint detection and grouping"
  },
  {
    "path": "configs/body_2d_keypoint/cid/coco/cid_hrnet-w32_8xb20-140e_coco-512x512.py",
    "chars": 4683,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=140, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/cid/coco/cid_hrnet-w48_8xb20-140e_coco-512x512.py",
    "chars": 4683,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=140, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/cid/coco/hrnet_coco.md",
    "chars": 2564,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://openaccess.thecvf.com/content/CVPR2022/html/Wang"
  },
  {
    "path": "configs/body_2d_keypoint/cid/coco/hrnet_coco.yml",
    "chars": 1419,
    "preview": "Collections:\n- Name: CID\n  Paper:\n    Title: Contextual Instance Decoupling for Robust Multi-Person Pose Estimation\n    "
  },
  {
    "path": "configs/body_2d_keypoint/dekr/README.md",
    "chars": 1007,
    "preview": "# Bottom-up Human Pose Estimation via Disentangled Keypoint Regression (DEKR)\n\n<!-- [ALGORITHM] -->\n\n<details>\n<summary "
  },
  {
    "path": "configs/body_2d_keypoint/dekr/coco/dekr_hrnet-w32_8xb10-140e_coco-512x512.py",
    "chars": 5455,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=140, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/dekr/coco/dekr_hrnet-w48_8xb10-140e_coco-640x640.py",
    "chars": 5487,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=140, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/dekr/coco/hrnet_coco.md",
    "chars": 3031,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/abs/2104.02300\">DEKR (CVPR'2021)</a></"
  },
  {
    "path": "configs/body_2d_keypoint/dekr/coco/hrnet_coco.yml",
    "chars": 1318,
    "preview": "Collections:\n- Name: DEKR\n  Paper:\n    Title: Bottom-up human pose estimation via disentangled keypoint regression\n    U"
  },
  {
    "path": "configs/body_2d_keypoint/dekr/crowdpose/dekr_hrnet-w32_8xb10-300e_crowdpose-512x512.py",
    "chars": 5503,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=300, val_interval=20)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/dekr/crowdpose/dekr_hrnet-w48_8xb5-300e_crowdpose-640x640.py",
    "chars": 5534,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=300, val_interval=20)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/dekr/crowdpose/hrnet_crowdpose.md",
    "chars": 3088,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/abs/2104.02300\">DEKR (CVPR'2021)</a></"
  },
  {
    "path": "configs/body_2d_keypoint/dekr/crowdpose/hrnet_crowdpose.yml",
    "chars": 1183,
    "preview": "Models:\n- Config: configs/body_2d_keypoint/dekr/crowdpose/dekr_hrnet-w32_8xb10-300e_crowdpose-512x512.py\n  In Collection"
  },
  {
    "path": "configs/body_2d_keypoint/edpose/coco/edpose_coco.md",
    "chars": 2816,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/pdf/2302.01593.pdf\">ED-Pose (ICLR'2023"
  },
  {
    "path": "configs/body_2d_keypoint/edpose/coco/edpose_coco.yml",
    "chars": 801,
    "preview": "Collections:\n- Name: ED-Pose\n  Paper:\n    Title: Explicit Box Detection Unifies End-to-End Multi-Person Pose Estimation\n"
  },
  {
    "path": "configs/body_2d_keypoint/edpose/coco/edpose_res50_8xb2-50e_coco-800x1333.py",
    "chars": 7538,
    "preview": "# Copyright (c) OpenMMLab. All rights reserved.\nfrom mmengine.config import read_base\n\nwith read_base():\n    from mmpose"
  },
  {
    "path": "configs/body_2d_keypoint/integral_regression/README.md",
    "chars": 1224,
    "preview": "# Top-down integral-regression-based pose estimation\n\nTop-down methods divide the task into two stages: object detection"
  },
  {
    "path": "configs/body_2d_keypoint/integral_regression/coco/ipr_res50_8xb64-210e_coco-256x256.py",
    "chars": 3639,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/integral_regression/coco/ipr_res50_debias-8xb64-210e_coco-256x256.py",
    "chars": 3676,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/integral_regression/coco/ipr_res50_dsnt-8xb64-210e_coco-256x256.py",
    "chars": 3637,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=210, val_interval=10)\n\n# optimize"
  },
  {
    "path": "configs/body_2d_keypoint/integral_regression/coco/resnet_debias_coco.md",
    "chars": 2665,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://openaccess.thecvf.com/content/ICCV2021/papers/Gu"
  },
  {
    "path": "configs/body_2d_keypoint/integral_regression/coco/resnet_debias_coco.yml",
    "chars": 922,
    "preview": "Collections:\n- Name: DebiasIPR\n  Paper:\n    Title: Removing the Bias of Integral Pose Regression\n    URL: https://openac"
  },
  {
    "path": "configs/body_2d_keypoint/integral_regression/coco/resnet_dsnt_coco.md",
    "chars": 2525,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/abs/1801.07372v2\">DSNT (2018)</a></sum"
  },
  {
    "path": "configs/body_2d_keypoint/integral_regression/coco/resnet_dsnt_coco.yml",
    "chars": 829,
    "preview": "Collections:\n- Name: DSNT\n  Paper:\n    Title: Numerical Coordinate Regression with Convolutional Neural Networks\n    URL"
  },
  {
    "path": "configs/body_2d_keypoint/integral_regression/coco/resnet_ipr_coco.md",
    "chars": 2535,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/abs/1711.08229\">IPR (ECCV'2018)</a></s"
  },
  {
    "path": "configs/body_2d_keypoint/integral_regression/coco/resnet_ipr_coco.yml",
    "chars": 771,
    "preview": "Collections:\n- Name: IPR\n  Paper:\n    Title: Integral human pose regression\n    URL: https://arxiv.org/abs/1711.08229\n  "
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/README.md",
    "chars": 1976,
    "preview": "# RTMO: Towards High-Performance One-Stage Real-Time Multi-Person Pose Estimation\n\n<!-- [ALGORITHM] -->\n\n<details>\n<summ"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/body7/rtmo-l_16xb16-600e_body7-640x640.py",
    "chars": 13342,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=600, val_interval=20, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/body7/rtmo-m_16xb16-600e_body7-640x640.py",
    "chars": 13295,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=600, val_interval=20, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/body7/rtmo-s_8xb32-600e_body7-640x640.py",
    "chars": 13367,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=600, val_interval=20, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/body7/rtmo-t_8xb32-600e_body7-416x416.py",
    "chars": 13184,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=600, val_interval=20, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/body7/rtmo_body7.md",
    "chars": 6686,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/abs/2312.07526\">RTMO</a></summary>\n\n``"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/body7/rtmo_body7.yml",
    "chars": 2095,
    "preview": "Models:\n- Config: configs/body_2d_keypoint/rtmo/body7/rtmo-t_8xb32-600e_body7-416x416.py\n  In Collection: RTMO\n  Metadat"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/coco/rtmo-l_16xb16-600e_coco-640x640.py",
    "chars": 9391,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=600, val_interval=20, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/coco/rtmo-m_16xb16-600e_coco-640x640.py",
    "chars": 9344,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=600, val_interval=20, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/coco/rtmo-s_8xb32-600e_coco-640x640.py",
    "chars": 9416,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=600, val_interval=20, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/coco/rtmo_coco.md",
    "chars": 2685,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/abs/2312.07526\">RTMO</a></summary>\n\n``"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/coco/rtmo_coco.yml",
    "chars": 1763,
    "preview": "Collections:\n- Name: RTMO\n  Paper:\n    Title: 'RTMO: Towards High-Performance One-Stage Real-Time Multi-Person Pose Esti"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/crowdpose/rtmo-l_16xb16-700e_body7-crowdpose-640x640.py",
    "chars": 13323,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=700, val_interval=50, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/crowdpose/rtmo-l_16xb16-700e_crowdpose-640x640.py",
    "chars": 9505,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=700, val_interval=50, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/crowdpose/rtmo-m_16xb16-700e_crowdpose-640x640.py",
    "chars": 9458,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=700, val_interval=50, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/crowdpose/rtmo-s_8xb32-700e_crowdpose-640x640.py",
    "chars": 9505,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\ntrain_cfg = dict(max_epochs=700, val_interval=50, dynamic_int"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/crowdpose/rtmo_crowdpose.md",
    "chars": 3327,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://arxiv.org/abs/2312.07526\">RTMO</a></summary>\n\n``"
  },
  {
    "path": "configs/body_2d_keypoint/rtmo/crowdpose/rtmo_crowdpose.yml",
    "chars": 2191,
    "preview": "Models:\n- Config: configs/body_2d_keypoint/rtmo/crowdpose/rtmo-s_8xb32-700e_crowdpose-640x640.py\n  In Collection: RTMO\n "
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/README.md",
    "chars": 4169,
    "preview": "# RTMPose\n\nRecent studies on 2D pose estimation have achieved excellent performance on public benchmarks, yet its applic"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-l_8xb256-420e_body8-256x192.py",
    "chars": 13528,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 20\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-l_8xb256-420e_body8-384x288.py",
    "chars": 13527,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 20\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-l_8xb512-700e_body8-halpe26-256x192.py",
    "chars": 13682,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# common setting\nnum_keypoints = 26\ninput_size = (192, 256)\n\n# runtime\n"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-l_8xb512-700e_body8-halpe26-384x288.py",
    "chars": 13683,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# common setting\nnum_keypoints = 26\ninput_size = (288, 384)\n\n# runtime\n"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-m_8xb256-420e_body8-256x192.py",
    "chars": 13534,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 20\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-m_8xb256-420e_body8-384x288.py",
    "chars": 13533,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 20\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-m_8xb512-700e_body8-halpe26-256x192.py",
    "chars": 13567,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# common setting\nnum_keypoints = 26\ninput_size = (192, 256)\n\n# runtime\n"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-m_8xb512-700e_body8-halpe26-384x288.py",
    "chars": 13890,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# common setting\nnum_keypoints = 26\ninput_size = (288, 384)\n\n# runtime\n"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-s_8xb1024-700e_body8-halpe26-256x192.py",
    "chars": 13686,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# common setting\nnum_keypoints = 26\ninput_size = (192, 256)\n\n# runtime\n"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-s_8xb256-420e_body8-256x192.py",
    "chars": 13530,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 20\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-t_8xb1024-700e_body8-halpe26-256x192.py",
    "chars": 13713,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# common setting\nnum_keypoints = 26\ninput_size = (192, 256)\n\n# runtime\n"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-t_8xb256-420e_body8-256x192.py",
    "chars": 13548,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 20\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose-x_8xb256-700e_body8-halpe26-384x288.py",
    "chars": 13676,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# common setting\nnum_keypoints = 26\ninput_size = (288, 384)\n\n# runtime\n"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose_body8-coco.md",
    "chars": 5494,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://link.springer.com/chapter/10.1007/978-3-030-5858"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose_body8-coco.yml",
    "chars": 3221,
    "preview": "Collections:\n- Name: RTMPose\n  Paper:\n    Title: \"RTMPose: Real-Time Multi-Person Pose Estimation based on MMPose\"\n    U"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose_body8-halpe26.md",
    "chars": 5549,
    "preview": "<!-- [ALGORITHM] -->\n\n<details>\n<summary align=\"right\"><a href=\"https://link.springer.com/chapter/10.1007/978-3-030-5858"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/body8/rtmpose_body8-halpe26.yml",
    "chars": 3818,
    "preview": "Collections:\n- Name: RTMPose\n  Paper:\n    Title: \"RTMPose: Real-Time Multi-Person Pose Estimation based on MMPose\"\n    U"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/coco/rtmpose-l_8xb256-420e_aic-coco-256x192.py",
    "chars": 7715,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 30\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/coco/rtmpose-l_8xb256-420e_aic-coco-384x288.py",
    "chars": 7714,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 30\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/coco/rtmpose-l_8xb256-420e_coco-256x192.py",
    "chars": 6687,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 30\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_aic-coco-256x192.py",
    "chars": 7722,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 30\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_aic-coco-384x288.py",
    "chars": 7721,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 30\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_coco-256x192.py",
    "chars": 6690,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 30\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/coco/rtmpose-s_8xb256-420e_aic-coco-256x192.py",
    "chars": 7720,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 30\nbase_lr = 4e-3\n\ntrain"
  },
  {
    "path": "configs/body_2d_keypoint/rtmpose/coco/rtmpose-s_8xb256-420e_coco-256x192.py",
    "chars": 6687,
    "preview": "_base_ = ['../../../_base_/default_runtime.py']\n\n# runtime\nmax_epochs = 420\nstage2_num_epochs = 30\nbase_lr = 4e-3\n\ntrain"
  }
]

// ... and 1666 more files (download for full content)

About this extraction

This page contains the full source code of the open-mmlab/mmpose GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1866 files (12.0 MB), approximately 3.3M tokens, and a symbol index with 3393 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!