code: def _get_hog_label_2d(self, input_frames, output_masks):
      # input_frames, B C H W
      labels = []
      for depth, output_mask in zip(self.pretrain_depth, output_masks):
          feat_size = self.feat_size[depth][-1]
          hog_list = []
          for hog in self.hogs:
              tmp_hog = hog(input_frames).flatten(
                  1, 2
              )  # return B C H W
              unfold_size = tmp_hog.shape[-1] // feat_size
              tmp_hog = (
                  tmp_hog.permute(0, 2, 3, 1)
                  .unfold(1, unfold_size, unfold_size)
                  .unfold(2, unfold_size, unfold_size)
                  .flatten(1, 2)
                  .flatten(2)
              )
              tmp_hog = tmp_hog[output_mask]
              hog_list.append(tmp_hog)
          all_tlabel = torch.cat(hog_list, -1)
          labels.append((all_tlabel, self.pred_hog_wt, self.hog_loss))
      return labels
  
imports: import math
  from functools import partial
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.nn.init import trunc_normal_
  import slowfast.utils.logging
  import slowfast.utils.misc
  from slowfast.models import head_helper
  from slowfast.models.attention import attention_pool
  from slowfast.models.utils import calc_mvit_feature_geometry
  from slowfast.models.video_model_builder import MViT
  from .None import head_helper, operators, resnet_helper, stem_helper
  from .build import MODEL_REGISTRY
label_desc: Use image node_id 9 for calling the MaskMViT obj's underlying member method code with example usage: obj._get_hog_label_2d(input_frames, output_masks) and returns: labels