{"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":10338,"databundleVersionId":862042,"sourceType":"competition"},{"sourceId":8325285,"sourceType":"datasetVersion","datasetId":4945012},{"sourceId":6848404,"sourceType":"kernelVersion"}],"dockerImageVersionId":438,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"Reference :\n\nhttps://www.kaggle.com/kmader/lung-opacity-classification-transfer-learning\n\n\nI just used inceptionv3 instead of vgg16","metadata":{"_uuid":"323f22eb85744ef15a54946a58a017e52942133e"}},{"cell_type":"code","source":"%matplotlib inline\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport os","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-05-05T18:15:31.321133Z","iopub.execute_input":"2024-05-05T18:15:31.321452Z","iopub.status.idle":"2024-05-05T18:15:31.328295Z","shell.execute_reply.started":"2024-05-05T18:15:31.321386Z","shell.execute_reply":"2024-05-05T18:15:31.327567Z"},"trusted":true},"execution_count":3,"outputs":[]},{"cell_type":"code","source":"# params we will probably want to do some hyperparameter optimization later\nBASE_MODEL= 'DenseNet121'\nIMG_SIZE = (512, 512) # [(224, 224), (384, 384), (512, 512), (640, 640)]\nBATCH_SIZE = 24 # [1, 8, 16, 24]\nDENSE_COUNT = 128 # [32, 64, 128, 256]\nDROPOUT = 0.5 # [0, 0.25, 0.5]\nLEARN_RATE = 1e-4 # [1e-4, 1e-3, 4e-3]\nTRAIN_SAMPLES = 15000 # [3000, 6000, 15000]\nTEST_SAMPLES = 600\nUSE_ATTN = False # [True, False]","metadata":{"_uuid":"b148e50a8ba9440c2b4ee582496dbf63608cb92c","execution":{"iopub.status.busy":"2024-05-05T18:15:32.298853Z","iopub.execute_input":"2024-05-05T18:15:32.299196Z","iopub.status.idle":"2024-05-05T18:15:32.307263Z","shell.execute_reply.started":"2024-05-05T18:15:32.299118Z","shell.execute_reply":"2024-05-05T18:15:32.306482Z"},"trusted":true},"execution_count":4,"outputs":[]},{"cell_type":"code","source":"import pickle\n\nwith open('/kaggle/input/rsna-pneumonia-utilities/test_split.data', 'rb') as file:\n    test_ids = pickle.load(file)","metadata":{"execution":{"iopub.status.busy":"2024-05-05T18:48:03.801451Z","iopub.execute_input":"2024-05-05T18:48:03.801726Z","iopub.status.idle":"2024-05-05T18:48:03.808138Z","shell.execute_reply.started":"2024-05-05T18:48:03.801687Z","shell.execute_reply":"2024-05-05T18:48:03.807384Z"},"trusted":true},"execution_count":46,"outputs":[]},{"cell_type":"code","source":"image_bbox_df = pd.read_csv('../input/lung-opacity-overview/image_bbox_full.csv')\nimage_bbox_df['path'] = image_bbox_df['path'].map(lambda x: \n                                                  x.replace('input', \n                                                            'input/rsna-pneumonia-detection-challenge'))\nprint(image_bbox_df.shape[0], 'images')\nimage_bbox_df.sample(3)","metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","execution":{"iopub.status.busy":"2024-05-05T18:48:35.885466Z","iopub.execute_input":"2024-05-05T18:48:35.885829Z","iopub.status.idle":"2024-05-05T18:48:36.023172Z","shell.execute_reply.started":"2024-05-05T18:48:35.885773Z","shell.execute_reply":"2024-05-05T18:48:36.02248Z"},"trusted":true},"execution_count":48,"outputs":[{"name":"stdout","text":"30227 images\n","output_type":"stream"},{"execution_count":48,"output_type":"execute_result","data":{"text/plain":"                                  patientId      x      y  width  height  \\\n23005  c573cb3e-54e6-4ff0-bda4-1fd7621ee0cf  174.0  248.0  279.0   460.0   \n21549  baccc2b6-a7d5-4d89-a110-932adaa6a9ba  129.0  300.0  317.0   458.0   \n8409   55754887-a552-47dd-a5c6-2d069da40136  505.0  191.0  168.0   496.0   \n\n       Target         class  boxes  \\\n23005       1  Lung Opacity      2   \n21549       1  Lung Opacity      1   \n8409        1  Lung Opacity      2   \n\n                                                    path  \n23005  ../input/rsna-pneumonia-detection-challenge/st...  \n21549  ../input/rsna-pneumonia-detection-challenge/st...  \n8409   ../input/rsna-pneumonia-detection-challenge/st...  ","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patientId</th>\n      <th>x</th>\n      <th>y</th>\n      <th>width</th>\n      <th>height</th>\n      <th>Target</th>\n      <th>class</th>\n      <th>boxes</th>\n      <th>path</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>23005</th>\n      <td>c573cb3e-54e6-4ff0-bda4-1fd7621ee0cf</td>\n      <td>174.0</td>\n      <td>248.0</td>\n      <td>279.0</td>\n      <td>460.0</td>\n      <td>1</td>\n      <td>Lung Opacity</td>\n      <td>2</td>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n    </tr>\n    <tr>\n      <th>21549</th>\n      <td>baccc2b6-a7d5-4d89-a110-932adaa6a9ba</td>\n      <td>129.0</td>\n      <td>300.0</td>\n      <td>317.0</td>\n      <td>458.0</td>\n      <td>1</td>\n      <td>Lung Opacity</td>\n      <td>1</td>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n    </tr>\n    <tr>\n      <th>8409</th>\n      <td>55754887-a552-47dd-a5c6-2d069da40136</td>\n      <td>505.0</td>\n      <td>191.0</td>\n      <td>168.0</td>\n      <td>496.0</td>\n      <td>1</td>\n      <td>Lung Opacity</td>\n      <td>2</td>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"cell_type":"code","source":"image_bbox_df[image_bbox_df.patientId.map(lambda x: not x in set(test_ids))].shape","metadata":{"execution":{"iopub.status.busy":"2024-05-05T18:49:40.509923Z","iopub.execute_input":"2024-05-05T18:49:40.510223Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# get the labels in the right format\nfrom sklearn.preprocessing import LabelEncoder, OneHotEncoder\nclass_enc = LabelEncoder()\nimage_bbox_df['class_idx'] = class_enc.fit_transform(image_bbox_df['class'])\noh_enc = OneHotEncoder(sparse=False)\nimage_bbox_df['class_vec'] = oh_enc.fit_transform(\n    image_bbox_df['class_idx'].values.reshape(-1, 1)).tolist() \nimage_bbox_df.sample(3)","metadata":{"_uuid":"f4925492adb4f55f01794709cb751a42ca5c2177","execution":{"iopub.status.busy":"2024-05-05T18:15:36.843366Z","iopub.execute_input":"2024-05-05T18:15:36.84365Z","iopub.status.idle":"2024-05-05T18:15:37.611701Z","shell.execute_reply.started":"2024-05-05T18:15:36.843608Z","shell.execute_reply":"2024-05-05T18:15:37.610994Z"},"trusted":true},"execution_count":6,"outputs":[{"execution_count":6,"output_type":"execute_result","data":{"text/plain":"                                  patientId   x   y  width  height  Target  \\\n23311  c7e8542c-f8ca-475d-80d2-73882238e8a9 NaN NaN    NaN     NaN       0   \n14714  881a416d-a997-40db-b41c-51979462bad1 NaN NaN    NaN     NaN       0   \n24512  d19ed419-2470-46da-834d-c7047dedfd19 NaN NaN    NaN     NaN       0   \n\n                              class  boxes  \\\n23311  No Lung Opacity / Not Normal      1   \n14714  No Lung Opacity / Not Normal      1   \n24512                        Normal      1   \n\n                                                    path  class_idx  \\\n23311  ../input/rsna-pneumonia-detection-challenge/st...          1   \n14714  ../input/rsna-pneumonia-detection-challenge/st...          1   \n24512  ../input/rsna-pneumonia-detection-challenge/st...          2   \n\n             class_vec  \n23311  [0.0, 1.0, 0.0]  \n14714  [0.0, 1.0, 0.0]  \n24512  [0.0, 0.0, 1.0]  ","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patientId</th>\n      <th>x</th>\n      <th>y</th>\n      <th>width</th>\n      <th>height</th>\n      <th>Target</th>\n      <th>class</th>\n      <th>boxes</th>\n      <th>path</th>\n      <th>class_idx</th>\n      <th>class_vec</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>23311</th>\n      <td>c7e8542c-f8ca-475d-80d2-73882238e8a9</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>0</td>\n      <td>No Lung Opacity / Not Normal</td>\n      <td>1</td>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n      <td>1</td>\n      <td>[0.0, 1.0, 0.0]</td>\n    </tr>\n    <tr>\n      <th>14714</th>\n      <td>881a416d-a997-40db-b41c-51979462bad1</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>0</td>\n      <td>No Lung Opacity / Not Normal</td>\n      <td>1</td>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n      <td>1</td>\n      <td>[0.0, 1.0, 0.0]</td>\n    </tr>\n    <tr>\n      <th>24512</th>\n      <td>d19ed419-2470-46da-834d-c7047dedfd19</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>0</td>\n      <td>Normal</td>\n      <td>1</td>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n      <td>2</td>\n      <td>[0.0, 0.0, 1.0]</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"cell_type":"markdown","source":"# Split into Training and Validation\nThis will give us some feedback on how well our model is doing and if we are overfitting","metadata":{"_uuid":"b562636a2a48a0557fb16d98841fcbf650245641"}},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nimage_df = image_bbox_df.groupby('patientId').apply(lambda x: x.sample(1))\nraw_train_df, valid_df = train_test_split(image_df, test_size=0.25, random_state=2022,\n                                    stratify=image_df['class'])\nprint(raw_train_df.shape, 'training data')\nprint(valid_df.shape, 'validation data')","metadata":{"_uuid":"c12bfd5115610163c2b63ece8fa8845bb7792327","execution":{"iopub.status.busy":"2024-05-05T18:15:51.880037Z","iopub.execute_input":"2024-05-05T18:15:51.880372Z","iopub.status.idle":"2024-05-05T18:16:23.614056Z","shell.execute_reply.started":"2024-05-05T18:15:51.880311Z","shell.execute_reply":"2024-05-05T18:16:23.613238Z"},"trusted":true},"execution_count":7,"outputs":[{"name":"stdout","text":"(20013, 11) training data\n(6671, 11) validation data\n","output_type":"stream"}]},{"cell_type":"markdown","source":"## Balance Training Set\nAnd reduce the total image count","metadata":{"_uuid":"71c22947c5007a28627b41af14ee8a7f2e990174"}},{"cell_type":"code","source":"fig, (ax1, ax2) = plt.subplots(1, 2, figsize = (20, 10))\nraw_train_df.groupby('class').size().plot.bar(ax=ax1)\ntrain_df = raw_train_df.groupby('class').\\\n    apply(lambda x: x.sample(TRAIN_SAMPLES//3)).\\\n    reset_index(drop=True)\ntrain_df.groupby('class').size().plot.bar(ax=ax2) \nprint(train_df.shape[0], 'new training size')","metadata":{"_uuid":"48b8d60f4435d3ca50d11e12d4eee518c6972ab5","execution":{"iopub.status.busy":"2024-05-05T18:16:23.615263Z","iopub.execute_input":"2024-05-05T18:16:23.615572Z","iopub.status.idle":"2024-05-05T18:16:24.016837Z","shell.execute_reply.started":"2024-05-05T18:16:23.615514Z","shell.execute_reply":"2024-05-05T18:16:24.01609Z"},"trusted":true},"execution_count":8,"outputs":[{"name":"stdout","text":"6000 new training size\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"<matplotlib.figure.Figure at 0x7af755a24e48>","image/png":"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\ncAQAAADASv8fwRg6agmnKTYAAAAASUVORK5CYII=\n"},"metadata":{}}]},{"cell_type":"markdown","source":"## Keras Image Transplantation\nSince Keras is design for color jpeg images we need to hack a bit to make it dicom friendly","metadata":{"_uuid":"e9b274bfc403678cd6428b8d245bcb1a08fa0808"}},{"cell_type":"code","source":"import keras.preprocessing.image as KPImage\nfrom PIL import Image\nimport pydicom\ndef read_dicom_image(in_path):\n    img_arr = pydicom.read_file(in_path).pixel_array\n    return img_arr/img_arr.max()\n    \nclass medical_pil():\n    @staticmethod\n    def open(in_path):\n        if '.dcm' in in_path:\n            c_slice = read_dicom_image(in_path)\n            int_slice =  (255*c_slice).clip(0, 255).astype(np.uint8) # 8bit images are more friendly\n            return Image.fromarray(int_slice)\n        else:\n            return Image.open(in_path)\n    fromarray = Image.fromarray\nKPImage.pil_image = medical_pil","metadata":{"_uuid":"9548edfc1a318edfcd2a387468a5b7950a376cc5","execution":{"iopub.status.busy":"2024-05-05T18:16:41.606345Z","iopub.execute_input":"2024-05-05T18:16:41.606634Z","iopub.status.idle":"2024-05-05T18:16:43.906136Z","shell.execute_reply.started":"2024-05-05T18:16:41.606585Z","shell.execute_reply":"2024-05-05T18:16:43.905472Z"},"trusted":true},"execution_count":9,"outputs":[{"name":"stderr","text":"/opt/conda/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n  from ._conv import register_converters as _register_converters\nUsing TensorFlow backend.\n","output_type":"stream"}]},{"cell_type":"markdown","source":"# Data Augmentation\nHere we can perform simple augmentation (the `imgaug` and `Augmentation` packages offer much more flexiblity). In order to setup the augmentation we need to know which model we are using","metadata":{"_uuid":"a0d2ca01b3719e94212234b9d3e4ed43520262eb"}},{"cell_type":"code","source":"try:\n    from keras_preprocessing.image import ImageDataGenerator\nexcept:\n    from keras.preprocessing.image import ImageDataGenerator\nif BASE_MODEL=='VGG16':\n    from keras.applications.vgg16 import VGG16 as PTModel, preprocess_input\nelif BASE_MODEL=='RESNET52':\n    from keras.applications.resnet50 import ResNet50 as PTModel, preprocess_input\nelif BASE_MODEL=='InceptionV3':\n    from keras.applications.inception_v3 import InceptionV3 as PTModel, preprocess_input\nelif BASE_MODEL=='Xception':\n    from keras.applications.xception import Xception as PTModel, preprocess_input\nelif BASE_MODEL=='DenseNet169': \n    from keras.applications.densenet import DenseNet169 as PTModel, preprocess_input\nelif BASE_MODEL=='DenseNet121':\n    from keras.applications.densenet import DenseNet121 as PTModel, preprocess_input\nelse:\n    raise ValueError('Unknown model: {}'.format(BASE_MODEL))","metadata":{"_uuid":"b655a151895a67cb66b41ccf0bf97c5cd80cc0f2","execution":{"iopub.status.busy":"2024-05-05T18:16:51.954264Z","iopub.execute_input":"2024-05-05T18:16:51.954629Z","iopub.status.idle":"2024-05-05T18:16:51.979019Z","shell.execute_reply.started":"2024-05-05T18:16:51.954583Z","shell.execute_reply":"2024-05-05T18:16:51.978225Z"},"trusted":true},"execution_count":10,"outputs":[]},{"cell_type":"code","source":"img_gen_args = dict(samplewise_center=False, \n                              samplewise_std_normalization=False, \n                              horizontal_flip = True, \n                              vertical_flip = False, \n                              height_shift_range = 0.05, \n                              width_shift_range = 0.02, \n                              rotation_range = 3, \n                              shear_range = 0.01,\n                              fill_mode = 'nearest',\n                              zoom_range = 0.05,\n                               preprocessing_function=preprocess_input)\nimg_gen = ImageDataGenerator(**img_gen_args)","metadata":{"_uuid":"a068b664c8bb465938fa3974c7b6e6120bf0860e","execution":{"iopub.status.busy":"2024-05-05T18:17:07.336447Z","iopub.execute_input":"2024-05-05T18:17:07.336755Z","iopub.status.idle":"2024-05-05T18:17:07.344621Z","shell.execute_reply.started":"2024-05-05T18:17:07.336711Z","shell.execute_reply":"2024-05-05T18:17:07.343863Z"},"trusted":true},"execution_count":11,"outputs":[]},{"cell_type":"code","source":"def flow_from_dataframe(img_data_gen, in_df, path_col, y_col, seed = None, **dflow_args):\n    base_dir = os.path.dirname(in_df[path_col].values[0])\n    print('## Ignore next message from keras, values are replaced anyways: seed: {}'.format(seed))\n    df_gen = img_data_gen.flow_from_directory(base_dir, \n                                     class_mode = 'sparse',\n                                              seed = seed,\n                                    **dflow_args)\n    df_gen.filenames = in_df[path_col].values\n    df_gen.classes = np.stack(in_df[y_col].values,0)\n    df_gen.samples = in_df.shape[0]\n    df_gen.n = in_df.shape[0]\n    df_gen._set_index_array()\n    df_gen.directory = '' # since we have the full path\n    print('Reinserting dataframe: {} images'.format(in_df.shape[0]))\n    return df_gen","metadata":{"_uuid":"9a3983f1be91084ba8c04441280efb18290814f2","execution":{"iopub.status.busy":"2024-05-05T18:17:08.625758Z","iopub.execute_input":"2024-05-05T18:17:08.62616Z","iopub.status.idle":"2024-05-05T18:17:08.646031Z","shell.execute_reply.started":"2024-05-05T18:17:08.626006Z","shell.execute_reply":"2024-05-05T18:17:08.645155Z"},"trusted":true},"execution_count":12,"outputs":[]},{"cell_type":"code","source":"train_gen = flow_from_dataframe(img_gen, train_df, \n                             path_col = 'path',\n                            y_col = 'class_vec', \n                            target_size = IMG_SIZE,\n                             color_mode = 'rgb',\n                            batch_size = BATCH_SIZE)\n\nvalid_gen = flow_from_dataframe(img_gen, valid_df, \n                             path_col = 'path',\n                            y_col = 'class_vec', \n                            target_size = IMG_SIZE,\n                             color_mode = 'rgb',\n                            batch_size = 256) # we can use much larger batches for evaluation\n# used a fixed dataset for evaluating the algorithm\nvalid_X, valid_Y = next(flow_from_dataframe(img_gen, \n                               valid_df, \n                             path_col = 'path',\n                            y_col = 'class_vec', \n                            target_size = IMG_SIZE,\n                             color_mode = 'rgb',\n                            batch_size = TEST_SAMPLES)) # one big batch","metadata":{"_uuid":"720a67aaa3a8f4c9d5d50752c3f18f4e54dc3af0","execution":{"iopub.status.busy":"2024-05-05T18:17:10.402737Z","iopub.execute_input":"2024-05-05T18:17:10.403062Z","iopub.status.idle":"2024-05-05T18:19:39.841881Z","shell.execute_reply.started":"2024-05-05T18:17:10.402984Z","shell.execute_reply":"2024-05-05T18:19:39.841093Z"},"trusted":true},"execution_count":13,"outputs":[{"name":"stdout","text":"## Ignore next message from keras, values are replaced anyways: seed: None\nFound 0 images belonging to 0 classes.\nReinserting dataframe: 6000 images\n## Ignore next message from keras, values are replaced anyways: seed: None\nFound 0 images belonging to 0 classes.\nReinserting dataframe: 6671 images\n## Ignore next message from keras, values are replaced anyways: seed: None\nFound 0 images belonging to 0 classes.\nReinserting dataframe: 6671 images\n","output_type":"stream"}]},{"cell_type":"code","source":"t_x, t_y = next(train_gen)","metadata":{"_uuid":"26f5733df5b2c77a0c7e1a75b495744b0f8b34a4","execution":{"iopub.status.busy":"2024-05-05T18:20:40.403905Z","iopub.execute_input":"2024-05-05T18:20:40.404272Z","iopub.status.idle":"2024-05-05T18:20:42.994013Z","shell.execute_reply.started":"2024-05-05T18:20:40.404211Z","shell.execute_reply":"2024-05-05T18:20:42.993245Z"},"trusted":true},"execution_count":19,"outputs":[]},{"cell_type":"markdown","source":"# Build our pretrained model\nHere we build the pretrained model and download the weights","metadata":{"_uuid":"f273320778cca1188e3bf7800248ebf06533c61c"}},{"cell_type":"code","source":"base_pretrained_model = PTModel(input_shape =  t_x.shape[1:], \n                              include_top = False, weights = 'imagenet')\nbase_pretrained_model.trainable = False","metadata":{"_uuid":"7ec309826c33787294dd1ba2cac5e4e65bab1755","execution":{"iopub.status.busy":"2024-05-05T18:23:58.340568Z","iopub.execute_input":"2024-05-05T18:23:58.340957Z","iopub.status.idle":"2024-05-05T18:24:32.803714Z","shell.execute_reply.started":"2024-05-05T18:23:58.340882Z","shell.execute_reply":"2024-05-05T18:24:32.803042Z"},"trusted":true},"execution_count":26,"outputs":[]},{"cell_type":"markdown","source":"## Model Supplements\nHere we add a few other layers to the model to make it better suited for the classification problem. ","metadata":{"_uuid":"c0af654a22993505bd8dc48355c4bd347b89947a"}},{"cell_type":"code","source":"from keras.layers import GlobalAveragePooling2D, Dense, Dropout, Flatten, Input, Conv2D, multiply, LocallyConnected2D, Lambda, AvgPool2D\nfrom keras.models import Model\nfrom keras.optimizers import Adam\npt_features = Input(base_pretrained_model.get_output_shape_at(0)[1:], name = 'feature_input')\npt_depth = base_pretrained_model.get_output_shape_at(0)[-1]\nfrom keras.layers import BatchNormalization\nbn_features = BatchNormalization()(pt_features)\ngap = GlobalAveragePooling2D()(bn_features)\n\ngap_dr = Dropout(DROPOUT)(gap)\ndr_steps = Dropout(DROPOUT)(Dense(DENSE_COUNT, activation = 'elu')(gap_dr))\nout_layer = Dense(t_y.shape[1], activation = 'softmax')(dr_steps)\n\nattn_model = Model(inputs = [pt_features], \n                   outputs = [out_layer], name = 'trained_model')\n\nattn_model.summary()","metadata":{"_uuid":"b0f2055383236d17f0d5455ecc2af5de922fc3b8","execution":{"iopub.status.busy":"2024-05-05T18:24:32.804848Z","iopub.execute_input":"2024-05-05T18:24:32.805155Z","iopub.status.idle":"2024-05-05T18:24:33.08412Z","shell.execute_reply.started":"2024-05-05T18:24:32.805104Z","shell.execute_reply":"2024-05-05T18:24:33.083324Z"},"trusted":true},"execution_count":27,"outputs":[{"name":"stdout","text":"_________________________________________________________________\nLayer (type)                 Output Shape              Param #   \n=================================================================\nfeature_input (InputLayer)   (None, 16, 16, 1024)      0         \n_________________________________________________________________\nbatch_normalization_2 (Batch (None, 16, 16, 1024)      4096      \n_________________________________________________________________\nglobal_average_pooling2d_2 ( (None, 1024)              0         \n_________________________________________________________________\ndropout_3 (Dropout)          (None, 1024)              0         \n_________________________________________________________________\ndense_3 (Dense)              (None, 128)               131200    \n_________________________________________________________________\ndropout_4 (Dropout)          (None, 128)               0         \n_________________________________________________________________\ndense_4 (Dense)              (None, 3)                 387       \n=================================================================\nTotal params: 135,683\nTrainable params: 133,635\nNon-trainable params: 2,048\n_________________________________________________________________\n","output_type":"stream"}]},{"cell_type":"code","source":"from keras.models import Sequential\nfrom keras.optimizers import Adam\npneu_model = Sequential(name = 'combined_model')\nbase_pretrained_model.trainable = False\npneu_model.add(base_pretrained_model)\npneu_model.add(attn_model)\npneu_model.compile(optimizer = Adam(lr = LEARN_RATE), loss = 'categorical_crossentropy',\n                           metrics = ['categorical_accuracy'])\npneu_model.summary()","metadata":{"_uuid":"74103ef71c30a9725949fbeed864174cbe62c69d","execution":{"iopub.status.busy":"2024-05-05T18:24:33.085419Z","iopub.execute_input":"2024-05-05T18:24:33.085737Z","iopub.status.idle":"2024-05-05T18:24:55.523219Z","shell.execute_reply.started":"2024-05-05T18:24:33.085676Z","shell.execute_reply":"2024-05-05T18:24:55.522479Z"},"trusted":true},"execution_count":28,"outputs":[{"name":"stdout","text":"_________________________________________________________________\nLayer (type)                 Output Shape              Param #   \n=================================================================\ndensenet121 (Model)          (None, 16, 16, 1024)      7037504   \n_________________________________________________________________\ntrained_model (Model)        (None, 3)                 135683    \n=================================================================\nTotal params: 7,173,187\nTrainable params: 133,635\nNon-trainable params: 7,039,552\n_________________________________________________________________\n","output_type":"stream"}]},{"cell_type":"code","source":"from keras.callbacks import ModelCheckpoint, LearningRateScheduler, EarlyStopping, ReduceLROnPlateau\nweight_path=\"{}_weights.best.hdf5\".format('lung_opacity')\n\ncheckpoint = ModelCheckpoint(weight_path, monitor='val_loss', verbose=1, \n                             save_best_only=True, mode='min', save_weights_only = True)\n\nreduceLROnPlat = ReduceLROnPlateau(monitor='val_loss', factor=0.8, \n                                   patience=10, verbose=1, mode='auto', \n                                   epsilon=0.0001, cooldown=5, min_lr=0.0001)\nearly = EarlyStopping(monitor=\"val_loss\", \n                      mode=\"min\", \n                      patience=10) # probably needs to be more patient, but kaggle time is limited\ncallbacks_list = [checkpoint, early, reduceLROnPlat]","metadata":{"_uuid":"0f6ff110ed2db877c1daee57de63e7dc16593c0e","execution":{"iopub.status.busy":"2024-05-05T18:24:55.524322Z","iopub.execute_input":"2024-05-05T18:24:55.524547Z","iopub.status.idle":"2024-05-05T18:24:55.536632Z","shell.execute_reply.started":"2024-05-05T18:24:55.524509Z","shell.execute_reply":"2024-05-05T18:24:55.535923Z"},"trusted":true},"execution_count":29,"outputs":[{"name":"stderr","text":"/opt/conda/lib/python3.6/site-packages/Keras-2.1.5-py3.6.egg/keras/callbacks.py:919: UserWarning: `epsilon` argument is deprecated and will be removed, use `min_delta` insted.\n","output_type":"stream"}]},{"cell_type":"code","source":"train_gen.batch_size = BATCH_SIZE\npneu_model.fit_generator(train_gen, \n                         validation_data = (valid_X, valid_Y), \n                         epochs=20, \n                         callbacks=callbacks_list,\n                         workers=2)","metadata":{"_uuid":"58347af9669fed1e5308ac90a6ce06b3579761c5","execution":{"iopub.status.busy":"2024-05-05T18:25:37.190267Z","iopub.execute_input":"2024-05-05T18:25:37.190651Z","iopub.status.idle":"2024-05-05T18:32:55.869837Z","shell.execute_reply.started":"2024-05-05T18:25:37.190582Z","shell.execute_reply":"2024-05-05T18:32:55.869033Z"},"trusted":true},"execution_count":31,"outputs":[{"name":"stdout","text":"Epoch 1/1\n250/250 [==============================] - 437s 2s/step - loss: 0.9465 - categorical_accuracy: 0.5355 - val_loss: 1.1449 - val_categorical_accuracy: 0.3783\n\nEpoch 00001: val_loss improved from inf to 1.14489, saving model to lung_opacity_weights.best.hdf5\n","output_type":"stream"},{"execution_count":31,"output_type":"execute_result","data":{"text/plain":"<keras.callbacks.History at 0x7af254056828>"},"metadata":{}}]},{"cell_type":"code","source":"pneu_model.load_weights(weight_path)\npneu_model.save('full_model.h5')","metadata":{"_uuid":"08e50876364886ef4a39723055136d741597348a","execution":{"iopub.status.busy":"2024-05-05T18:32:55.870978Z","iopub.execute_input":"2024-05-05T18:32:55.871284Z","iopub.status.idle":"2024-05-05T18:33:03.747271Z","shell.execute_reply.started":"2024-05-05T18:32:55.871241Z","shell.execute_reply":"2024-05-05T18:33:03.74665Z"},"trusted":true},"execution_count":32,"outputs":[]},{"cell_type":"code","source":"pred_Y = pneu_model.predict(valid_X, \n                          batch_size = BATCH_SIZE, \n                          verbose = True)","metadata":{"_uuid":"f67dd5726e24517401ff0724f2aa07b1787cf791","execution":{"iopub.status.busy":"2024-05-05T18:33:03.748325Z","iopub.execute_input":"2024-05-05T18:33:03.748555Z","iopub.status.idle":"2024-05-05T18:33:21.102289Z","shell.execute_reply.started":"2024-05-05T18:33:03.748517Z","shell.execute_reply":"2024-05-05T18:33:21.101493Z"},"trusted":true},"execution_count":33,"outputs":[{"name":"stdout","text":"600/600 [==============================] - 17s 29ms/step\n","output_type":"stream"}]},{"cell_type":"code","source":"from sklearn.metrics import classification_report, confusion_matrix\nplt.matshow(confusion_matrix(np.argmax(valid_Y, -1), np.argmax(pred_Y,-1)))\nprint(classification_report(np.argmax(valid_Y, -1), \n                            np.argmax(pred_Y,-1), target_names = class_enc.classes_))","metadata":{"_uuid":"40f86cabdbea5e8dfc736882c4e7f5036297ec0a","execution":{"iopub.status.busy":"2024-05-05T18:33:21.103434Z","iopub.execute_input":"2024-05-05T18:33:21.103693Z","iopub.status.idle":"2024-05-05T18:33:21.203643Z","shell.execute_reply.started":"2024-05-05T18:33:21.103646Z","shell.execute_reply":"2024-05-05T18:33:21.202861Z"},"trusted":true},"execution_count":34,"outputs":[{"name":"stdout","text":"                              precision    recall  f1-score   support\n\n                Lung Opacity       0.62      0.21      0.31       136\nNo Lung Opacity / Not Normal       0.47      0.03      0.05       271\n                      Normal       0.36      0.99      0.52       193\n\n                 avg / total       0.47      0.38      0.26       600\n\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"<matplotlib.figure.Figure at 0x7af246eb9e80>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAP4AAAECCAYAAADesWqHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAB3tJREFUeJzt28+LXfUdxvHnyfxoMo110xYkhsaF\nCFIowjRQhC6EQurGLs1CShFmJSp041/hrl0ETEtBlIIuhArShSAFkdTgInGwBEubaSxJCWhqKJMJ\nny4y0KQZuGeS+73fe+7zfsHA3MnhzMOZvDn3zg9XlQBkOdB7AIDZI3wgEOEDgQgfCET4QCDCBwIt\nfPi2T9j+zPYF26/03jOvbJ+2fdn2ud5b5pnto7bft71p+7ztl3pvuhde5J/j216S9BdJP5G0JemM\npJNV9WnXYXPI9o8l/VvS76rq+733zCvbD0l6qKrO2n5A0seSfja2/1OLfsc/LulCVX1eVduS3pT0\nTOdNc6mqPpB0tfeOeVdVX1TV2d33r0nalHSk76r9W/Twj0i6eNvjLY3wi4T5ZPuYpCckfdR3yf4t\nevje42OL+9oGM2P7sKS3JL1cVV/13rNfix7+lqSjtz1+WNKlTluwIGyv6Fb0r1fV27333ItFD/+M\npEdtP2J7VdKzkt7pvAkjZtuSXpO0WVWv9t5zrxY6/KrakfSCpPd065swv6+q831XzSfbb0j6UNJj\ntrdsP99705x6UtJzkp6y/cnu29O9R+3XQv84D8DeFvqOD2BvhA8EInwgEOEDgQgfCBQTvu2N3hvG\ngOs03JivVUz4kkb7RZoxrtNwo71WSeED2NXkF3hWl9bq0MqDUz/v/di+eV2rS2u9Z9zpxo3eC+6y\nXf/Rqg/2nnGX7e8e6j3hLjvXv9by2jd7z7jDjS+vauf613v9cdodllt88kMrD+pHx37e4tQLpf7x\nz94TRuPiL37Qe8Io/PU3w/58gKf6QCDCBwIRPhCI8IFAhA8EInwgEOEDgQgfCET4QCDCBwIRPhCI\n8IFAhA8EInwgEOEDgQgfCET4QCDCBwIRPhCI8IFAhA8EInwgEOEDgQgfCET4QCDCBwIRPhCI8IFA\nhA8EInwgEOEDgQaFb/uE7c9sX7D9SutRANqaGL7tJUm/kvRTSY9LOmn78dbDALQz5I5/XNKFqvq8\nqrYlvSnpmbazALQ0JPwjki7e9nhr92MARmp5wDHe42N110H2hqQNSTq4/K37nAWgpSF3/C1JR297\n/LCkS/9/UFWdqqr1qlpfXVqb1j4ADQwJ/4ykR20/YntV0rOS3mk7C0BLE5/qV9WO7RckvSdpSdLp\nqjrffBmAZoa8xldVvSvp3cZbAMwIv7kHBCJ8IBDhA4EIHwhE+EAgwgcCET4QiPCBQIQPBCJ8IBDh\nA4EIHwhE+EAgwgcCET4QiPCBQIQPBCJ8IBDhA4EIHwhE+EAgwgcCET4QiPCBQIQPBCJ8IBDhA4EI\nHwhE+EAgwgcCET4QiPCBQMtNznrzpvTltSanXihVvReMxrkXf917wigc/8OVQcdxxwcCET4QiPCB\nQIQPBCJ8IBDhA4EIHwhE+EAgwgcCET4QiPCBQIQPBCJ8IBDhA4EIHwhE+EAgwgcCET4QiPCBQIQP\nBCJ8IBDhA4EIHwhE+EAgwgcCET4QiPCBQIQPBCJ8IBDhA4EIHwhE+EAgwgcCTQzf9mnbl22fm8Ug\nAO0NueP/VtKJxjsAzNDE8KvqA0lXZ7AFwIzwGh8ItDytE9nekLQhSQcPHJ7WaQE0MLU7flWdqqr1\nqlpfPXBoWqcF0ABP9YFAQ36c94akDyU9ZnvL9vPtZwFoaeJr/Ko6OYshAGaHp/pAIMIHAhE+EIjw\ngUCEDwQifCAQ4QOBCB8IRPhAIMIHAhE+EIjwgUCEDwQifCAQ4QOBCB8IRPhAIMIHAhE+EIjwgUCE\nDwQifCAQ4QOBCB8IRPhAIMIHAhE+EIjwgUCEDwQifCAQ4QOBlluctHZ2dPPylRanXixVvReMxouX\nfth7wij8/cbVQcdxxwcCET4QiPCBQIQPBCJ8IBDhA4EIHwhE+EAgwgcCET4QiPCBQIQPBCJ8IBDh\nA4EIHwhE+EAgwgcCET4QiPCBQIQPBCJ8IBDhA4EIHwhE+EAgwgcCET4QiPCBQIQPBCJ8IBDhA4EI\nHwhE+EAgwgcCTQzf9lHb79vetH3e9kuzGAagneUBx+xI+mVVnbX9gKSPbf+xqj5tvA1AIxPv+FX1\nRVWd3X3/mqRNSUdaDwPQzr5e49s+JukJSR+1GANgNoY81Zck2T4s6S1JL1fVV3v8+4akDUk6qLWp\nDQQwfYPu+LZXdCv616vq7b2OqapTVbVeVesr+sY0NwKYsiHf1bek1yRtVtWr7ScBaG3IHf9JSc9J\nesr2J7tvTzfeBaChia/xq+pPkjyDLQBmhN/cAwIRPhCI8IFAhA8EInwgEOEDgQgfCET4QCDCBwIR\nPhCI8IFAhA8EInwgEOEDgQgfCET4QCDCBwIRPhCI8IFAhA8EInwgEOEDgQgfCET4QCDCBwIRPhCI\n8IFAhA8EInwgEOEDgQgfCET4QCBX1fRPal+R9Lepn/j+fFvSv3qPGAGu03DzeK2+V1XfmXRQk/Dn\nke0/V9V67x3zjus03JivFU/1gUCEDwRKCv9U7wEjwXUabrTXKuY1PoD/SbrjA9hF+EAgwgcCET4Q\niPCBQP8F9+JBvl9NaZAAAAAASUVORK5CYII=\n"},"metadata":{}}]},{"cell_type":"code","source":"from sklearn.metrics import roc_curve, roc_auc_score\nfpr, tpr, _ = roc_curve(np.argmax(valid_Y,-1)==0, pred_Y[:,0])\nfig, ax1 = plt.subplots(1,1, figsize = (5, 5), dpi = 250)\nax1.plot(fpr, tpr, 'b.-', label = 'VGG-Model (AUC:%2.2f)' % roc_auc_score(np.argmax(valid_Y,-1)==0, pred_Y[:,0]))\nax1.plot(fpr, fpr, 'k-', label = 'Random Guessing')\nax1.legend(loc = 4)\nax1.set_xlabel('False Positive Rate')\nax1.set_ylabel('True Positive Rate');\nax1.set_title('Lung Opacity ROC Curve')\nfig.savefig('roc_valid.pdf')","metadata":{"_uuid":"1c217311f0f08d5473f493244cc4c4e17c0b6e9d","execution":{"iopub.status.busy":"2024-05-05T18:33:29.071549Z","iopub.execute_input":"2024-05-05T18:33:29.071826Z","iopub.status.idle":"2024-05-05T18:33:29.511432Z","shell.execute_reply.started":"2024-05-05T18:33:29.071785Z","shell.execute_reply":"2024-05-05T18:33:29.51066Z"},"trusted":true},"execution_count":35,"outputs":[{"output_type":"display_data","data":{"text/plain":"<matplotlib.figure.Figure at 0x7af25f4720f0>","image/png":"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\n221X5qiAVCR9AAAAUHaFtF9fvjy/ezQ0SD175h1am0JnLaAwN910ky644ILYsc0331wzZszQ1772\ntTJHBbREIWcAAACUVaHt1//61/zOmTu3ZUFopKKzFpC/a6+9Nm3CZ6utttKcOXNI+KBqkPQBAABA\nTrJ12MpVudqvu+ffXrwtorMWkBt31xVXXKFLL700dnybbbbR7Nmz1ZuiVagiLO8CAABARrl22MpV\nOduvF9JevC2isxaQmbvr4osv1g033BA7/vWvf10zZsxQjx49yhwZkBlJHwAAAKSVT4etYcNyu2Y5\n268X2l68raKzFtCSu+u8887TL37xi9jxnXbaSdOmTdMmm2xS5siA7FjeBQAAgFj5dthqbMztus3t\n10utGO3FAbRta9as0dlnn5024bPbbrtp5syZJHxQtZjpAwAAgFiFdNgaMyb7sR07St26SYsW5R5L\n9+7SrrvSXhxA+axZs0YjRozQXXfdFTvet29fPfXUU+rWrVuZIwNyR9IHAAAALRTaYatXr5KEo4UL\npR/8QPrTn2gvDqD0Vq9ere9+97u69957Y8f32msvTZkyRV3KuV4VKABJHwAAgCJoagpdqZYsCTVr\nBgyo7doo5eqwlY9PPgm1g7ItOaO9OIDWWLVqlU4++WSNGzcudnzvvffWpEmT1Llz5zJHBuSPmj4A\nAACt0NgYWlr36SOddpo0cmT4s0+fsD/XOjfVppwdtnK1eDHtxQGU1sqVKzV8+PC0CZ+BAwdqypQp\nJHxQM5jpAwAAUKBSdLaqFtW4YqG5ExftxQGUwvLly3XsscfqD3/4Q+z4QQcdpMcee0xrr712mSMD\nCkfSBwAAoAD5draaO7e2lhs1d9iqliVecZ24aC8OoFi+/PJLHXXUUZoyZUrs+NChQ/Xwww+rU6dO\nZY4MaB2SPgAAAAUoVWeralFoh62XXsrt2FNOoRMXgOrwxRdf6PDDD9e0adNix4cNG6Zx48apoaGh\nzJEBrUfSBwAAIE/V1tmqWixcKK1cmdvsm+uvl/r3pxMXgMr6/PPPNXToUM2ePTt2/LjjjtPvf/97\ndezYscyRAcVBIWcAAIA8VWNnq2qR5n1TC337hlpH2T44pxMXgFL59NNPddBBB6VN+Jx00km6//77\nSfigppH0AQAAyFM1draqFosX534snbgAVMonn3yiAw44QM8++2zs+Omnn6577rlHHTqwOAa1jWcw\n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\nXbpU3bp18zgzANiLx7sAAIhRRoaUnx//demoBQBt09atW3XBBReELPhceOGFKi4upuADwHcUfQAA\niIOiotY3TY4EHbUAoG3asmWLhg0bptWrV7vGL774Yi1evFip8fyhAABRougDAEAchNstq0sX59US\nOmoBQNv0zTffaOjQoaqoqHCNX3LJJXrmmWeUkpLibWIAEAJFHwAA4qSwUFqyRDrpJPd4bq708svO\ni45aANC+1NXVafDgwaqqqnKNT5o0SfPnz1eX1ir7AOAhviMBABAH1dXOI14lJaHHNG70TEctAGhf\nvv76aw0ePFh/+9vfXONTp07V//t//0+dOvGZOoC2haIPAAAxKi6Wxo6VGhpaHldeLg0c6DwGVlhI\nRy0AaA++/PJL5ebm6q233nKNX3PNNXrooYdkmt6+CQBtAKVoAABiUF0dXsGnUUODM766OrF5AQBi\n99lnnykrKytkwefGG2+k4AOgTaPoAwBADIqKwi/4NGpokO64IyHpAADipLa2VoMGDdK7777rGr/1\n1lt17733UvAB0KZR9AEAIEo1NVJpaXRzS0qc+QCAtuejjz7SoEGD9K9//cs1fscdd+iuu+6i4AOg\nzWNPHwBA0qupkSoqpPp6KS3N2TA5HnvpVFTs3Zw5UtY6mzizpw8AtC0ffvihsrOzVROiMj9z5kzd\ncsst3iYFAFGi6AMASFqNHbVKS/ctzhgj5ec7sczM6Nevr48tv7q62OYDAOLr/fffV3Z2tjZs2OAa\nnzVrln72s595nBUARI/HuwAASam42OmUVVLS/G4ca53zAwc646KVlhZbjunpsc0HAMTP+vXrNWjQ\noJAFn4cffpiCD4B2h6IPACDphNtRK9ZOWllZzl1D0TDGmQ8A8N8777yjrKwsffrpp81ixhjNmTNH\nV199tQ+ZAUBseLwLAJB0Iumo1dAgTZ8uzZsX+XVSUqTevaWvvop87rBh0pFHRj4PABBfb7zxhnJz\nc/WVyzdzY4x+//vfa9KkSd4nBgBxQNEHAJBUoumoVVYm9e+fkHRcpaZKM2Z4dz0AgLvq6moNHjxY\nmzZtahbr3LmznnrqKY0bN86HzAAgPij6AACSSiwdtbwydWpsG0gDAGL38ssva+jQofrmm2+axbp0\n6aKFCxdq5MiRPmQGAPFD0QcAkFRi7ajlhaOP9jsDAOjY/vSnPyk/P19btmxpFktJSdGSJUs0fPhw\n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\nAByEPkCCiPTUrhNOiE4fAKTdu3dryJAhKi4udq3n5OSoqKhIbdq08bgzAAAA4AfN/G4AQONEuh1I\nRkZ0+gBS3c6dO3XFFVeEDHwGDhyoBQsWEPgAAADAd4Q+QILIynJO3woHp3YB0bF9+3ZddtllWrJk\niWt98ODBmj9/vlq1auVxZwAAAEB9hD5AgujaVcrNDW8up3YBkdu6datyc3NVVlbmWh86dKgKCwuV\nlpbmcWcAAACAO0IfIIEUFDincDUFp3YBkauurla/fv20cuVK1/rw4cM1Z84ctWjBVnkAAACIH4Q+\nQALJzJTmzm188JOWJhUWcmoXEIlNmzapT58+evPNN13r119/vV544QU1b97c484AAACAhhH6AAkm\nL09atUrq3Tv0GGOkAQOccYMGedcbkGy+++479erVS2+//bZrffTo0XruuefUrBn/OgUAAED84T50\nIAFlZkqzZkldutSvTZ7sBD3s4QNEZsOGDerdu7c++OAD1/qYMWP05JNPyoS7wzoAAAAQY/zVJJBk\nhgwh8AEi9dVXXykrKytk4HPPPfcQ+AAAACDuEfoAABBk3bp16tmzpz788EPX+rhx4zRx4kQCHwAA\nAMQ9Hu8CACDg888/V3Z2tj777DPX+iOPPKL777/f464AAACA8BD6AAAg6dNPP1V2dra++OIL1/qk\nSZM0duxYj7sCAAAAwkfoAwBIeR9//LF69eql9evXu9Z/+9vf6o477vC4KwAAACAyhD4AgJS2evVq\nZWdn65tvvnGtT5s2TTfddJPHXQEAAACRI/QBAKSs999/X71799a3335br2aM0YwZM3Tttdf60BkA\nAAAQOUIfAEBKeuedd9SnTx99//339WrNmjXT7NmzNWzYMB86AwAAAKKD0AcAkHLeeust9evXT5s3\nb65Xa968uV566SVdffXVPnQGAAAARA+hDwAgpaxatUqXXnqptm7dWq/WsmVLFRYWKi8vz4fOAAAA\ngOgi9AESUFWV9NprfncBJJ6Kigr1799f27dvr1dLS0vTq6++qgEDBvjQGQAAABB9zfxuAEDjVVZK\nAwZIxx0n/frX7mNGjHDGAfix0tJSXXrppa6BT+vWrfX6668T+AAAACCpEPoACaKoSOreXVq0qOFx\nZWXOuKIib/oCEsHixYs1YMAA7dy5s17toIMO0qJFi9SvXz8fOgMAAABih9AHSACVlVJ+vlRT07jx\n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\nzZt6bY6Ojli7di3GjBljh8iIiIiIiIiUMelDpKL0dGDHDvPGxsVpxlPZc/DgQfTs2RN37tzRa3Ny\ncsL69esxYsQIO0RGRERERERkGJM+RCpKSgKEMG+sEEBysqrhkAr279+PXr16ISsrS69VaA7/AAAg\nAElEQVTN2dkZmzdvxuDBg+0QGRERERERUcl4ZDuRijIzLRuvsJCE7CghIQH9+vXD/fv39dpcXFzw\nww8/oHfv3naIjIiIiIiIqHRc6UOkolu3LBvv6alOHGS53bt3IywsTDHh4+rqiri4OCZ8iIiIiIio\nTGPSh0glsbHA3Lnmj5ckICBAtXDIAtu2bUP//v3x4MEDvTY3Nzfs3LkTQUFBdoiMiIiIiIjIeEz6\nEKmg6Jj2vDzz5wgNBXx81IuJzBMbG4vw8HDkKhzB5u7ujj179sDf398OkREREREREZmGSR8iFZhz\nTLs2Z2dg1izVwiEzxcTEYNiwYcjPz9dr8/T0RHx8PJ555hk7REZERERERGQ6Jn2ILGTJMe1FFi8G\n/PxUCYfMtGbNGowePRoFBQV6bV5eXkhISECnTp3sEBkREREREZF5mPQhspAlx7QXqVpVlVDITMuX\nL8fYsWNRWFio11anTh0kJSXh6aeftkNkRERERERE5mPSh8hClh7TDvCodntasmQJJkyYAKGQuatf\nvz6SkpLQrl07O0RGRERERERkGSZ9iCx05ozlc/Codvv48ssvMXnyZMU2b29vJCcno3Xr1jaOioiI\niIiISB1M+hBZIC0NWLbMsjl4VLt9zJ8/H2+++aZiW5MmTZCcnIwWLVrYOCoiIiIiIiL1MOlDZIHI\nSMuOaQd4VLs9fPLJJ3jnnXcU2x577DHs378fzZo1s3FURERERERE6mLSh8hMapzaxaPabUsIgZkz\nZ+LDDz9UbG/RogWSk5PhwywcERERERFVAE72DoCovLL01C4nJyAmhke124oQAu+99x4+//xzxfZW\nrVohISEBDRo0sHFkRERERERE1sGkD5GZLD216403gEGD1ImFSiaEwD//+U98+eWXiu3t2rVDfHw8\n6tata+PIiIiIiIiIrIdJHyIz1ahh2fj27dWJg0pWWFiI1157DUuWLFFsf+qpp7B3717UqlXLxpER\nERERERFZF5M+RGYKCNCcvGXOFi+e2GUbhYWFeOmll/D9998rtnfq1Am7du1CzZo1bRwZERERERGR\n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\nsXr1ajRo0KCAakxEREQFRVVx8eJF63FMTEyu6RMTE21WXipdujRq1aqFkiVLIj09HQcPHsSpU6cA\nGL/qP/3000hPT8ewYcPcrtMzzzxj7Y0QFxeH2267DSEhIdi9e7e1rqdOnUKnTp3w559/omTJkk7z\nWrJkCfr06YPMzEzrufLly6NOnTq4du0adu3ahbS0NIwdOxbR0dFu1/HXX3/FQw89hJSUFJvnol69\nesjKysIff/xh7Y20efNmtG7dGqtXr0ajRo3cyn/69OkYNWoUAGP4fP369REaGoqdO3ci2bIk69at\nW9G7d2/89NNPWLt2Lbp374709HSEhYWhUaNGiI2NxYEDB6wral26dAldu3bFvn37nM61466MjAys\nXLnSetyjRw+UKVMmX3n6yuXLl9G1a1f8+uuv1nMhISFo0KABypQpg0uXLmHXrl3IyMhAWloaXn75\nZZw9exbvv/++w/xWrFiB/v37Iysry3qucuXKqFGjBkqUKIErV67g8OHDOHv2rPW6OW22nTt3omvX\nrrh27Zr1XNmyZVG7dm1ERkYiJSUFx48fx4kTJ3LNJ69mzZqFJ598EgBQokQJNGzYENHR0Th06BCO\nHTsGAEhPT8cTTzyBW2+9NcdKgWa///47HnzwQVwyLQUcExOD+vXrIywsDPv27UNSUhK+/fZb3Lhx\nw6b3IVGeFFZ0iVvR3ODnPX1UVbdsUb3vPnXYs6d2bdXx41WPHDHSTps2zWk0vlKlSrp3716fPhYi\nIsof9vQJLp729Nm6davN//Zx48blmn727NnauHFj/eCDD/TgwYMO0yQkJGjnzp2teZYoUUIPHTrk\nNE9zT5/sXkTx8fH6/fff640bN6zpMjIydMqUKTY9j3Or79mzZ216vsTFxem8efNs8rx48aKOGjXK\nWs/o6GiXvUMuXLiglSpVsqaLiYnRzz77TNPT061prl27pu+++66Gh4db09WtW1evXbvmME9zL4uo\nqCgNDw/XqKgo/fTTT23yvX79urW+2dv3339v7Q0ycuRIvXDhgk3ec+bM0bCwMGv6l156yelz5q4N\nGzbY1GH69On5zjM3BdnTp0+fPjY9ed544w29dOmSTRpzO8neFixY4DC/hg0bWtO0atVKf//9d4fp\njh49qtOmTdP69evrqVOnclzv2rWrNZ969erp+vXrHeZz5swZ/eyzz/Suu+7S3377zWEaT3v6REVF\n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\nrOMPwP3u3irY0arfpYAtieUgyxKBhjeB3wOPuPtAEhTPF2a2HnGtViDO5xXgTnd/vsN+ViGCAp8A\nliZmtLxNXJvpKU+SAGb2V8T3aA1iCeQ84lo9TXyPXp1/o+s/M1sB2JZYwjmPWLr2wEBmdnVhTEb8\n/RlP/C1YnPhb8EcisfkTrgcOEZH5RkEfEREREREREZEepOVdIiIiIiIiIiI9SEEfEREREREREZEe\npKCPiIiIiIiIiEgPUtBHRERERERERKQHKegjIiIiIiIiItKDFPQREREREREREelBCvqIiIiIiIiI\niPQgBX1ERERERERERHqQgj4iIiIiIiIiIj1IQR8RERERERERkR6koI+IiIiIiIiISA9S0EdERERE\nREREpAcp6CMiIiIiIiIi0oMU9BERERERERER6UEK+oiIiIiIiIiI9CAFfUREREREREREepCCPiIi\nIiIiIiIiPUhBHxERERERERGRHqSgj4iIiIiIiIhID1LQR0RERERERESkBynoIyIiIiIiIiLSgxT0\nERERERERERHpQQr6iIiIiIiIiIj0IAV9RERERERERER6kII+IiIiIiIiIiI9SEEfEREREREREZEe\npKCPiIiIiIiIiEgPUtBHRERERERERKQHKegjIiIiIiIiItKD/h+BxXWJ3lijtAAAAABJRU5ErkJg\ngg==\n"},"metadata":{}}]},{"cell_type":"markdown","source":"# Make a submission\nWe load in the test images and make a submission using those images and a guess for $x, y$ and the width and height","metadata":{"_kg_hide-output":true,"_kg_hide-input":true,"_uuid":"cf0f87166720c24ced3b2eae4b2afe77e6529225"}},{"cell_type":"code","source":"from glob import glob\nsub_img_df = pd.DataFrame({'path': \n              glob('../input/rsna-pneumonia-detection-challenge/stage_2_test_images/*.dcm')})\nsub_img_df['patientId'] = sub_img_df['path'].map(lambda x: os.path.splitext(os.path.basename(x))[0])\nsub_img_df.sample(3)","metadata":{"_uuid":"2c8c27edd01ad87653e2c55284d64fa029afc472","execution":{"iopub.status.busy":"2024-05-05T18:33:31.585556Z","iopub.execute_input":"2024-05-05T18:33:31.585835Z","iopub.status.idle":"2024-05-05T18:33:31.850774Z","shell.execute_reply.started":"2024-05-05T18:33:31.585793Z","shell.execute_reply":"2024-05-05T18:33:31.849954Z"},"trusted":true},"execution_count":36,"outputs":[{"execution_count":36,"output_type":"execute_result","data":{"text/plain":"                                                   path  \\\n329   ../input/rsna-pneumonia-detection-challenge/st...   \n889   ../input/rsna-pneumonia-detection-challenge/st...   \n2723  ../input/rsna-pneumonia-detection-challenge/st...   \n\n                                 patientId  \n329   0f12250b-7596-4a1e-a1df-dd18aa1f421b  \n889   002fcb77-ef76-4626-ab34-5070f15c20db  \n2723  1fd519c1-7a2f-47dc-8904-a5174fe7d2e6  ","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>path</th>\n      <th>patientId</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>329</th>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n      <td>0f12250b-7596-4a1e-a1df-dd18aa1f421b</td>\n    </tr>\n    <tr>\n      <th>889</th>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n      <td>002fcb77-ef76-4626-ab34-5070f15c20db</td>\n    </tr>\n    <tr>\n      <th>2723</th>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n      <td>1fd519c1-7a2f-47dc-8904-a5174fe7d2e6</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"cell_type":"code","source":"submission_gen = flow_from_dataframe(img_gen, \n                                     sub_img_df, \n                             path_col = 'path',\n                            y_col = 'patientId', \n                            target_size = IMG_SIZE,\n                             color_mode = 'rgb',\n                            batch_size = BATCH_SIZE,\n                                    shuffle=False)","metadata":{"_uuid":"96510ebcc831ef0e9839b4050ba8294c5732fbb3","execution":{"iopub.status.busy":"2024-05-05T18:33:32.251771Z","iopub.execute_input":"2024-05-05T18:33:32.252173Z","iopub.status.idle":"2024-05-05T18:33:37.477082Z","shell.execute_reply.started":"2024-05-05T18:33:32.252112Z","shell.execute_reply":"2024-05-05T18:33:37.4763Z"},"trusted":true},"execution_count":37,"outputs":[{"name":"stdout","text":"## Ignore next message from keras, values are replaced anyways: seed: None\nFound 0 images belonging to 0 classes.\nReinserting dataframe: 3000 images\n","output_type":"stream"}]},{"cell_type":"markdown","source":"## Predict for each image twice and average the results\nWe shouldn't get the same answer since the data are being augmented (here at so-called test-time)","metadata":{"_uuid":"9ac79cbc09dce5a09fd05e021792b5ff26eb658e"}},{"cell_type":"code","source":"from tqdm import tqdm\nsub_steps = 2*sub_img_df.shape[0]//BATCH_SIZE\nout_ids, out_vec = [], []\nfor _, (t_x, t_y) in zip(tqdm(range(sub_steps)), submission_gen):\n    out_vec += [pneu_model.predict(t_x)]\n    out_ids += [t_y]\nout_vec = np.concatenate(out_vec, 0)\nout_ids = np.concatenate(out_ids, 0)","metadata":{"_uuid":"bd564f016278a31bee570f7d6aedc953ca2ff432","execution":{"iopub.status.busy":"2024-05-05T18:33:37.478106Z","iopub.execute_input":"2024-05-05T18:33:37.478364Z","iopub.status.idle":"2024-05-05T18:46:18.568897Z","shell.execute_reply.started":"2024-05-05T18:33:37.47832Z","shell.execute_reply":"2024-05-05T18:46:18.568114Z"},"trusted":true},"execution_count":38,"outputs":[{"name":"stderr","text":"100%|██████████| 250/250 [12:41<00:00,  3.04s/it]\n","output_type":"stream"}]},{"cell_type":"code","source":"pred_df = pd.DataFrame(out_vec, columns=class_enc.classes_)\npred_df['patientId'] = out_ids\npred_avg_df = pred_df.groupby('patientId').agg('mean').reset_index()\npred_avg_df['Lung Opacity'].hist()\npred_avg_df.sample(2)","metadata":{"_uuid":"527e6c29c66f2de2ec03b53f8de2406b6d051608","execution":{"iopub.status.busy":"2024-05-05T18:46:18.570137Z","iopub.execute_input":"2024-05-05T18:46:18.570364Z","iopub.status.idle":"2024-05-05T18:46:18.73808Z","shell.execute_reply.started":"2024-05-05T18:46:18.570326Z","shell.execute_reply":"2024-05-05T18:46:18.737354Z"},"trusted":true},"execution_count":39,"outputs":[{"execution_count":39,"output_type":"execute_result","data":{"text/plain":"                                 patientId  Lung Opacity  \\\n2864  c008eff7-942c-4675-937b-d18905e8c770      0.302538   \n1805  237ca121-3ec6-4571-a31b-30da50562224      0.305486   \n\n      No Lung Opacity / Not Normal    Normal  \n2864                      0.338301  0.359161  \n1805                      0.313845  0.380669  ","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patientId</th>\n      <th>Lung Opacity</th>\n      <th>No Lung Opacity / Not Normal</th>\n      <th>Normal</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2864</th>\n      <td>c008eff7-942c-4675-937b-d18905e8c770</td>\n      <td>0.302538</td>\n      <td>0.338301</td>\n      <td>0.359161</td>\n    </tr>\n    <tr>\n      <th>1805</th>\n      <td>237ca121-3ec6-4571-a31b-30da50562224</td>\n      <td>0.305486</td>\n      <td>0.313845</td>\n      <td>0.380669</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<matplotlib.figure.Figure at 0x7af25f4a0048>","image/png":"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\nRU5ErkJggg==\n"},"metadata":{}}]},{"cell_type":"markdown","source":"### Simple Strategy\nWe use the `Lung Opacity` as our confidence and predict the image image. It will hopefully do a little bit better than a trivial baseline, and can be massively improved.","metadata":{"_uuid":"5c7e5670184b1b9e7de9ad842de6ca671731b057"}},{"cell_type":"code","source":"pred_avg_df['PredictionString'] = pred_avg_df['Lung Opacity'].map(lambda x: '%2.2f 0 0 1024 1024' % x)","metadata":{"_uuid":"68ee79e068892d310cc39209517ec20172db8889","execution":{"iopub.status.busy":"2024-05-05T18:46:18.739341Z","iopub.execute_input":"2024-05-05T18:46:18.739647Z","iopub.status.idle":"2024-05-05T18:46:18.747388Z","shell.execute_reply.started":"2024-05-05T18:46:18.739589Z","shell.execute_reply":"2024-05-05T18:46:18.746579Z"},"trusted":true},"execution_count":40,"outputs":[]},{"cell_type":"code","source":"pred_avg_df[['patientId', 'PredictionString']].to_csv('submission.csv', index=False)","metadata":{"_uuid":"d746f6e21788945f5dc19843811a4e9068302255","execution":{"iopub.status.busy":"2024-05-05T18:46:18.748492Z","iopub.execute_input":"2024-05-05T18:46:18.748743Z","iopub.status.idle":"2024-05-05T18:46:18.776569Z","shell.execute_reply.started":"2024-05-05T18:46:18.748695Z","shell.execute_reply":"2024-05-05T18:46:18.775841Z"},"trusted":true},"execution_count":41,"outputs":[]},{"cell_type":"markdown","source":"# Test from training set","metadata":{}},{"cell_type":"code","source":"from glob import glob\nsub_img_df = pd.DataFrame({'path': \n              glob('../input/rsna-pneumonia-detection-challenge/stage_2_test_images/*.dcm')})\nsub_img_df['patientId'] = sub_img_df['path'].map(lambda x: os.path.splitext(os.path.basename(x))[0])\nsub_img_df.sample(3)","metadata":{"execution":{"iopub.status.busy":"2024-05-05T18:46:30.995803Z","iopub.execute_input":"2024-05-05T18:46:30.996177Z","iopub.status.idle":"2024-05-05T18:46:31.038359Z","shell.execute_reply.started":"2024-05-05T18:46:30.996113Z","shell.execute_reply":"2024-05-05T18:46:31.037637Z"},"trusted":true},"execution_count":42,"outputs":[{"execution_count":42,"output_type":"execute_result","data":{"text/plain":"                                                   path  \\\n1737  ../input/rsna-pneumonia-detection-challenge/st...   \n2210  ../input/rsna-pneumonia-detection-challenge/st...   \n1807  ../input/rsna-pneumonia-detection-challenge/st...   \n\n                                 patientId  \n1737  2dc57d64-67fa-4de7-aad4-b1f37f504b96  \n2210  2c543fc5-9506-4853-8643-d9f9b5e8b318  \n1807  1095560b-dc4b-4896-a37d-3e8943ea1dcc  ","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>path</th>\n      <th>patientId</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>1737</th>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n      <td>2dc57d64-67fa-4de7-aad4-b1f37f504b96</td>\n    </tr>\n    <tr>\n      <th>2210</th>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n      <td>2c543fc5-9506-4853-8643-d9f9b5e8b318</td>\n    </tr>\n    <tr>\n      <th>1807</th>\n      <td>../input/rsna-pneumonia-detection-challenge/st...</td>\n      <td>1095560b-dc4b-4896-a37d-3e8943ea1dcc</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"cell_type":"code","source":"submission_gen = flow_from_dataframe(img_gen, \n                                     sub_img_df, \n                             path_col = 'path',\n                            y_col = 'patientId', \n                            target_size = IMG_SIZE,\n                             color_mode = 'rgb',\n                            batch_size = BATCH_SIZE,\n                                    shuffle=False)","metadata":{"execution":{"iopub.status.busy":"2024-05-05T18:46:32.354706Z","iopub.execute_input":"2024-05-05T18:46:32.355045Z","iopub.status.idle":"2024-05-05T18:46:33.943093Z","shell.execute_reply.started":"2024-05-05T18:46:32.354959Z","shell.execute_reply":"2024-05-05T18:46:33.942249Z"},"trusted":true},"execution_count":43,"outputs":[{"name":"stdout","text":"## Ignore next message from keras, values are replaced anyways: seed: None\nFound 0 images belonging to 0 classes.\nReinserting dataframe: 3000 images\n","output_type":"stream"}]},{"cell_type":"code","source":"from tqdm import tqdm\nsub_steps = 2*sub_img_df.shape[0]//BATCH_SIZE\nout_ids, out_vec = [], []\nfor _, (t_x, t_y) in zip(tqdm(range(sub_steps)), submission_gen):\n    out_vec += [pneu_model.predict(t_x)]\n    out_ids += [t_y]\nout_vec = np.concatenate(out_vec, 0)\nout_ids = np.concatenate(out_ids, 0)","metadata":{"execution":{"iopub.status.busy":"2024-05-05T18:46:35.571265Z","iopub.execute_input":"2024-05-05T18:46:35.571608Z","iopub.status.idle":"2024-05-05T18:46:48.569257Z","shell.execute_reply.started":"2024-05-05T18:46:35.571539Z","shell.execute_reply":"2024-05-05T18:46:48.567854Z"},"trusted":true},"execution_count":44,"outputs":[{"name":"stderr","text":"  2%|▏         | 4/250 [00:11<12:07,  2.96s/it]","output_type":"stream"},{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)","\u001b[0;32m<ipython-input-44-eeda22c2af81>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0msub_steps\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0msub_img_df\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m//\u001b[0m\u001b[0mBATCH_SIZE\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0mout_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mout_vec\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mt_x\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt_y\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtqdm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msub_steps\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubmission_gen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      5\u001b[0m     \u001b[0mout_vec\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mpneu_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt_x\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m     \u001b[0mout_ids\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mt_y\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/Keras-2.1.5-py3.6.egg/keras/preprocessing/image.py\u001b[0m in \u001b[0;36m__next__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1040\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1041\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m__next__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1042\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1043\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1044\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_get_batches_of_transformed_samples\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex_array\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/Keras-2.1.5-py3.6.egg/keras/preprocessing/image.py\u001b[0m in \u001b[0;36mnext\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m   1448\u001b[0m         \u001b[0;31m# The transformation of images is not under thread lock\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1449\u001b[0m         \u001b[0;31m# so it can be done in parallel\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1450\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_batches_of_transformed_samples\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindex_array\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/Keras-2.1.5-py3.6.egg/keras/preprocessing/image.py\u001b[0m in \u001b[0;36m_get_batches_of_transformed_samples\u001b[0;34m(self, index_array)\u001b[0m\n\u001b[1;32m   1411\u001b[0m                            interpolation=self.interpolation)\n\u001b[1;32m   1412\u001b[0m             \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mimg_to_array\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata_format\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata_format\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1413\u001b[0;31m             \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimage_data_generator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandom_transform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1414\u001b[0m             \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimage_data_generator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstandardize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1415\u001b[0m             \u001b[0mbatch_x\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/Keras-2.1.5-py3.6.egg/keras/preprocessing/image.py\u001b[0m in \u001b[0;36mrandom_transform\u001b[0;34m(self, x, seed)\u001b[0m\n\u001b[1;32m    882\u001b[0m             \u001b[0mtransform_matrix\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtransform_matrix_offset_center\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtransform_matrix\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    883\u001b[0m             x = apply_transform(x, transform_matrix, img_channel_axis,\n\u001b[0;32m--> 884\u001b[0;31m                                 fill_mode=self.fill_mode, cval=self.cval)\n\u001b[0m\u001b[1;32m    885\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    886\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchannel_shift_range\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/Keras-2.1.5-py3.6.egg/keras/preprocessing/image.py\u001b[0m in \u001b[0;36mapply_transform\u001b[0;34m(x, transform_matrix, channel_axis, fill_mode, cval)\u001b[0m\n\u001b[1;32m    262\u001b[0m         \u001b[0morder\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    263\u001b[0m         \u001b[0mmode\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfill_mode\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 264\u001b[0;31m         cval=cval) for x_channel in x]\n\u001b[0m\u001b[1;32m    265\u001b[0m     \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchannel_images\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    266\u001b[0m     \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrollaxis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchannel_axis\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/Keras-2.1.5-py3.6.egg/keras/preprocessing/image.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m    262\u001b[0m         \u001b[0morder\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    263\u001b[0m         \u001b[0mmode\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfill_mode\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 264\u001b[0;31m         cval=cval) for x_channel in x]\n\u001b[0m\u001b[1;32m    265\u001b[0m     \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchannel_images\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    266\u001b[0m     \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrollaxis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchannel_axis\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/scipy/ndimage/interpolation.py\u001b[0m in \u001b[0;36maffine_transform\u001b[0;34m(input, matrix, offset, output_shape, output, order, mode, cval, prefilter)\u001b[0m\n\u001b[1;32m    484\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    485\u001b[0m         _nd_image.geometric_transform(filtered, None, None, matrix, offset,\n\u001b[0;32m--> 486\u001b[0;31m                                       output, order, mode, cval, None, None)\n\u001b[0m\u001b[1;32m    487\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mreturn_value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    488\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mKeyboardInterrupt\u001b[0m: "],"ename":"KeyboardInterrupt","evalue":"","output_type":"error"}]},{"cell_type":"code","source":"pred_df = pd.DataFrame(out_vec, columns=class_enc.classes_)\npred_df['patientId'] = out_ids\npred_avg_df = pred_df.groupby('patientId').agg('mean').reset_index()\npred_avg_df['Lung Opacity'].hist()\npred_avg_df.sample(2)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred_avg_df['PredictionString'] = pred_avg_df['Lung Opacity'].map(lambda x: '%2.2f 0 0 1024 1024' % x)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred_avg_df[['patientId', 'PredictionString']].to_csv('submission_DenseNet121.csv', index=False)","metadata":{},"execution_count":null,"outputs":[]}]}