Download scripts/data_process.py from MONAI/endoscopic_inbody_classification: direct link, hf CLI and curl.
- Browser
- Download file 2.67 kB
-
https://huggingface.co/MONAI/endoscopic_inbody_classification/resolve/main/scripts/data_process.py
- Command line
-
hf download hf://MONAI/endoscopic_inbody_classification/scripts/data_process.py
-
curl -L -o data_process.py https://huggingface.co/MONAI/endoscopic_inbody_classification/resolve/main/scripts/data_process.py
2.67 kB
| import argparse | |
| import json | |
| import os | |
| train_rate = 0.6 | |
| val_rate = 0.2 | |
| test_rate = 0.2 | |
| def save_json(content, path, filename): | |
| if not os.path.exists(path): | |
| os.makedirs(path, exist_ok=True) | |
| dst_file_name = os.path.join(path, filename) | |
| with open(dst_file_name, "w+") as fp: | |
| json.dump(content, fp, indent=4, separators=(",", ":")) | |
| def generate_labels(data_path, output_path): | |
| """ | |
| Loading a model by name. | |
| Args: | |
| data_path: path to classification dataset, which must contain `inbody` and `outbody` directories. | |
| output_path: path to save labels | |
| """ | |
| data_list = [os.path.join(root, x) for root, _, filenames in os.walk(data_path) for x in filenames if "jpg" in x] | |
| label_list = [int("outbody" in os.path.basename(os.path.dirname(x))) for x in data_list] | |
| data_label_json = [{"image": x, "label": y} for x, y in zip(data_list, label_list)] | |
| inbody_list = list(filter(lambda x: x["label"] == 0, data_label_json)) | |
| outbody_list = list(filter(lambda x: not (x["label"] == 0), data_label_json)) | |
| inbody_train_len = int(len(inbody_list) * train_rate) | |
| outbody_train_len = int(len(outbody_list) * train_rate) | |
| inbody_val_len = int(len(inbody_list) * (train_rate + val_rate)) | |
| outbody_val_len = int(len(outbody_list) * (train_rate + val_rate)) | |
| inbody_train_list = inbody_list[:inbody_train_len] | |
| outbody_train_list = outbody_list[:outbody_train_len] | |
| inbody_val_list = inbody_list[inbody_train_len:inbody_val_len] | |
| outbody_val_list = outbody_list[outbody_train_len:outbody_val_len] | |
| inbody_test_list = inbody_list[inbody_val_len:] | |
| outbody_test_list = outbody_list[outbody_val_len:] | |
| train_list = inbody_train_list + outbody_train_list | |
| val_list = inbody_val_list + outbody_val_list | |
| test_list = inbody_test_list + outbody_test_list | |
| save_json(train_list, out_path, "train_samples.json") | |
| save_json(val_list, out_path, "val_samples.json") | |
| save_json(test_list, out_path, "test_samples.json") | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser() | |
| # path to downloaded dataset. | |
| parser.add_argument( | |
| "--datapath", | |
| type=str, | |
| default=r"/workspace/data/endoscopic_inbody_classification", | |
| help="The root path of the inbody classification dataset.", | |
| ) | |
| # path to save label json. | |
| parser.add_argument("--outpath", type=str, default=r"./label", help="The output path of labels.") | |
| args = parser.parse_args() | |
| data_path = args.datapath | |
| out_path = args.outpath | |
| if not os.path.exists(out_path): | |
| os.makedirs(out_path, exist_ok=True) | |
| generate_labels(data_path, out_path) | |