code: def register_model_head(name: str):
      """Registers Self-Supervision Model Heads.
  
      This decorator allows VISSL to add custom model heads, even if the
      model head itself is not part of VISSL. To use it, apply this decorator
      to a model head class, like this:
  
      .. code-block:: python
  
          @register_model_head('my_model_head_name')
          def my_model_head():
              ...
  
      To get a model head from a configuration file, see :func:`get_model_head`.
      """
  
      def register_model_head_cls(cls: Callable[..., Callable]):
          if name in MODEL_HEADS_REGISTRY:
              raise ValueError(
                  "Cannot register duplicate model head ({})".format(
                      name
                  )
              )
  
          if cls.__name__ in MODEL_HEADS_NAMES:
              raise ValueError(
                  "Cannot register task with duplicate model head name ({})".format(
                      cls.__name__
                  )
              )
          MODEL_HEADS_REGISTRY[name] = cls
          MODEL_HEADS_NAMES.add(cls.__name__)
          return cls
  
      return register_model_head_cls
  
file_path: vissl/vissl/models/heads/__init__.py
imports: from pathlib import Path
  from typing import Callable
  from classy_vision.generic.registry_utils import import_all_modules
  from vissl.models.heads.linear_eval_mlp import LinearEvalMLP
  from vissl.models.heads.mlp import MLP
  from vissl.models.heads.siamese_concat_view import SiameseConcatView
  from vissl.models.heads.swav_prototypes_head import SwAVPrototypesHead
  from vissl.models.heads.dino_head import DINOHead
label_desc: Use image node_id 1 for calling a global function with example usage: register_model_head(name) and returns: register_model_head_cls, cls