  
          for phase in range(self.extractor.passes):
              if exception:
                  break
              is_final = self.extractor.final_pass
              detected_faces = dict()
              self.extractor.launch()
              self.check_thread_error()
              desc = "Running pass {} of {}: {}".format(phase + 1,
                                                        self.extractor.passes,
 
</s> remove             self.extractor.launch()
            self.check_thread_error()
 </s> add             self._extractor.launch()
            self._check_thread_error() </s> remove                                                       self.extractor.passes,
                                                      self.extractor.phase.title())
            status_bar = tqdm(self.extractor.detected_faces(),
                              total=to_process,
 </s> add                                                       self._extractor.passes,
                                                      self._extractor.phase.title())
            status_bar = tqdm(self._extractor.detected_faces(),
                              total=self._images.process_count, </s> remove         for phase in range(self.extractor.passes):
 </s> add         for phase in range(self._extractor.passes): </s> remove                 self.check_thread_error()
 </s> add                 self._check_thread_error() </s> remove                 filename = faces["filename"]
 </s> add 
            is_final = self._extractor.final_pass
  
          for phase in range(self.extractor.passes):
              if exception:
                  break
            is_final = self._extractor.final_pass
              detected_faces = dict()
              self.extractor.launch()
              self.check_thread_error()
              desc = "Running pass {} of {}: {}".format(phase + 1,
                                                        self.extractor.passes,
keep keep keep keep replace keep keep keep keep keep
 scripts.extract - code optimizations

Limit queue sizes to reduce RAM usage
Rename lib.image.BackgroundIO to ImageIO
Create separate ImagesLoader and ImagesSaver classes
Load/Save images from centralized lib.image.ImageIO
scripts.extract documentation 
scripts/extract.py