Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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
Пример #7
0
 def process_all(self, pool: Pool):
     images = [*self.in_dir.glob(f"**/*.{self.extension}")]
     tqdm_parallel_imap(self.preprocess, images, pool)
Пример #8
0
 def process_all(self, pool: Pool):
     images = os.listdir(self.in_dir)
     tqdm_parallel_imap(self.preprocess, images, pool)