class_docstr: Image classification model with embedded pre-processing.
  
  This class is essentially an MLflow custom python function wrapper around a Keras model.
  The wrapper provides image preprocessing so that the model can be applied to images directly.
  The input to the model is base64 encoded image binary data (e.g. contents of a jpeg file).
  The output is the predicted class label, predicted class id followed by probabilities for each
  class.
  
  The model declares current local versions of Keras, Tensorlow and pillow as dependencies in its
  conda environment file.
code: def __init__(self, graph, session, model, image_dims, domain):
      self._graph = graph
      self._session = session
      self._model = model
      self._image_dims = image_dims
      self._domain = domain
      probs_names = [f"p({x})" for x in domain]
      self._column_names = [
          "predicted_label",
          "predicted_label_id",
      ] + probs_names
  
imports: import base64
  import os
  from io import BytesIO
  from typing import Any, Dict, Optional
  import keras
  import numpy
  import pandas
  import PIL
  import pip
  import tensorflow
  import yaml
  from PIL import Image
  import mlflow
  from mlflow.utils import PYTHON_VERSION
  from mlflow.utils.file_utils import TempDir
label_desc: Use image node_id 1 to create a new KerasImageClassifierPyfunc object  with example: obj = KerasImageClassifierPyfunc(graph, session, model, image_dims, domain)