              item = self._get_item(queue)
              if item == "EOF":
                  exhausted = True
                  break
              for key, val in item.items():
                  batch.setdefault(key, []).append(val)
              scaled_image, scale, pad = self._compile_detection_image(item["image"])
              batch.setdefault("scaled_image", []).append(scaled_image)
              batch.setdefault("scale", []).append(scale)
              batch.setdefault("pad", []).append(pad)
          if batch:
              batch["scaled_image"] = np.array(batch["scaled_image"], dtype="float32")
              logger.trace("Returning batch: %s", {k: v.shape if isinstance(v, np.ndarray) else v
 
</s> remove             batch["scaled_image"] = np.array(batch["scaled_image"], dtype="float32")
 </s> add             batch["image"] = np.array(batch["image"], dtype="float32") </s> remove                                                  for k, v in batch.items() if k != "image"})
 </s> add                                                  for k, v in batch.items()}) </s> remove                                      len(self._rollover["detected_faces"]),
                                     frame_faces, item["filename"])
 </s> add                                      len(self._rollover.detected_faces), frame_faces,
                                     item.filename) </s> remove                                      len(self._rollover["detected_faces"]),
                                     frame_faces, item["filename"])
 </s> add                                      len(self._rollover.detected_faces), frame_faces,
                                     item.filename) </s> remove         self._remove_invalid_keys(batch, ("detected_faces", "filename", "image"))
 </s> add 
            batch.setdefault("filename", []).append(item.filename)
            image, scale, pad = self._compile_detection_image(item)
            batch.setdefault("image", []).append(image)
              item = self._get_item(queue)
              if item == "EOF":
                  exhausted = True
                  break
            batch.setdefault("filename", []).append(item.filename)
            image, scale, pad = self._compile_detection_image(item)
            batch.setdefault("image", []).append(image)
            batch.setdefault("filename", []).append(item.filename)
            image, scale, pad = self._compile_detection_image(item)
            batch.setdefault("image", []).append(image)
            batch.setdefault("filename", []).append(item.filename)
            image, scale, pad = self._compile_detection_image(item)
            batch.setdefault("image", []).append(image)
            batch.setdefault("filename", []).append(item.filename)
            image, scale, pad = self._compile_detection_image(item)
            batch.setdefault("image", []).append(image)
              batch.setdefault("scale", []).append(scale)
              batch.setdefault("pad", []).append(pad)
          if batch:
              batch["scaled_image"] = np.array(batch["scaled_image"], dtype="float32")
              logger.trace("Returning batch: %s", {k: v.shape if isinstance(v, np.ndarray) else v
keep keep keep keep replace replace replace replace keep keep keep keep keep
 plugins.extract - Create ExtractMedia class for pipeline flow
Bugfix - Fix memory leak in extract 
plugins/extract/detect/_base.py