code: def contour_expand(
      kernel_mask, internal_kernel_label, min_kernel_area, kernel_num
  ):
      """Expand kernel contours so that foreground pixels are assigned into
      instances.
  
      Arguments:
          kernel_mask (np.array or Tensor): The instance kernel mask with
              size hxw.
          internal_kernel_label (np.array or Tensor): The instance internal
              kernel label with size hxw.
          min_kernel_area (int): The minimum kernel area.
          kernel_num (int): The instance kernel number.
  
      Returns:
          label (list): The instance index map with size hxw.
      """
      assert isinstance(kernel_mask, (torch.Tensor, np.ndarray))
      assert isinstance(
          internal_kernel_label, (torch.Tensor, np.ndarray)
      )
      assert isinstance(min_kernel_area, int)
      assert isinstance(kernel_num, int)
  
      if isinstance(kernel_mask, np.ndarray):
          kernel_mask = torch.from_numpy(kernel_mask)
      if isinstance(internal_kernel_label, np.ndarray):
          internal_kernel_label = torch.from_numpy(
              internal_kernel_label
          )
  
      if torch.__version__ == "parrots":
          if (
              kernel_mask.shape[0] == 0
              or internal_kernel_label.shape[0] == 0
          ):
              label = []
          else:
              label = ext_module.contour_expand(
                  kernel_mask,
                  internal_kernel_label,
                  min_kernel_area=min_kernel_area,
                  kernel_num=kernel_num,
              )
              label = label.tolist()
      else:
          label = ext_module.contour_expand(
              kernel_mask,
              internal_kernel_label,
              min_kernel_area,
              kernel_num,
          )
      return label
  
label_desc: Use image node_id 1 for calling a global function with example usage: contour_expand(kernel_mask, internal_kernel_label, min_kernel_area, kernel_num) and returns: label