code: def __init__(
      self,
      prediction_dict,
      image,
      config=None,
      gt_bboxes=None,
      every_n_steps=None,
      every_n_secs=None,
      output_dir=None,
      summary_writer=None,
      image_visualization_mode=None,
  ):
      super(ImageVisHook, self).__init__()
      if (every_n_secs is None) == (every_n_steps is None):
          raise ValueError(
              'Only one of "every_n_secs" and "every_n_steps" must be '
              "provided."
          )
      if output_dir is None and summary_writer is None:
          tf.logging.warning(
              'ImageVisHook is not saving summaries. One of "output_dir" '
              'and "summary_writer" must be provided'
          )
      self._timer = tf.train.SecondOrStepTimer(
          every_steps=every_n_steps, every_secs=every_n_secs
      )
  
      self._prediction_dict = prediction_dict
      self._config = config
      self._output_dir = output_dir
      self._summary_writer = summary_writer
      self._image_visualization_mode = image_visualization_mode
      self._image = image
      self._gt_bboxes = gt_bboxes
  
      tf.logging.info(
          'ImageVisHook was created with mode = "{}"'.format(
              image_visualization_mode
          )
      )
  
file_path: luminoth/luminoth/utils/hooks/image_vis_hook.py
imports: import tensorflow
  from tensorflow.python.training.summary_io import SummaryWriterCache
  from luminoth.utils.image_vis import image_vis_summaries
label_desc: Use image node_id 1 to create a new ImageVisHook object from inherited base classes: tf.train with example: obj = ImageVisHook(prediction_dict, image, config, gt_bboxes, every_n_steps, every_n_secs, output_dir, summary_writer, image_visualization_mode)