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!