          save_queue = queue_manager.get_queue("save")
          while True:
              item = save_queue.get()
              if item == "EOF":
                  break
              filename, output_file, resized_face, idx = item
              out_filename = "{}_{}{}".format(str(output_file),
                                              str(idx),
 
</s> remove             image, face = item
 </s> add             face = item["face"] </s> remove         try:
            while True:
                item = self.queues["in"].get()
                if item in ("EOF", "END"):
                    self.queues["in"].put("END")
                    break

                filename, image = item
                detect_image = self.compile_detection_image(image, True, True)
 </s> add         while True:
            item = self.get_item()
            if item == "EOF":
                break
            logger.trace("Detecting faces: %s", item["filename"])
            detect_image = self.compile_detection_image(item["image"], True, True) </s> remove         try:
            while True:
                item = self.queues["in"].get()
                if item == "EOF":
                    self.queues["in"].put(item)
 </s> add         logger.debug("Launching Detect")
        while True:
            item = self.get_item()
            if item == "EOF":
                break
            logger.trace("Detecting faces: '%s'", item["filename"])
            detect_image = self.compile_detection_image(item["image"], False, False)

            for angle in self.rotation:
                current_image, rotmat = self.rotate_image(detect_image, angle)
                faces, points = detect_face(current_image, **self.kwargs)
                if angle != 0 and faces.any():
                    logger.verbose("found face(s) by rotating image %s degrees", angle)
                if faces.any(): </s> remove                 break
            if item.get("exception", False):
                self.queues["out"].put(item)
 </s> add                 self.finalize(item) </s> remove             item = self.queues["in"].get()
 </s> add             item = self.get_item()
            if save_queue.shutdown.is_set():
                logger.debug("Save Queue: Stop signal received. Terminating")
                break
          save_queue = queue_manager.get_queue("save")
          while True:
            if save_queue.shutdown.is_set():
                logger.debug("Save Queue: Stop signal received. Terminating")
                break
              item = save_queue.get()
              if item == "EOF":
                  break
              filename, output_file, resized_face, idx = item
              out_filename = "{}_{}{}".format(str(output_file),
                                              str(idx),
keep add keep keep keep keep keep keep
 Logging (#541)

* Convert prints to logger. Further logging improvements. Tidy  up

* Fix system verbosity. Allow SystemExit

* Fix reload extract bug

* Child Traceback handling

* Safer shutdown procedure

* Add shutdown event to queue manager

* landmarks_as_xy > property. GUI notes + linting. Aligner bugfix

* fix FaceFilter. Enable nFilter when no Filter is supplied

* Fix blurry face filter

* Continue on IO error. Better error handling

* Explicitly print stack trace tocrash log

* Windows Multiprocessing bugfix

* Add git info and conda version to crash log

* Windows/Anaconda mp bugfix

* Logging fixes for training 
scripts/extract.py