code: def format_label(
      value: Union[torch.Tensor, np.ndarray, Sequence, int],
      num_classes: int = None,
  ) -> LabelData:
      """Convert label of various python types to :obj:`mmengine.LabelData`.
  
      Supported types are: :class:`numpy.ndarray`, :class:`torch.Tensor`,
      :class:`Sequence`, :class:`int`.
  
      Args:
          value (torch.Tensor | numpy.ndarray | Sequence | int): Label value.
          num_classes (int, optional): The number of classes. If not None, set
              it to the metainfo. Defaults to None.
  
      Returns:
          :obj:`mmengine.LabelData`: The foramtted label data.
      """
  
      # Handle single number
      if (
          isinstance(value, (torch.Tensor, np.ndarray))
          and value.ndim == 0
      ):
          value = int(value.item())
  
      if isinstance(value, np.ndarray):
          value = torch.from_numpy(value)
      elif isinstance(value, Sequence) and not mmengine.utils.is_str(
          value
      ):
          value = torch.tensor(value)
      elif isinstance(value, int):
          value = torch.LongTensor([value])
      elif not isinstance(value, torch.Tensor):
          raise TypeError(
              f"Type {type(value)} is not an available label type."
          )
  
      metainfo = {}
      if num_classes is not None:
          metainfo["num_classes"] = num_classes
          if value.max() >= num_classes:
              raise ValueError(
                  f"The label data ({value}) should not "
                  f"exceed num_classes ({num_classes})."
              )
      label = LabelData(label=value, metainfo=metainfo)
      return label
  
file_path: mmdetection/mmdet/structures/reid_data_sample.py
imports: from numbers import Number
  from typing import Sequence, Union
  import mmengine
  import numpy
  import torch
  from mmengine.structures import BaseDataElement, LabelData
label_desc: Use image node_id 1 for calling a global function with example usage: format_label(value, num_classes) and returns: label