  
          self.images_A = self.get_image_data(self.files_A, bs)
          self.images_B = self.get_image_data(self.files_B, bs)
  
      def read_input_images(self, input_dir):
          if not os.path.isdir(input_dir):
              print('Error: {} does not exist'.format(input_dir))
              exit(1)
  
          if not os.listdir(input_dir):
 
</s> remove         self.images_A = self.get_image_data(self.files_A, bs)
        self.images_B = self.get_image_data(self.files_B, bs)
 </s> add         self.images_a = self.get_image_data(self.files_a, btchsz)
        self.images_b = self.get_image_data(self.files_b, btchsz) </s> remove         self.files_A = self.read_input_images(input_dir_A)
        self.files_B = self.read_input_images(input_dir_B)
 </s> add         self.files_a = self.read_input_images(input_dir_a)
        self.files_b = self.read_input_images(input_dir_b) </s> remove         bs = min(len(self.files_A), len(self.files_B)) 
 </s> add         btchsz = min(len(self.files_a), len(self.files_b)) </s> remove     def __init__(self, input_dir_A, input_dir_B, output, trainer):
 </s> add     def __init__(self, input_dir_a, input_dir_b, output, trainer): </s> remove     def get_input_images(self):
        """ Return the list of images that are to be processed """
        if not os.path.exists(self.args.input_dir):
            print("Input directory {} not found.".format(self.args.input_dir))
            exit(1)

        print("Input Directory: {}".format(self.args.input_dir))
 </s> add     def get_serializer(self):
        """ Set the serializer to be used for loading and
            saving alignments """
        if (not hasattr(self.args, "serializer")
                or not self.args.serializer):
            if self.args.alignments_path:
                ext = os.path.splitext(self.args.alignments_path)[-1]
            else:
                ext = "json"
            serializer = Serializer.get_serializer_from_ext(ext)
        else:
            serializer = Serializer.get_serializer(self.args.serializer)
        print("Using {} serializer".format(serializer.ext))
        return serializer
    @staticmethod
    def read_input_images(input_dir):
        """ Get the image paths """
  
          self.images_A = self.get_image_data(self.files_A, bs)
          self.images_B = self.get_image_data(self.files_B, bs)
  
    @staticmethod
    def read_input_images(input_dir):
        """ Get the image paths """
          if not os.path.isdir(input_dir):
              print('Error: {} does not exist'.format(input_dir))
              exit(1)
  
          if not os.listdir(input_dir):
keep keep keep keep replace keep keep keep keep keep
 Extraction - Speed improvements (#522) (#523)

* Extraction - Speed improvements (#522)

* Initial Plugin restructure

* Detectors to plugins. Detector speed improvements

* Re-implement dlib aligner, remove models, FAN to TF. Parallel processing

* Update manual, update convert, implement parallel/serial switching

* linting + fix cuda check (setup.py). requirements update keras 2.2.4

* Add extract size option. Fix dlib hog init

* GUI: Increase tooltip width

* Update alignment tool to support new DetectedFace

* Add skip existing faces option

* Fix sort tool to new plugin structure

* remove old align plugin

* fix convert -skip faces bug

* Fix convert skipping no faces frames

* Convert - draw onto transparent layer

* Fix blur threshold bug

* fix skip_faces convert bug

* Fix training 
lib/utils.py