{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import os,sys\n", "sys.path.insert(0,\"..\")\n", "from glob import glob\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import torch\n", "import torchvision\n", "import sys\n", "import torch.nn.functional as F\n", "import tqdm\n", "import sklearn, sklearn.metrics\n", "import pandas as pd\n", "import torchxrayvision as xrv" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Lung Lesion doesn't exist. Adding nans instead.\n", "Fracture doesn't exist. Adding nans instead.\n", "Lung Opacity doesn't exist. Adding nans instead.\n", "Enlarged Cardiomediastinum doesn't exist. Adding nans instead.\n" ] } ], "source": [ "d_nih = xrv.datasets.NIH_Dataset(imgpath=\"/home/users/joecohen/group/joecohen/images-512-NIH\")\n", "xrv.datasets.relabel_dataset(xrv.datasets.default_pathologies, d_nih)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'Tube', 'Aortic Atheromatosis', 'Tuberculosis', 'Aortic Elongation', 'Hemidiaphragm Elevation', 'Flattened Diaphragm', 'Support Devices', 'Costophrenic Angle Blunting', 'Air Trapping', 'Scoliosis', 'Hilar Enlargement', 'Bronchiectasis', 'Granuloma'} will be dropped\n", "Lung Lesion doesn't exist. Adding nans instead.\n", "Lung Opacity doesn't exist. Adding nans instead.\n", "Enlarged Cardiomediastinum doesn't exist. Adding nans instead.\n" ] } ], "source": [ "d_pc = xrv.datasets.PC_Dataset(imgpath=\"/home/users/joecohen/group/joecohen/images-512-PC\")\n", "xrv.datasets.relabel_dataset(xrv.datasets.default_pathologies, d_pc)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Atelectasis': 0.0,\n", " 'Consolidation': 1.0,\n", " 'Infiltration': 1.0,\n", " 'Pneumothorax': 0.0,\n", " 'Edema': 0.0,\n", " 'Emphysema': 0.0,\n", " 'Fibrosis': 0.0,\n", " 'Effusion': 1.0,\n", " 'Pneumonia': 0.0,\n", " 'Pleural_Thickening': 0.0,\n", " 'Cardiomegaly': 0.0,\n", " 'Nodule': 0.0,\n", " 'Mass': 0.0,\n", " 'Hernia': 0.0,\n", " 'Lung Lesion': nan,\n", " 'Fracture': nan,\n", " 'Lung Opacity': nan,\n", " 'Enlarged Cardiomediastinum': nan}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sample = d_nih[40]\n", "plt.imshow(sample[\"img\"][0], cmap=\"Greys_r\");\n", "dict(zip(d_pc.pathologies,sample[\"lab\"]))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Atelectasis': 'Atelectasis',\n", " 'Consolidation': 'Consolidation',\n", " 'Infiltration': 'Infiltration',\n", " 'Pneumothorax': 'Pneumothorax',\n", " 'Edema': 'Edema',\n", " 'Emphysema': 'Emphysema',\n", " 'Fibrosis': 'Fibrosis',\n", " 'Effusion': 'Effusion',\n", " 'Pneumonia': 'Pneumonia',\n", " 'Pleural_Thickening': 'Pleural_Thickening',\n", " 'Cardiomegaly': 'Cardiomegaly',\n", " 'Nodule': 'Nodule',\n", " 'Mass': 'Mass',\n", " 'Hernia': 'Hernia',\n", " 'Lung Lesion': 'Lung Lesion',\n", " 'Fracture': 'Fracture',\n", " 'Lung Opacity': 'Lung Opacity',\n", " 'Enlarged Cardiomediastinum': 'Enlarged Cardiomediastinum'}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = xrv.models.DenseNet(weights=\"all\")\n", "# does the model align with the dataset?\n", "dict(zip(model.pathologies,xrv.datasets.default_pathologies))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Warning: Input size (512x512) is not the native resolution (224x224) for this model. A resize will be performed but this could impact performance.\n" ] }, { "data": { "text/plain": [ "{'Atelectasis': (0.54616153, 0.0),\n", " 'Consolidation': (0.5414902, 1.0),\n", " 'Infiltration': (0.58784056, 1.0),\n", " 'Pneumothorax': (0.5097357, 0.0),\n", " 'Edema': (0.1553145, 0.0),\n", " 'Emphysema': (0.5164833, 0.0),\n", " 'Fibrosis': (0.5037881, 0.0),\n", " 'Effusion': (0.536857, 1.0),\n", " 'Pneumonia': (0.6651179, 0.0),\n", " 'Pleural_Thickening': (0.53961545, 0.0),\n", " 'Cardiomegaly': (0.39778435, 0.0),\n", " 'Nodule': (0.5290049, 0.0),\n", " 'Mass': (0.612293, 0.0),\n", " 'Hernia': (0.24932922, 0.0),\n", " 'Lung Lesion': (0.035506018, nan),\n", " 'Fracture': (0.47508, nan),\n", " 'Lung Opacity': (0.7333375, nan),\n", " 'Enlarged Cardiomediastinum': (0.51983666, nan)}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = xrv.models.DenseNet(weights=\"all\")\n", "with torch.no_grad():\n", " out = model(torch.from_numpy(sample[\"img\"]).unsqueeze(0)).cpu()\n", " \n", "dict(zip(model.pathologies,zip(out[0].detach().numpy(), sample[\"lab\"])))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Warning: Input size (512x512) is not the native resolution (224x224) for this model. A resize will be performed but this could impact performance.\n" ] }, { "data": { "text/plain": [ "{'Atelectasis': (0.5583771, 0.0),\n", " 'Consolidation': (0.5279943, 1.0),\n", " 'Infiltration': (0.60061914, 1.0),\n", " 'Pneumothorax': (0.5082071, 0.0),\n", " 'Edema': (0.5038578, 0.0),\n", " 'Emphysema': (0.5029421, 0.0),\n", " 'Fibrosis': (0.50516164, 0.0),\n", " 'Effusion': (0.7720166, 1.0),\n", " 'Pneumonia': (0.50302047, 0.0),\n", " 'Pleural_Thickening': (0.62468415, 0.0),\n", " 'Cardiomegaly': (0.5258018, 0.0),\n", " 'Nodule': (0.5501213, 0.0),\n", " 'Mass': (0.6658441, 0.0),\n", " 'Hernia': (0.5014529, 0.0),\n", " '': (0.5, nan)}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = xrv.models.DenseNet(weights=\"nih\")\n", "with torch.no_grad():\n", " out = model(torch.from_numpy(sample[\"img\"]).unsqueeze(0)).cpu()\n", " \n", "dict(zip(model.pathologies,zip(out[0].detach().numpy(), sample[\"lab\"])))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# small test eval\n", "model = xrv.models.DenseNet(weights=\"all\")\n", "if torch.cuda.is_available():\n", " model = model.cuda()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ " 0%| | 1/500 [00:00<01:36, 5.16it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Warning: Input size (512x512) is not the native resolution (224x224) for this model. A resize will be performed but this could impact performance.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 500/500 [00:24<00:00, 20.46it/s]\n" ] } ], "source": [ "outs = []\n", "labs = []\n", "with torch.no_grad():\n", " np.random.seed(0)\n", " for i in tqdm.tqdm(np.random.randint(0,len(d_nih),500)):\n", " sample = d_nih[i]\n", " labs.append(sample[\"lab\"])\n", " image = torch.from_numpy(sample[\"img\"]).unsqueeze(0)\n", " if torch.cuda.is_available():\n", " image = image.cuda()\n", " out = model(image).cpu()\n", " outs.append(out.detach().numpy()[0])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "results = []\n", "for i in range(14):\n", " result = {}\n", " result[\"Pathology\"] = model.pathologies[i]\n", " if len(np.unique(np.asarray(labs)[:,i])) > 1:\n", " labels = np.asarray(labs)[:,i].astype(bool)\n", " preds = np.asarray(outs)[:,i]\n", " result[\"AUC\"] = sklearn.metrics.roc_auc_score(labels, preds)\n", " result[\"Acc\"] = sklearn.metrics.accuracy_score(labels, preds > 0.5)\n", " result[\"F1\"] = sklearn.metrics.f1_score(labels, preds > 0.5)\n", " results.append(result)\n", " " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PathologyAUCAccF1
0Atelectasis0.8196130.8080.261538
1Consolidation0.7151550.8920.100000
2Infiltration0.6413980.4720.241379
3Pneumothorax0.8953930.8720.135135
4EdemaNaNNaNNaN
5Emphysema0.8815520.6840.048193
6Fibrosis0.8224580.5040.074627
7Effusion0.9119440.9300.444444
8PneumoniaNaNNaNNaN
9Pleural_Thickening0.9049800.7800.098361
10Cardiomegaly0.9219280.9240.208333
11Nodule0.7495300.6960.240000
12Mass0.8779760.7540.236025
13Hernia0.5160640.9860.000000
\n", "
" ], "text/plain": [ " Pathology AUC Acc F1\n", "0 Atelectasis 0.819613 0.808 0.261538\n", "1 Consolidation 0.715155 0.892 0.100000\n", "2 Infiltration 0.641398 0.472 0.241379\n", "3 Pneumothorax 0.895393 0.872 0.135135\n", "4 Edema NaN NaN NaN\n", "5 Emphysema 0.881552 0.684 0.048193\n", "6 Fibrosis 0.822458 0.504 0.074627\n", "7 Effusion 0.911944 0.930 0.444444\n", "8 Pneumonia NaN NaN NaN\n", "9 Pleural_Thickening 0.904980 0.780 0.098361\n", "10 Cardiomegaly 0.921928 0.924 0.208333\n", "11 Nodule 0.749530 0.696 0.240000\n", "12 Mass 0.877976 0.754 0.236025\n", "13 Hernia 0.516064 0.986 0.000000" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame(results)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.0" } }, "nbformat": 4, "nbformat_minor": 4 }