      def processThread(self):
          print('Loading data, this may take a while...')
          # this is so that you can enter case insensitive values for trainer
          trainer = self.arguments.trainer
          trainer = trainer if trainer != "Lowmem" else "LowMem"
          model = PluginLoader.get_model(trainer)(self.arguments.model_dir)
          model.load(swapped=False)
  
          images_A = get_image_paths(self.arguments.input_A)
          images_B = get_image_paths(self.arguments.input_B)
 
</s> remove         trainer = PluginLoader.get_trainer(trainer)(model,
                                                                   images_A,
                                                                   images_B,
                                                                   batch_size=self.arguments.batch_size)
 </s> add         trainer = PluginLoader.get_trainer(trainer)
        trainer = trainer(model, images_A, images_B, batch_size=self.arguments.batch_size) </s> remove         # Original model goes with Adjust or Masked converter
        # does the LowMem one work with only one? 
        # seems to work with both in testing - although Adjust with LowMem 
        # looks a real mess - you can see that it is "working"
 </s> add         # Original & LowMem models go with Adjust or Masked converter </s> remove         
 </s> add     def add_optional_arguments(self, parser):
        parser.add_argument('-D', '--detector',
                            type=str,
                            choices=("hog", "cnn"), # case sensitive because this is used to load a plugin.
                            default="hog",
                            help="Detector to use. 'cnn' detects much more angles but will be much more resource intensive and may fail on large files.")

        parser.add_argument('-f', '--filter',
                            type=str,
                            dest="filter",
                            default="filter.jpg",
                            help="Reference image for the person you want to process. Should be a front portrait"
                            )

        parser.add_argument('-j', '--processes',
                            type=int,
                            help="Number of processes to use.")
        return parser
 </s> remove         filter_file = "filter.jpg" # TODO Pass as argument
 </s> add         filter_file = self.arguments.filter </s> remove         self.encoding = face_recognition.face_encodings(image)[0] # Note: we take only first face, so the reference file should only contain one face. We could also keep all faces found and filter against multiple faces
 </s> add         self.encoding = face_recognition.face_encodings(image)[0] # Note: we take only first face, so the reference file should only contain one face.

        trainer = "LowMem" if trainer.lower() == "lowmem" else trainer
      def processThread(self):
          print('Loading data, this may take a while...')
          # this is so that you can enter case insensitive values for trainer
          trainer = self.arguments.trainer
        trainer = "LowMem" if trainer.lower() == "lowmem" else trainer
          model = PluginLoader.get_model(trainer)(self.arguments.model_dir)
          model.load(swapped=False)
  
          images_A = get_image_paths(self.arguments.input_A)
          images_B = get_image_paths(self.arguments.input_B)
keep keep keep keep replace keep keep keep keep keep
 Misc updates on master before GAN. Added multithreading + mmod face detector (#109)

* Preparing GAN plugin

* Adding multithreading for extract

* Adding support for mmod human face detector

* Adding face filter argument

* Added process number argument to multiprocessing extractor.

Fixed progressbar for multiprocessing.

* Added tiff as image type.
compression artefacts hurt my feelings.

* Cleanup 
scripts/train.py