class_docstr: Plug in to ``transpose`` image input in NHWC format to NCHW format.
  
  Follow these steps:
  
  1. Check whether there are any inputs that the users specify as ImageType.
  2. Check the channel's dimension for all inputs that are ImageType.
  
      a) ``channel_first == True``
         We do not modify this input, since ``channel_first`` is the intended
         behaviour for feeding images for optimal performance.
      b) ``channel_first == False``
         We convert the input into a "channel_first" input, and plug in a
         ``transpose`` for the input to maintain the remaining graph's dimensionality.
code: def apply(self, prog):
      for f_name, f in prog.functions.items():
          if f_name == "main":
              # We need to make sure main exist and start here.
              self._image_input_preprocess(prog)
  
imports: import re
  import warnings
  from collections import OrderedDict
  from coremltools import _logger
  from coremltools.converters.mil.input_types import EnumeratedShapes, ImageType, Shape
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import Function, types
  from coremltools.converters.mil.mil.passes.graph_pass import AbstractGraphPass
  from coremltools.converters.mil.mil.passes.pass_registry import register_pass
label_desc: Use image node_id 1 for calling the image_input_preprocess obj's underlying member method code with example usage: obj.apply(prog) without return types