|
a |
|
b/config.py |
|
|
1 |
import os |
|
|
2 |
|
|
|
3 |
# The path points to the original images and is |
|
|
4 |
# used if a preprocessing step needs to be executed |
|
|
5 |
ALL_IMGS = 'D:/stage1' |
|
|
6 |
|
|
|
7 |
LABELS_INPUT_DIR = './input' |
|
|
8 |
|
|
|
9 |
PATIENT_LABELS_CSV = LABELS_INPUT_DIR + '/stage1_labels.csv' |
|
|
10 |
TEST_PATIENTS_IDS = LABELS_INPUT_DIR + '/stage1_sample_submission.csv' |
|
|
11 |
|
|
|
12 |
VALIDATION_PATINETS_IDS = LABELS_INPUT_DIR + '/validation_data.csv' |
|
|
13 |
TRAINING_PATIENTS_IDS = LABELS_INPUT_DIR + '/training_data.csv' |
|
|
14 |
|
|
|
15 |
MODELS_STORE_DIR = './models' |
|
|
16 |
SOLUTION_FILE_PATH = './solution_last.csv' |
|
|
17 |
REAL_SOLUTION_CSV = './input/stage1_solution.csv' |
|
|
18 |
RESTORE_MODEL_CKPT = 'model_best_sensitivity.ckpt' |
|
|
19 |
SUMMARIES_DIR = './summaries/model_summary' |
|
|
20 |
RESTORE = False |
|
|
21 |
START_STEP = 1 |
|
|
22 |
|
|
|
23 |
COLUMN_NAME = 'cancer' |
|
|
24 |
ID_COLUMN_NAME = 'id' |
|
|
25 |
|
|
|
26 |
CANCER_CLS = 1 |
|
|
27 |
NO_CANCER_CLS = 0 |
|
|
28 |
|
|
|
29 |
# Image properties |
|
|
30 |
OUT_SCAN = -2000 |
|
|
31 |
MIN_BOUND = -1000.0 |
|
|
32 |
MAX_BOUND = 400.0 |
|
|
33 |
|
|
|
34 |
BACKGROUND = 0 |
|
|
35 |
BATCH_SIZE = 1 |
|
|
36 |
NUM_CHANNELS = 1 |
|
|
37 |
N_CLASSES = 2 |
|
|
38 |
|
|
|
39 |
# Preprocessing options used for the defined models |
|
|
40 |
BASELINE_PREPROCESS = 0 |
|
|
41 |
MORPHOLOGICAL_OPERATIONS = 1 |
|
|
42 |
WATERSHED = 2 |
|
|
43 |
|
|
|
44 |
FETCHED_DATA_DIR = './fetch_data' |
|
|
45 |
|
|
|
46 |
# Configuration for the buckets with preprocessed images |
|
|
47 |
# to download the data from |
|
|
48 |
bucket_names = { |
|
|
49 |
BASELINE_PREPROCESS: 'baseline-preprocess', |
|
|
50 |
MORPHOLOGICAL_OPERATIONS: 'segmented-lungs', |
|
|
51 |
WATERSHED: 'segmented-lungs-watershed' |
|
|
52 |
} |
|
|
53 |
|
|
|
54 |
# construct the path using the object name in the buckets, since |
|
|
55 |
# by default images are stored in directories with the object name |
|
|
56 |
preprocessed_imgs = { |
|
|
57 |
BASELINE_PREPROCESS: os.path.join(FETCHED_DATA_DIR, 'baseline_preprocessing'), |
|
|
58 |
MORPHOLOGICAL_OPERATIONS: os.path.join(FETCHED_DATA_DIR, 'segmented_morph_op'), |
|
|
59 |
WATERSHED: os.path.join(FETCHED_DATA_DIR, 'segmented_watershed') |
|
|
60 |
} |
|
|
61 |
|
|
|
62 |
|
|
|
63 |
# Defined models |
|
|
64 |
BASELINE = 'baseline' |
|
|
65 |
BASELINE_WITH_SEGMENTATION = 'baseline_with_segmentation' |
|
|
66 |
NO_REGULARIZATION = 'no_regularization' |
|
|
67 |
NO_REGULARIZATION_WATERSHED = 'no_regularization_watershed' |
|
|
68 |
DROPOUT_L2NORM_REGULARIZARION = 'with_regularization' |
|
|
69 |
REGULARIZATION_MORE_SLICES = 'regularization_more_slices' |
|
|
70 |
WITH_DATA_AUGMENTATION = 'more_slices_augmentation' |
|
|
71 |
|
|
|
72 |
|
|
|
73 |
model_to_img_shape = { |
|
|
74 |
BASELINE: (100, 128, 128), |
|
|
75 |
BASELINE_WITH_SEGMENTATION: (100, 128, 128), |
|
|
76 |
NO_REGULARIZATION: (140, 256, 256), |
|
|
77 |
NO_REGULARIZATION_WATERSHED: (140, 256, 256), |
|
|
78 |
DROPOUT_L2NORM_REGULARIZARION: (140, 256, 256), |
|
|
79 |
REGULARIZATION_MORE_SLICES: (180, 256, 256), |
|
|
80 |
WITH_DATA_AUGMENTATION: (180, 256, 256) |
|
|
81 |
} |
|
|
82 |
|
|
|
83 |
model_to_preprocessing = { |
|
|
84 |
BASELINE: BASELINE_PREPROCESS, |
|
|
85 |
BASELINE_WITH_SEGMENTATION: MORPHOLOGICAL_OPERATIONS, |
|
|
86 |
NO_REGULARIZATION: MORPHOLOGICAL_OPERATIONS, |
|
|
87 |
NO_REGULARIZATION_WATERSHED: WATERSHED, |
|
|
88 |
DROPOUT_L2NORM_REGULARIZARION: WATERSHED, |
|
|
89 |
REGULARIZATION_MORE_SLICES: WATERSHED, |
|
|
90 |
WITH_DATA_AUGMENTATION: WATERSHED |
|
|
91 |
} |
|
|
92 |
|
|
|
93 |
# This configuration must be changed in order to select other |
|
|
94 |
# predefined model for training |
|
|
95 |
SELECTED_MODEL = WITH_DATA_AUGMENTATION |
|
|
96 |
|
|
|
97 |
SEGMENTATION_ALGO = model_to_preprocessing.get(SELECTED_MODEL, |
|
|
98 |
model_to_preprocessing[WITH_DATA_AUGMENTATION]) |
|
|
99 |
|
|
|
100 |
IMG_SHAPE = model_to_img_shape.get(SELECTED_MODEL, |
|
|
101 |
model_to_img_shape[WITH_DATA_AUGMENTATION]) |
|
|
102 |
|
|
|
103 |
SLICES, IMAGE_PXL_SIZE_X, IMAGE_PXL_SIZE_Y = IMG_SHAPE |
|
|
104 |
|
|
|
105 |
SEGMENTED_LUNGS_DIR = preprocessed_imgs[SEGMENTATION_ALGO] |
|
|
106 |
|
|
|
107 |
BUCKET_IN_USE = bucket_names[SEGMENTATION_ALGO] |
|
|
108 |
|
|
|
109 |
REQUIRED_IMGS_COUNT = 1595 |
|
|
110 |
|
|
|
111 |
# Google cloud API client related |
|
|
112 |
# Use for downloading preprocessed images from the |
|
|
113 |
# cloud buckets |
|
|
114 |
PROJECT_NAME = 'lung-cancer-tests' |
|
|
115 |
CREDENTIALS_DIR = './fetch_data' |
|
|
116 |
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = os.path.join(CREDENTIALS_DIR, |
|
|
117 |
'lung-cancer-tests-168b7b36ab99.json') |