Spaces:
Running
on
Zero
Running
on
Zero
| # Author: T. S. Liang @ Rama Alpaca | |
| # Emails: tsliang2001@gmail.com | shuangliang@ramaalpaca.com | sliang57@connect.hku.hk | |
| # Date: Jun. 2025 | |
| # Description: SDPose heatmap head factory using mmpose `HeatmapHead` + `UDPHeatmap` codec. | |
| # - mode="body" β 17 keypoints, in_channels=320 | |
| # - mode="wholebody"β 133 keypoints, in_channels=640 | |
| # Defaults: image_size=(768,1024), scale=4 (β heatmap size = (w/4, h/4)), sigma=6. | |
| # License: MIT License (see LICENSE for details) | |
| from mmpose.registry import MODELS | |
| def get_heatmap_head(mode = "body"): | |
| if mode == "body": | |
| image_size = [768, 1024] ## width x height | |
| sigma = 6 ## sigma is 2 for 256 | |
| scale = 4 | |
| embed_dim = 320 | |
| num_keypoints = 17 | |
| codec = dict( | |
| type='UDPHeatmap', input_size=(image_size[0], image_size[1]), heatmap_size=(int(image_size[0]/scale), int(image_size[1]/scale)), sigma=sigma) ## sigma is 2 for 256 | |
| head_cfg = dict( | |
| type='HeatmapHead', | |
| in_channels=embed_dim, | |
| out_channels=num_keypoints, | |
| deconv_out_channels=(320,), | |
| deconv_kernel_sizes=(4,), | |
| conv_out_channels=(320,), | |
| conv_kernel_sizes=(1,), | |
| loss=dict(type='KeypointMSELoss', use_target_weight=True), | |
| decoder=codec | |
| ) | |
| elif mode == "wholebody": | |
| image_size = [768, 1024] ## width x height | |
| sigma = 6 ## sigma is 2 for 256 | |
| scale = 4 | |
| embed_dim = 640 | |
| num_keypoints = 133 | |
| codec = dict( | |
| type='UDPHeatmap', input_size=(image_size[0], image_size[1]), heatmap_size=(int(image_size[0]/scale), int(image_size[1]/scale)), sigma=sigma) ## sigma is 2 for 256 | |
| head_cfg = dict( | |
| type='HeatmapHead', | |
| in_channels=embed_dim, | |
| out_channels=num_keypoints, | |
| deconv_out_channels=(640,), | |
| deconv_kernel_sizes=(4,), | |
| conv_out_channels=(640,), | |
| conv_kernel_sizes=(1,), | |
| loss=dict(type='KeypointMSELoss', use_target_weight=True), | |
| decoder=codec | |
| ) | |
| head = MODELS.build(head_cfg) | |
| return head |