├── medseg ├── __init__.py ├── models │ ├── __init__.py │ ├── DilatedDenseNet.py │ ├── UNet2D.py │ └── DenseNet3D.py ├── utils.py ├── engine.py └── datagen.py ├── output ├── debug │ ├── logs │ │ ├── loss.png │ │ ├── accuracy.png │ │ └── log.csv │ └── debug.yaml └── debug_segment │ ├── logs │ ├── loss.png │ ├── accuracy.png │ └── log.csv │ ├── outputs │ ├── Task06_Lung │ │ ├── lung_003_18.jpg │ │ ├── lung_003_24.jpg │ │ ├── lung_004_11.jpg │ │ ├── lung_001_100.jpg │ │ ├── lung_001_101.jpg │ │ ├── lung_001_102.jpg │ │ ├── lung_001_103.jpg │ │ ├── lung_001_104.jpg │ │ ├── lung_001_105.jpg │ │ ├── lung_001_106.jpg │ │ ├── lung_001_107.jpg │ │ ├── lung_001_108.jpg │ │ ├── lung_001_109.jpg │ │ ├── lung_001_266.jpg │ │ ├── lung_001_272.jpg │ │ ├── lung_001_299.jpg │ │ ├── lung_003_149.jpg │ │ ├── lung_003_161.jpg │ │ ├── lung_003_175.jpg │ │ ├── lung_004_280.jpg │ │ ├── lung_004_281.jpg │ │ ├── lung_004_282.jpg │ │ ├── lung_004_283.jpg │ │ ├── lung_004_284.jpg │ │ ├── lung_004_285.jpg │ │ ├── lung_004_286.jpg │ │ ├── lung_004_287.jpg │ │ ├── lung_004_288.jpg │ │ ├── lung_004_289.jpg │ │ ├── lung_004_323.jpg │ │ └── lung_004_337.jpg │ ├── Task07_Pancreas │ │ ├── pancreas_001_0.jpg │ │ ├── pancreas_001_1.jpg │ │ ├── pancreas_001_2.jpg │ │ ├── pancreas_001_3.jpg │ │ ├── pancreas_001_4.jpg │ │ ├── pancreas_001_5.jpg │ │ ├── pancreas_001_6.jpg │ │ ├── pancreas_001_7.jpg │ │ ├── pancreas_001_8.jpg │ │ ├── pancreas_001_9.jpg │ │ ├── pancreas_001_90.jpg │ │ ├── pancreas_001_91.jpg │ │ ├── pancreas_001_92.jpg │ │ ├── pancreas_001_93.jpg │ │ ├── pancreas_001_94.jpg │ │ ├── pancreas_001_95.jpg │ │ ├── pancreas_001_96.jpg │ │ ├── pancreas_001_97.jpg │ │ ├── pancreas_001_98.jpg │ │ └── pancreas_001_99.jpg │ └── Task01_BrainTumour │ │ ├── BRATS_002_100.jpg │ │ ├── BRATS_002_101.jpg │ │ ├── BRATS_002_102.jpg │ │ ├── BRATS_002_103.jpg │ │ ├── BRATS_002_104.jpg │ │ ├── BRATS_002_105.jpg │ │ ├── BRATS_002_106.jpg │ │ ├── BRATS_002_107.jpg │ │ ├── BRATS_002_108.jpg │ │ └── BRATS_002_109.jpg │ └── debug_segment.yaml ├── data_test ├── Task06_Lung │ ├── imagesTr │ │ ├── lung_004_280.jpg │ │ ├── lung_004_281.jpg │ │ ├── lung_004_282.jpg │ │ ├── lung_004_283.jpg │ │ ├── lung_004_284.jpg │ │ ├── lung_004_285.jpg │ │ ├── lung_004_286.jpg │ │ ├── lung_004_287.jpg │ │ ├── lung_004_288.jpg │ │ └── lung_004_289.jpg │ └── labelsTr_npz │ │ ├── lung_004_280.npz │ │ ├── lung_004_281.npz │ │ ├── lung_004_282.npz │ │ ├── lung_004_283.npz │ │ ├── lung_004_284.npz │ │ ├── lung_004_285.npz │ │ ├── lung_004_286.npz │ │ ├── lung_004_287.npz │ │ ├── lung_004_288.npz │ │ └── lung_004_289.npz ├── Task07_Pancreas │ ├── imagesTr │ │ ├── pancreas_001_90.jpg │ │ ├── pancreas_001_91.jpg │ │ ├── pancreas_001_92.jpg │ │ ├── pancreas_001_93.jpg │ │ ├── pancreas_001_94.jpg │ │ ├── pancreas_001_95.jpg │ │ ├── pancreas_001_96.jpg │ │ ├── pancreas_001_97.jpg │ │ ├── pancreas_001_98.jpg │ │ └── pancreas_001_99.jpg │ └── labelsTr_npz │ │ ├── pancreas_001_90.npz │ │ ├── pancreas_001_91.npz │ │ ├── pancreas_001_92.npz │ │ ├── pancreas_001_93.npz │ │ ├── pancreas_001_94.npz │ │ ├── pancreas_001_95.npz │ │ ├── pancreas_001_96.npz │ │ ├── pancreas_001_97.npz │ │ ├── pancreas_001_98.npz │ │ └── pancreas_001_99.npz └── Task01_BrainTumour │ ├── imagesTr │ ├── BRATS_002_100.jpg │ ├── BRATS_002_101.jpg │ ├── BRATS_002_102.jpg │ ├── BRATS_002_103.jpg │ ├── BRATS_002_104.jpg │ ├── BRATS_002_105.jpg │ ├── BRATS_002_106.jpg │ ├── BRATS_002_107.jpg │ ├── BRATS_002_108.jpg │ └── BRATS_002_109.jpg │ └── labelsTr_npz │ ├── BRATS_002_100.npz │ ├── BRATS_002_101.npz │ ├── BRATS_002_102.npz │ ├── BRATS_002_103.npz │ ├── BRATS_002_104.npz │ ├── BRATS_002_105.npz │ ├── BRATS_002_106.npz │ ├── BRATS_002_107.npz │ ├── BRATS_002_108.npz │ └── BRATS_002_109.npz ├── .gitignore ├── scripts ├── configs │ ├── config_classify.yaml │ ├── config_segment_densenet.yaml │ └── config_segment_unet.yaml ├── classify.py ├── segment.py ├── segment.ipynb ├── test_segment.ipynb └── classify.ipynb ├── README.md └── misc ├── save_resized_volumes.py ├── slice_data.py └── save_resized_volumes.ipynb /medseg/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /output/debug/logs/loss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug/logs/loss.png -------------------------------------------------------------------------------- /output/debug/logs/accuracy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug/logs/accuracy.png -------------------------------------------------------------------------------- /output/debug_segment/logs/loss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/logs/loss.png -------------------------------------------------------------------------------- /output/debug_segment/logs/accuracy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/logs/accuracy.png -------------------------------------------------------------------------------- /medseg/models/__init__.py: -------------------------------------------------------------------------------- 1 | from .DenseNet3D import DenseNet3D 2 | from .UNet2D import UNet2D 3 | from .DilatedDenseNet import DilatedDenseNet 4 | -------------------------------------------------------------------------------- /data_test/Task06_Lung/imagesTr/lung_004_280.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/imagesTr/lung_004_280.jpg -------------------------------------------------------------------------------- /data_test/Task06_Lung/imagesTr/lung_004_281.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/imagesTr/lung_004_281.jpg -------------------------------------------------------------------------------- /data_test/Task06_Lung/imagesTr/lung_004_282.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/imagesTr/lung_004_282.jpg -------------------------------------------------------------------------------- /data_test/Task06_Lung/imagesTr/lung_004_283.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/imagesTr/lung_004_283.jpg -------------------------------------------------------------------------------- /data_test/Task06_Lung/imagesTr/lung_004_284.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/imagesTr/lung_004_284.jpg -------------------------------------------------------------------------------- /data_test/Task06_Lung/imagesTr/lung_004_285.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/imagesTr/lung_004_285.jpg -------------------------------------------------------------------------------- /data_test/Task06_Lung/imagesTr/lung_004_286.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/imagesTr/lung_004_286.jpg -------------------------------------------------------------------------------- /data_test/Task06_Lung/imagesTr/lung_004_287.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/imagesTr/lung_004_287.jpg -------------------------------------------------------------------------------- /data_test/Task06_Lung/imagesTr/lung_004_288.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/imagesTr/lung_004_288.jpg -------------------------------------------------------------------------------- /data_test/Task06_Lung/imagesTr/lung_004_289.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/imagesTr/lung_004_289.jpg -------------------------------------------------------------------------------- /data_test/Task06_Lung/labelsTr_npz/lung_004_280.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/labelsTr_npz/lung_004_280.npz -------------------------------------------------------------------------------- /data_test/Task06_Lung/labelsTr_npz/lung_004_281.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/labelsTr_npz/lung_004_281.npz -------------------------------------------------------------------------------- /data_test/Task06_Lung/labelsTr_npz/lung_004_282.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/labelsTr_npz/lung_004_282.npz -------------------------------------------------------------------------------- /data_test/Task06_Lung/labelsTr_npz/lung_004_283.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/labelsTr_npz/lung_004_283.npz -------------------------------------------------------------------------------- /data_test/Task06_Lung/labelsTr_npz/lung_004_284.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/labelsTr_npz/lung_004_284.npz -------------------------------------------------------------------------------- /data_test/Task06_Lung/labelsTr_npz/lung_004_285.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/labelsTr_npz/lung_004_285.npz -------------------------------------------------------------------------------- /data_test/Task06_Lung/labelsTr_npz/lung_004_286.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/labelsTr_npz/lung_004_286.npz -------------------------------------------------------------------------------- /data_test/Task06_Lung/labelsTr_npz/lung_004_287.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/labelsTr_npz/lung_004_287.npz -------------------------------------------------------------------------------- /data_test/Task06_Lung/labelsTr_npz/lung_004_288.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/labelsTr_npz/lung_004_288.npz -------------------------------------------------------------------------------- /data_test/Task06_Lung/labelsTr_npz/lung_004_289.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task06_Lung/labelsTr_npz/lung_004_289.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/imagesTr/pancreas_001_90.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/imagesTr/pancreas_001_90.jpg -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/imagesTr/pancreas_001_91.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/imagesTr/pancreas_001_91.jpg -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/imagesTr/pancreas_001_92.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/imagesTr/pancreas_001_92.jpg -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/imagesTr/pancreas_001_93.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/imagesTr/pancreas_001_93.jpg -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/imagesTr/pancreas_001_94.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/imagesTr/pancreas_001_94.jpg -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/imagesTr/pancreas_001_95.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/imagesTr/pancreas_001_95.jpg -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/imagesTr/pancreas_001_96.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/imagesTr/pancreas_001_96.jpg -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/imagesTr/pancreas_001_97.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/imagesTr/pancreas_001_97.jpg -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/imagesTr/pancreas_001_98.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/imagesTr/pancreas_001_98.jpg -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/imagesTr/pancreas_001_99.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/imagesTr/pancreas_001_99.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/imagesTr/BRATS_002_100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/imagesTr/BRATS_002_100.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/imagesTr/BRATS_002_101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/imagesTr/BRATS_002_101.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/imagesTr/BRATS_002_102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/imagesTr/BRATS_002_102.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/imagesTr/BRATS_002_103.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/imagesTr/BRATS_002_103.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/imagesTr/BRATS_002_104.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/imagesTr/BRATS_002_104.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/imagesTr/BRATS_002_105.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/imagesTr/BRATS_002_105.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/imagesTr/BRATS_002_106.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/imagesTr/BRATS_002_106.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/imagesTr/BRATS_002_107.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/imagesTr/BRATS_002_107.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/imagesTr/BRATS_002_108.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/imagesTr/BRATS_002_108.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/imagesTr/BRATS_002_109.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/imagesTr/BRATS_002_109.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_003_18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_003_18.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_003_24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_003_24.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_11.jpg -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_100.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_100.npz -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_101.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_101.npz -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_102.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_102.npz -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_103.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_103.npz -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_104.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_104.npz -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_105.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_105.npz -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_106.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_106.npz -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_107.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_107.npz -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_108.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_108.npz -------------------------------------------------------------------------------- /data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_109.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task01_BrainTumour/labelsTr_npz/BRATS_002_109.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_90.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_90.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_91.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_91.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_92.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_92.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_93.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_93.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_94.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_94.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_95.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_95.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_96.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_96.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_97.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_97.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_98.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_98.npz -------------------------------------------------------------------------------- /data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_99.npz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/data_test/Task07_Pancreas/labelsTr_npz/pancreas_001_99.npz -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_100.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_101.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_102.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_103.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_103.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_104.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_104.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_105.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_105.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_106.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_106.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_107.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_107.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_108.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_108.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_109.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_109.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_266.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_266.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_272.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_272.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_001_299.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_001_299.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_003_149.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_003_149.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_003_161.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_003_161.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_003_175.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_003_175.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_280.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_280.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_281.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_281.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_282.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_282.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_283.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_283.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_284.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_284.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_285.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_285.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_286.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_286.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_287.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_287.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_288.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_288.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_289.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_289.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_323.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_323.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task06_Lung/lung_004_337.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task06_Lung/lung_004_337.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_0.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_1.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_2.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_3.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_4.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_5.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_6.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_7.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_8.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_9.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_90.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_90.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_91.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_91.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_92.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_92.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_93.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_93.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_94.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_94.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_95.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_95.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_96.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_96.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_97.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_97.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_98.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_98.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task07_Pancreas/pancreas_001_99.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task07_Pancreas/pancreas_001_99.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_100.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_101.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_102.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_103.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_103.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_104.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_104.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_105.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_105.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_106.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_106.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_107.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_107.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_108.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_108.jpg -------------------------------------------------------------------------------- /output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_109.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/suryatejadev/medseg_decathlon/HEAD/output/debug_segment/outputs/Task01_BrainTumour/BRATS_002_109.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | data/ 2 | .ipynb_checkpoints 3 | *.h5 4 | *.pyc 5 | data_sliced/ 6 | *.fuse* 7 | misc/Sample 8 | data3d_size_50/ 9 | data_notest/ 10 | data_small/ 11 | scripts/debug.ipynb 12 | 13 | -------------------------------------------------------------------------------- /output/debug_segment/logs/log.csv: -------------------------------------------------------------------------------- 1 | epoch,acc,loss,val_acc,val_loss 2 | 0,0.34876954555511475,0.87832820415496826,0.4642333984375,1.5810666084289551 3 | 1,0.55563962459564209,0.7363821268081665,0.52000975608825684,0.70935028791427612 4 | -------------------------------------------------------------------------------- /output/debug/logs/log.csv: -------------------------------------------------------------------------------- 1 | epoch,acc,loss,val_acc,val_loss 2 | 0,0.2077814569536424,6.799476020383519,0.625,6.445691800117492 3 | 1,0.22185430463576158,5.7012593280400665,0.075,7.561163306236267 4 | 2,0.24917218543046357,5.553177989871297,0.1125,16.031928181648254 5 | 3,0.26986754966887416,5.3637721546438355,0.225,4.971727633476258 6 | 4,0.2913907284768212,5.160649054097814,0.1875,4.886078584194183 7 | -------------------------------------------------------------------------------- /scripts/configs/config_classify.yaml: -------------------------------------------------------------------------------- 1 | # Experiment 2 | exp_id: debug 3 | 4 | # Paths 5 | data_path: ../data3d_size_50 6 | output_dir: &output ../output 7 | 8 | # Data 9 | batch_size: &bsize 4 10 | datagen: 11 | batch_size: *bsize 12 | img_dims: &dims !!python/tuple [50, 50, 50, 1] 13 | 14 | # Model 15 | model: 16 | name: 'DenseNet3D' 17 | trained_model: None 18 | compile_params: 19 | optimizer: Adam 20 | loss: categorical_crossentropy 21 | metrics: ['accuracy'] 22 | 23 | model_params: 24 | blocks: [6, 12, 24] 25 | input_shape: *dims 26 | classes: 8 27 | 28 | # Train parameters 29 | train: 30 | ckpt_period: 2 31 | fit_params: 32 | epochs: 5 33 | steps_per_epoch: 1 34 | validation_steps: 1 35 | 36 | -------------------------------------------------------------------------------- /output/debug/debug.yaml: -------------------------------------------------------------------------------- 1 | # Experiment 2 | exp_id: debug 3 | 4 | # Paths 5 | data_path: /media/DATA/Datasets/medseg_decathlon/aux/data3d_size_50 6 | output_dir: &output ../output 7 | 8 | # Data 9 | batch_size: &bsize 2 10 | datagen: 11 | batch_size: *bsize 12 | img_dims: &dims !!python/tuple [50, 50, 50, 1] 13 | 14 | # Model 15 | model: 16 | name: 'DenseNet3D' 17 | trained_model: None 18 | compile_params: 19 | optimizer: Adam 20 | loss: categorical_crossentropy 21 | metrics: ['accuracy'] 22 | 23 | model_params: 24 | blocks: [3, 6, 12] 25 | input_shape: *dims 26 | classes: 7 27 | 28 | # Train parameters 29 | train: 30 | ckpt_period: 2 31 | fit_params: 32 | epochs: 5 33 | steps_per_epoch: 604 34 | validation_steps: 20 35 | 36 | -------------------------------------------------------------------------------- /scripts/configs/config_segment_densenet.yaml: -------------------------------------------------------------------------------- 1 | # Experiment 2 | exp_id: debug_segment 3 | 4 | # Paths 5 | data_path: ../data_sliced 6 | output_dir: &output ../output 7 | 8 | # Data 9 | batch_size: &bsize 2 10 | datagen: 11 | batch_size: *bsize 12 | img_dims: &dims !!python/tuple [320, 320, 2] 13 | 14 | # Model 15 | model: 16 | name: 'DilatedDenseNet' 17 | trained_model: None 18 | compile_params: 19 | optimizer: Adam 20 | loss: categorical_crossentropy 21 | metrics: ['accuracy'] 22 | 23 | model_params: 24 | input_shape: *dims 25 | features: 12 26 | depth: 4 27 | padding: same 28 | batchnorm: True 29 | dropout: 0.0 30 | 31 | # Train parameters 32 | train: 33 | ckpt_period: 2 34 | fit_params: 35 | epochs: 2 36 | steps_per_epoch: 1 37 | validation_steps: 1 38 | 39 | -------------------------------------------------------------------------------- /output/debug_segment/debug_segment.yaml: -------------------------------------------------------------------------------- 1 | # Experiment 2 | exp_id: debug_segment 3 | 4 | # Paths 5 | data_path: ../data_sliced 6 | output_dir: &output ../output 7 | 8 | # Data 9 | batch_size: &bsize 32 10 | datagen: 11 | batch_size: *bsize 12 | img_dims: &dims [320, 320, 2] 13 | 14 | # Model 15 | model: 16 | name: 'UNet2D' 17 | trained_model: None 18 | compile_params: 19 | optimizer: Adam 20 | loss: categorical_crossentropy 21 | metrics: ['accuracy'] 22 | 23 | model_params: 24 | input_shape: *dims 25 | features: 32 26 | depth: 5 27 | conv_params: 28 | padding: same 29 | dropout: 0.0 30 | batchnorm: True 31 | dilation: !!python/tuple [1,1] 32 | 33 | # Train parameters 34 | train: 35 | ckpt_period: 2 36 | fit_params: 37 | epochs: 5 38 | steps_per_epoch: 1 39 | validation_steps: 1 40 | 41 | # Test parameters 42 | test: 43 | test_dir: ../data_test 44 | trained_model: ../output/debug_segment/checkpoints/wt-03-0.86.h5 45 | img_dims: *dims 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /scripts/configs/config_segment_unet.yaml: -------------------------------------------------------------------------------- 1 | # Experiment 2 | exp_id: debug_segment 3 | 4 | # Paths 5 | data_path: ../data_sliced 6 | output_dir: &output ../output 7 | 8 | # Data 9 | batch_size: &bsize 32 10 | datagen: 11 | batch_size: *bsize 12 | img_dims: &dims [320, 320, 2] 13 | 14 | # Model 15 | model: 16 | name: 'UNet2D' 17 | trained_model: None 18 | compile_params: 19 | optimizer: Adam 20 | loss: categorical_crossentropy 21 | metrics: ['accuracy'] 22 | 23 | model_params: 24 | input_shape: *dims 25 | features: 32 26 | depth: 5 27 | conv_params: 28 | padding: same 29 | dropout: 0.0 30 | batchnorm: True 31 | dilation: !!python/tuple [1,1] 32 | 33 | # Train parameters 34 | train: 35 | ckpt_period: 2 36 | fit_params: 37 | epochs: 5 38 | steps_per_epoch: 1 39 | validation_steps: 1 40 | 41 | # Test parameters 42 | test: 43 | test_dir: ../data_test 44 | trained_model: ../output/debug_segment/checkpoints/wt-03-0.86.h5 45 | img_dims: *dims 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /medseg/models/DilatedDenseNet.py: -------------------------------------------------------------------------------- 1 | from keras.layers import Input, Conv2D, Concatenate 2 | from keras.layers import BatchNormalization, Activation 3 | from keras.models import Model 4 | 5 | def DilatedDenseNet(input_shape, features=12, depth=4, padding='same', batchnorm=False, dropout=0.0): 6 | x = Input(shape=input_shape) 7 | inputs = x 8 | 9 | # initial convolution 10 | x = Conv2D(features, kernel_size=(5,5), padding=padding)(x) 11 | 12 | maps = [inputs] 13 | dilation_rate = 1 14 | kernel_size = (3,3) 15 | for n in range(depth): 16 | maps.append(x) 17 | x = Concatenate()(maps) 18 | x = BatchNormalization()(x) 19 | x = Activation('relu')(x) 20 | x = Conv2D(features, kernel_size, dilation_rate=dilation_rate, 21 | padding=padding)(x) 22 | dilation_rate *= 2 23 | 24 | # Additional 2 layers to help generate segmentation mask 25 | x = Conv2D(features, kernel_size=(3,3), activation='relu', padding=padding)(x) 26 | x = Conv2D(features, kernel_size=(3,3), activation='relu', padding=padding)(x) 27 | 28 | probabilities = Conv2D(2, kernel_size=(1,1), activation='softmax')(x) 29 | 30 | return Model(inputs=inputs, outputs=probabilities) 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [Medical Segmentation Decathlon](http://medicaldecathlon.com) 2 | 3 | This is my source code for the medical decathlon, a generalizable 3D segmentation challenge. The objective of the competition is to develop a single segmentation model that can segment images of 10 different organs, namely, liver, brain, hippocampus, lung, prostrate, cardiac, pancreas, colon, hepatic vessels and spleen. 4 | 5 | #### Step 1: Data Exploration 6 | ##### [Data stats](https://github.com/suryatejadev/medseg_decathlon/blob/master/notebooks/data_exploration.ipynb) 7 | 8 | #### Approach 9 | My approach to this problem involved two steps. First, I trained a model to classify the organ of the input image. Using this output, I generated a conditional map, which is an image with the same intenstiy for all pixels. Each organ is assigned a specific intensity value. This map acts as a conditioning layer to the following segmentation model, and is appended to the input image. A multi-label segmentation model is then trained using the concatenated input image. 10 | 11 | #### Implementation 12 | **Models Implemented:** Dilated Densenet, UNet 13 | **Training the model:** Train the model as follows: 14 | ``` 15 | Classification: 16 | cd scripts 17 | python classify.py --config=configs/config_classify.yaml 18 | 19 | Segmentation: 20 | cd scripts 21 | python segment.py --config=configs/config_segment_densenet.yaml 22 | ``` 23 | 24 | -------------------------------------------------------------------------------- /scripts/classify.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import sys 3 | sys.path.append('..') 4 | import os 5 | import yaml 6 | import argparse 7 | from shutil import copyfile 8 | 9 | from medseg import datagen, engine, utils 10 | 11 | def classify(config_file): 12 | 13 | # Parser config file 14 | with open(config_file) as f: 15 | config = yaml.load(f) 16 | 17 | # Create experiment output directories 18 | exp_dir = os.path.join(config['output_dir'], config['exp_id']) 19 | utils.create_dirs([exp_dir, 20 | os.path.join(exp_dir, 'checkpoints'), 21 | os.path.join(exp_dir, 'logs')]) 22 | 23 | # Copy config file 24 | copyfile(config_file, os.path.join(exp_dir, config['exp_id']+'.yaml')) 25 | 26 | # Train and validation data generators 27 | paths_train, _, labels_train, paths_val, _, labels_val \ 28 | = datagen.get_paths(config['data_path']) 29 | datagen_train = datagen.datagen_classify(paths_train, labels_train, **config['datagen']) 30 | datagen_val = datagen.datagen_classify(paths_val, labels_val, **config['datagen']) 31 | 32 | # Define Classification model 33 | # model = engine.Model(**config['model']) 34 | 35 | # Train the model 36 | # model.train(datagen_train, datagen_val, exp_dir, **config['train']) 37 | 38 | # Test the model 39 | # model.test(**config['test']) 40 | 41 | if __name__=='__main__': 42 | parser = argparse.ArgumentParser() 43 | parser.add_argument('--config', type=str) 44 | args = parser.parse_args() 45 | classify(args.config) 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /scripts/segment.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import sys 3 | sys.path.append('..') 4 | import os 5 | import yaml 6 | import argparse 7 | from shutil import copyfile 8 | 9 | from medseg import datagen, engine, utils 10 | 11 | def segment(config_file): 12 | 13 | # Parser config file 14 | with open(config_file) as f: 15 | config = yaml.load(f) 16 | 17 | # Create experiment output directories 18 | exp_dir = os.path.join(config['output_dir'], config['exp_id']) 19 | utils.create_dirs([exp_dir, 20 | os.path.join(exp_dir, 'checkpoints'), 21 | os.path.join(exp_dir, 'outputs'), 22 | os.path.join(exp_dir, 'logs')]) 23 | 24 | # Copy config file 25 | copyfile(config_file, os.path.join(exp_dir, config['exp_id']+'.yaml')) 26 | 27 | # Train and validation data generators 28 | # paths_train, annot_train, _, paths_val, annot_val, _\ 29 | # = datagen.get_paths(config['data_path']) 30 | # datagen_train = datagen.datagen_segment(paths_train, 31 | # annot_train, **config['datagen']) 32 | # datagen_val = datagen.datagen_segment(paths_val, 33 | # annot_val, **config['datagen']) 34 | # 35 | # x,y = next(datagen_train) 36 | # print(x.shape, x.min(), x.max()) 37 | # print(y.shape, y.min(), y.max()) 38 | 39 | 40 | # Tensorflow initialize session 41 | utils.init_session() 42 | 43 | # Define Classification model 44 | model = engine.Model(**config['model']) 45 | 46 | # # Train the model 47 | # model.train(datagen_train, datagen_val, exp_dir, **config['train']) 48 | 49 | # Test the model 50 | model.test(os.path.join(exp_dir, 'outputs'), **config['test']) 51 | 52 | if __name__=='__main__': 53 | parser = argparse.ArgumentParser() 54 | parser.add_argument('--config', type=str) 55 | args = parser.parse_args() 56 | segment(args.config) 57 | 58 | 59 | -------------------------------------------------------------------------------- /misc/save_resized_volumes.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import os 3 | import nibabel as nib 4 | from shutil import copyfile 5 | from nibabel.processing import resample_to_output 6 | from tifffile import imsave 7 | import sys 8 | sys.path.append('..') 9 | 10 | from medseg import utils 11 | 12 | img_size = int(sys.argv[1]) 13 | data_path = '/media/DATA/Datasets/medseg_decathlon/' 14 | output_path = '/media/DATA/Datasets/medseg_decathlon/aux/data3d_size_'+str(img_size) 15 | if os.path.exists(output_path)==False: 16 | os.mkdir(output_path) 17 | for task in os.listdir(data_path): 18 | images_list = os.listdir(data_path+task+'/imagesTr') 19 | 20 | task_folder = os.path.join(output_path, task) 21 | if os.path.exists(task_folder)==False: 22 | os.mkdir(task_folder) 23 | os.mkdir(os.path.join(task_folder, 'imagesTr')) 24 | os.mkdir(os.path.join(task_folder, 'labelsTr')) 25 | copyfile(data_path+task+'/dataset.json', task_folder+'/dataset.json') 26 | 27 | print(task) 28 | for im_name in images_list: 29 | if 'nii.gz' in im_name: 30 | img3d_nib = nib.load(data_path+task+'/imagesTr/'+im_name) 31 | img3d = img3d_nib.get_fdata() 32 | if len(img3d.shape)==4: 33 | img3d = img3d[...,0] 34 | img3d_nib = nib.Nifti1Image(img3d, img3d_nib.affine, img3d_nib.header) 35 | img3d_nib = resample_to_output(img3d_nib, voxel_sizes=1, order=2) 36 | img3d = img3d_nib.get_fdata() 37 | 38 | label3d_nib = nib.load(data_path+task+'/labelsTr/'+im_name) 39 | label3d_nib = resample_to_output(label3d_nib, voxel_sizes=1, order=0) 40 | label3d = label3d_nib.get_fdata() 41 | 42 | img3d_resize = utils.resize_img(img3d, (img_size, img_size, img_size)) 43 | label3d_resize = utils.resize_img(label3d, (img_size, img_size, img_size)) 44 | 45 | np.savez_compressed(task_folder+'/imagesTr/'+im_name[:-7]+'.npz', data=img3d_resize) 46 | np.savez_compressed(task_folder+'/labelsTr/'+im_name[:-7]+'.npz', data=label3d_resize) 47 | -------------------------------------------------------------------------------- /misc/slice_data.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import os 3 | from glob import glob 4 | import nibabel as nib 5 | from nibabel.processing import resample_to_output 6 | from scipy.misc import imsave 7 | from shutil import copyfile 8 | from tqdm import tqdm 9 | 10 | # data_path = '/media/DATA/Datasets/medseg_decathlon/' 11 | # output_path = '/media/DATA/Datasets/medseg_decathlon/aux/data_sliced' 12 | data_path = '../data/' 13 | output_path = '../data_sliced/' 14 | 15 | task_list = [x for x in os.listdir(data_path) if 'Task' in x] 16 | for task in task_list: 17 | images_list = os.listdir(data_path+task+'/imagesTr') 18 | 19 | task_folder = os.path.join(output_path, task) 20 | if os.path.exists(task_folder)==False: 21 | os.mkdir(task_folder) 22 | os.mkdir(os.path.join(task_folder, 'imagesTr')) 23 | os.mkdir(os.path.join(task_folder, 'labelsTr_npz')) 24 | # copyfile(data_path+task+'/dataset.json', task_folder+'/dataset.json') 25 | print(task) 26 | for im_name in tqdm(images_list): 27 | if 'nii.gz' in im_name: 28 | # resample to isotropic 29 | img3d_nib = nib.load(data_path+task+'/imagesTr/'+im_name) 30 | img3d = img3d_nib.get_fdata() 31 | if len(img3d.shape)==4: 32 | img3d = img3d[...,0] 33 | img3d_nib = nib.Nifti1Image(img3d, img3d_nib.affine, img3d_nib.header) 34 | img3d_nib = resample_to_output(img3d_nib, voxel_sizes=1, order=2) 35 | img3d = img3d_nib.get_fdata() 36 | 37 | label3d_nib = nib.load(data_path+task+'/labelsTr/'+im_name) 38 | label3d_nib = resample_to_output(label3d_nib, voxel_sizes=1, order=0) 39 | label3d = label3d_nib.get_fdata() 40 | # get slices 41 | depth = label3d.shape[2] 42 | for i in range(depth): 43 | img = img3d[...,i] 44 | label = label3d[...,i] 45 | imsave(task_folder+'/imagesTr/'+im_name[:-7]+'_'+str(i)+'.jpg', img) 46 | # imsave(task_folder+'/labelsTr/'+im_name[:-7]+'_'+str(i)+'.jpg', label) 47 | np.savez_compressed(task_folder+'/labelsTr_npz/'+im_name[:-7]+'_'+str(i)+'.npz', data=label) 48 | -------------------------------------------------------------------------------- /medseg/models/UNet2D.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import os 3 | 4 | from keras import backend, engine, layers, models, utils 5 | from keras.models import Model 6 | from keras.layers import Input, concatenate, Concatenate, Conv2D, Conv3D, MaxPooling2D, Conv2DTranspose, Dropout, BatchNormalization, merge, UpSampling2D, Cropping2D, ZeroPadding2D, Reshape, core, Convolution2D, Activation, Lambda 7 | from keras import backend as K 8 | 9 | K.set_image_data_format('channels_last') # TF dimension ordering in this code 10 | 11 | def conv_block(x, n_filt, padding='same', dropout=0.0, batchnorm=True, dilation=(1,1)): 12 | def conv_l(inp): 13 | 14 | conv = Conv2D(n_filt, (3, 3), padding=padding, dilation_rate=dilation)(inp) 15 | conv = Activation('relu')(conv) 16 | conv = BatchNormalization()(conv) if batchnorm else conv 17 | conv = Dropout(dropout)(conv) if dropout>0.0 else conv 18 | return conv 19 | 20 | conv = conv_l(x) 21 | conv = conv_l(conv) 22 | pool = MaxPooling2D(pool_size=(2, 2))(conv) 23 | return conv,pool 24 | 25 | def upconv_block(x, x_conv, n_filt, padding='same', dropout=0.0, batchnorm=False): 26 | up_conv = Conv2DTranspose(n_filt, (2, 2), strides=(2, 2), padding=padding)(x) 27 | # crop x_conv 28 | if padding=='valid': 29 | ch, cw = get_crop_shape(x_conv, up_conv) 30 | x_conv = Cropping2D(cropping=(ch,cw), data_format="channels_last")(x_conv) 31 | up = concatenate([up_conv, x_conv], axis=3) 32 | 33 | conv = Conv2D(n_filt, (3, 3), padding=padding, dilation_rate=(1,1))(up) 34 | conv = Activation('relu')(conv) 35 | conv = BatchNormalization()(conv) if batchnorm else conv 36 | conv = Dropout(dropout)(conv) if dropout>0.0 else conv 37 | 38 | conv = Conv2D(n_filt, (3, 3), padding=padding, dilation_rate=(1,1))(conv) 39 | conv = Activation('relu')(conv) 40 | conv = BatchNormalization()(conv) if batchnorm else conv 41 | conv = Dropout(dropout)(conv) if dropout>0.0 else conv 42 | return conv 43 | 44 | def UNet2D(input_shape, features, depth, conv_params): 45 | 46 | # Define the input 47 | shape = list(map(int, input_shape)) 48 | inputs = Input(shape) 49 | 50 | enc_conv = [] 51 | current_input = inputs 52 | current_feat = features 53 | 54 | # Contracting path 55 | for i in range(depth): 56 | conv, pool = conv_block(current_input, current_feat, **conv_params) 57 | current_input = pool 58 | current_feat *= 2 59 | enc_conv.append(conv) 60 | 61 | # Expanding path 62 | _ = conv_params.pop('dilation') 63 | current_input = enc_conv.pop() 64 | current_feat /= 4 65 | for i in range(depth-1): 66 | conv = upconv_block(current_input, enc_conv.pop(), int(current_feat), **conv_params) 67 | current_input = conv 68 | current_feat /= 2 69 | conv = Conv2D(2, (1, 1), activation='softmax')(conv) 70 | 71 | return Model(inputs=[inputs], outputs=[conv]) 72 | 73 | -------------------------------------------------------------------------------- /medseg/models/DenseNet3D.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import os 3 | from keras import layers, backend, models 4 | 5 | def dense_block3D(x, blocks, name): 6 | """A dense block. 7 | 8 | # Arguments 9 | x: input tensor. 10 | blocks: integer, the number of building blocks. 11 | name: string, block label. 12 | 13 | # Returns 14 | output tensor for the block. 15 | """ 16 | for i in range(blocks): 17 | x = conv_block3D(x, 32, name=name + '_block' + str(i + 1)) 18 | return x 19 | 20 | def transition_block3D(x, reduction, name): 21 | """A transition block. 22 | 23 | # Arguments 24 | x: input tensor. 25 | reduction: float, compression rate at transition layers. 26 | name: string, block label. 27 | 28 | # Returns 29 | output tensor for the block. 30 | """ 31 | bn_axis = 4 32 | x = layers.BatchNormalization(axis=bn_axis, epsilon=1.001e-5, 33 | name=name + '_bn')(x) 34 | x = layers.Activation('relu', name=name + '_relu')(x) 35 | x = layers.Conv3D(int(backend.int_shape(x)[bn_axis] * reduction), 1, 36 | use_bias=False, 37 | name=name + '_conv')(x) 38 | x = layers.AveragePooling3D(2, strides=2, name=name + '_pool')(x) 39 | return x 40 | 41 | def conv_block3D(x, growth_rate, name): 42 | """A building block for a dense block. 43 | 44 | # Arguments 45 | x: input tensor. 46 | growth_rate: float, growth rate at dense layers. 47 | name: string, block label. 48 | 49 | # Returns 50 | Output tensor for the block. 51 | """ 52 | bn_axis = 4 53 | x1 = layers.BatchNormalization(axis=bn_axis, 54 | epsilon=1.001e-5, 55 | name=name + '_0_bn')(x) 56 | x1 = layers.Activation('relu', name=name + '_0_relu')(x1) 57 | x1 = layers.Conv3D(4 * growth_rate, 1, 58 | use_bias=False, 59 | name=name + '_1_conv')(x1) 60 | x1 = layers.BatchNormalization(axis=bn_axis, epsilon=1.001e-5, 61 | name=name + '_1_bn')(x1) 62 | x1 = layers.Activation('relu', name=name + '_1_relu')(x1) 63 | x1 = layers.Conv3D(growth_rate, 3, 64 | padding='same', 65 | use_bias=False, 66 | name=name + '_2_conv')(x1) 67 | x = layers.Concatenate(axis=bn_axis, name=name + '_concat')([x, x1]) 68 | return x 69 | 70 | def DenseNet3D(blocks, 71 | input_shape=None, 72 | classes=1000): 73 | img_input = layers.Input(shape=input_shape) 74 | bn_axis = 4 75 | 76 | # Conv Layer 1 77 | x = layers.ZeroPadding3D(padding=((3, 3), (3, 3), (3,3)))(img_input) 78 | x = layers.Conv3D(64, 7, strides=2, use_bias=False, name='conv1/conv')(x) 79 | x = layers.BatchNormalization( 80 | axis=bn_axis, epsilon=1.001e-5, name='conv1/bn')(x) 81 | x = layers.Activation('relu', name='conv1/relu')(x) 82 | x = layers.ZeroPadding3D(padding=((1, 1), (1, 1), (1, 1)))(x) 83 | x = layers.MaxPooling3D(3, strides=2, name='pool1')(x) 84 | 85 | # Dense Blocks 86 | for i, block in enumerate(blocks): 87 | x = dense_block3D(x, block, name='conv'+str(i+2)) 88 | if i0.5 else False 132 | # tx_params['zx'] = np.random.uniform(-max_s, max_s) 133 | # tx_params['zy'] = np.random.uniform(-max_s, max_s) 134 | 135 | img_tx = utils.apply_affine_transform(img, **tx_params) 136 | return img_tx, tx_params 137 | 138 | def datagen_classify(data, labels, batch_size, img_dims): 139 | while True: 140 | # Get batch indices from uniformly random distribution 141 | N = len(data) 142 | batch_index = np.arange(N) 143 | np.random.shuffle(batch_index) 144 | batch_index = batch_index[:batch_size] 145 | 146 | # Get batch data 147 | img_batch = [] 148 | labels_batch = np.zeros((batch_size, labels.shape[1])) 149 | for i in range(batch_size): 150 | img = utils.load_img(data[batch_index[i]]) 151 | # img = utils.resize_img(img, np.array(img_dims)[:-1]) 152 | img = utils.normalize(img, maxval=255) 153 | img = augment_img(img)[...,np.newaxis] 154 | img = utils.normalize(img, maxval=1) 155 | img_batch.append(img) 156 | labels_batch[i] = labels[batch_index[i]] 157 | img_batch = np.array(img_batch) 158 | 159 | yield(img_batch, labels_batch) 160 | 161 | def datagen_segment(data, annots, batch_size, img_dims): 162 | while True: 163 | # Get batch indices from uniformly random distribution 164 | N = len(data) 165 | batch_index = np.arange(N) 166 | np.random.shuffle(batch_index) 167 | batch_index = batch_index[:batch_size] 168 | 169 | # Get batch data 170 | img_batch = [] 171 | annot_batch = [] 172 | img_dims_temp = np.array(img_dims) 173 | img_dims_temp[-1] = 1 # hack to work with single channeled data 174 | for i in range(batch_size): 175 | # Get image 176 | img = utils.load_img(data[batch_index[i]]) 177 | img = utils.resize_img(img, img_dims_temp) 178 | img, tx_params = augment_img2d(img) 179 | 180 | # Get annotation and conditioning image 181 | annot = utils.load_img(annots[batch_index[i]]) 182 | sub_label = 0 if annot.max()==0 \ 183 | else np.random.randint(1, int(annot.max())+1) 184 | sub_label_value = utils.get_sublabel_value( 185 | sub_label, annots[batch_index[i]]) 186 | cond_img = np.ones_like(img)*sub_label_value/255. 187 | img_cond = np.concatenate((img, cond_img), axis=-1) 188 | img_batch.append(img_cond) 189 | 190 | loc = np.where(annot==sub_label) 191 | annot_binary = np.zeros_like(annot) 192 | annot_binary[loc] = 1 193 | 194 | annot = utils.resize_img(annot_binary, img_dims_temp, order=0) 195 | annot,_ = augment_img2d(annot, tx_params) 196 | annot = to_categorical(annot) 197 | annot_batch.append(annot) 198 | 199 | img_batch = np.array(img_batch) 200 | # hack since np.array(annot_batch) is not working 201 | annot = np.zeros((batch_size, img_dims[0], img_dims[1], 2)) 202 | for i in range(batch_size): 203 | annot[i] = annot_batch[i] 204 | yield(img_batch, annot) 205 | 206 | -------------------------------------------------------------------------------- /scripts/segment.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stderr", 10 | "output_type": "stream", 11 | "text": [ 12 | "Using TensorFlow backend.\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "from __future__ import print_function\n", 18 | "import sys\n", 19 | "sys.path.append('..')\n", 20 | "import os\n", 21 | "import yaml\n", 22 | "import argparse\n", 23 | "from shutil import copyfile\n", 24 | "\n", 25 | "from medseg import datagen, engine, utils" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 2, 31 | "metadata": { 32 | "collapsed": true 33 | }, 34 | "outputs": [], 35 | "source": [ 36 | "config_file = 'configs_a/config_segment_unet.yaml'\n", 37 | "# Parser config file\n", 38 | "with open(config_file) as f:\n", 39 | " config = yaml.load(f)\n", 40 | "\n", 41 | "# Create experiment output directories\n", 42 | "exp_dir = os.path.join(config['output_dir'], config['exp_id'])\n", 43 | "utils.create_dirs([exp_dir,\n", 44 | " os.path.join(exp_dir, 'checkpoints'),\n", 45 | " os.path.join(exp_dir, 'logs')])\n", 46 | "\n", 47 | "# Copy config file\n", 48 | "copyfile(config_file, os.path.join(exp_dir, config['exp_id']+'.yaml'))" 49 | ] 50 | }, 51 | { 52 | "cell_type": "code", 53 | "execution_count": 3, 54 | "metadata": { 55 | "collapsed": true 56 | }, 57 | "outputs": [], 58 | "source": [ 59 | "# Train and validation data generators\n", 60 | "paths_train, annot_train, _, paths_val, annot_val, _ = datagen.get_paths(config['data_path'])\n", 61 | "datagen_train = datagen.datagen_segment(paths_train, annot_train, **config['datagen'])\n", 62 | "datagen_val = datagen.datagen_segment(paths_val, annot_val, **config['datagen'])" 63 | ] 64 | }, 65 | { 66 | "cell_type": "code", 67 | "execution_count": 4, 68 | "metadata": {}, 69 | "outputs": [ 70 | { 71 | "name": "stdout", 72 | "output_type": "stream", 73 | "text": [ 74 | "(8, 320, 320, 2) 0.0 1.0 (8, 320, 320, 1) 0.0 1.0\n" 75 | ] 76 | } 77 | ], 78 | "source": [ 79 | "x,y = next(datagen_train)\n", 80 | "print(x.shape, x.min(), x.max(), y.shape, y.min(), y.max())" 81 | ] 82 | }, 83 | { 84 | "cell_type": "code", 85 | "execution_count": 5, 86 | "metadata": {}, 87 | "outputs": [ 88 | { 89 | "name": "stdout", 90 | "output_type": "stream", 91 | "text": [ 92 | "__________________________________________________________________________________________________\n", 93 | "Layer (type) Output Shape Param # Connected to \n", 94 | "==================================================================================================\n", 95 | "input_1 (InputLayer) (None, 320, 320, 2) 0 \n", 96 | "__________________________________________________________________________________________________\n", 97 | "conv2d_1 (Conv2D) (None, 320, 320, 32) 608 input_1[0][0] \n", 98 | "__________________________________________________________________________________________________\n", 99 | "activation_1 (Activation) (None, 320, 320, 32) 0 conv2d_1[0][0] \n", 100 | "__________________________________________________________________________________________________\n", 101 | "batch_normalization_1 (BatchNor (None, 320, 320, 32) 128 activation_1[0][0] \n", 102 | "__________________________________________________________________________________________________\n", 103 | "conv2d_2 (Conv2D) (None, 320, 320, 32) 9248 batch_normalization_1[0][0] \n", 104 | "__________________________________________________________________________________________________\n", 105 | "activation_2 (Activation) (None, 320, 320, 32) 0 conv2d_2[0][0] \n", 106 | "__________________________________________________________________________________________________\n", 107 | "batch_normalization_2 (BatchNor (None, 320, 320, 32) 128 activation_2[0][0] \n", 108 | "__________________________________________________________________________________________________\n", 109 | "max_pooling2d_1 (MaxPooling2D) (None, 160, 160, 32) 0 batch_normalization_2[0][0] \n", 110 | "__________________________________________________________________________________________________\n", 111 | "conv2d_3 (Conv2D) (None, 160, 160, 64) 18496 max_pooling2d_1[0][0] \n", 112 | "__________________________________________________________________________________________________\n", 113 | "activation_3 (Activation) (None, 160, 160, 64) 0 conv2d_3[0][0] \n", 114 | "__________________________________________________________________________________________________\n", 115 | "batch_normalization_3 (BatchNor (None, 160, 160, 64) 256 activation_3[0][0] \n", 116 | "__________________________________________________________________________________________________\n", 117 | "conv2d_4 (Conv2D) (None, 160, 160, 64) 36928 batch_normalization_3[0][0] \n", 118 | "__________________________________________________________________________________________________\n", 119 | "activation_4 (Activation) (None, 160, 160, 64) 0 conv2d_4[0][0] \n", 120 | "__________________________________________________________________________________________________\n", 121 | "batch_normalization_4 (BatchNor (None, 160, 160, 64) 256 activation_4[0][0] \n", 122 | "__________________________________________________________________________________________________\n", 123 | "max_pooling2d_2 (MaxPooling2D) (None, 80, 80, 64) 0 batch_normalization_4[0][0] \n", 124 | "__________________________________________________________________________________________________\n", 125 | "conv2d_5 (Conv2D) (None, 80, 80, 128) 73856 max_pooling2d_2[0][0] \n", 126 | "__________________________________________________________________________________________________\n", 127 | "activation_5 (Activation) (None, 80, 80, 128) 0 conv2d_5[0][0] \n", 128 | "__________________________________________________________________________________________________\n", 129 | "batch_normalization_5 (BatchNor (None, 80, 80, 128) 512 activation_5[0][0] \n", 130 | "__________________________________________________________________________________________________\n", 131 | "conv2d_6 (Conv2D) (None, 80, 80, 128) 147584 batch_normalization_5[0][0] \n", 132 | "__________________________________________________________________________________________________\n", 133 | "activation_6 (Activation) (None, 80, 80, 128) 0 conv2d_6[0][0] \n", 134 | "__________________________________________________________________________________________________\n", 135 | "batch_normalization_6 (BatchNor (None, 80, 80, 128) 512 activation_6[0][0] \n", 136 | "__________________________________________________________________________________________________\n", 137 | "max_pooling2d_3 (MaxPooling2D) (None, 40, 40, 128) 0 batch_normalization_6[0][0] \n", 138 | "__________________________________________________________________________________________________\n", 139 | "conv2d_7 (Conv2D) (None, 40, 40, 256) 295168 max_pooling2d_3[0][0] \n", 140 | "__________________________________________________________________________________________________\n", 141 | "activation_7 (Activation) (None, 40, 40, 256) 0 conv2d_7[0][0] \n", 142 | "__________________________________________________________________________________________________\n", 143 | "batch_normalization_7 (BatchNor (None, 40, 40, 256) 1024 activation_7[0][0] \n", 144 | "__________________________________________________________________________________________________\n", 145 | "conv2d_8 (Conv2D) (None, 40, 40, 256) 590080 batch_normalization_7[0][0] \n", 146 | "__________________________________________________________________________________________________\n", 147 | "activation_8 (Activation) (None, 40, 40, 256) 0 conv2d_8[0][0] \n", 148 | "__________________________________________________________________________________________________\n", 149 | "batch_normalization_8 (BatchNor (None, 40, 40, 256) 1024 activation_8[0][0] \n", 150 | "__________________________________________________________________________________________________\n", 151 | "max_pooling2d_4 (MaxPooling2D) (None, 20, 20, 256) 0 batch_normalization_8[0][0] \n", 152 | "__________________________________________________________________________________________________\n", 153 | "conv2d_9 (Conv2D) (None, 20, 20, 512) 1180160 max_pooling2d_4[0][0] \n", 154 | "__________________________________________________________________________________________________\n", 155 | "activation_9 (Activation) (None, 20, 20, 512) 0 conv2d_9[0][0] \n", 156 | "__________________________________________________________________________________________________\n", 157 | "batch_normalization_9 (BatchNor (None, 20, 20, 512) 2048 activation_9[0][0] \n", 158 | "__________________________________________________________________________________________________\n", 159 | "conv2d_10 (Conv2D) (None, 20, 20, 512) 2359808 batch_normalization_9[0][0] \n", 160 | "__________________________________________________________________________________________________\n", 161 | "activation_10 (Activation) (None, 20, 20, 512) 0 conv2d_10[0][0] \n", 162 | "__________________________________________________________________________________________________\n", 163 | "batch_normalization_10 (BatchNo (None, 20, 20, 512) 2048 activation_10[0][0] \n", 164 | "__________________________________________________________________________________________________\n", 165 | "conv2d_transpose_1 (Conv2DTrans (None, 40, 40, 256) 524544 batch_normalization_10[0][0] \n", 166 | "__________________________________________________________________________________________________\n", 167 | "concatenate_1 (Concatenate) (None, 40, 40, 512) 0 conv2d_transpose_1[0][0] \n", 168 | " batch_normalization_8[0][0] \n", 169 | "__________________________________________________________________________________________________\n", 170 | "conv2d_11 (Conv2D) (None, 40, 40, 256) 1179904 concatenate_1[0][0] \n", 171 | "__________________________________________________________________________________________________\n", 172 | "activation_11 (Activation) (None, 40, 40, 256) 0 conv2d_11[0][0] \n", 173 | "__________________________________________________________________________________________________\n", 174 | "batch_normalization_11 (BatchNo (None, 40, 40, 256) 1024 activation_11[0][0] \n", 175 | "__________________________________________________________________________________________________\n", 176 | "conv2d_12 (Conv2D) (None, 40, 40, 256) 590080 batch_normalization_11[0][0] \n", 177 | "__________________________________________________________________________________________________\n", 178 | "activation_12 (Activation) (None, 40, 40, 256) 0 conv2d_12[0][0] \n", 179 | "__________________________________________________________________________________________________\n", 180 | "batch_normalization_12 (BatchNo (None, 40, 40, 256) 1024 activation_12[0][0] \n", 181 | "__________________________________________________________________________________________________\n", 182 | "conv2d_transpose_2 (Conv2DTrans (None, 80, 80, 128) 131200 batch_normalization_12[0][0] \n", 183 | "__________________________________________________________________________________________________\n", 184 | "concatenate_2 (Concatenate) (None, 80, 80, 256) 0 conv2d_transpose_2[0][0] \n", 185 | " batch_normalization_6[0][0] \n", 186 | "__________________________________________________________________________________________________\n", 187 | "conv2d_13 (Conv2D) (None, 80, 80, 128) 295040 concatenate_2[0][0] \n", 188 | "__________________________________________________________________________________________________\n", 189 | "activation_13 (Activation) (None, 80, 80, 128) 0 conv2d_13[0][0] \n", 190 | "__________________________________________________________________________________________________\n", 191 | "batch_normalization_13 (BatchNo (None, 80, 80, 128) 512 activation_13[0][0] \n", 192 | "__________________________________________________________________________________________________\n", 193 | "conv2d_14 (Conv2D) (None, 80, 80, 128) 147584 batch_normalization_13[0][0] \n", 194 | "__________________________________________________________________________________________________\n", 195 | "activation_14 (Activation) (None, 80, 80, 128) 0 conv2d_14[0][0] \n", 196 | "__________________________________________________________________________________________________\n", 197 | "batch_normalization_14 (BatchNo (None, 80, 80, 128) 512 activation_14[0][0] \n", 198 | "__________________________________________________________________________________________________\n", 199 | "conv2d_transpose_3 (Conv2DTrans (None, 160, 160, 64) 32832 batch_normalization_14[0][0] \n", 200 | "__________________________________________________________________________________________________\n", 201 | "concatenate_3 (Concatenate) (None, 160, 160, 128 0 conv2d_transpose_3[0][0] \n", 202 | " batch_normalization_4[0][0] \n", 203 | "__________________________________________________________________________________________________\n", 204 | "conv2d_15 (Conv2D) (None, 160, 160, 64) 73792 concatenate_3[0][0] \n", 205 | "__________________________________________________________________________________________________\n", 206 | "activation_15 (Activation) (None, 160, 160, 64) 0 conv2d_15[0][0] \n", 207 | "__________________________________________________________________________________________________\n", 208 | "batch_normalization_15 (BatchNo (None, 160, 160, 64) 256 activation_15[0][0] \n", 209 | "__________________________________________________________________________________________________\n", 210 | "conv2d_16 (Conv2D) (None, 160, 160, 64) 36928 batch_normalization_15[0][0] \n", 211 | "__________________________________________________________________________________________________\n", 212 | "activation_16 (Activation) (None, 160, 160, 64) 0 conv2d_16[0][0] \n", 213 | "__________________________________________________________________________________________________\n", 214 | "batch_normalization_16 (BatchNo (None, 160, 160, 64) 256 activation_16[0][0] \n", 215 | "__________________________________________________________________________________________________\n", 216 | "conv2d_transpose_4 (Conv2DTrans (None, 320, 320, 32) 8224 batch_normalization_16[0][0] \n", 217 | "__________________________________________________________________________________________________\n", 218 | "concatenate_4 (Concatenate) (None, 320, 320, 64) 0 conv2d_transpose_4[0][0] \n", 219 | " batch_normalization_2[0][0] \n", 220 | "__________________________________________________________________________________________________\n", 221 | "conv2d_17 (Conv2D) (None, 320, 320, 32) 18464 concatenate_4[0][0] \n", 222 | "__________________________________________________________________________________________________\n", 223 | "activation_17 (Activation) (None, 320, 320, 32) 0 conv2d_17[0][0] \n", 224 | "__________________________________________________________________________________________________\n", 225 | "batch_normalization_17 (BatchNo (None, 320, 320, 32) 128 activation_17[0][0] \n", 226 | "__________________________________________________________________________________________________\n", 227 | "conv2d_18 (Conv2D) (None, 320, 320, 32) 9248 batch_normalization_17[0][0] \n", 228 | "__________________________________________________________________________________________________\n", 229 | "activation_18 (Activation) (None, 320, 320, 32) 0 conv2d_18[0][0] \n", 230 | "__________________________________________________________________________________________________\n", 231 | "batch_normalization_18 (BatchNo (None, 320, 320, 32) 128 activation_18[0][0] \n", 232 | "__________________________________________________________________________________________________\n", 233 | "conv2d_19 (Conv2D) (None, 320, 320, 1) 33 batch_normalization_18[0][0] \n", 234 | "==================================================================================================\n", 235 | "Total params: 7,771,585\n", 236 | "Trainable params: 7,765,697\n", 237 | "Non-trainable params: 5,888\n", 238 | "__________________________________________________________________________________________________\n", 239 | "None\n" 240 | ] 241 | } 242 | ], 243 | "source": [ 244 | "# Tensorflow initialize session\n", 245 | "utils.init_session()\n", 246 | " \n", 247 | "# Define Classification model\n", 248 | "model = engine.Model(**config['model'])" 249 | ] 250 | }, 251 | { 252 | "cell_type": "code", 253 | "execution_count": 6, 254 | "metadata": {}, 255 | "outputs": [ 256 | { 257 | "name": "stdout", 258 | "output_type": "stream", 259 | "text": [ 260 | "Epoch 1/2\n", 261 | " - 1964s - loss: 0.1301 - acc: 0.7903 - val_loss: 0.2218 - val_acc: 0.6371\n", 262 | "Epoch 2/2\n", 263 | " - 1958s - loss: 0.1188 - acc: 0.7989 - val_loss: 2.4855e-05 - val_acc: 1.0000\n", 264 | "\n", 265 | "Epoch 00002: saving model to ../output/debug_segment/checkpoints/wt-02-1.00.h5\n" 266 | ] 267 | } 268 | ], 269 | "source": [ 270 | "model.train(datagen_train, datagen_val, exp_dir, **config['train'])" 271 | ] 272 | }, 273 | { 274 | "cell_type": "code", 275 | "execution_count": null, 276 | "metadata": { 277 | "collapsed": true 278 | }, 279 | "outputs": [], 280 | "source": [] 281 | } 282 | ], 283 | "metadata": { 284 | "kernelspec": { 285 | "display_name": "Python 2", 286 | "language": "python", 287 | "name": "python2" 288 | }, 289 | "language_info": { 290 | "codemirror_mode": { 291 | "name": "ipython", 292 | "version": 2 293 | }, 294 | "file_extension": ".py", 295 | "mimetype": "text/x-python", 296 | "name": "python", 297 | "nbconvert_exporter": "python", 298 | "pygments_lexer": "ipython2", 299 | "version": "2.7.12" 300 | } 301 | }, 302 | "nbformat": 4, 303 | "nbformat_minor": 2 304 | } 305 | -------------------------------------------------------------------------------- /scripts/test_segment.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stderr", 10 | "output_type": "stream", 11 | "text": [ 12 | "Using TensorFlow backend.\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "from __future__ import print_function\n", 18 | "import sys\n", 19 | "sys.path.append('..')\n", 20 | "import os\n", 21 | "import yaml\n", 22 | "import argparse\n", 23 | "from shutil import copyfile\n", 24 | "\n", 25 | "from medseg import datagen, engine, utils" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 2, 31 | "metadata": {}, 32 | "outputs": [], 33 | "source": [ 34 | "config_file = 'configs_s/config_segment_unet.yaml'\n", 35 | "# Parser config file\n", 36 | "with open(config_file) as f:\n", 37 | " config = yaml.load(f)\n", 38 | "\n", 39 | "# Create experiment output directories\n", 40 | "exp_dir = os.path.join(config['output_dir'], config['exp_id'])\n", 41 | "utils.create_dirs([exp_dir,\n", 42 | " os.path.join(exp_dir, 'checkpoints'),\n", 43 | " os.path.join(exp_dir, 'logs')])\n", 44 | "\n", 45 | "# Copy config file\n", 46 | "# copyfile(config_file, os.path.join(exp_dir, config['exp_id']+'.yaml'))" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 3, 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "name": "stdout", 56 | "output_type": "stream", 57 | "text": [ 58 | "__________________________________________________________________________________________________\n", 59 | "Layer (type) Output Shape Param # Connected to \n", 60 | "==================================================================================================\n", 61 | "input_1 (InputLayer) (None, 320, 320, 2) 0 \n", 62 | "__________________________________________________________________________________________________\n", 63 | "conv2d_1 (Conv2D) (None, 320, 320, 32) 608 input_1[0][0] \n", 64 | "__________________________________________________________________________________________________\n", 65 | "activation_1 (Activation) (None, 320, 320, 32) 0 conv2d_1[0][0] \n", 66 | "__________________________________________________________________________________________________\n", 67 | "batch_normalization_1 (BatchNor (None, 320, 320, 32) 128 activation_1[0][0] \n", 68 | "__________________________________________________________________________________________________\n", 69 | "conv2d_2 (Conv2D) (None, 320, 320, 32) 9248 batch_normalization_1[0][0] \n", 70 | "__________________________________________________________________________________________________\n", 71 | "activation_2 (Activation) (None, 320, 320, 32) 0 conv2d_2[0][0] \n", 72 | "__________________________________________________________________________________________________\n", 73 | "batch_normalization_2 (BatchNor (None, 320, 320, 32) 128 activation_2[0][0] \n", 74 | "__________________________________________________________________________________________________\n", 75 | "max_pooling2d_1 (MaxPooling2D) (None, 160, 160, 32) 0 batch_normalization_2[0][0] \n", 76 | "__________________________________________________________________________________________________\n", 77 | "conv2d_3 (Conv2D) (None, 160, 160, 64) 18496 max_pooling2d_1[0][0] \n", 78 | "__________________________________________________________________________________________________\n", 79 | "activation_3 (Activation) (None, 160, 160, 64) 0 conv2d_3[0][0] \n", 80 | "__________________________________________________________________________________________________\n", 81 | "batch_normalization_3 (BatchNor (None, 160, 160, 64) 256 activation_3[0][0] \n", 82 | "__________________________________________________________________________________________________\n", 83 | "conv2d_4 (Conv2D) (None, 160, 160, 64) 36928 batch_normalization_3[0][0] \n", 84 | "__________________________________________________________________________________________________\n", 85 | "activation_4 (Activation) (None, 160, 160, 64) 0 conv2d_4[0][0] \n", 86 | "__________________________________________________________________________________________________\n", 87 | "batch_normalization_4 (BatchNor (None, 160, 160, 64) 256 activation_4[0][0] \n", 88 | "__________________________________________________________________________________________________\n", 89 | "max_pooling2d_2 (MaxPooling2D) (None, 80, 80, 64) 0 batch_normalization_4[0][0] \n", 90 | "__________________________________________________________________________________________________\n", 91 | "conv2d_5 (Conv2D) (None, 80, 80, 128) 73856 max_pooling2d_2[0][0] \n", 92 | "__________________________________________________________________________________________________\n", 93 | "activation_5 (Activation) (None, 80, 80, 128) 0 conv2d_5[0][0] \n", 94 | "__________________________________________________________________________________________________\n", 95 | "batch_normalization_5 (BatchNor (None, 80, 80, 128) 512 activation_5[0][0] \n", 96 | "__________________________________________________________________________________________________\n", 97 | "conv2d_6 (Conv2D) (None, 80, 80, 128) 147584 batch_normalization_5[0][0] \n", 98 | "__________________________________________________________________________________________________\n", 99 | "activation_6 (Activation) (None, 80, 80, 128) 0 conv2d_6[0][0] \n", 100 | "__________________________________________________________________________________________________\n", 101 | "batch_normalization_6 (BatchNor (None, 80, 80, 128) 512 activation_6[0][0] \n", 102 | "__________________________________________________________________________________________________\n", 103 | "max_pooling2d_3 (MaxPooling2D) (None, 40, 40, 128) 0 batch_normalization_6[0][0] \n", 104 | "__________________________________________________________________________________________________\n", 105 | "conv2d_7 (Conv2D) (None, 40, 40, 256) 295168 max_pooling2d_3[0][0] \n", 106 | "__________________________________________________________________________________________________\n", 107 | "activation_7 (Activation) (None, 40, 40, 256) 0 conv2d_7[0][0] \n", 108 | "__________________________________________________________________________________________________\n", 109 | "batch_normalization_7 (BatchNor (None, 40, 40, 256) 1024 activation_7[0][0] \n", 110 | "__________________________________________________________________________________________________\n", 111 | "conv2d_8 (Conv2D) (None, 40, 40, 256) 590080 batch_normalization_7[0][0] \n", 112 | "__________________________________________________________________________________________________\n", 113 | "activation_8 (Activation) (None, 40, 40, 256) 0 conv2d_8[0][0] \n", 114 | "__________________________________________________________________________________________________\n", 115 | "batch_normalization_8 (BatchNor (None, 40, 40, 256) 1024 activation_8[0][0] \n", 116 | "__________________________________________________________________________________________________\n", 117 | "max_pooling2d_4 (MaxPooling2D) (None, 20, 20, 256) 0 batch_normalization_8[0][0] \n", 118 | "__________________________________________________________________________________________________\n", 119 | "conv2d_9 (Conv2D) (None, 20, 20, 512) 1180160 max_pooling2d_4[0][0] \n", 120 | "__________________________________________________________________________________________________\n", 121 | "activation_9 (Activation) (None, 20, 20, 512) 0 conv2d_9[0][0] \n", 122 | "__________________________________________________________________________________________________\n", 123 | "batch_normalization_9 (BatchNor (None, 20, 20, 512) 2048 activation_9[0][0] \n", 124 | "__________________________________________________________________________________________________\n", 125 | "conv2d_10 (Conv2D) (None, 20, 20, 512) 2359808 batch_normalization_9[0][0] \n", 126 | "__________________________________________________________________________________________________\n", 127 | "activation_10 (Activation) (None, 20, 20, 512) 0 conv2d_10[0][0] \n", 128 | "__________________________________________________________________________________________________\n", 129 | "batch_normalization_10 (BatchNo (None, 20, 20, 512) 2048 activation_10[0][0] \n", 130 | "__________________________________________________________________________________________________\n", 131 | "conv2d_transpose_1 (Conv2DTrans (None, 40, 40, 256) 524544 batch_normalization_10[0][0] \n", 132 | "__________________________________________________________________________________________________\n", 133 | "concatenate_1 (Concatenate) (None, 40, 40, 512) 0 conv2d_transpose_1[0][0] \n", 134 | " batch_normalization_8[0][0] \n", 135 | "__________________________________________________________________________________________________\n", 136 | "conv2d_11 (Conv2D) (None, 40, 40, 256) 1179904 concatenate_1[0][0] \n", 137 | "__________________________________________________________________________________________________\n", 138 | "activation_11 (Activation) (None, 40, 40, 256) 0 conv2d_11[0][0] \n", 139 | "__________________________________________________________________________________________________\n", 140 | "batch_normalization_11 (BatchNo (None, 40, 40, 256) 1024 activation_11[0][0] \n", 141 | "__________________________________________________________________________________________________\n", 142 | "conv2d_12 (Conv2D) (None, 40, 40, 256) 590080 batch_normalization_11[0][0] \n", 143 | "__________________________________________________________________________________________________\n", 144 | "activation_12 (Activation) (None, 40, 40, 256) 0 conv2d_12[0][0] \n", 145 | "__________________________________________________________________________________________________\n", 146 | "batch_normalization_12 (BatchNo (None, 40, 40, 256) 1024 activation_12[0][0] \n", 147 | "__________________________________________________________________________________________________\n", 148 | "conv2d_transpose_2 (Conv2DTrans (None, 80, 80, 128) 131200 batch_normalization_12[0][0] \n", 149 | "__________________________________________________________________________________________________\n", 150 | "concatenate_2 (Concatenate) (None, 80, 80, 256) 0 conv2d_transpose_2[0][0] \n", 151 | " batch_normalization_6[0][0] \n", 152 | "__________________________________________________________________________________________________\n", 153 | "conv2d_13 (Conv2D) (None, 80, 80, 128) 295040 concatenate_2[0][0] \n", 154 | "__________________________________________________________________________________________________\n", 155 | "activation_13 (Activation) (None, 80, 80, 128) 0 conv2d_13[0][0] \n", 156 | "__________________________________________________________________________________________________\n", 157 | "batch_normalization_13 (BatchNo (None, 80, 80, 128) 512 activation_13[0][0] \n", 158 | "__________________________________________________________________________________________________\n", 159 | "conv2d_14 (Conv2D) (None, 80, 80, 128) 147584 batch_normalization_13[0][0] \n", 160 | "__________________________________________________________________________________________________\n", 161 | "activation_14 (Activation) (None, 80, 80, 128) 0 conv2d_14[0][0] \n", 162 | "__________________________________________________________________________________________________\n", 163 | "batch_normalization_14 (BatchNo (None, 80, 80, 128) 512 activation_14[0][0] \n", 164 | "__________________________________________________________________________________________________\n", 165 | "conv2d_transpose_3 (Conv2DTrans (None, 160, 160, 64) 32832 batch_normalization_14[0][0] \n", 166 | "__________________________________________________________________________________________________\n", 167 | "concatenate_3 (Concatenate) (None, 160, 160, 128 0 conv2d_transpose_3[0][0] \n", 168 | " batch_normalization_4[0][0] \n", 169 | "__________________________________________________________________________________________________\n", 170 | "conv2d_15 (Conv2D) (None, 160, 160, 64) 73792 concatenate_3[0][0] \n", 171 | "__________________________________________________________________________________________________\n", 172 | "activation_15 (Activation) (None, 160, 160, 64) 0 conv2d_15[0][0] \n", 173 | "__________________________________________________________________________________________________\n", 174 | "batch_normalization_15 (BatchNo (None, 160, 160, 64) 256 activation_15[0][0] \n", 175 | "__________________________________________________________________________________________________\n", 176 | "conv2d_16 (Conv2D) (None, 160, 160, 64) 36928 batch_normalization_15[0][0] \n", 177 | "__________________________________________________________________________________________________\n", 178 | "activation_16 (Activation) (None, 160, 160, 64) 0 conv2d_16[0][0] \n", 179 | "__________________________________________________________________________________________________\n", 180 | "batch_normalization_16 (BatchNo (None, 160, 160, 64) 256 activation_16[0][0] \n", 181 | "__________________________________________________________________________________________________\n", 182 | "conv2d_transpose_4 (Conv2DTrans (None, 320, 320, 32) 8224 batch_normalization_16[0][0] \n", 183 | "__________________________________________________________________________________________________\n", 184 | "concatenate_4 (Concatenate) (None, 320, 320, 64) 0 conv2d_transpose_4[0][0] \n", 185 | " batch_normalization_2[0][0] \n", 186 | "__________________________________________________________________________________________________\n", 187 | "conv2d_17 (Conv2D) (None, 320, 320, 32) 18464 concatenate_4[0][0] \n", 188 | "__________________________________________________________________________________________________\n", 189 | "activation_17 (Activation) (None, 320, 320, 32) 0 conv2d_17[0][0] \n", 190 | "__________________________________________________________________________________________________\n", 191 | "batch_normalization_17 (BatchNo (None, 320, 320, 32) 128 activation_17[0][0] \n", 192 | "__________________________________________________________________________________________________\n", 193 | "conv2d_18 (Conv2D) (None, 320, 320, 32) 9248 batch_normalization_17[0][0] \n", 194 | "__________________________________________________________________________________________________\n", 195 | "activation_18 (Activation) (None, 320, 320, 32) 0 conv2d_18[0][0] \n", 196 | "__________________________________________________________________________________________________\n", 197 | "batch_normalization_18 (BatchNo (None, 320, 320, 32) 128 activation_18[0][0] \n", 198 | "__________________________________________________________________________________________________\n", 199 | "conv2d_19 (Conv2D) (None, 320, 320, 2) 66 batch_normalization_18[0][0] \n", 200 | "==================================================================================================\n", 201 | "Total params: 7,771,618\n", 202 | "Trainable params: 7,765,730\n", 203 | "Non-trainable params: 5,888\n", 204 | "__________________________________________________________________________________________________\n", 205 | "None\n" 206 | ] 207 | } 208 | ], 209 | "source": [ 210 | "# Tensorflow initialize session\n", 211 | "utils.init_session()\n", 212 | "\n", 213 | "# Define Classification model\n", 214 | "model = engine.Model(**config['model'])" 215 | ] 216 | }, 217 | { 218 | "cell_type": "code", 219 | "execution_count": 5, 220 | "metadata": {}, 221 | "outputs": [ 222 | { 223 | "name": "stdout", 224 | "output_type": "stream", 225 | "text": [ 226 | "(481, 481) (481, 481) 255 0 0.0 1.0\n" 227 | ] 228 | } 229 | ], 230 | "source": [ 231 | "tasks_dir = '../data_sliced/'\n", 232 | "tasks = [x for x in os.listdir(tasks_dir) if 'Task' in x]\n", 233 | "for task in tasks:\n", 234 | " x_path = os.path.join(tasks_dir, task, 'imagesTr')\n", 235 | " y_path = os.path.join(tasks_dir, task, 'labelsTr_npz')\n", 236 | " for name in os.listdir(x_path):\n", 237 | " if '.jpg' in name:\n", 238 | " img = utils.load_img(os.path.join(x_path, name))\n", 239 | " img = utils.resize_img(img, (320, 320, 1))\n", 240 | "\n", 241 | " annot = utils.load_img(os.path.join(y_path, name[:-3]+'npz'))\n", 242 | " print(img.shape, annot.shape, img.max(), img.min(), annot.min(), annot.max())\n", 243 | " break\n", 244 | " break" 245 | ] 246 | }, 247 | { 248 | "cell_type": "code", 249 | "execution_count": 6, 250 | "metadata": {}, 251 | "outputs": [ 252 | { 253 | "name": "stdout", 254 | "output_type": "stream", 255 | "text": [ 256 | "Epoch 1/2\n", 257 | " - 1964s - loss: 0.1301 - acc: 0.7903 - val_loss: 0.2218 - val_acc: 0.6371\n", 258 | "Epoch 2/2\n", 259 | " - 1958s - loss: 0.1188 - acc: 0.7989 - val_loss: 2.4855e-05 - val_acc: 1.0000\n", 260 | "\n", 261 | "Epoch 00002: saving model to ../output/debug_segment/checkpoints/wt-02-1.00.h5\n" 262 | ] 263 | } 264 | ], 265 | "source": [ 266 | "model.train(datagen_train, datagen_val, exp_dir, **config['train'])" 267 | ] 268 | }, 269 | { 270 | "cell_type": "code", 271 | "execution_count": null, 272 | "metadata": { 273 | "collapsed": true 274 | }, 275 | "outputs": [], 276 | "source": [] 277 | } 278 | ], 279 | "metadata": { 280 | "kernelspec": { 281 | "display_name": "Python 3", 282 | "language": "python", 283 | "name": "python3" 284 | }, 285 | "language_info": { 286 | "codemirror_mode": { 287 | "name": "ipython", 288 | "version": 3 289 | }, 290 | "file_extension": ".py", 291 | "mimetype": "text/x-python", 292 | "name": "python", 293 | "nbconvert_exporter": "python", 294 | "pygments_lexer": "ipython3", 295 | "version": "3.6.5" 296 | } 297 | }, 298 | "nbformat": 4, 299 | "nbformat_minor": 2 300 | } 301 | -------------------------------------------------------------------------------- /scripts/classify.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stderr", 10 | "output_type": "stream", 11 | "text": [ 12 | "Using TensorFlow backend.\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "from __future__ import print_function\n", 18 | "import sys\n", 19 | "sys.path.append('..')\n", 20 | "import os\n", 21 | "import yaml\n", 22 | "import argparse\n", 23 | "from shutil import copyfile\n", 24 | "\n", 25 | "from medseg import datagen, engine, utils" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 2, 31 | "metadata": { 32 | "collapsed": true 33 | }, 34 | "outputs": [], 35 | "source": [ 36 | "config_file = 'configs_a/config_classify.yaml'\n", 37 | "\n", 38 | "# Parser config file\n", 39 | "with open(config_file) as f:\n", 40 | " config = yaml.load(f)\n", 41 | "\n", 42 | "# Create experiment output directories\n", 43 | "exp_dir = os.path.join(config['output_dir'], config['exp_id'])\n", 44 | "utils.create_dirs([exp_dir,\n", 45 | " os.path.join(exp_dir, 'checkpoints'),\n", 46 | " os.path.join(exp_dir, 'logs')])\n", 47 | "\n", 48 | "# Copy config file\n", 49 | "copyfile(config_file, os.path.join(exp_dir, config['exp_id']+'.yaml'))" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 3, 55 | "metadata": { 56 | "collapsed": true 57 | }, 58 | "outputs": [], 59 | "source": [ 60 | "# Train and validation data generators\n", 61 | "paths_train, _, labels_train, paths_val, _, labels_val \\\n", 62 | " = datagen.get_paths(config['data_path'])\n", 63 | "datagen_train = datagen.datagen_classify(paths_train, labels_train, **config['datagen'])\n", 64 | "datagen_val = datagen.datagen_classify(paths_val, labels_val, **config['datagen'])" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 4, 70 | "metadata": {}, 71 | "outputs": [ 72 | { 73 | "name": "stdout", 74 | "output_type": "stream", 75 | "text": [ 76 | "__________________________________________________________________________________________________\n", 77 | "Layer (type) Output Shape Param # Connected to \n", 78 | "==================================================================================================\n", 79 | "input_1 (InputLayer) (None, 50, 50, 50, 1 0 \n", 80 | "__________________________________________________________________________________________________\n", 81 | "zero_padding3d_1 (ZeroPadding3D (None, 56, 56, 56, 1 0 input_1[0][0] \n", 82 | "__________________________________________________________________________________________________\n", 83 | "conv1/conv (Conv3D) (None, 25, 25, 25, 6 21952 zero_padding3d_1[0][0] \n", 84 | "__________________________________________________________________________________________________\n", 85 | "conv1/bn (BatchNormalization) (None, 25, 25, 25, 6 256 conv1/conv[0][0] \n", 86 | "__________________________________________________________________________________________________\n", 87 | "conv1/relu (Activation) (None, 25, 25, 25, 6 0 conv1/bn[0][0] \n", 88 | "__________________________________________________________________________________________________\n", 89 | "zero_padding3d_2 (ZeroPadding3D (None, 27, 27, 27, 6 0 conv1/relu[0][0] \n", 90 | "__________________________________________________________________________________________________\n", 91 | "pool1 (MaxPooling3D) (None, 13, 13, 13, 6 0 zero_padding3d_2[0][0] \n", 92 | "__________________________________________________________________________________________________\n", 93 | "conv2_block1_0_bn (BatchNormali (None, 13, 13, 13, 6 256 pool1[0][0] \n", 94 | "__________________________________________________________________________________________________\n", 95 | "conv2_block1_0_relu (Activation (None, 13, 13, 13, 6 0 conv2_block1_0_bn[0][0] \n", 96 | "__________________________________________________________________________________________________\n", 97 | "conv2_block1_1_conv (Conv3D) (None, 13, 13, 13, 1 8192 conv2_block1_0_relu[0][0] \n", 98 | "__________________________________________________________________________________________________\n", 99 | "conv2_block1_1_bn (BatchNormali (None, 13, 13, 13, 1 512 conv2_block1_1_conv[0][0] \n", 100 | "__________________________________________________________________________________________________\n", 101 | "conv2_block1_1_relu (Activation (None, 13, 13, 13, 1 0 conv2_block1_1_bn[0][0] \n", 102 | "__________________________________________________________________________________________________\n", 103 | "conv2_block1_2_conv (Conv3D) (None, 13, 13, 13, 3 110592 conv2_block1_1_relu[0][0] \n", 104 | "__________________________________________________________________________________________________\n", 105 | "conv2_block1_concat (Concatenat (None, 13, 13, 13, 9 0 pool1[0][0] \n", 106 | " conv2_block1_2_conv[0][0] \n", 107 | "__________________________________________________________________________________________________\n", 108 | "conv2_block2_0_bn (BatchNormali (None, 13, 13, 13, 9 384 conv2_block1_concat[0][0] \n", 109 | "__________________________________________________________________________________________________\n", 110 | "conv2_block2_0_relu (Activation (None, 13, 13, 13, 9 0 conv2_block2_0_bn[0][0] \n", 111 | "__________________________________________________________________________________________________\n", 112 | "conv2_block2_1_conv (Conv3D) (None, 13, 13, 13, 1 12288 conv2_block2_0_relu[0][0] \n", 113 | "__________________________________________________________________________________________________\n", 114 | "conv2_block2_1_bn (BatchNormali (None, 13, 13, 13, 1 512 conv2_block2_1_conv[0][0] \n", 115 | "__________________________________________________________________________________________________\n", 116 | "conv2_block2_1_relu (Activation (None, 13, 13, 13, 1 0 conv2_block2_1_bn[0][0] \n", 117 | "__________________________________________________________________________________________________\n", 118 | "conv2_block2_2_conv (Conv3D) (None, 13, 13, 13, 3 110592 conv2_block2_1_relu[0][0] \n", 119 | "__________________________________________________________________________________________________\n", 120 | "conv2_block2_concat (Concatenat (None, 13, 13, 13, 1 0 conv2_block1_concat[0][0] \n", 121 | " conv2_block2_2_conv[0][0] \n", 122 | "__________________________________________________________________________________________________\n", 123 | "conv2_block3_0_bn (BatchNormali (None, 13, 13, 13, 1 512 conv2_block2_concat[0][0] \n", 124 | "__________________________________________________________________________________________________\n", 125 | "conv2_block3_0_relu (Activation (None, 13, 13, 13, 1 0 conv2_block3_0_bn[0][0] \n", 126 | "__________________________________________________________________________________________________\n", 127 | "conv2_block3_1_conv (Conv3D) (None, 13, 13, 13, 1 16384 conv2_block3_0_relu[0][0] \n", 128 | "__________________________________________________________________________________________________\n", 129 | "conv2_block3_1_bn (BatchNormali (None, 13, 13, 13, 1 512 conv2_block3_1_conv[0][0] \n", 130 | "__________________________________________________________________________________________________\n", 131 | "conv2_block3_1_relu (Activation (None, 13, 13, 13, 1 0 conv2_block3_1_bn[0][0] \n", 132 | "__________________________________________________________________________________________________\n", 133 | "conv2_block3_2_conv (Conv3D) (None, 13, 13, 13, 3 110592 conv2_block3_1_relu[0][0] \n", 134 | "__________________________________________________________________________________________________\n", 135 | "conv2_block3_concat (Concatenat (None, 13, 13, 13, 1 0 conv2_block2_concat[0][0] \n", 136 | " conv2_block3_2_conv[0][0] \n", 137 | "__________________________________________________________________________________________________\n", 138 | "pool2_bn (BatchNormalization) (None, 13, 13, 13, 1 640 conv2_block3_concat[0][0] \n", 139 | "__________________________________________________________________________________________________\n", 140 | "pool2_relu (Activation) (None, 13, 13, 13, 1 0 pool2_bn[0][0] \n", 141 | "__________________________________________________________________________________________________\n", 142 | "pool2_conv (Conv3D) (None, 13, 13, 13, 8 12800 pool2_relu[0][0] \n", 143 | "__________________________________________________________________________________________________\n", 144 | "pool2_pool (AveragePooling3D) (None, 6, 6, 6, 80) 0 pool2_conv[0][0] \n", 145 | "__________________________________________________________________________________________________\n", 146 | "conv3_block1_0_bn (BatchNormali (None, 6, 6, 6, 80) 320 pool2_pool[0][0] \n", 147 | "__________________________________________________________________________________________________\n", 148 | "conv3_block1_0_relu (Activation (None, 6, 6, 6, 80) 0 conv3_block1_0_bn[0][0] \n", 149 | "__________________________________________________________________________________________________\n", 150 | "conv3_block1_1_conv (Conv3D) (None, 6, 6, 6, 128) 10240 conv3_block1_0_relu[0][0] \n", 151 | "__________________________________________________________________________________________________\n", 152 | "conv3_block1_1_bn (BatchNormali (None, 6, 6, 6, 128) 512 conv3_block1_1_conv[0][0] \n", 153 | "__________________________________________________________________________________________________\n", 154 | "conv3_block1_1_relu (Activation (None, 6, 6, 6, 128) 0 conv3_block1_1_bn[0][0] \n", 155 | "__________________________________________________________________________________________________\n", 156 | "conv3_block1_2_conv (Conv3D) (None, 6, 6, 6, 32) 110592 conv3_block1_1_relu[0][0] \n", 157 | "__________________________________________________________________________________________________\n", 158 | "conv3_block1_concat (Concatenat (None, 6, 6, 6, 112) 0 pool2_pool[0][0] \n", 159 | " conv3_block1_2_conv[0][0] \n", 160 | "__________________________________________________________________________________________________\n", 161 | "conv3_block2_0_bn (BatchNormali (None, 6, 6, 6, 112) 448 conv3_block1_concat[0][0] \n", 162 | "__________________________________________________________________________________________________\n", 163 | "conv3_block2_0_relu (Activation (None, 6, 6, 6, 112) 0 conv3_block2_0_bn[0][0] \n", 164 | "__________________________________________________________________________________________________\n", 165 | "conv3_block2_1_conv (Conv3D) (None, 6, 6, 6, 128) 14336 conv3_block2_0_relu[0][0] \n", 166 | "__________________________________________________________________________________________________\n", 167 | "conv3_block2_1_bn (BatchNormali (None, 6, 6, 6, 128) 512 conv3_block2_1_conv[0][0] \n", 168 | "__________________________________________________________________________________________________\n", 169 | "conv3_block2_1_relu (Activation (None, 6, 6, 6, 128) 0 conv3_block2_1_bn[0][0] \n", 170 | "__________________________________________________________________________________________________\n", 171 | "conv3_block2_2_conv (Conv3D) (None, 6, 6, 6, 32) 110592 conv3_block2_1_relu[0][0] \n", 172 | "__________________________________________________________________________________________________\n", 173 | "conv3_block2_concat (Concatenat (None, 6, 6, 6, 144) 0 conv3_block1_concat[0][0] \n", 174 | " conv3_block2_2_conv[0][0] \n", 175 | "__________________________________________________________________________________________________\n", 176 | "conv3_block3_0_bn (BatchNormali (None, 6, 6, 6, 144) 576 conv3_block2_concat[0][0] \n", 177 | "__________________________________________________________________________________________________\n", 178 | "conv3_block3_0_relu (Activation (None, 6, 6, 6, 144) 0 conv3_block3_0_bn[0][0] \n", 179 | "__________________________________________________________________________________________________\n", 180 | "conv3_block3_1_conv (Conv3D) (None, 6, 6, 6, 128) 18432 conv3_block3_0_relu[0][0] \n", 181 | "__________________________________________________________________________________________________\n", 182 | "conv3_block3_1_bn (BatchNormali (None, 6, 6, 6, 128) 512 conv3_block3_1_conv[0][0] \n", 183 | "__________________________________________________________________________________________________\n", 184 | "conv3_block3_1_relu (Activation (None, 6, 6, 6, 128) 0 conv3_block3_1_bn[0][0] \n", 185 | "__________________________________________________________________________________________________\n", 186 | "conv3_block3_2_conv (Conv3D) (None, 6, 6, 6, 32) 110592 conv3_block3_1_relu[0][0] \n", 187 | "__________________________________________________________________________________________________\n", 188 | "conv3_block3_concat (Concatenat (None, 6, 6, 6, 176) 0 conv3_block2_concat[0][0] \n", 189 | " conv3_block3_2_conv[0][0] \n", 190 | "__________________________________________________________________________________________________\n", 191 | "conv3_block4_0_bn (BatchNormali (None, 6, 6, 6, 176) 704 conv3_block3_concat[0][0] \n", 192 | "__________________________________________________________________________________________________\n", 193 | "conv3_block4_0_relu (Activation (None, 6, 6, 6, 176) 0 conv3_block4_0_bn[0][0] \n", 194 | "__________________________________________________________________________________________________\n", 195 | "conv3_block4_1_conv (Conv3D) (None, 6, 6, 6, 128) 22528 conv3_block4_0_relu[0][0] \n", 196 | "__________________________________________________________________________________________________\n", 197 | "conv3_block4_1_bn (BatchNormali (None, 6, 6, 6, 128) 512 conv3_block4_1_conv[0][0] \n", 198 | "__________________________________________________________________________________________________\n", 199 | "conv3_block4_1_relu (Activation (None, 6, 6, 6, 128) 0 conv3_block4_1_bn[0][0] \n", 200 | "__________________________________________________________________________________________________\n", 201 | "conv3_block4_2_conv (Conv3D) (None, 6, 6, 6, 32) 110592 conv3_block4_1_relu[0][0] \n", 202 | "__________________________________________________________________________________________________\n", 203 | "conv3_block4_concat (Concatenat (None, 6, 6, 6, 208) 0 conv3_block3_concat[0][0] \n", 204 | " conv3_block4_2_conv[0][0] \n", 205 | "__________________________________________________________________________________________________\n", 206 | "conv3_block5_0_bn (BatchNormali (None, 6, 6, 6, 208) 832 conv3_block4_concat[0][0] \n", 207 | "__________________________________________________________________________________________________\n", 208 | "conv3_block5_0_relu (Activation (None, 6, 6, 6, 208) 0 conv3_block5_0_bn[0][0] \n", 209 | "__________________________________________________________________________________________________\n", 210 | "conv3_block5_1_conv (Conv3D) (None, 6, 6, 6, 128) 26624 conv3_block5_0_relu[0][0] \n", 211 | "__________________________________________________________________________________________________\n", 212 | "conv3_block5_1_bn (BatchNormali (None, 6, 6, 6, 128) 512 conv3_block5_1_conv[0][0] \n", 213 | "__________________________________________________________________________________________________\n", 214 | "conv3_block5_1_relu (Activation (None, 6, 6, 6, 128) 0 conv3_block5_1_bn[0][0] \n", 215 | "__________________________________________________________________________________________________\n", 216 | "conv3_block5_2_conv (Conv3D) (None, 6, 6, 6, 32) 110592 conv3_block5_1_relu[0][0] \n", 217 | "__________________________________________________________________________________________________\n", 218 | "conv3_block5_concat (Concatenat (None, 6, 6, 6, 240) 0 conv3_block4_concat[0][0] \n", 219 | " conv3_block5_2_conv[0][0] \n", 220 | "__________________________________________________________________________________________________\n", 221 | "conv3_block6_0_bn (BatchNormali (None, 6, 6, 6, 240) 960 conv3_block5_concat[0][0] \n", 222 | "__________________________________________________________________________________________________\n", 223 | "conv3_block6_0_relu (Activation (None, 6, 6, 6, 240) 0 conv3_block6_0_bn[0][0] \n", 224 | "__________________________________________________________________________________________________\n", 225 | "conv3_block6_1_conv (Conv3D) (None, 6, 6, 6, 128) 30720 conv3_block6_0_relu[0][0] \n", 226 | "__________________________________________________________________________________________________\n", 227 | "conv3_block6_1_bn (BatchNormali (None, 6, 6, 6, 128) 512 conv3_block6_1_conv[0][0] \n", 228 | "__________________________________________________________________________________________________\n", 229 | "conv3_block6_1_relu (Activation (None, 6, 6, 6, 128) 0 conv3_block6_1_bn[0][0] \n", 230 | "__________________________________________________________________________________________________\n", 231 | "conv3_block6_2_conv (Conv3D) (None, 6, 6, 6, 32) 110592 conv3_block6_1_relu[0][0] \n", 232 | "__________________________________________________________________________________________________\n", 233 | "conv3_block6_concat (Concatenat (None, 6, 6, 6, 272) 0 conv3_block5_concat[0][0] \n", 234 | " conv3_block6_2_conv[0][0] \n", 235 | "__________________________________________________________________________________________________\n", 236 | "pool3_bn (BatchNormalization) (None, 6, 6, 6, 272) 1088 conv3_block6_concat[0][0] \n", 237 | "__________________________________________________________________________________________________\n", 238 | "pool3_relu (Activation) (None, 6, 6, 6, 272) 0 pool3_bn[0][0] \n", 239 | "__________________________________________________________________________________________________\n", 240 | "pool3_conv (Conv3D) (None, 6, 6, 6, 136) 36992 pool3_relu[0][0] \n", 241 | "__________________________________________________________________________________________________\n", 242 | "pool3_pool (AveragePooling3D) (None, 3, 3, 3, 136) 0 pool3_conv[0][0] \n", 243 | "__________________________________________________________________________________________________\n", 244 | "conv4_block1_0_bn (BatchNormali (None, 3, 3, 3, 136) 544 pool3_pool[0][0] \n", 245 | "__________________________________________________________________________________________________\n", 246 | "conv4_block1_0_relu (Activation (None, 3, 3, 3, 136) 0 conv4_block1_0_bn[0][0] \n", 247 | "__________________________________________________________________________________________________\n", 248 | "conv4_block1_1_conv (Conv3D) (None, 3, 3, 3, 128) 17408 conv4_block1_0_relu[0][0] \n", 249 | "__________________________________________________________________________________________________\n", 250 | "conv4_block1_1_bn (BatchNormali (None, 3, 3, 3, 128) 512 conv4_block1_1_conv[0][0] \n", 251 | "__________________________________________________________________________________________________\n", 252 | "conv4_block1_1_relu (Activation (None, 3, 3, 3, 128) 0 conv4_block1_1_bn[0][0] \n", 253 | "__________________________________________________________________________________________________\n", 254 | "conv4_block1_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block1_1_relu[0][0] \n", 255 | "__________________________________________________________________________________________________\n", 256 | "conv4_block1_concat (Concatenat (None, 3, 3, 3, 168) 0 pool3_pool[0][0] \n", 257 | " conv4_block1_2_conv[0][0] \n", 258 | "__________________________________________________________________________________________________\n", 259 | "conv4_block2_0_bn (BatchNormali (None, 3, 3, 3, 168) 672 conv4_block1_concat[0][0] \n", 260 | "__________________________________________________________________________________________________\n", 261 | "conv4_block2_0_relu (Activation (None, 3, 3, 3, 168) 0 conv4_block2_0_bn[0][0] \n", 262 | "__________________________________________________________________________________________________\n", 263 | "conv4_block2_1_conv (Conv3D) (None, 3, 3, 3, 128) 21504 conv4_block2_0_relu[0][0] \n", 264 | "__________________________________________________________________________________________________\n", 265 | "conv4_block2_1_bn (BatchNormali (None, 3, 3, 3, 128) 512 conv4_block2_1_conv[0][0] \n", 266 | "__________________________________________________________________________________________________\n", 267 | "conv4_block2_1_relu (Activation (None, 3, 3, 3, 128) 0 conv4_block2_1_bn[0][0] \n", 268 | "__________________________________________________________________________________________________\n", 269 | "conv4_block2_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block2_1_relu[0][0] \n", 270 | "__________________________________________________________________________________________________\n", 271 | "conv4_block2_concat (Concatenat (None, 3, 3, 3, 200) 0 conv4_block1_concat[0][0] \n", 272 | " conv4_block2_2_conv[0][0] \n", 273 | "__________________________________________________________________________________________________\n", 274 | "conv4_block3_0_bn (BatchNormali (None, 3, 3, 3, 200) 800 conv4_block2_concat[0][0] \n", 275 | "__________________________________________________________________________________________________\n", 276 | "conv4_block3_0_relu (Activation (None, 3, 3, 3, 200) 0 conv4_block3_0_bn[0][0] \n", 277 | "__________________________________________________________________________________________________\n", 278 | "conv4_block3_1_conv (Conv3D) (None, 3, 3, 3, 128) 25600 conv4_block3_0_relu[0][0] \n", 279 | "__________________________________________________________________________________________________\n", 280 | "conv4_block3_1_bn (BatchNormali (None, 3, 3, 3, 128) 512 conv4_block3_1_conv[0][0] \n", 281 | "__________________________________________________________________________________________________\n", 282 | "conv4_block3_1_relu (Activation (None, 3, 3, 3, 128) 0 conv4_block3_1_bn[0][0] \n", 283 | "__________________________________________________________________________________________________\n", 284 | "conv4_block3_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block3_1_relu[0][0] \n", 285 | "__________________________________________________________________________________________________\n", 286 | "conv4_block3_concat (Concatenat (None, 3, 3, 3, 232) 0 conv4_block2_concat[0][0] \n", 287 | " conv4_block3_2_conv[0][0] \n", 288 | "__________________________________________________________________________________________________\n", 289 | "conv4_block4_0_bn (BatchNormali (None, 3, 3, 3, 232) 928 conv4_block3_concat[0][0] \n", 290 | "__________________________________________________________________________________________________\n", 291 | "conv4_block4_0_relu (Activation (None, 3, 3, 3, 232) 0 conv4_block4_0_bn[0][0] \n", 292 | "__________________________________________________________________________________________________\n", 293 | "conv4_block4_1_conv (Conv3D) (None, 3, 3, 3, 128) 29696 conv4_block4_0_relu[0][0] \n", 294 | "__________________________________________________________________________________________________\n", 295 | "conv4_block4_1_bn (BatchNormali (None, 3, 3, 3, 128) 512 conv4_block4_1_conv[0][0] \n", 296 | "__________________________________________________________________________________________________\n", 297 | "conv4_block4_1_relu (Activation (None, 3, 3, 3, 128) 0 conv4_block4_1_bn[0][0] \n", 298 | "__________________________________________________________________________________________________\n", 299 | "conv4_block4_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block4_1_relu[0][0] \n", 300 | "__________________________________________________________________________________________________\n", 301 | "conv4_block4_concat (Concatenat (None, 3, 3, 3, 264) 0 conv4_block3_concat[0][0] \n", 302 | " conv4_block4_2_conv[0][0] \n", 303 | "__________________________________________________________________________________________________\n", 304 | "conv4_block5_0_bn (BatchNormali (None, 3, 3, 3, 264) 1056 conv4_block4_concat[0][0] \n", 305 | "__________________________________________________________________________________________________\n", 306 | "conv4_block5_0_relu (Activation (None, 3, 3, 3, 264) 0 conv4_block5_0_bn[0][0] \n", 307 | "__________________________________________________________________________________________________\n", 308 | "conv4_block5_1_conv (Conv3D) (None, 3, 3, 3, 128) 33792 conv4_block5_0_relu[0][0] \n", 309 | "__________________________________________________________________________________________________\n", 310 | "conv4_block5_1_bn (BatchNormali (None, 3, 3, 3, 128) 512 conv4_block5_1_conv[0][0] \n", 311 | "__________________________________________________________________________________________________\n", 312 | "conv4_block5_1_relu (Activation (None, 3, 3, 3, 128) 0 conv4_block5_1_bn[0][0] \n", 313 | "__________________________________________________________________________________________________\n", 314 | "conv4_block5_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block5_1_relu[0][0] \n", 315 | "__________________________________________________________________________________________________\n", 316 | "conv4_block5_concat (Concatenat (None, 3, 3, 3, 296) 0 conv4_block4_concat[0][0] \n", 317 | " conv4_block5_2_conv[0][0] \n", 318 | "__________________________________________________________________________________________________\n", 319 | "conv4_block6_0_bn (BatchNormali (None, 3, 3, 3, 296) 1184 conv4_block5_concat[0][0] \n", 320 | "__________________________________________________________________________________________________\n", 321 | "conv4_block6_0_relu (Activation (None, 3, 3, 3, 296) 0 conv4_block6_0_bn[0][0] \n", 322 | "__________________________________________________________________________________________________\n", 323 | "conv4_block6_1_conv (Conv3D) (None, 3, 3, 3, 128) 37888 conv4_block6_0_relu[0][0] \n", 324 | "__________________________________________________________________________________________________\n", 325 | "conv4_block6_1_bn (BatchNormali (None, 3, 3, 3, 128) 512 conv4_block6_1_conv[0][0] \n", 326 | "__________________________________________________________________________________________________\n", 327 | "conv4_block6_1_relu (Activation (None, 3, 3, 3, 128) 0 conv4_block6_1_bn[0][0] \n", 328 | "__________________________________________________________________________________________________\n", 329 | "conv4_block6_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block6_1_relu[0][0] \n", 330 | "__________________________________________________________________________________________________\n", 331 | "conv4_block6_concat (Concatenat (None, 3, 3, 3, 328) 0 conv4_block5_concat[0][0] \n", 332 | " conv4_block6_2_conv[0][0] \n", 333 | "__________________________________________________________________________________________________\n", 334 | "conv4_block7_0_bn (BatchNormali (None, 3, 3, 3, 328) 1312 conv4_block6_concat[0][0] \n", 335 | "__________________________________________________________________________________________________\n", 336 | "conv4_block7_0_relu (Activation (None, 3, 3, 3, 328) 0 conv4_block7_0_bn[0][0] \n", 337 | "__________________________________________________________________________________________________\n", 338 | "conv4_block7_1_conv (Conv3D) (None, 3, 3, 3, 128) 41984 conv4_block7_0_relu[0][0] \n", 339 | "__________________________________________________________________________________________________\n", 340 | "conv4_block7_1_bn (BatchNormali (None, 3, 3, 3, 128) 512 conv4_block7_1_conv[0][0] \n", 341 | "__________________________________________________________________________________________________\n", 342 | "conv4_block7_1_relu (Activation (None, 3, 3, 3, 128) 0 conv4_block7_1_bn[0][0] \n", 343 | "__________________________________________________________________________________________________\n", 344 | "conv4_block7_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block7_1_relu[0][0] \n", 345 | "__________________________________________________________________________________________________\n", 346 | "conv4_block7_concat (Concatenat (None, 3, 3, 3, 360) 0 conv4_block6_concat[0][0] \n", 347 | " conv4_block7_2_conv[0][0] \n", 348 | "__________________________________________________________________________________________________\n", 349 | "conv4_block8_0_bn (BatchNormali (None, 3, 3, 3, 360) 1440 conv4_block7_concat[0][0] \n", 350 | "__________________________________________________________________________________________________\n", 351 | "conv4_block8_0_relu (Activation (None, 3, 3, 3, 360) 0 conv4_block8_0_bn[0][0] \n", 352 | "__________________________________________________________________________________________________\n", 353 | "conv4_block8_1_conv (Conv3D) (None, 3, 3, 3, 128) 46080 conv4_block8_0_relu[0][0] \n", 354 | "__________________________________________________________________________________________________\n", 355 | "conv4_block8_1_bn (BatchNormali (None, 3, 3, 3, 128) 512 conv4_block8_1_conv[0][0] \n", 356 | "__________________________________________________________________________________________________\n", 357 | "conv4_block8_1_relu (Activation (None, 3, 3, 3, 128) 0 conv4_block8_1_bn[0][0] \n", 358 | "__________________________________________________________________________________________________\n", 359 | "conv4_block8_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block8_1_relu[0][0] \n", 360 | "__________________________________________________________________________________________________\n", 361 | "conv4_block8_concat (Concatenat (None, 3, 3, 3, 392) 0 conv4_block7_concat[0][0] \n", 362 | " conv4_block8_2_conv[0][0] \n", 363 | "__________________________________________________________________________________________________\n", 364 | "conv4_block9_0_bn (BatchNormali (None, 3, 3, 3, 392) 1568 conv4_block8_concat[0][0] \n", 365 | "__________________________________________________________________________________________________\n", 366 | "conv4_block9_0_relu (Activation (None, 3, 3, 3, 392) 0 conv4_block9_0_bn[0][0] \n", 367 | "__________________________________________________________________________________________________\n", 368 | "conv4_block9_1_conv (Conv3D) (None, 3, 3, 3, 128) 50176 conv4_block9_0_relu[0][0] \n", 369 | "__________________________________________________________________________________________________\n", 370 | "conv4_block9_1_bn (BatchNormali (None, 3, 3, 3, 128) 512 conv4_block9_1_conv[0][0] \n", 371 | "__________________________________________________________________________________________________\n", 372 | "conv4_block9_1_relu (Activation (None, 3, 3, 3, 128) 0 conv4_block9_1_bn[0][0] \n", 373 | "__________________________________________________________________________________________________\n", 374 | "conv4_block9_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block9_1_relu[0][0] \n", 375 | "__________________________________________________________________________________________________\n", 376 | "conv4_block9_concat (Concatenat (None, 3, 3, 3, 424) 0 conv4_block8_concat[0][0] \n", 377 | " conv4_block9_2_conv[0][0] \n", 378 | "__________________________________________________________________________________________________\n", 379 | "conv4_block10_0_bn (BatchNormal (None, 3, 3, 3, 424) 1696 conv4_block9_concat[0][0] \n", 380 | "__________________________________________________________________________________________________\n", 381 | "conv4_block10_0_relu (Activatio (None, 3, 3, 3, 424) 0 conv4_block10_0_bn[0][0] \n", 382 | "__________________________________________________________________________________________________\n", 383 | "conv4_block10_1_conv (Conv3D) (None, 3, 3, 3, 128) 54272 conv4_block10_0_relu[0][0] \n", 384 | "__________________________________________________________________________________________________\n", 385 | "conv4_block10_1_bn (BatchNormal (None, 3, 3, 3, 128) 512 conv4_block10_1_conv[0][0] \n", 386 | "__________________________________________________________________________________________________\n", 387 | "conv4_block10_1_relu (Activatio (None, 3, 3, 3, 128) 0 conv4_block10_1_bn[0][0] \n", 388 | "__________________________________________________________________________________________________\n", 389 | "conv4_block10_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block10_1_relu[0][0] \n", 390 | "__________________________________________________________________________________________________\n", 391 | "conv4_block10_concat (Concatena (None, 3, 3, 3, 456) 0 conv4_block9_concat[0][0] \n", 392 | " conv4_block10_2_conv[0][0] \n", 393 | "__________________________________________________________________________________________________\n", 394 | "conv4_block11_0_bn (BatchNormal (None, 3, 3, 3, 456) 1824 conv4_block10_concat[0][0] \n", 395 | "__________________________________________________________________________________________________\n", 396 | "conv4_block11_0_relu (Activatio (None, 3, 3, 3, 456) 0 conv4_block11_0_bn[0][0] \n", 397 | "__________________________________________________________________________________________________\n", 398 | "conv4_block11_1_conv (Conv3D) (None, 3, 3, 3, 128) 58368 conv4_block11_0_relu[0][0] \n", 399 | "__________________________________________________________________________________________________\n", 400 | "conv4_block11_1_bn (BatchNormal (None, 3, 3, 3, 128) 512 conv4_block11_1_conv[0][0] \n", 401 | "__________________________________________________________________________________________________\n", 402 | "conv4_block11_1_relu (Activatio (None, 3, 3, 3, 128) 0 conv4_block11_1_bn[0][0] \n", 403 | "__________________________________________________________________________________________________\n", 404 | "conv4_block11_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block11_1_relu[0][0] \n", 405 | "__________________________________________________________________________________________________\n", 406 | "conv4_block11_concat (Concatena (None, 3, 3, 3, 488) 0 conv4_block10_concat[0][0] \n", 407 | " conv4_block11_2_conv[0][0] \n", 408 | "__________________________________________________________________________________________________\n", 409 | "conv4_block12_0_bn (BatchNormal (None, 3, 3, 3, 488) 1952 conv4_block11_concat[0][0] \n", 410 | "__________________________________________________________________________________________________\n", 411 | "conv4_block12_0_relu (Activatio (None, 3, 3, 3, 488) 0 conv4_block12_0_bn[0][0] \n", 412 | "__________________________________________________________________________________________________\n", 413 | "conv4_block12_1_conv (Conv3D) (None, 3, 3, 3, 128) 62464 conv4_block12_0_relu[0][0] \n", 414 | "__________________________________________________________________________________________________\n", 415 | "conv4_block12_1_bn (BatchNormal (None, 3, 3, 3, 128) 512 conv4_block12_1_conv[0][0] \n", 416 | "__________________________________________________________________________________________________\n", 417 | "conv4_block12_1_relu (Activatio (None, 3, 3, 3, 128) 0 conv4_block12_1_bn[0][0] \n", 418 | "__________________________________________________________________________________________________\n", 419 | "conv4_block12_2_conv (Conv3D) (None, 3, 3, 3, 32) 110592 conv4_block12_1_relu[0][0] \n", 420 | "__________________________________________________________________________________________________\n", 421 | "conv4_block12_concat (Concatena (None, 3, 3, 3, 520) 0 conv4_block11_concat[0][0] \n", 422 | " conv4_block12_2_conv[0][0] \n", 423 | "__________________________________________________________________________________________________\n", 424 | "bn (BatchNormalization) (None, 3, 3, 3, 520) 2080 conv4_block12_concat[0][0] \n", 425 | "__________________________________________________________________________________________________\n", 426 | "avg_pool (GlobalAveragePooling3 (None, 520) 0 bn[0][0] \n", 427 | "__________________________________________________________________________________________________\n", 428 | "fc (Dense) (None, 20) 10420 avg_pool[0][0] \n", 429 | "==================================================================================================\n", 430 | "Total params: 3,078,356\n", 431 | "Trainable params: 3,060,964\n", 432 | "Non-trainable params: 17,392\n", 433 | "__________________________________________________________________________________________________\n", 434 | "None\n" 435 | ] 436 | } 437 | ], 438 | "source": [ 439 | "# Define Classification model\n", 440 | "model = engine.Model(**config['model'])" 441 | ] 442 | }, 443 | { 444 | "cell_type": "code", 445 | "execution_count": null, 446 | "metadata": {}, 447 | "outputs": [ 448 | { 449 | "name": "stdout", 450 | "output_type": "stream", 451 | "text": [ 452 | "Epoch 1/5\n", 453 | " - 1371s - loss: 6.7995 - acc: 0.2078 - val_loss: 6.4457 - val_acc: 0.6250\n", 454 | "Epoch 2/5\n" 455 | ] 456 | } 457 | ], 458 | "source": [ 459 | "# Train the model\n", 460 | "model.train(datagen_train, datagen_val, exp_dir, **config['train'])" 461 | ] 462 | }, 463 | { 464 | "cell_type": "code", 465 | "execution_count": 7, 466 | "metadata": {}, 467 | "outputs": [ 468 | { 469 | "name": "stdout", 470 | "output_type": "stream", 471 | "text": [ 472 | "Done\n" 473 | ] 474 | } 475 | ], 476 | "source": [ 477 | "print('Done')" 478 | ] 479 | }, 480 | { 481 | "cell_type": "code", 482 | "execution_count": null, 483 | "metadata": { 484 | "collapsed": true 485 | }, 486 | "outputs": [], 487 | "source": [] 488 | } 489 | ], 490 | "metadata": { 491 | "kernelspec": { 492 | "display_name": "Python 2", 493 | "language": "python", 494 | "name": "python2" 495 | }, 496 | "language_info": { 497 | "codemirror_mode": { 498 | "name": "ipython", 499 | "version": 2 500 | }, 501 | "file_extension": ".py", 502 | "mimetype": "text/x-python", 503 | "name": "python", 504 | "nbconvert_exporter": "python", 505 | "pygments_lexer": "ipython2", 506 | "version": "2.7.12" 507 | } 508 | }, 509 | "nbformat": 4, 510 | "nbformat_minor": 2 511 | } 512 | --------------------------------------------------------------------------------