def process_all(self, pool: Pool) -> None: """Process all images in the folder.""" files = glob.iglob(f"{self.in_dir}/**/*", recursive=True) images = sorted(filter(utils.has_image_extension, files)) images = [Path(filepath) for filepath in (images)] utils.tqdm_parallel_imap(self.preprocess, images, pool)
def process_all(self, pool: Pool): images: List[Path] = [] for root, dirs, files in os.walk(self.in_dir): root = Path(root) images.extend([ root / filename for filename in files if has_image_extension(filename) ]) tqdm_parallel_imap(self.preprocess, images, pool)
def process_all(self, pool: Pool): """@TODO: Docs. Contribution is welcome.""" images: List[Path] = [] for root, _, files in os.walk(self.in_dir): root = Path(root) images.extend([ root / filename for filename in files if utils.has_image_extension(filename) ]) utils.tqdm_parallel_imap(self.preprocess, images, pool)
def main(args, _=None): with get_pool(args.num_workers) as pool: images = os.listdir(args.in_dir) colors = tqdm_parallel_imap(colors_in_image, images, pool) unique_colors = reduce(lambda s1, s2: s1 | s2, colors) index2color = collections.OrderedDict([ (index, color) for index, color in enumerate(sorted(unique_colors)) ]) print("Num classes: ", len(index2color)) with open(args.out_labeling, "w") as fout: json.dump(index2color, fout, indent=4)
def main(args): df = pd.read_csv(args.in_csv) if args.datapath: df["datapath"] = args.datapath if args.out_dir: df["out_dir"] = args.out_dir df_list = csv2list(df) with get_pool(args.n_cpu) as pool: df_list_out = tqdm_parallel_imap(process_row, df_list, pool) df_out = pd.DataFrame(df_list_out) df_out.to_csv(args.out_csv, index=False)
def optimize_thresholds( predictions: np.ndarray, labels: np.ndarray, classes: List[int], metric_fn: Callable = metrics.roc_auc_score, num_splits: int = 5, num_repeats: int = 1, num_workers: int = 0, ignore_label: int = None, ) -> Tuple[Dict, Dict]: """@TODO: Docs. Contribution is welcome.""" pool = utils.get_pool(num_workers) predictions_copy = predictions.copy() predictions_list, labels_list = [], [] for class_index in classes: predictions_list.append(predictions_copy[:, class_index]) labels_list.append( get_binary_labels(labels, class_index, ignore_label=ignore_label) ) results = utils.tqdm_parallel_imap( find_best_threshold_wrapper, zip( classes, predictions_list, labels_list, repeat(metric_fn), repeat(num_splits), repeat(num_repeats), ), pool, ) results = [(r[1], r[2]) for r in sorted(results, key=lambda x: x[0])] result_thresholds = [r[0] for r in results] result_metrics = [r[1] for r in results] class_thresholds = {c: t for (c, t) in zip(classes, result_thresholds)} class_metrics = {c: m for (c, m) in zip(classes, result_metrics)} return class_thresholds, class_metrics
def process_all(self, pool: Pool): images = [*self.in_dir.glob(f"**/*.{self.extension}")] tqdm_parallel_imap(self.preprocess, images, pool)
def process_all(self, pool: Pool): images = os.listdir(self.in_dir) tqdm_parallel_imap(self.preprocess, images, pool)