                  retval.setdefault(key, []).append(batch[key])
                  del batch[key]
  
          # Place the original bounding box back to detected face objects
          for face, box in zip(batch["detected_faces"], original_boxes):
              face.left, face.top, face.width, face.height = box
  
          batch.update(retval)
          return batch
  
 
</s> remove             result = self.process_input(batch)
            if not self._additional_keys:
                self._additional_keys = [key for key in result if key not in existing_keys]
            for key in self._additional_keys:
                retval.setdefault(key, []).append(batch[key])
                del batch[key]
 </s> add             self.process_input(batch) </s> remove         batch.update(retval)
 </s> add  </s> remove         retval = {}
 </s> add         # Put in random re-feed data to the bounding boxes </s> remove                                    for face in batch["detected_faces"]])
 </s> add                                    for face in batch.detected_faces]) </s> remove             for face, box in zip(batch["detected_faces"], bounding_boxes):
 </s> add             for face, box in zip(batch.detected_faces, bounding_boxes):
        for face, box in zip(batch.detected_faces, original_boxes):
                  retval.setdefault(key, []).append(batch[key])
                  del batch[key]
  
          # Place the original bounding box back to detected face objects
        for face, box in zip(batch.detected_faces, original_boxes):
              face.left, face.top, face.width, face.height = box
  
          batch.update(retval)
          return batch
  
keep keep keep keep replace keep keep keep keep keep
 Extract updates:
  - Default CPU detector to MTCNN
  - add basic Aligner false positive filters
  - Typing: align + plugins
  - Use specific AlignerBatch class for alignment
  - 
plugins/extract/align/_base.py