          logger.info("Loading images...")
          filename_list = self.find_images(self._args.input_dir)
          with futures.ThreadPoolExecutor() as executor:
              image_list = list(tqdm(executor.map(read_image, filename_list),
                                     desc="Loading Images...",
                                     file=sys.stdout,
                                     total=len(filename_list)))
  
          return filename_list, image_list
  
 
</s> remove         filename_list, image_list = self._get_images()

        logger.info("Estimating blur...")
        blurs = [self.estimate_blur(img) for img in image_list]
 </s> add  </s> remove         filename_list, image_list = self._get_images()
        distance = cv2.HISTCMP_BHATTACHARYYA
 </s> add  </s> remove         filename_list, image_list = self._get_images()
        scores = np.zeros(len(filename_list), dtype='float32')
        distance = cv2.HISTCMP_BHATTACHARYYA
 </s> add  </s> remove         for idx, feed in enumerate(tqdm(feed_list, desc="Aligning...", file=sys.stdout)):
 </s> add         for idx, feed in enumerate(tqdm(feed_list, desc="Aligning", file=sys.stdout)): </s> remove         logger.info("Calculating histograms...")
        histograms = [cv2.calcHist([img], [0], None, [256], [0, 256]) for img in image_list]
        img_list = list(list(items) for items in zip(filename_list, histograms, scores))
 </s> add         # TODO We have metadata here, so we can mask the face for hist sorting
        img_list = [[filename, cv2.calcHist([image], [0], None, [256], [0, 256]), 0.0]
                    for filename, image, _ in tqdm(self._loader.load(),
                                                   desc="Calculating histograms",
                                                   total=self._loader.count,
                                                   leave=False)]
                                   desc="Loading Images",
          logger.info("Loading images...")
          filename_list = self.find_images(self._args.input_dir)
          with futures.ThreadPoolExecutor() as executor:
              image_list = list(tqdm(executor.map(read_image, filename_list),
                                   desc="Loading Images",
                                     file=sys.stdout,
                                     total=len(filename_list)))
  
          return filename_list, image_list
  
keep keep keep keep replace keep keep keep keep keep
 tools.sort
  - Add sort by size
  - Centralize some of the image loading routines 
tools/sort/sort.py