code: def set_fallback_column_type(
      column_types: Dict,
      allowable_column_types: List[str],
      fallback_column_type: str,
  ) -> Dict:
      """
      Filter the auto-detected column types to make sure that all column types are allowable.
      Use the fallback type to replace those out of the allowable_column_types.
  
      Parameters
      ----------
      column_types
          The inferred column types.
      allowable_column_types
          The column types which are allowed by the model type.
      fallback_column_type
          Fallback to this type if some invalid column type is found.
  
      Returns
      -------
      The filtered column types.
      """
      for col_name, col_type in column_types.items():
          if not col_type.startswith(tuple(allowable_column_types)):
              column_types[col_name] = fallback_column_type
  
      return column_types
  
imports: import collections
  import json
  import logging
  import warnings
  from io import BytesIO
  from typing import Dict, List, Optional, Tuple, Union
  import pandas
  import PIL
  import pytesseract
  from autogluon.core.utils import infer_problem_type
  from ..constants import BINARY, CATEGORICAL, CLASSIFICATION, DOCUMENT_IMAGE, DOCUMENT_PDF, IDENTIFIER, IMAGE, IMAGE_BYTEARRAY, IMAGE_PATH, MULTICLASS, NER, NER_ANNOTATION, NULL, NUMERICAL, OBJECT_DETECTION, OPEN_VOCABULARY_OBJECT_DETECTION, REGRESSION, ROIS, SEMANTIC_SEGMENTATION, SEMANTIC_SEGMENTATION_GT, SEMANTIC_SEGMENTATION_IMG, TEXT, TEXT_NER
  from .utils import is_rois_input
label_desc: Use image node_id 16 for calling a global function with example usage: set_fallback_column_type(column_types, allowable_column_types, fallback_column_type) and returns: column_types