Tüdőgyulladás észlelése: Kaggle Challenge
A Kaggle (a világ legnagyobb adattudósok és gépi tanulók közössége) az észak-amerikai Radiológiai Társaság új kihívása, az „RSNA Pneumonia Detection Challenge” elé állította. Az Országos Egészségügyi Klinikai Központ pedig nyilvánosan biztosította a mellkasröntgen-adatkészletet, amelyet ebben a Kaggle-kihívásban is használnak.
Bevezetés:
Mielőtt belemerülne a kódba, nézzük meg, mi a probléma valójában? A tüdőgyulladás az egyik vagy mindkét tüdő fertőzése. Baktériumok, vírusok vagy gombák okozhatják. A bakteriálistüdőgyulladása felnőtteknél a leggyakoribb típus. A tüdőgyulladás gyulladást okoz a tüdejében lévő légzsákokban, amelyeket alveolusoknak neveznek. Az alveolusok megtelnek folyadékkal vagy gennyel, ami megnehezíti a légzést.
Tehát:Miért ez a kihívás?
A tüdőgyulladás az 5 év alatti gyermekek halálozásának több mint 15%-áért felelős nemzetközi szinten. 2015-ben 920 000 5 év alatti gyermek halt meg a betegségben. Az Egyesült Államokban 2015-ben a tüdőgyulladás miatt több mint 500 000 látogatást tettek a sürgősségi osztályokon, és több mint 50 000 haláleset történt.
A CXR-ek a leggyakrabban végzett diagnosztikai képalkotó vizsgálat. Számos tényező, például a páciens helyzete és a belégzés mélysége megváltoztathatja a CXR megjelenését, tovább nehezítve az értelmezést. Ezenkívül a klinikusoknak minden műszakban nagy mennyiségű képet kell olvasniuk.
A diagnosztikai szolgáltatások hatékonyságának és elérhetőségének javítása érdekében az "Észak-Amerikai Radiológiai Társaság (RSNA®)" felhívta a Kaggle gépi tanulási közösséget, és együttműködött az "USA"-val. National Institutes of Health», The Society of Thoracic Radiology és MD.ai, hogy gazdag adatkészletet dolgozzanak ki erre a kihívásra.
Most merüljön bele a kódolási részbe›
Most megvizsgáljuk a 2018-as RSNA Pneumonia-detektálási kihívás adatkészletét.
Követelmények:
pip install numpy, matplotlib, pandas
Most importálja a szükséges könyvtárakat a kihívás adatkészletének felfedezéséhez
import pydicom import os import pandas as pd import matplotlib.pylab as plt #path to the trained images dataset DATADIR = '../input/stage_1_train_images/' Patients_ID = os.listdir(DATADIR) labels_pd = pd.read_csv('../input/stage_1_train_labels.csv') labels_pd.head()
Kimenet a fenti kódhoz:
Most pedig lássuk az adatokat részletesen
patientId = labels_pd['patientId'][5] dcm = '../input/stage_1_train_images/%s.dcm' % patientId dcm_data = pydicom.read_file(dcm) print(dcm_data) Output: (0008, 0005) Specific Character Set CS: 'ISO_IR 100' (0008, 0016) SOP Class UID UI: Secondary Capture Image Storage (0008, 0018) SOP Instance UID UI: 1.2.276.0.7230010.3.1.4.8323329.6379.1517874325.469569 (0008, 0020) Study Date DA: '19010101' (0008, 0030) Study Time TM: '000000.00' (0008, 0050) Accession Number SH: '' (0008, 0060) Modality CS: 'CR' (0008, 0064) Conversion Type CS: 'WSD' (0008, 0090) Referring Physician's Name PN: '' (0008, 103e) Series Description LO: 'view: AP' (0010, 0010) Patient's Name PN: '00436515-870c-4b36-a041-de91049b9ab4' (0010, 0020) Patient ID LO: '00436515-870c-4b36-a041-de91049b9ab4' (0010, 0030) Patient's Birth Date DA: '' (0010, 0040) Patient's Sex CS: 'F' (0010, 1010) Patient's Age AS: '32' (0018, 0015) Body Part Examined CS: 'CHEST' (0018, 5101) View Position CS: 'AP' (0020, 000d) Study Instance UID UI: 1.2.276.0.7230010.3.1.2.8323329.6379.1517874325.469568 (0020, 000e) Series Instance UID UI: 1.2.276.0.7230010.3.1.3.8323329.6379.1517874325.469567 (0020, 0010) Study ID SH: '' (0020, 0011) Series Number IS: '1' (0020, 0013) Instance Number IS: '1' (0020, 0020) Patient Orientation CS: '' (0028, 0002) Samples per Pixel US: 1 (0028, 0004) Photometric Interpretation CS: 'MONOCHROME2' (0028, 0010) Rows US: 1024 (0028, 0011) Columns US: 1024 (0028, 0030) Pixel Spacing DS: ['0.139', '0.139'] (0028, 0100) Bits Allocated US: 8 (0028, 0101) Bits Stored US: 8 (0028, 0102) High Bit US: 7 (0028, 0103) Pixel Representation US: 0 (0028, 2110) Lossy Image Compression CS: '01' (0028, 2114) Lossy Image Compression Method CS: 'ISO_10918_1' (7fe0, 0010) Pixel Data OB: Array of 119382 bytes
Ez nagyjából az adatkészletben rögzített páciens minden részletét mutatja.
Most vizualizáljuk az adatokat, amelyek dmc fájlformátumban vannak.
im = dcm_data.pixel_array print(type(im)) print(im.dtype) print(im.shape)
ez megmutatja az osztályt numpy tömbben és képméretben, amely 1024*1024
<class 'numpy.ndarray' uint8 (1024, 1024)
Képzeljen el egy példát (kép betanított képek adatkészletéből)
import pylab pylab.imshow(im, cmap=pylab.cm.gist_gray) pylab.axis('off')
Ábrázolás
Most ábrázolja az adatokat (célosztály), ha a betegnek tüdőgyulladása van vagy sem
labels_pd['Target'].value_counts().head(5).plot.bar()
Ez a meglehetősen egyszerű és alapvető betekintés az adatkészletbe (képzett). A következő részben beleásom a tesztképeket a CNN modell betanítása után betanított adatkészlettel (adott).
Szavazz itt, Kaggle kernel
Kihívás oldala RSNA Pneumonia Detection Challenge
Ha tetszett ez a poszt, dobj rá egy ❤️-et alább, hogy mások is láthassák. Köszönöm!