code: def add_keypoint_outputs(model, blob_in, dim):
      """Add Mask R-CNN keypoint specific outputs: keypoint heatmaps."""
      # NxKxHxW
      upsample_heatmap = cfg.KRCNN.UP_SCALE > 1
  
      if cfg.KRCNN.USE_DECONV:
          # Apply ConvTranspose to the feature representation; results in 2x
          # upsampling
          blob_in = model.ConvTranspose(
              blob_in,
              "kps_deconv",
              dim,
              cfg.KRCNN.DECONV_DIM,
              kernel=cfg.KRCNN.DECONV_KERNEL,
              pad=int(cfg.KRCNN.DECONV_KERNEL / 2 - 1),
              stride=2,
              weight_init=gauss_fill(0.01),
              bias_init=const_fill(0.0),
          )
          model.Relu("kps_deconv", "kps_deconv")
          dim = cfg.KRCNN.DECONV_DIM
  
      if upsample_heatmap:
          blob_name = "kps_score_lowres"
      else:
          blob_name = "kps_score"
  
      if cfg.KRCNN.USE_DECONV_OUTPUT:
          # Use ConvTranspose to predict heatmaps; results in 2x upsampling
          blob_out = model.ConvTranspose(
              blob_in,
              blob_name,
              dim,
              cfg.KRCNN.NUM_KEYPOINTS,
              kernel=cfg.KRCNN.DECONV_KERNEL,
              pad=int(cfg.KRCNN.DECONV_KERNEL / 2 - 1),
              stride=2,
              weight_init=(cfg.KRCNN.CONV_INIT, {"std": 0.001}),
              bias_init=const_fill(0.0),
          )
      else:
          # Use Conv to predict heatmaps; does no upsampling
          blob_out = model.Conv(
              blob_in,
              blob_name,
              dim,
              cfg.KRCNN.NUM_KEYPOINTS,
              kernel=1,
              pad=0,
              stride=1,
              weight_init=(cfg.KRCNN.CONV_INIT, {"std": 0.001}),
              bias_init=const_fill(0.0),
          )
  
      if upsample_heatmap:
          # Increase heatmap output size via bilinear upsampling
          blob_out = model.BilinearInterpolation(
              blob_out,
              "kps_score",
              cfg.KRCNN.NUM_KEYPOINTS,
              cfg.KRCNN.NUM_KEYPOINTS,
              cfg.KRCNN.UP_SCALE,
          )
  
      return blob_out
  
file_path: dense-pose/detectron/modeling/keypoint_rcnn_heads.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  from detectron.core.config import cfg
  from detectron.utils.c2 import const_fill
  from detectron.utils.c2 import gauss_fill
  import detectron.modeling.ResNet
  import detectron.utils.blob
label_desc: Use image node_id 1 for calling a global function with example usage: add_keypoint_outputs(model, blob_in, dim) and returns: blob_out