              The :attr:`DetectedFaces` list will be populated for this class with the bounding boxes
              for the detected faces found in the frame.
          """
          assert isinstance(batch, DetectorBatch)
          logger.trace("Item out: %s",  # type:ignore
                       {k: len(v) if isinstance(v, (list, np.ndarray)) else v
                        for k, v in batch.__dict__.items()})
  
          batch_faces = [[self._to_detected_face(face[0], face[1], face[2], face[3])
                          for face in faces]
 
</s> remove             logger.trace(item)  # type:ignore
 </s> add             logger.trace(item)  # type:ignore[attr-defined] </s> remove                 batch.prediction = self.predict(batch.feed)
                logger.trace("angle: %s, filenames: %s, prediction: %s",  # type:ignore
                             angle, batch.filename, batch.prediction)
 </s> add                 pred = self.predict(batch.feed)
                if angle == 0:
                    batch.prediction = pred
                else:
                    batch.prediction = np.array([b if b.any() else p
                                                 for b, p in zip(batch.prediction, pred)])
                logger.trace("angle: %s, filenames: %s, "  # type:ignore[attr-defined]
                             "prediction: %s",
                             angle, batch.filename, pred) </s> remove                 logger.trace("Faces found for all images")  # type:ignore
 </s> add                 logger.trace("Faces found for all images")  # type:ignore[attr-defined] </s> remove         logger.trace("Detector scale: %s", scale)  # type:ignore
 </s> add         logger.trace("Detector scale: %s", scale)  # type:ignore[attr-defined] </s> remove                 logger.verbose("found face(s) by rotating image %s degrees",  # type:ignore
 </s> add                 logger.verbose("found face(s) by rotating image %s "  # type:ignore[attr-defined]
                               "degrees",
        logger.trace("Item out: %s",  # type:ignore[attr-defined]
              The :attr:`DetectedFaces` list will be populated for this class with the bounding boxes
              for the detected faces found in the frame.
          """
          assert isinstance(batch, DetectorBatch)
        logger.trace("Item out: %s",  # type:ignore[attr-defined]
                       {k: len(v) if isinstance(v, (list, np.ndarray)) else v
                        for k, v in batch.__dict__.items()})
  
          batch_faces = [[self._to_detected_face(face[0], face[1], face[2], face[3])
                          for face in faces]
keep keep keep keep replace keep keep keep keep keep
 bugfix: Extract - rotation in detection 
plugins/extract/detect/_base.py