          self.alignments.save()
          Utils.finalize(self.images.images_found,
                         self.alignments.faces_count,
                         self.verify_output)
          self.plugins.process_detect.join()
          self.plugins.process_align.join()
  
      def threaded_io(self, task, io_args=None):
          """ Load images in a background thread """
          io_args = tuple() if io_args is None else (io_args, )
          if task == "load":
 
</s> remove     def set_actions(self):
        """ Compile the actions to be performed into a list """
        postprocess_items = self.get_items()
        actions = list()
        for action, options in postprocess_items.items():
            options = dict() if options is None else options
            args = options.get("args", tuple())
            kwargs = options.get("kwargs", dict())
            args = args if isinstance(args, tuple) else tuple()
            kwargs = kwargs if isinstance(kwargs, dict) else dict()
            kwargs["verbose"] = self.verbose
            task = globals()[action](*args, **kwargs)
            actions.append(task)

        for action in actions:
            action_name = camel_case_split(action.__class__.__name__)
            print("Adding post processing item: "
                  "{}".format(" ".join(action_name)))

        return actions

 </s> add  </s> remove         io_thread = MultiThread(thread_count=1)
        io_thread.in_thread(func, *io_args)
 </s> add         io_thread = MultiThread(func, *io_args, thread_count=1)
        io_thread.start() </s> remove         print("Training data directory: {}".format(self.args.model_dir))
        lvl = '0' if self.args.verbose else '2'
        set_system_verbosity(lvl)
 </s> add         logger.info("Training data directory: %s", self.args.model_dir)
        set_system_verbosity()
          self.alignments.save()
          Utils.finalize(self.images.images_found,
                         self.alignments.faces_count,
                         self.verify_output)


  
      def threaded_io(self, task, io_args=None):
          """ Load images in a background thread """
          io_args = tuple() if io_args is None else (io_args, )
          if task == "load":
keep keep keep keep replace replace 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