          if not self._args.redirect_gui and not self._args.colab and sys.stdout.isatty():
              logger.info("  Press 'S' to save model weights immediately")
          logger.info("===================================================")
  
      @classmethod
      def _create_resizable_window(cls, name: str, image_shape: tuple) -> None:
          """ Create a resizable OpenCV window to hold the preview image.
  
          Parameters
          ----------
          name: str
              The name to display in the window header and for window identification
          shape: tuple
              The (`rows`, `columns`, `channels`) of the image to be displayed
          """
          logger.debug("Creating named window '%s' for image shape %s", name, image_shape)
          height, width = image_shape[:2]
          cv2.namedWindow(name, cv2.WINDOW_GUI_EXPANDED)
          cv2.resizeWindow(name, width, height)
  
      def _do_preview(self, window_created: bool) -> bool:
          """" Display an image preview in a resizable window
  
          Parameters
          ----------
          window_created: bool
              ``True`` if a preview window has been created otherwise ``False``
  
          Returns
          -------
          bool
              ``True`` if a preview window has been created otherwise ``False``
          """
          with self._lock:
              for name, image in self._preview_buffer.items():
                  if not window_created:
                      self._create_resizable_window(name, image.shape)
                  cv2.imshow(name, image)  # pylint: disable=no-member
              window_created = bool(self._preview_buffer) if not window_created else window_created
          return window_created
  
      def _check_keypress(self, keypress: KBHit) -> bool:
          """ Check if a keypress has been detected.
  
          Parameters
          ----------
 
</s> remove         window_created = False
 </s> add  </s> remove     def _preview_monitor(self, key_press: str) -> bool:
        """ Monitors keyboard presses on the pop-up OpenCV Preview Window.

        Parameters
        ----------
        key_press: str
            The key press received from OpenCV or ``None`` if no press received

        Returns
        -------
        bool
            ``True`` if the process should continue training. ``False`` if an exit has been
            requested and process should terminate
        """
        if not self._args.preview:
            return True

        if key_press == ord("\n") or key_press == ord("\r"):
            logger.debug("Exit requested")
            return False

        if key_press == ord("s"):
            print("\n")
            logger.info("Save requested")
            self._save_now = True
        if key_press == ord("r"):
            print("\n")
            logger.info("Refresh preview requested")
            self._refresh_preview = True
        if key_press == ord("m"):
            print("\n")
            logger.verbose("Toggle mask display requested")  # type:ignore
            self._toggle_preview_mask = True

        return True

 </s> add  </s> remove                 with self._lock:
                    self._preview_buffer[name] = image
 </s> add                 self._preview.add_image(name, image) </s> remove         if self._scaling != 1.0:
            new_size = int(images[0].shape[1] * self._scaling)
            images = [self._resize_sample(side, image, new_size) for image in images]
 </s> add  </s> remove         parent_flags = dict(mask_toggle="_toggle_preview_mask", update="_refresh_preview")
 </s> add         parent_flags = dict(mask_toggle="request_mask_toggle", update="request_refresh")
          if not self._args.redirect_gui and not self._args.colab and sys.stdout.isatty():
              logger.info("  Press 'S' to save model weights immediately")
          logger.info("===================================================")
  





































      def _check_keypress(self, keypress: KBHit) -> bool:
          """ Check if a keypress has been detected.
  
          Parameters
          ----------
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Live Preview - Replace cv2 with matplotlib viewer 
scripts/train.py