                               if landmarks
                               else np.zeros((68, 2))])
  
          img_list_len = len(img_list)
          for i in tqdm(range(0, img_list_len - 1),
                        desc="Sorting",
                        file=sys.stdout):
 
</s> remove             landmarks = face_alignment.Extract(
                input_image_bgr=cv2.imread(img),
                detector='dlib-cnn',
                verbose=True,
                input_is_predetected_face=True).landmarks
            img_list.append([img, np.array(landmarks[0][1])
 </s> add             landmarks = self.get_landmarks(img)
            img_list.append([img, np.array(landmarks) </s> remove             landmarks = face_alignment.Extract(
                input_image_bgr=cv2.imread(img),
                detector='dlib-cnn',
                verbose=True,
                input_is_predetected_face=True).landmarks
            img_list.append([img, np.array(landmarks[0][1])
 </s> add             landmarks = self.get_landmarks(img)
            img_list.append([img, np.array(landmarks) </s> remove                 landmarks = face_alignment.Extract(
                    input_image_bgr=cv2.imread(img),
                    detector='dlib-cnn',
                    verbose=True,
                    input_is_predetected_face=True).landmarks
                temp_list.append([img, np.array(landmarks[0][1])
 </s> add                 landmarks = self.get_landmarks(img)
                temp_list.append([img, np.array(landmarks) </s> remove         self.extract.execute(self.media["image"],
                             manual_face=self.media["bounding_box"])
        landmarks = self.extract.landmarks[0][1]
        left, top, right, bottom = self.media["bounding_box"]
        alignment = {"x": left,
                     "w": right - left,
                     "y": top,
                     "h": bottom - top,
                     "landmarksXY": landmarks}
 </s> add         queue_manager.get_queue("in").put((self.media["image"],
                                           self.media["bounding_box"]))
        landmarks = queue_manager.get_queue("out").get()
        if landmarks == "EOF":
            exit(0)
        face = landmarks["detected_faces"][0]
        alignment = {"x": face.x,
                     "w": face.w,
                     "y": face.y,
                     "h": face.h,
                     "landmarksXY": face.landmarksXY}
        queue_manager.terminate_queues()
                               if landmarks
                               else np.zeros((68, 2))])
  
        queue_manager.terminate_queues()
          img_list_len = len(img_list)
          for i in tqdm(range(0, img_list_len - 1),
                        desc="Sorting",
                        file=sys.stdout):
keep keep add 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 
tools/sort.py