              finallist = self._nms(boxes, 0.5)
              ret.append(finallist)
          return np.array(ret, dtype="object")
  
      def _post_process(self, bboxlist: List[np.ndarray]) -> np.ndarray:
          """ Perform post processing on output
              TODO: do this on the batch.
          """
          retval = []
          for i in range(len(bboxlist) // 2):
 
</s> remove     def finalize_predictions(self, bounding_boxes_scales: List[np.ndarray]) -> np.ndarray:
 </s> add     def finalize_predictions(self, bounding_boxes_scales: T.List[np.ndarray]) -> np.ndarray: </s> remove     def _predict(self, feed_faces: np.ndarray, batch_size: Optional[int] = None) -> np.ndarray:
 </s> add     def _predict(self, feed_faces: np.ndarray, batch_size: T.Optional[int] = None) -> np.ndarray: </s> remove     def _amd_ask_enable(self) -> None:
        """ Set backend to 'amd' to use plaidML if AMD support required """
        msg = ""
        if self._env.os_version[0] == "Windows":
            msg = "AMD users should select 'DirectML support' if possible.\r\n"
        if self._env.os_version[0] == "Linux":
            msg = "AMD users should select 'ROCm support' if possible.\r\n"

        logger.info("AMD Support:\r\nThis version is deprecated and will be removed from a future "
                    "update.\r\n%s"
                    "Nvidia Users MUST answer 'no' to this option.", msg)
        i = input("Enable AMD Support? [y/N] ")
        if i in ("Y", "y"):
            logger.info("AMD Support Enabled")
            self._env.backend = "amd"

 </s> add  </s> remove         retval = np.stack([cast(np.ndarray, feed_face.face)[..., :3]
 </s> add         retval = np.stack([T.cast(np.ndarray, feed_face.face)[..., :3] </s> remove         if get_backend() == "amd":
            batch, height, width, depth = input_tensor.shape.dims
            new_height = height // self.scale
            new_width = width // self.scale
            reshaped = K.reshape(input_tensor,
                                 (batch, new_height, self.scale, new_width, self.scale, depth))
            retval = K.reshape(K.permute_dimensions(reshaped, [0, 1, 3, 2, 4, 5]),
                               (batch, new_height, new_width, -1))
        else:
            retval = tf.nn.space_to_depth(input_tensor, block_size=self.scale, data_format="NHWC")
 </s> add         retval = tf.nn.space_to_depth(input_tensor, block_size=self.scale, data_format="NHWC")
    def _post_process(self, bboxlist: T.List[np.ndarray]) -> np.ndarray:
              finallist = self._nms(boxes, 0.5)
              ret.append(finallist)
          return np.array(ret, dtype="object")
  
    def _post_process(self, bboxlist: T.List[np.ndarray]) -> np.ndarray:
          """ Perform post processing on output
              TODO: do this on the batch.
          """
          retval = []
          for i in range(len(bboxlist) // 2):
keep keep keep keep replace keep keep keep keep keep
 Remove plaidML support (#1325)

* Remove PlaidML reference from readme files

* Remove AMD option from installers

* remove amd requirements and update setup.py

* remove plaidml test from CI workflow

* gpustats: remove plaidml backend

* plaid removals:
  - faceswap.py - python version check
  - setup.cfg - plaidml typing ignore
  - lib.keras_utils - All plaid code
  - lib.launcher.py - All plaidml checks and configuration

* remove tf2.2 specific code from GUI event reader

* lib.model - remove all plaidml implementations

* plugins.extract - remove plaidml code

* plugins.train remove plaidml code

* lib.convert - remove plaidml code

* tools.model: remove plaidml code

* Remove plaidML tests from unit tests

* remove plaidml_utils and docsting cleanups

* Remove plaidML refs from configs

* fix keras imports 
plugins/extract/detect/s3fd.py