{"cells":[{"metadata":{},"cell_type":"markdown","source":"## VinBigData Chest X-ray Abnormalities Detection\n### Automatically localize and classify thoracic abnormalities from chest radiographs\n"},{"metadata":{},"cell_type":"markdown","source":"![LhW7qsw.png](https://i.imgur.com/LhW7qsw.png)"},{"metadata":{},"cell_type":"markdown","source":"## Data Description"},{"metadata":{},"cell_type":"markdown","source":"Data Description In this competition, we are classifying common thoracic lung diseases and localizing critical findings. This is an object detection and classification problem.\n\nFor each test image, you will be predicting a bounding box and class for all findings. If you predict that there are no findings, you should create a prediction of \"14 1 0 0 1 1\" (14 is the class ID for no finding, and this provides a one-pixel bounding box with a confidence of 1.0).\n\nThe images are in DICOM format, which means they contain additional data that might be useful for visualizing and classifying."},{"metadata":{},"cell_type":"markdown","source":"**Dataset information**\nThe dataset comprises 18,000 postero-anterior (PA) CXR scans in DICOM format, which were de-identified to protect patient privacy. All images were labeled by a panel of experienced radiologists for the presence of 14 critical radiographic findings as listed below:\n\n> 0 - Aortic enlargement 1 - Atelectasis 2 - Calcification 3 - Cardiomegaly 4 - Consolidation 5 - ILD 6 - Infiltration 7 - Lung Opacity 8 - Nodule/Mass 9 - Other lesion 10 - Pleural effusion 11 - Pleural thickening 12 - Pneumothorax 13 - Pulmonary fibrosis"},{"metadata":{},"cell_type":"markdown","source":"**Aortic enlargement** == An abnormal bulge that occurs in the wall of the major blood vessel.\n\n**Atelectasis** == Collapse of a part of the lung due to a decrease in the amount of air in the alveoli resulting in volume loss and increased density.\n\n**Calcification** == Deposition of calcium salts in the lung.\n\n**Cardiomegaly** == Enlargement of the heart, occurs when the heart of an adult patient is larger than normal and the cardiothoracic ratio is greater than 0.5.\nConsolidation == Any pathologic process that fills the alveoli with fluid, pus, blood, cells (including tumor cells) or other substances resulting in lobar, diffuse or multifocal ill-defined opacities.\n\n**Interstitial lung disease (ILD)** == Involvement of the supporting tissue of the lung parenchyma resulting in fine or coarse reticular opacities or small nodules.\n\n**Infiltration** == An abnormal substance that accumulates gradually within cells or body tissues or any substance or type of cell that occurs within or spreads as through the interstices (interstitium and/or alveoli) of the lung, that is foreign to the lung, or that accumulates in greater than normal quantity within it.\n\n**Lung opacity** == Any abnormal focal or generalized opacity or opacities in lung fields (blanket tag including but not limited to consolidation, cavity, fibrosis, nodule, mass, calcification, interstitial thickening, etc.)\n\n**Nodule/Mass** == Any space occupying lesion either solitary or multiple.\n\n**Other lesion**== Other lesions that are not on the list of findings or abnormalities mentioned above.\n\n**Pleural effusion** == Abnormal accumulations of fluid within the pleural space.\n\n**Pleural thickening** == Any form of thickening involving either the parietal or visceral pleura.\n\n**Pneumothorax **== The presence of gas (air) in the pleural space.\n\n**Pulmonary fibrosis** == An excess of fibrotic tissue in the lung.**"},{"metadata":{},"cell_type":"markdown","source":"### import library"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import sys\nprint(sys.executable)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import os\nimport glob\nimport random\n\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\n%matplotlib inline\nimport seaborn as sns\nfrom tqdm.notebook import tqdm\n\nimport cv2\nimport pydicom\nfrom pydicom.pixel_data_handlers.util import apply_voi_lut\n\nprint(\"Python version used = \", sys.version)\nprint(\"Numpy version used = \", np.__version__)\nprint(\"OpenCV version used = \", cv2.__version__)\nprint(\"pydicom version used = \", pydicom.__version__)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train = pd.DataFrame(pd.read_csv(\"../input/vinbigdata-chest-xray-abnormalities-detection/train.csv\"))\n\nprint(\"Shape of dataframe = \", train.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train['class_name'].value_counts()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_class_distribution = train['class_name'].value_counts().sort_values()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.info()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"So, we have significant missing values in our dataset. Let's see the exact NaN count per feature. \n\nDifferent colormaps available can be found here : [matplotlib_colormaps](https://matplotlib.org/3.1.0/tutorials/colors/colormaps.html)"},{"metadata":{"trusted":true},"cell_type":"code","source":"train.isna().sum().to_frame().rename(columns = {0 : \"NaN_count\"}).style.background_gradient(cmap = \"copper\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## A Note On Dataset Feature - Class ID: \n\nFollowing are the class names and ids which are used on the metadata dataframe.\n\n* 0 - Aortic enlargement\n* 1 - Atelectasis\n* 2 - Calcification\n* 3 - Cardiomegaly\n* 4 - Consolidation\n* 5 - ILD\n* 6 - Infiltration\n* 7 - Lung Opacity\n* 8 - Nodule/Mass\n* 9 - Other lesion\n* 10 - Pleural effusion\n* 11 - Pleural thickening\n* 12 - Pneumothorax\n* 13 - Pulmonary fibrosis\n* 14 - No Finding(healthy)"},{"metadata":{"trusted":true},"cell_type":"code","source":"map_name_to_id = {\n    \"Aortic enlargement\" : 0,\n    \"Atelectasis\" : 1,\n    \"Calcification\" : 2,\n    \"Cardiomegaly\" : 3,\n    \"Consolidation\" : 4,\n    \"ILD\" : 5,\n    \"Infiltration\" : 6,\n    \"Lung Opacity\" : 7,\n    \"Nodule/Mass\" : 8,\n    \"Other lesion\" : 9,\n    \"Pleural effusion\" : 10,\n    \"Pleural thickening\" : 11,\n    \"Pneumothorax\" : 12,\n    \"Pulmonary fibrosis\" : 13,\n    \"No Finding(healthy)\" : 14\n}","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Class Name : \n\nThough we know there are 14 + 1(no finding) classes into which images are classified, and a single image may be diagnosed with multiple diseases, hence it becomes imperative to at least check whether the labels are available altogether in one entry(*we have to separate them if that's the case*), or the entry is repeated in the dataframe, having new label corresponding to it, till all the classes it's been diagnosed with are covered."},{"metadata":{"trusted":true},"cell_type":"code","source":"train.class_name.unique(), len(train.class_name.unique())","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"So, we don't have a scenario where labels are merged like *\"Aortic enlargmenet| Lung opacity\"*, which we would have to separate otherwise."},{"metadata":{},"cell_type":"markdown","source":"# Label Count : "},{"metadata":{"trusted":true},"cell_type":"code","source":"label_count = dict()\nfor label in tqdm(train.class_id.values) : \n    if label not in label_count : \n        label_count[label] = 1\n    else:\n        label_count[label] += 1\n\nlabels = [\"Aortic Enlargement\", \"Atelectasis\", \"Calcification\", \"Cardiomegaly\", \"Consolidation\", \"ILD\", \"Infiltration\", \"Lung Opacity\", \"Nodule/Mass\",\n         \"Other lesion\", \"Pleural effusion\", \"Pleural thickening\", \"Pneumothorax\", \"Pulmonary fibrosis\", \"No finding\"]\ncounts = [label_count[0], label_count[1], label_count[2], label_count[3], label_count[4], label_count[5], label_count[6], label_count[7], label_count[8],\n         label_count[9], label_count[10], label_count[11], label_count[12], label_count[13], label_count[14]]\nexplode = [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05]\n\nfig, ax = plt.subplots(figsize = (20, 12))\nax.pie(counts, explode = explode, labels = labels, shadow = True, startangle = 90)\nax.axis(\"equal\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Inference** : \n\nIn terms of skewness, it's quite a number. We can observe nearly 45%+ cases thankfully healthy(no-finding), however the diseased ones, the distribution of diseases is skewed. From overall perspective too, the imbalance is high enough to ring danger alarms! Down the line, this will have to be addressed."},{"metadata":{},"cell_type":"markdown","source":"# Radiologist Contribution Imbalance Study\n\nAs we have several radiologists labeling each image, it might be helpful to know whether there is existing of an imbalance in their respective work. Let's have a look at that."},{"metadata":{"trusted":true},"cell_type":"code","source":"train.rad_id.unique()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"r_count = dict()\nfor rad_id in train.rad_id.values : \n    if rad_id in r_count : \n        r_count[rad_id] += 1\n    else:\n        r_count[rad_id] = 1\n\nrad_ids = ['R11', 'R7', 'R10', 'R9', 'R17', 'R3', 'R8', 'R6', 'R5', 'R4', 'R2', 'R16', 'R1', 'R15', 'R13', 'R12', 'R14']\ncounts = [r_count['R11'], r_count['R7'], r_count['R10'], r_count['R9'], r_count['R17'], r_count['R3'], r_count['R8'], r_count['R6'],\n         r_count['R5'], r_count['R4'], r_count['R2'], r_count['R16'], r_count['R1'], r_count['R15'], r_count['R13'], r_count['R12'], r_count['R14']]\nexplode = [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05]\n\nfig, ax = plt.subplots(figsize = (20, 12))\nax.pie(counts, explode = explode, labels = rad_ids, shadow = True, startangle = 90)\nax.axis(\"equal\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"So, yes there is heavy imbalance when contribution of radiologists are concerned. R10, R9 and R8 collectively dominate the overall space!"},{"metadata":{},"cell_type":"markdown","source":"# A Note ON DICOM File Format : \n\n![O8sWTt0.jpg](https://i.imgur.com/O8sWTt0.jpg)\n\n\nDICOM stands for **Digital Imaging and Communications in Medicine**. It is a standard, internationally accepted format to view, store, retrieve and share medical images. DICOM conforms to set protocols to maintain accuracy of information relayed through medical images. \n\nAny DICOM medical image consists of two parts — **a header and the actual image itself**. \n\n![image.png](attachment:image.png)\n\n* The header consists of data that describes the image, the most important being patient data. This includes the patient’s demographic information such as the patient’s name, age, gender, and date of birth. \n* The header may also give information on image characteristics such as acquisition parameters, pixel intensity, matrix size, and dimensions of the image. All info in DICOM(.dcm) files are provided using **separate tags**. \n\n16 bit DICOM images have values ranging from -32768 to 32768 while 8-bit grey-scale images store values from 0 to 255. The value ranges in DICOM images are useful as they correlate with the Hounsfield Scale which is a quantitative scale for describing radio-density (or a way of viewing different tissues densities).\n\n## Hounsfield Units : \n\nThe Hounsfield Units (HU) make up the grayscale in medical CT imaging. **It is a scale from black to white of 4096 values (12 bit) and ranges from -1024 HU to 3071 HU (zero is also a value). It is defined by the following:**\n\n*-1024 HU is black and represents air (in the lungs). 0 HU represents water (since we consist mostly out of water, there is a large peak here). 3071 HU is white and represents the densest tissue in a human body, tooth enamel. All other tissues are somewhere within this scale; fat is around -100 HU, muscle around 100 HU and bone spans from 200 HU (trabecular/spongeous bone) to about 2000 HU (cortical bone).**\n\nMetal implants typically have very high Hounsfield units. Therefore, they are attributed the maximum value in typical 12-bit CT scans (3071).\n\n## DICOM LUT : \n\n* **Modality LUT** : A \"Modality LUT \" allows the transformation of manufacturer-dependent pixel values into manufacturer-independent pixel values (e.g., Hounsfield units for CT images). \n* **VOI LUT** : A \"VOI LUT\" allows the transformation of the modality pixel values into pixel values that are meaningful for print or display. This transformation is applied after any \"Modality LUT\".","attachments":{"image.png":{"image/png":"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qVTXr183MjJatGjRnDlznJycUlNT8bgQpLy8vL744ouTJ08+evTI29vbyspKKpUGBgZOmDChsLBQrVZfvXrV0dHxyZMno0ePXrp0aVJSUl5e3tSpU1esWPHs2bM7d+6MHDly7969Eomke/fuoaGhz58/37Fjx+jRo+GHKpPJZs2atW7dOpgISVeB/ncpOJGb93yna+RAwTVv3rx9+/adOnVq06ZN+/btt2/frlAoysrKPv3007Fjx2ZlZZWUlNy/f79169arVq3KzMxMT0///PPP7ezsKisrS0pK8vPzX79+ffz48Z49e/bp0ycvL+/w4cNNmjSZPXu2TCY7e/Zs06ZNbWxsKioqbty48fnnnwM9a9asJk2aXLx4saqq6s2bN/379+/Ro0dWVhbuUnNzc3v37m1sbJyZmZmVlTV9+vS2bdvK5XIcCY1G079//7Vr12L9qdVqpVK5c+dONze3srIyPAWGahswYADUOsdx/v7+pqam586dO3LkyKBBgy5dugQ7O8iYRqOZOXOmu7s77EClUmnr1q2vXbv2/PlzCwuL+Ph4jUYzYsSIHTt2sCzr5ua2Z88etVp969YtU1PTqKiojIyM1NTUw4cPT5o0KT4+vl27dh4eHnfu3CksLISzFphNAwMDnZycFAoF6T8OGYaJHG0EijfIDKftwi/lDTpB8aEJwcA+y8HBoXv37sHBwceOHTt37lxycjIern366ac+Pj5yuVytVh84cEBPT69ly5atW7du1apV69atBw4cKJVKb926ZWZm1rp163bt2n322WdGRka5ublHjhxp2rTpqlWr1Gr1lStX9PT0nJ2dNRpNTExMhw4drK2tKyoqZs+e3aRJk6SkJI7jioqKRo4c2aZNm8zMTJzhkpOTu3Xr1qxZs88++wzstm7d+vnz5zgSGo1GX19/x44dZIxkwUESVCpVfHy8qampr68vjHRGRgb4CYInTpywtbVVqVRYc1BwGzZswHTp6+sfPXq0vLzcw8Nj3bp1OTk5Xbp0SUlJUavV7u7uP/74I8dx586da968+efvtnbt2rVv337s2LF5eXl37941Nzdv06aNgYHBpk2blEol7JR3797t6OhYUVGBwyE4ashEgoyXnJj/5oLT5h+6CAVnb29vZmZGXi+AeGCGW7BgAcz5V65cadGixfLlyxMTE+Pi4sLDw588eZKamjpw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"}}},{"metadata":{},"cell_type":"markdown","source":"# DICOM to Numpy Tensor : \n\nInsights taken from  : **[raddar notebook](https://www.kaggle.com/raddar/convert-dicom-to-np-array-the-correct-way)**\n\nRaw dicom data is not actually linearly convertable to \"human-friendly\" png/jpg. In fact, most of DICOM's store pixel values in exponential scale.\n\nSo in order to get jpg/png we need to apply some transformations. DICOM metadata stores information how to make such \"human-friendly\" transformations.\n\n## Fix Monochrome : \n\nRegarding fix_monochrome, we use that since .dcm images contains many shades of grey and black in it. Hence, to bring down it to the same level (normalize), we do this. It helps in getting better insights from the medical images. Also, MONOCHROME2 images have intensities inverted vs MONOCHROME1. One goes from 0=air to XXXX=bone, while the other goes from 0=bone to XXXX=air. Hence the operation `data = np.amax(data) - data` is needed."},{"metadata":{"trusted":true},"cell_type":"code","source":"def dicom2numpy(path, voi_lut = True, fix_monochrome = True) : \n    dicom = pydicom.read_file(path)\n    # VOI LUT (if available by DICOM device) is used to transform raw DICOM data to \"human-friendly\" view\n    if voi_lut == True : \n        data = apply_voi_lut(dicom.pixel_array, dicom)\n    else:\n        data = dicom.pixel_array\n    \n    if fix_monochrome == True and dicom.PhotometricInterpretation == \"MONOCHROME1\" : \n        data = np.amax(data) - data\n    \n    data = data - np.min(data)\n    data = data / np.max(data)\n    data = (data * 255).astype(np.uint8)\n    \n    return data","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sample_image1 = dicom2numpy(\"../input/vinbigdata-chest-xray-abnormalities-detection/train/0007d316f756b3fa0baea2ff514ce945.dicom\")\nprint(\"Shape = \", sample_image1.shape)\n\n\n\n#plt.imshow(dcm.pixel_array,cmap='gray')\n\nplt.figure(figsize = (20, 12))\nplt.imshow(sample_image1,cmap='gray')\nplt.grid(False)\nplt.title(\"Sample Image\", fontsize = 16)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\n# importing required libraries of opencv \nimport cv2 \n  \n# importing library for plotting \nfrom matplotlib import pyplot as plt \n  \n# reads an input image \nsample_image1 = dicom2numpy(\"../input/vinbigdata-chest-xray-abnormalities-detection/train/0007d316f756b3fa0baea2ff514ce945.dicom\")\nprint(\"Shape = \", sample_image1.shape)\n\n\n  \n# find frequency of pixels in range 0-255 \nhistr = cv2.calcHist([sample_image1],[0],None,[256],[0,256]) \n  \n# show the plotting graph of an image \n\nplt.plot(histr) \nplt.show() ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sample_image2 = dicom2numpy(\"../input/vinbigdata-chest-xray-abnormalities-detection/train/006e2726c6aa72f042a08b1406c39d52.dicom\")\nprint(\"Shape = \", sample_image2.shape)\n\n\n\n#plt.imshow(dcm.pixel_array,cmap='gray')\n\nplt.figure(figsize = (20, 12))\nplt.imshow(sample_image2,cmap='gray')\nplt.grid(False)\nplt.title(\"Sample Image\", fontsize = 16)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\n# importing required libraries of opencv \nimport cv2 \n  \n# importing library for plotting \nfrom matplotlib import pyplot as plt \n  \n# reads an input image \nsample_image2 = dicom2numpy(\"../input/vinbigdata-chest-xray-abnormalities-detection/train/006e2726c6aa72f042a08b1406c39d52.dicom\")\nprint(\"Shape = \", sample_image2.shape)\n\n\n  \n# find frequency of pixels in range 0-255 \nhistr = cv2.calcHist([sample_image2],[0],None,[256],[0,256]) \n  \n# show the plotting graph of an image \n\nplt.plot(histr) \nplt.show() ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize = (20, 20))\n\nplt.subplot(1,3,1)\nsample_image = dicom2numpy(\"../input/vinbigdata-chest-xray-abnormalities-detection/train/000434271f63a053c4128a0ba6352c7f.dicom\")\nplt.imshow(sample_image, cmap = \"gray\")\nplt.grid(False)\nplt.title(\"Sample Image\", fontsize = 18)\n\nplt.subplot(1,3,2)\nsample_image = dicom2numpy(\"../input/vinbigdata-chest-xray-abnormalities-detection/train/000434271f63a053c4128a0ba6352c7f.dicom\", voi_lut = False)\nplt.imshow(sample_image, cmap = \"gray\")\nplt.grid(False)\nplt.title(\"Sample Image + VOI_LUT = False\", fontsize = 18)\n\nplt.subplot(1,3,3)\nsample_image = dicom2numpy(\"../input/vinbigdata-chest-xray-abnormalities-detection/train/000434271f63a053c4128a0ba6352c7f.dicom\", fix_monochrome = False)\nplt.imshow(sample_image, cmap = \"gray\")\nplt.grid(False)\nplt.title(\"Sample Image + Fix Monochrome = False\", fontsize = 18)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Also, let's look at the metadata header of DICOM as well."},{"metadata":{"trusted":true},"cell_type":"code","source":"print(pydicom.read_file(\"../input/vinbigdata-chest-xray-abnormalities-detection/train/000434271f63a053c4128a0ba6352c7f.dicom\"))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Extracting Metadata from this."},{"metadata":{"trusted":true},"cell_type":"code","source":"train_image_ids = train.image_id.unique() # one person might have multiple diseases.\nprint(\"Number of unique IDS = \", len(train_image_ids))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"rows = []\ncolumns = []\nsex = []\nfor pat_id in tqdm(train_image_ids) : \n    path = \"../input/vinbigdata-chest-xray-abnormalities-detection/train/\"+pat_id+\".dicom\"\n    dicom_file = pydicom.read_file(path, stop_before_pixels = True)\n    rows.append(dicom_file.Rows)\n    columns.append(dicom_file.Columns)\n    sex.append(dicom_file.PatientSex)\n\nadditional_metadata = pd.DataFrame({\n    \"image_id\" : train_image_ids,\n    \"rows\" : rows,\n    \"columns\" : columns,\n    \"sex\" : sex\n})\n\nprint(\"Shape of additional metadata frame = \", additional_metadata.shape)\nadditional_metadata.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Gender Analysis"},{"metadata":{"trusted":true},"cell_type":"code","source":"male_count = len(additional_metadata[additional_metadata[\"sex\"] == \"M\"])\nfemale_count = len(additional_metadata[additional_metadata[\"sex\"] == \"F\"])\n\nprint(\"Male : Female Ratio = \", male_count / female_count )","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"This is quite a healthy ratio between both genders. However, before closing the book on this one, let's cross confirm whether there are other genders too, in the dicom dataset."},{"metadata":{"trusted":true},"cell_type":"code","source":"additional_metadata.sex.unique()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Indeed, there are. Let's have a look at the count of them all."},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize = (12, 8))\nsns.countplot(additional_metadata[\"sex\"], palette = \"dark\")\nplt.grid(True)\nplt.axis('on')\nplt.title(\"Gender Count\", fontsize = 18)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Shape Analysis"},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize = (20, 12))\nx = additional_metadata[\"rows\"]\ny = additional_metadata[\"columns\"]\nplt.scatter(x, y, cmap = \"plasma\", label = \"Training Images\")\nplt.title(\"Shape Analysis Of Training Images\", fontsize = 18)\nplt.xlabel(\"Number Of Rows\", fontsize = 18)\nplt.ylabel(\"Number Of Columns\", fontsize = 18)\nplt.grid(True)\nplt.axis('on')\nplt.legend()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Majority of images have rows in range [2500, 3000] and columns = [2000, 3000]."},{"metadata":{},"cell_type":"markdown","source":"## Image Pixel Encapsulation\n\nHigher pixel count directly corresponds to quality and size of the image. Let's have a look at that too."},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize = (12, 8))\nx = additional_metadata[\"rows\"]\ny = additional_metadata[\"columns\"]\nsns.distplot(x * y, kde = True, color = \"brown\")\nplt.xlabel(\"pixel count\", fontsize = 16)\nplt.title(\"Pixel Count Analysis\", fontsize = 18)\nplt.grid(True)\nplt.axis(\"on\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Bounding Box Visualization"},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"We are only interested in visualizing bounding boxes. However, a good fraction of the bulk is healthy. So, it seems wise to drop it for this visualization purpose, as no bounding box exists for these cases. In dataframe, all coordinates are marked by NaN, indicating this fact."},{"metadata":{"trusted":true},"cell_type":"code","source":"df = train[train[\"class_id\"] != 14]\n\nimages = []\nimage_ids = df.image_id.values\nclass_ids = df.class_id.unique()\n\n# map label id to a random color(distinct for each class)\ncolor_mapping = dict()\nfor class_id in class_ids : \n    color_code = [random.randint(0, 255) for i in range(3)]\n    color_mapping[class_id] = color_code\n\nbox_thickness = 3\nscale = 4 # to scale the axes by this factor as images are real huge.\n\nfor i in tqdm(range(6)) : \n    image_id = np.random.choice(image_ids)\n    image_path = f\"../input/vinbigdata-chest-xray-abnormalities-detection/train/{image_id}.dicom\"\n    image = dicom2numpy(image_path)\n    image = cv2.resize(image, None, fx = 1/scale, fy = 1/scale)\n    \"\"\"\n    dsize is required param but if you still want the resize method to calculate the dsize for you then you may pass the param as None.\n    \"\"\"\n    image = np.stack([image, image, image], axis = -1)\n    \n    bounding_boxes = df.loc[df[\"image_id\"] == image_id, [\"x_min\", \"y_min\", \"x_max\", \"y_max\"]].values/scale\n    \"\"\"\n    as we previously scaled the axes, it makes sense to scale these values too.\n    \"\"\"\n    labels = df.loc[df[\"image_id\"] == image_id, [\"class_id\"]].values.squeeze()\n    \n    for label_id, box in zip(labels, bounding_boxes) : \n        color = color_mapping[label_id]\n        image = cv2.rectangle(image, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), color, box_thickness)\n    image = cv2.resize(image, (500, 500))\n    images.append(image)\n\nplt.figure(figsize = (20, 20))\nfor n in range(6) : \n    plt.subplot(3, 2, n+1)\n    annotated_image = images[n]\n    plt.imshow(annotated_image, cmap = \"gray\")\n    plt.grid(False)\n    plt.axis('off')\nplt.tight_layout()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Visualize Each Class Of Disease"},{"metadata":{"trusted":true},"cell_type":"code","source":"def plot_selected(class_name) :\n    class_id = map_name_to_id[class_name]\n    df = train[train[\"class_id\"] == class_id]\n    images = []\n    image_ids = df.image_id.values\n    color_mapping = [random.randint(0, 255) for i in range(3)]\n    box_thickness = 3\n    scale = 4\n    \n    for i in tqdm(range(6)) :\n        image_id = np.random.choice(image_ids)\n        image_path = f\"../input/vinbigdata-chest-xray-abnormalities-detection/train/{image_id}.dicom\"\n        image = dicom2numpy(image_path)\n        image = cv2.resize(image, None, fx = 1/scale, fy = 1/scale)\n        \"\"\"\n        dsize is required param but if you still want the resize method to calculate the dsize for you then you may pass the param as None.\n        \"\"\"\n        image = np.stack([image, image, image], axis = -1)\n    \n        bounding_boxes = df.loc[df[\"image_id\"] == image_id, [\"x_min\", \"y_min\", \"x_max\", \"y_max\"]].values/scale\n        \"\"\"\n        as we previously scaled the axes, it makes sense to scale these values too.\n        \"\"\"\n        \n        for box in bounding_boxes :\n            image = cv2.rectangle(image, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), color_mapping, box_thickness)\n        image = cv2.resize(image, (500, 500))\n        images.append(image)\n\n    plt.figure(figsize = (20, 20))\n    for n in range(6) : \n        plt.subplot(3, 2, n+1)\n        annotated_image = images[n]\n        plt.imshow(annotated_image, cmap = \"gray\")\n        plt.title(class_name, fontsize = 16)\n        plt.grid(False)\n        plt.axis('off')\n    plt.tight_layout()   ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for class_name in map_name_to_id : \n    if class_name != \"No Finding(healthy)\" : \n        print(f\"Samples of {class_name} images\")\n        plot_selected(class_name)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**References** : \n\n* [Building Neural Network for Medical Imaging using Deep Learning in Tensorflow (Part 1)](https://medium.com/@verma.chandan/building-neural-network-for-medical-imaging-using-deep-learning-in-tensorflow-part-1-ab993b7fb04f)\n* [Understanding DICOMs](https://towardsdatascience.com/understanding-dicoms-835cd2e57d0b)\n* [DISCUSSION THREAD] : [Doubts With Dicom](https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/211855#1157539)"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}