diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 80f1354..a627e96 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,403 +1,404 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ChangeListManager"> <list default="true" id="425499aa-766c-487c-a80c-89549194cd8c" name="Default" comment=""> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" /> </list> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="TRACKING_ENABLED" value="true" /> <option name="SHOW_DIALOG" value="false" /> <option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> <option name="LAST_RESOLUTION" value="IGNORE" /> </component> <component name="CreatePatchCommitExecutor"> <option name="PATCH_PATH" value="" /> </component> <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" /> <component name="FileEditorManager"> <leaf> <file leaf-file-name="README.md" pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/README.md"> <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> <state split_layout="SPLIT"> - <first_editor relative-caret-position="907"> - <caret line="89" column="152" lean-forward="false" selection-start-line="89" selection-start-column="152" selection-end-line="89" selection-end-column="152" /> + <first_editor relative-caret-position="195"> + <caret line="13" column="61" lean-forward="false" selection-start-line="13" selection-start-column="61" selection-end-line="13" selection-end-column="61" /> <folding /> </first_editor> <second_editor /> </state> </provider> </entry> </file> <file leaf-file-name="evaluation_plots.ipynb" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/evaluation/evaluation_plots.ipynb"> <provider selected="true" editor-type-id="ipnb-editor"> <state> <selected id="6" /> </state> </provider> </entry> </file> </leaf> </component> <component name="FindInProjectRecents"> <findStrings> <find>TODO</find> <find>imp</find> </findStrings> </component> <component name="Git.Settings"> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> </component> <component name="IdeDocumentHistory"> <option name="CHANGED_PATHS"> <list> <option value="$PROJECT_DIR$/evaluation/evaluation_plots.ipynb" /> <option value="$PROJECT_DIR$/data/cityscapes/cityscapes_labels.py" /> <option value="$PROJECT_DIR$/data/cityscapes/data_loader.py" /> <option value="$PROJECT_DIR$/data/cityscapes/preprocessing_config.py" /> <option value="$PROJECT_DIR$/evaluation/cityscapes_eval_config.py" /> <option value="$PROJECT_DIR$/evaluation/eval_cityscapes.py" /> <option value="$PROJECT_DIR$/model/probabilistic_unet.py" /> <option value="$PROJECT_DIR$/training/prob_unet_config.py" /> <option value="$PROJECT_DIR$/utils/training_utils.py" /> <option value="$PROJECT_DIR$/setup.py" /> <option value="$PROJECT_DIR$/requirements.txt" /> <option value="$PROJECT_DIR$/README.md" /> </list> </option> </component> <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" /> <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" /> <component name="JsGulpfileManager"> <detection-done>true</detection-done> <sorting>DEFINITION_ORDER</sorting> </component> <component name="ProjectFrameBounds"> <option name="width" value="2560" /> <option name="height" value="1421" /> </component> <component name="ProjectView"> <navigator currentView="ProjectPane" proportions="" version="1"> <flattenPackages /> <showMembers /> <showModules /> <showLibraryContents /> <hideEmptyPackages /> <abbreviatePackageNames /> <autoscrollToSource /> <autoscrollFromSource /> <sortByType /> <manualOrder /> <foldersAlwaysOnTop value="true" /> </navigator> <panes> <pane id="ProjectPane"> <subPane> <PATH> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> <PATH> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="utils" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> <PATH> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="training" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> <PATH> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="tests" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="evaluation" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> <PATH> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="model" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> <PATH> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="evaluation" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> <PATH> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="data" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> <PATH> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="data" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="cityscapes" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> <PATH> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="probunet" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> <PATH_ELEMENT> <option name="myItemId" value="assets" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> </PATH_ELEMENT> </PATH> </subPane> </pane> <pane id="Scope" /> <pane id="Scratches" /> </panes> </component> <component name="PropertiesComponent"> <property name="WebServerToolWindowFactoryState" value="false" /> <property name="last_opened_file_path" value="$PROJECT_DIR$" /> </component> <component name="ShelveChangesManager" show_recycled="false"> <option name="remove_strategy" value="false" /> </component> <component name="TaskManager"> <task active="true" id="Default" summary="Default task"> <changelist id="425499aa-766c-487c-a80c-89549194cd8c" name="Default" comment="" /> <created>1536748173508</created> <option name="number" value="Default" /> <option name="presentableId" value="Default" /> <updated>1536748173508</updated> </task> <servers /> </component> <component name="ToolWindowManager"> <frame x="0" y="0" width="2560" height="1421" extended-state="0" /> <editor active="true" /> <layout> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.1344471" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="The R Graphics" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Packages" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" /> <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> </layout> </component> <component name="TypeScriptGeneratedFilesManager"> <option name="processedProjectFiles" value="true" /> </component> <component name="VcsContentAnnotationSettings"> <option name="myLimit" value="2678400000" /> </component> <component name="XDebuggerManager"> <breakpoint-manager> <option name="time" value="1" /> </breakpoint-manager> <watches-manager /> </component> <component name="editorHistoryManager"> <entry file="file://$PROJECT_DIR$/data/cityscapes/batch_generation.ipynb" /> <entry file="file://$PROJECT_DIR$/utils/test.sh" /> <entry file="file://$PROJECT_DIR$/data/cityscapes/cityscapes_labels.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="300"> <caret line="20" column="84" lean-forward="true" selection-start-line="20" selection-start-column="84" selection-end-line="20" selection-end-column="84" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/data/cityscapes/data_loader.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="-1601"> <caret line="169" column="49" lean-forward="false" selection-start-line="169" selection-start-column="49" selection-end-line="169" selection-end-column="49" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/data/cityscapes/preprocessing.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="1455"> <caret line="97" column="12" lean-forward="false" selection-start-line="97" selection-start-column="9" selection-end-line="97" selection-end-column="12" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/data/cityscapes/preprocessing_config.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="390"> <caret line="26" column="0" lean-forward="false" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/evaluation/eval_cityscapes.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="542"> <caret line="435" column="60" lean-forward="true" selection-start-line="435" selection-start-column="60" selection-end-line="435" selection-end-column="60" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/model/probabilistic_unet.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="1110"> <caret line="458" column="80" lean-forward="false" selection-start-line="458" selection-start-column="80" selection-end-line="458" selection-end-column="80" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/tests/evaluation/eval_tests.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="-28"> <caret line="16" column="13" lean-forward="true" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="13" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/evaluation/cityscapes_eval_config.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="405"> <caret line="27" column="0" lean-forward="false" selection-start-line="27" selection-start-column="0" selection-end-line="27" selection-end-column="57" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/training/prob_unet_config.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="992"> <caret line="114" column="62" lean-forward="true" selection-start-line="114" selection-start-column="62" selection-end-line="114" selection-end-column="62" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/setup.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="480"> <caret line="32" column="7" lean-forward="false" selection-start-line="32" selection-start-column="7" selection-end-line="32" selection-end-column="7" /> <folding /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/requirements.txt"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="165"> <caret line="11" column="13" lean-forward="false" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="13" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/LICENSE"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="-45"> <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/utils/training_utils.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="2404"> <caret line="224" column="30" lean-forward="false" selection-start-line="224" selection-start-column="30" selection-end-line="224" selection-end-column="30" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/evaluation/evaluation_plots.ipynb"> <provider selected="true" editor-type-id="ipnb-editor"> <state> <selected id="6" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/README.md"> <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> <state split_layout="SPLIT"> - <first_editor relative-caret-position="907"> - <caret line="89" column="152" lean-forward="false" selection-start-line="89" selection-start-column="152" selection-end-line="89" selection-end-column="152" /> + <first_editor relative-caret-position="195"> + <caret line="13" column="61" lean-forward="false" selection-start-line="13" selection-start-column="61" selection-end-line="13" selection-end-column="61" /> <folding /> </first_editor> <second_editor /> </state> </provider> </entry> </component> </project> \ No newline at end of file diff --git a/README.md b/README.md index 5d515c7..8969704 100644 --- a/README.md +++ b/README.md @@ -1,106 +1,106 @@ # Probabilistic U-Net Re-implementation of the model described in `A Probabilistic U-Net for Segmentation of Ambiguous Images' ([arxiv.org/abs/1806.05034](https://arxiv.org/abs/1806.05034)). The architecture of the Probabilistic U-Net is depicted below: subfigure a) shows sampling and b) the training setup:  Below see samples conditioned on held-out validation set images from the (stochastic) CityScapes data set:  ## Setup package in virtual environment ``` -git clone https://phabricator.mitk.org/source/skohl/browse/master/prob_unet . +git clone https://github.com/SimonKohl/probabilistic_unet.git . cd prob_unet/ virtualenv -p python3 venv source venv/bin/activate pip3 install -e . ``` ## Install batch-generators for data augmentation ``` cd .. git clone https://github.com/MIC-DKFZ/batchgenerators cd batchgenerators pip3 install nilearn scikit-image nibabel pip3 install -e . cd prob_unet ``` ## Download & preprocess the Cityscapes dataset 1) Create a login account on the Cityscapes website: https://www.cityscapes-dataset.com/ 2) Once you've logged in, download the train, val and test annotations and images: - Annotations: [gtFine_trainvaltest.zip](https://www.cityscapes-dataset.com/file-handling/?packageID=1) (241MB) - Images: [leftImg8bit_trainvaltest.zip](https://www.cityscapes-dataset.com/file-handling/?packageID=3) (11GB) 3) unzip the data (unzip <name>_trainvaltest.zip) and adjust `raw_data_dir` (full path to unzipped files) and `out_dir` (full path to desired output directory) in `preprocessing_config.py` 4) bilinearly rescale the data to a resolution of 256 x 512 and save as numpy arrays by running ``` cd cityscapes python3 preprocessing.py cd .. ``` ## Training [skip to evaluation in case you only want to use the pretrained model.] modify `data_dir` and `exp_dir` in `scripts/prob_unet_config.py` then: ``` cd training python3 train_prob_unet.py --config prob_unet_config.py ``` ## Evaluation Load your own trained model or use a pretrained model. A set of pretrained weights can be downloaded from [zenodo.org](https://zenodo.org/record/1419051#.W5utoOEzYUE) (187MB). After down-loading, unpack the file via `tar -xvzf pretrained_weights.tar.gz`, e.g. in `/model`. In either case (using your own or the pretrained model), modify the `data_dir` and `exp_dir` in `evaluation/cityscapes_eval_config.py` to match you paths. then first write samples (defaults to 16 segmentation samples for each of the 500 validation images): ``` cd ../evaluation python3 eval_cityscapes.py --write_samples ``` followed by their evaluation (which is multi-threaded and thus reasonably fast): ``` python3 eval_cityscapes.py --eval_samples ``` The evaluation produces a dictionary holding the results. These can be visualized by launching an ipython notbook: ``` jupyter notebook evaluation_plots.ipynb ``` The following results are obtained from the pretrained model using above notebook:  ## Tests The evaluation metrics are under test-coverage. Run the tests as follows: ``` cd ../tests/evaluation python3 -m pytest eval_tests.py ``` ## Deviations from original work The code found in this repository was not used in the original paper and slight modifications apply: - training on a single gpu (Titan Xp) instead of distributed training, which is not supported in this implementation - average-pooling rather than bilinear interpolation is used for down-sampling operations in the model - the number of conv kernels is kept constant after the 3rd scale as opposed to strictly doubling it after each scale (for reduction of memory footprint) - HeNormal weight initialization worked better than a orthogonal weight initialization ## How to cite this code Please cite the original publication: ``` @article{kohl2018probabilistic, title={A Probabilistic U-Net for Segmentation of Ambiguous Images}, author={Kohl, Simon AA and Romera-Paredes, Bernardino and Meyer, Clemens and De Fauw, Jeffrey and Ledsam, Joseph R and Maier-Hein, Klaus H and Eslami, SM and Rezende, Danilo Jimenez and Ronneberger, Olaf}, journal={arXiv preprint arXiv:1806.05034}, year={2018} } ``` ## License The code is publihed under the [Apache License Version 2.0](LICENSE). \ No newline at end of file