From 27d02ab3b98b04ee112c8fa5e734415e946efd20 Mon Sep 17 00:00:00 2001 From: "Gilbert, Andrew" Date: Mon, 23 Nov 2020 20:09:58 +0100 Subject: [PATCH] Restructuring (initialized one directory up) --- public-segmentation/.gitignore => .gitignore | 1 - public-segmentation/LICENSE => LICENSE | 0 README.md | 48 +++++++++++++++++- .../datasets => datasets}/__init__.py | 0 .../adversarial_dataset.py | 0 .../datasets => datasets}/base_dataset.py | 0 .../datasets => datasets}/image_folder.py | 0 .../datasets => datasets}/infer_dataset.py | 0 .../segmentation_dataset.py | 0 .../segmentation_transforms.py | 0 .../docs => docs}/seg_task.png | Bin .../evaluate.py => evaluate.py | 0 .../Curvature/LV_mask_analysis.py | 0 .../Curvature/__init__.py | 0 .../Curvature/_io_data_generation.py | 0 .../Curvature/alternative.py | 0 .../Curvature/curvature.py | 0 .../Curvature/graph_sorting.py | 0 .../Curvature/read_frames_from_avi.py | 0 .../Curvature/single_mask_processing.py | 0 .../evaluators => evaluators}/__init__.py | 0 .../evaluators => evaluators}/confidence.py | 0 .../evaluators => evaluators}/loss.py | 0 .../evaluators => evaluators}/metrics.py | 0 .../weighted_cross_entropy.py | 0 .../inference.py => inference.py | 0 .../models => models}/__init__.py | 0 .../models => models}/coordconv.py | 0 {public-segmentation/models => models}/net.py | 0 .../models => models}/resnet.py | 0 .../models => models}/unet.py | 0 .../options => options}/__init__.py | 0 .../options => options}/base_options.py | 0 .../options => options}/test_options.py | 0 .../options => options}/train_options.py | 0 public-segmentation/README.md | 47 ----------------- .../requirements.txt => requirements.txt | 0 .../calc_dataset_mean_std.py | 0 .../scripts => scripts}/network_stats.py | 0 .../seg_utils => seg_utils}/__init__.py | 0 .../post_process_masks.py | 0 .../seg_utils => seg_utils}/utils.py | 0 .../seg_utils => seg_utils}/visualizer.py | 0 public-segmentation/train.py => train.py | 0 44 files changed, 47 insertions(+), 49 deletions(-) rename public-segmentation/.gitignore => .gitignore (73%) rename public-segmentation/LICENSE => LICENSE (100%) rename {public-segmentation/datasets => datasets}/__init__.py (100%) rename {public-segmentation/datasets => datasets}/adversarial_dataset.py (100%) rename {public-segmentation/datasets => datasets}/base_dataset.py (100%) rename {public-segmentation/datasets => datasets}/image_folder.py (100%) rename {public-segmentation/datasets => datasets}/infer_dataset.py (100%) rename {public-segmentation/datasets => datasets}/segmentation_dataset.py (100%) rename {public-segmentation/datasets => datasets}/segmentation_transforms.py (100%) rename {public-segmentation/docs => docs}/seg_task.png (100%) rename public-segmentation/evaluate.py => evaluate.py (100%) rename {public-segmentation/evaluators => evaluators}/Curvature/LV_mask_analysis.py (100%) rename {public-segmentation/evaluators => evaluators}/Curvature/__init__.py (100%) rename {public-segmentation/evaluators => evaluators}/Curvature/_io_data_generation.py (100%) rename {public-segmentation/evaluators => evaluators}/Curvature/alternative.py (100%) rename {public-segmentation/evaluators => evaluators}/Curvature/curvature.py (100%) rename {public-segmentation/evaluators => evaluators}/Curvature/graph_sorting.py (100%) rename {public-segmentation/evaluators => evaluators}/Curvature/read_frames_from_avi.py (100%) rename {public-segmentation/evaluators => evaluators}/Curvature/single_mask_processing.py (100%) rename {public-segmentation/evaluators => evaluators}/__init__.py (100%) rename {public-segmentation/evaluators => evaluators}/confidence.py (100%) rename {public-segmentation/evaluators => evaluators}/loss.py (100%) rename {public-segmentation/evaluators => evaluators}/metrics.py (100%) rename {public-segmentation/evaluators => evaluators}/weighted_cross_entropy.py (100%) rename public-segmentation/inference.py => inference.py (100%) rename {public-segmentation/models => models}/__init__.py (100%) rename {public-segmentation/models => models}/coordconv.py (100%) rename {public-segmentation/models => models}/net.py (100%) rename {public-segmentation/models => models}/resnet.py (100%) rename {public-segmentation/models => models}/unet.py (100%) rename {public-segmentation/options => options}/__init__.py (100%) rename {public-segmentation/options => options}/base_options.py (100%) rename {public-segmentation/options => options}/test_options.py (100%) rename {public-segmentation/options => options}/train_options.py (100%) delete mode 100644 public-segmentation/README.md rename public-segmentation/requirements.txt => requirements.txt (100%) rename {public-segmentation/scripts => scripts}/calc_dataset_mean_std.py (100%) rename {public-segmentation/scripts => scripts}/network_stats.py (100%) rename {public-segmentation/seg_utils => seg_utils}/__init__.py (100%) rename {public-segmentation/seg_utils => seg_utils}/post_process_masks.py (100%) rename {public-segmentation/seg_utils => seg_utils}/utils.py (100%) rename {public-segmentation/seg_utils => seg_utils}/visualizer.py (100%) rename public-segmentation/train.py => train.py (100%) diff --git a/public-segmentation/.gitignore b/.gitignore similarity index 73% rename from public-segmentation/.gitignore rename to .gitignore index 0a5f7de..b32d8aa 100644 --- a/public-segmentation/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ *.pyc -../ .idea \ No newline at end of file diff --git a/public-segmentation/LICENSE b/LICENSE similarity index 100% rename from public-segmentation/LICENSE rename to LICENSE diff --git a/README.md b/README.md index 20e89c5..bb8c34e 100644 --- a/README.md +++ b/README.md @@ -1 +1,47 @@ -# med-seg +# Medical Segmentation + +![SegTask](docs/seg_task.png) + +A repository for training segmentation algorithms for medical images. This repository is primarily developed for +segmentation of apical four and two chamber echocardiography images like those from the +[Camus](https://www.creatis.insa-lyon.fr/Challenge/camus/) and +[EchoNet](https://echonet.github.io/dynamic/) datasets as well as other data with similar structure. + + +## Install + +Clone this repo, create a new environment and install requirements using `pip install -r requirements.txt` + + +## Training + +Use [train.py](train.py) to train a new model. + +Run `python train.py -h` to see all available options (defined in [base_options](options/base_options.py) and +[train_options](options/train_options.py)). + +The main options that need to be defined are: +- **dataroot**: the path to the data. This should be a directory with subfolders for each phase. At least "train" and + "val" and optionally other phases (e.g. "test"). Within each phase folder should be a "images" folder and a "labels" + folder. Each of these should contain pngs which have each training sample. The filenames in each directory should + match. +- **name**: The name of this training run. +- **experiment**: The experiment to group this run into. + +See the provided help string for information on other options. + +## Inference + +Use [inference.py](inference.py) to evaluate a trained model. + +Run `python inference.py -h` to see available options. The main options match those above. + + +## Notes + +Some parts of the code are specifically adapted for apical segmentation of the left ventricle + (e.g. the [metrics](evaluators/__init__.py)) which assume +specific regions are associated with specific classes. These will need to be updated for a new segmentation task. + +Some of the structure/code from this repository is based on +[CycleGAN_and_pix2pix](https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix). \ No newline at end of file diff --git a/public-segmentation/datasets/__init__.py b/datasets/__init__.py similarity index 100% rename from public-segmentation/datasets/__init__.py rename to datasets/__init__.py diff --git a/public-segmentation/datasets/adversarial_dataset.py b/datasets/adversarial_dataset.py similarity index 100% rename from public-segmentation/datasets/adversarial_dataset.py rename to datasets/adversarial_dataset.py diff --git a/public-segmentation/datasets/base_dataset.py b/datasets/base_dataset.py similarity index 100% rename from public-segmentation/datasets/base_dataset.py rename to datasets/base_dataset.py diff --git a/public-segmentation/datasets/image_folder.py b/datasets/image_folder.py similarity index 100% rename from public-segmentation/datasets/image_folder.py rename to datasets/image_folder.py diff --git a/public-segmentation/datasets/infer_dataset.py b/datasets/infer_dataset.py similarity index 100% rename from public-segmentation/datasets/infer_dataset.py rename to datasets/infer_dataset.py diff --git a/public-segmentation/datasets/segmentation_dataset.py b/datasets/segmentation_dataset.py similarity index 100% rename from public-segmentation/datasets/segmentation_dataset.py rename to datasets/segmentation_dataset.py diff --git a/public-segmentation/datasets/segmentation_transforms.py b/datasets/segmentation_transforms.py similarity index 100% rename from public-segmentation/datasets/segmentation_transforms.py rename to datasets/segmentation_transforms.py diff --git a/public-segmentation/docs/seg_task.png b/docs/seg_task.png similarity index 100% rename from public-segmentation/docs/seg_task.png rename to docs/seg_task.png diff --git a/public-segmentation/evaluate.py b/evaluate.py similarity index 100% rename from public-segmentation/evaluate.py rename to evaluate.py diff --git a/public-segmentation/evaluators/Curvature/LV_mask_analysis.py b/evaluators/Curvature/LV_mask_analysis.py similarity index 100% rename from public-segmentation/evaluators/Curvature/LV_mask_analysis.py rename to evaluators/Curvature/LV_mask_analysis.py diff --git a/public-segmentation/evaluators/Curvature/__init__.py b/evaluators/Curvature/__init__.py similarity index 100% rename from public-segmentation/evaluators/Curvature/__init__.py rename to evaluators/Curvature/__init__.py diff --git a/public-segmentation/evaluators/Curvature/_io_data_generation.py b/evaluators/Curvature/_io_data_generation.py similarity index 100% rename from public-segmentation/evaluators/Curvature/_io_data_generation.py rename to evaluators/Curvature/_io_data_generation.py diff --git a/public-segmentation/evaluators/Curvature/alternative.py b/evaluators/Curvature/alternative.py similarity index 100% rename from public-segmentation/evaluators/Curvature/alternative.py rename to evaluators/Curvature/alternative.py diff --git a/public-segmentation/evaluators/Curvature/curvature.py b/evaluators/Curvature/curvature.py similarity index 100% rename from public-segmentation/evaluators/Curvature/curvature.py rename to evaluators/Curvature/curvature.py diff --git a/public-segmentation/evaluators/Curvature/graph_sorting.py b/evaluators/Curvature/graph_sorting.py similarity index 100% rename from public-segmentation/evaluators/Curvature/graph_sorting.py rename to evaluators/Curvature/graph_sorting.py diff --git a/public-segmentation/evaluators/Curvature/read_frames_from_avi.py b/evaluators/Curvature/read_frames_from_avi.py similarity index 100% rename from public-segmentation/evaluators/Curvature/read_frames_from_avi.py rename to evaluators/Curvature/read_frames_from_avi.py diff --git a/public-segmentation/evaluators/Curvature/single_mask_processing.py b/evaluators/Curvature/single_mask_processing.py similarity index 100% rename from public-segmentation/evaluators/Curvature/single_mask_processing.py rename to evaluators/Curvature/single_mask_processing.py diff --git a/public-segmentation/evaluators/__init__.py b/evaluators/__init__.py similarity index 100% rename from public-segmentation/evaluators/__init__.py rename to evaluators/__init__.py diff --git a/public-segmentation/evaluators/confidence.py b/evaluators/confidence.py similarity index 100% rename from public-segmentation/evaluators/confidence.py rename to evaluators/confidence.py diff --git a/public-segmentation/evaluators/loss.py b/evaluators/loss.py similarity index 100% rename from public-segmentation/evaluators/loss.py rename to evaluators/loss.py diff --git a/public-segmentation/evaluators/metrics.py b/evaluators/metrics.py similarity index 100% rename from public-segmentation/evaluators/metrics.py rename to evaluators/metrics.py diff --git a/public-segmentation/evaluators/weighted_cross_entropy.py b/evaluators/weighted_cross_entropy.py similarity index 100% rename from public-segmentation/evaluators/weighted_cross_entropy.py rename to evaluators/weighted_cross_entropy.py diff --git a/public-segmentation/inference.py b/inference.py similarity index 100% rename from public-segmentation/inference.py rename to inference.py diff --git a/public-segmentation/models/__init__.py b/models/__init__.py similarity index 100% rename from public-segmentation/models/__init__.py rename to models/__init__.py diff --git a/public-segmentation/models/coordconv.py b/models/coordconv.py similarity index 100% rename from public-segmentation/models/coordconv.py rename to models/coordconv.py diff --git a/public-segmentation/models/net.py b/models/net.py similarity index 100% rename from public-segmentation/models/net.py rename to models/net.py diff --git a/public-segmentation/models/resnet.py b/models/resnet.py similarity index 100% rename from public-segmentation/models/resnet.py rename to models/resnet.py diff --git a/public-segmentation/models/unet.py b/models/unet.py similarity index 100% rename from public-segmentation/models/unet.py rename to models/unet.py diff --git a/public-segmentation/options/__init__.py b/options/__init__.py similarity index 100% rename from public-segmentation/options/__init__.py rename to options/__init__.py diff --git a/public-segmentation/options/base_options.py b/options/base_options.py similarity index 100% rename from public-segmentation/options/base_options.py rename to options/base_options.py diff --git a/public-segmentation/options/test_options.py b/options/test_options.py similarity index 100% rename from public-segmentation/options/test_options.py rename to options/test_options.py diff --git a/public-segmentation/options/train_options.py b/options/train_options.py similarity index 100% rename from public-segmentation/options/train_options.py rename to options/train_options.py diff --git a/public-segmentation/README.md b/public-segmentation/README.md deleted file mode 100644 index bb8c34e..0000000 --- a/public-segmentation/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Medical Segmentation - -![SegTask](docs/seg_task.png) - -A repository for training segmentation algorithms for medical images. This repository is primarily developed for -segmentation of apical four and two chamber echocardiography images like those from the -[Camus](https://www.creatis.insa-lyon.fr/Challenge/camus/) and -[EchoNet](https://echonet.github.io/dynamic/) datasets as well as other data with similar structure. - - -## Install - -Clone this repo, create a new environment and install requirements using `pip install -r requirements.txt` - - -## Training - -Use [train.py](train.py) to train a new model. - -Run `python train.py -h` to see all available options (defined in [base_options](options/base_options.py) and -[train_options](options/train_options.py)). - -The main options that need to be defined are: -- **dataroot**: the path to the data. This should be a directory with subfolders for each phase. At least "train" and - "val" and optionally other phases (e.g. "test"). Within each phase folder should be a "images" folder and a "labels" - folder. Each of these should contain pngs which have each training sample. The filenames in each directory should - match. -- **name**: The name of this training run. -- **experiment**: The experiment to group this run into. - -See the provided help string for information on other options. - -## Inference - -Use [inference.py](inference.py) to evaluate a trained model. - -Run `python inference.py -h` to see available options. The main options match those above. - - -## Notes - -Some parts of the code are specifically adapted for apical segmentation of the left ventricle - (e.g. the [metrics](evaluators/__init__.py)) which assume -specific regions are associated with specific classes. These will need to be updated for a new segmentation task. - -Some of the structure/code from this repository is based on -[CycleGAN_and_pix2pix](https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix). \ No newline at end of file diff --git a/public-segmentation/requirements.txt b/requirements.txt similarity index 100% rename from public-segmentation/requirements.txt rename to requirements.txt diff --git a/public-segmentation/scripts/calc_dataset_mean_std.py b/scripts/calc_dataset_mean_std.py similarity index 100% rename from public-segmentation/scripts/calc_dataset_mean_std.py rename to scripts/calc_dataset_mean_std.py diff --git a/public-segmentation/scripts/network_stats.py b/scripts/network_stats.py similarity index 100% rename from public-segmentation/scripts/network_stats.py rename to scripts/network_stats.py diff --git a/public-segmentation/seg_utils/__init__.py b/seg_utils/__init__.py similarity index 100% rename from public-segmentation/seg_utils/__init__.py rename to seg_utils/__init__.py diff --git a/public-segmentation/seg_utils/post_process_masks.py b/seg_utils/post_process_masks.py similarity index 100% rename from public-segmentation/seg_utils/post_process_masks.py rename to seg_utils/post_process_masks.py diff --git a/public-segmentation/seg_utils/utils.py b/seg_utils/utils.py similarity index 100% rename from public-segmentation/seg_utils/utils.py rename to seg_utils/utils.py diff --git a/public-segmentation/seg_utils/visualizer.py b/seg_utils/visualizer.py similarity index 100% rename from public-segmentation/seg_utils/visualizer.py rename to seg_utils/visualizer.py diff --git a/public-segmentation/train.py b/train.py similarity index 100% rename from public-segmentation/train.py rename to train.py