Iskoristili smo strojno učenje kako bi razvili model koji bi mogao pomoći doktorima u dijagnosticiranju korona (COVID-19) virusa putem rengenske snimke. Ako ste doktor ili medicinska sestra, možete nam se javiti i dobiti pristup modelu potpuno besplatno (team@exact-byte.com).

U članku vas čeka objašnjenje tehnologije, korištenih podataka i rezultata.

Update, 04.03.2020

Bilo je i dobrih i loših reakcija na ovaj članak, iako sam bio jako oprezan s dobivenim rezultatom i pokušao pojasniti svoje vlastite sumnje u njih.

Čini mi se da ljudi baš ne pročitaju (cijeli?) članak, nego pročitaju samo odabrane dijelove i onda komentiraju te dijelove izvan konteksta. Čudno da nitko (još) nije potegao temu partizana i ustaša.

U međuvremenu su se slične ideje i izvedbe počele pojavljivati i na drugim portalima.

Istaknuo bi i pozitivne reakcije, gdje mi se jedna radiologinja javila preko Skype-a i pojasnila mi medicinsku stranu postignutih rezultata, kao i svoje sumnje da su rezultati pravilno interpretirani. Isto tako, spomenula je članak koji u mnogome dijeli njeno mišljenje u vezi sa mogućnostima AI u prepoznavanju COVID 19 pneumonije.

Moram priznati da nisam pohvatao sve što je govorila, ali moj zaključak je da je neuralna mreža naučila raspoznavati virusne i bakterijske upale pluća. To je ono što smo trebali i tražili, mišljenje osobe koja je stručna u svom području i koja je izdvojila svoje vrijeme da nam pojasni što je moguće vidjeti u snimkama i koji je realan rezultat. Ovim putem bi joj još jednom zahvalio, ali i omogućio da ostane anonimna.

Nakon takve procjene nekoga tko je stručan, zaustavili smo promociju članka. Iako, kako je više puta naglašeno, nismo promovirali niti preciznu dijagnostiku, niti lijek, već zanimljivost koju bi mogli istražiti i koja bi mogla imati korisne primjene.

Još uvijek bih volio sjesti s nekim radiologom, proći po slikama i pojasniti (sebi i drugima) zašto je neuralna mreža uspjela pronaći tako očite razlike u slikama. Poslali smo mail-ove na sve strane i tražili ljude da nam se jave, ali očito je situacija malo škakljiva i ljudi nemaju sada vremena.

Sažetak

Od zadnjeg članka u kojem sam pisao o vizualizaciji podataka vezanih za korona virus, nisam prestao razmišljati o tome kako popraviti situaciju ili pomoći. Da li postoji način kako bi ja osobno nešto mogao napraviti i promijeniti, a ne samo pričati o tome kako je sve loše i kako svijet ide u bananu, dok pakiram limenke graha u trgovini i ružno gledam susjede.

Istražio sam dosadašnje primjene umjetne inteligencije (točnije, strojnog učenja) u slučajevima koji su slični korona virusu, kao što je traženje lijekova, ali to zahtjeva cijeli tim koji čine stručnjaci iz polja medicine, umjetne inteligencije i farmaceutske industrije, a takav tim nemamo na raspolaganju.

Okrenuo sam se nešto jednostavnijim opcijama. Može li se napraviti dijagnostički alat koji može pomoći liječnicima da brže eliminiraju mogućnosti?

Znam da je postojalo istraživanje gdje su pokušali s CT skeniranjima dijagnosticirati korona virus. Rezultati na 1,119 CT snimki su prilično dobri s  89.5% i 79.3% točnosti.

Problem

Kroz daljnje istraživanje, palo mi je napamet da ako je nešto vidljivo na CT-u, vjerojatno postoji mogućnost da se detektira i na “običnom” rendgenu.

Kada (više nažalost nije “ako”) se broj oboljelih poveća, bit će potrebno brzo dijagnosticirati ljude i odvojiti ljude koji moraju biti izolirani. Rendgen je prilično brz za poslikati, jeftin je, ne zahtijeva posebnu brigu i radi dokle god ima struje. Dobar stari rendgen.
I dok sam tako tražio uokolo da li već postoji nešto slično, naišao sam na postojeći, odlično napisan i objašnjen članak.

Što sam koristio?

Naravno, mogao sam poskidati riješenje autora i onda reći da sam nešto napravio sam, ali odlučio sam se sam poigrati i vidjeti kakve rezultate mogu dobiti sam.

Za one koji razumiju ML ekosustav, razmišljao sam da li da koristim Keras (Tensorflow) ili bi ovo možda bilo dovoljno jednostavno za fastai (Pytorch). Probao sam sa fastai i dobio prilično dobre rezultate.

Koristio sam podatke koji su dostupni ovdje (isti podaci kao u već spomenutom članku).

Slike “normalnih” slika pluća, kao i slika pluća pojedinaca koji imaju upalu pluća možete naći ovdje.

Nakon što sam to jedno i drugo poskidao, išao sam malo pogledati podatke. Pošto imamo slike rendgena “ispred” – od naprijed prema nazad (takva vrsta slikanja zove se “Posterioranterior”, ili “PA” skraćeno), onda sam samo takve podatke i uzeo u obzir.

Dataset sadrži 69 slika COVID-19 pacijenata sa rendgena. Sada mi je trebala slika zdravih pluća i pacijenata koji možda imaju neku drugu bolest, kao recimo upalu pluća, da vidimo kako se algoritam ponaša i da li je moguće pronaći neke razlike između te tri klase slika – covid, normal, pneumonia (upala pluća).
Te slike sam uzeo sa Kaggle dataset-a, koji sadržava 4265 slika rendgena osoba sa upalom pluća i 560 “normalnih” (zdravih) slika. Za validaciju koristio sam 30% podataka.
Finalni brojevi, 560 zdravih slika (normal), 69 covid, 4265 upala pluća (pneumonia).

Kao arhitekturu same neuralne mreže, prvo sam probao “Resnet 34”. Ta arhitektura nešto je manja i iako ima prilično dobru točnost, htio sam vidjeti što je maksimum koji mogu dobiti i koje rezultate bih dobio da koristim najveću mrežu koja, pojednostavljeno, najviše toga “vidi”.
Na kraju sam koristio “Resnet 152”, što je prilično velika mreža/arhitektura. Slike su bile smanjene na ulaznu veličinu mreže i propuštene.
Nakon malo eksperimentiranja, mijenjanja arhitekture, augmentacija, fine tuninga i ostaloga što sam probavao, dobio sam rezultate.

Rezultati

Prvi rezultati su me šokirali. U prvom navratu nisam imao toliko primjera pacijenata sa zdravim plućima i s upaljenim plućima te je točnost bila 100%!

Iako sam javio kolegi s kojim radim vijest, morao sam mu napomenuti da suzdrži entuzijazam jer je predobro da bi bilo istinito. Nije moguće da takav jedan jednostavni pothvat dovede to potpune točnosti. Nakon toga sam uključio što više slika.

Da sumiram ovu sliku.
Od 16 pacijenata, jedan koji ima upalu pluća dijagnosticiran je kao da ima COVID-19, a jedan koji ima COVID-19 dijagnosticiran je da ima upalu pluća.

Niti jedan zdravi pacijent nije dijagnosticiran kao da ima COVID-19!

I dalje mi nije jasno kako je moguće da jedan algoritam može tako jasno razaznati koje značajke ima slika rendgena COVID-19 pacijenta za razliku od zdravih pluća?
Uporno sam pokušavao gledati slike i uspoređivati ih, ali ruku na srce, ne razumijem previše to što gledam. Onda sam pokušao pitati neuralnu mrežu da mi ona pokaže što je ona vidjela i da pokušam onda pogledati malo bolje. Konkretno, želim vidjeti koji dio slike je najviše aktivirao/podražio neuralnu mrežu i na temelju čega je ona zaključila da je to jedna kategorija a ne druga.

Da budem potpuno iskren, ja i dalje ne vidim veliku razliku. Čini se da na temelju sitnih fleka koje ja vidim kao i sve ostalo, neuralna mreža može utvrditi da je to korona virus ili da je to upala pluća ili da su to zdrava pluća.

Vjerujem da je smiješno kada netko tko se razumije u ovo pogleda slike, ali one razlike koje ta neuralna mreža vidi, ja ne mogu povezati. Mislim, vidim neke sitne promjene, ali one meni ne znače previše, ali opet napominjem, nisam doktor, bavim se umjetnom inteligencijom i podacima.

Kako vi možete pomoći?

Da li vi možete pomoći? Da.

Ono što nedostaje je veliki broj slika rendgena s COVID-19 virusom. Ono što planiram napraviti je jedna web aplikacija (stranica na internetu) gdje bolnice mogu poslati slike pacijenata. Ako je moguće, pozivam bolnice koje imaju takve slike da nam se jave (najbolje na mail adresu team@exact-byte.com )
Ja ću im dati pristup aplikaciji, te će sami moći sa svojih računala poslati sliku i dobiti rezultat nazad, zajedno sa ovim slikama na kojoj se vidi na temelju čega je neuralna mreža “vidjela” da je to COVID-19. To možda može pomoći da se sam algoritam poboljša, pošto postoje načini da se neuralnu mrežu nauči prepoznavati pojedine elemente slike. Ako nekoga tko se time bavi interesira, mogu pojasniti. Što više slika imamo, to će algoritam biti točniji i moći će bolje razlikovati oboljele i zdrave pacijente.

Zaključak

Kao prvo, moramo suzdržati entuzijazam. Rezultati koje sam dobio jesu impresivni, ali sam skeptičan prema njima i za to postoji dobar razlog. 

Ne prodajem niti reklamiram nešto (osim svoje stručnosti u strojnom učenju i umjetnoj inteligenciji) niti pokušavam ljudima reći da je ovo način na koji sigurno možemo pobijediti COVID-19 virus. 

Ne želim ljudima davati informacije koje nisu točne, pošto je moguće da bi to isto izazvalo pomutnju i ideju da nam ne trebaju doktori, treba nam samo rendgen (i vile s kojima bi eliminirali one koji imaju virus).

U pitanju su ljudski životi i to ne treba shvaćati olako. Greške ovakvih sustava skupo se plaćaju. Algoritam točno prepoznaje 93% COVID-19 slučajeva. 

Jedan od slučajeva krivo je klasificiran kao upala pluća. U telefonskom razgovoru s jednim doktorom saznao sam da upala pluća nije toliko različita od slike COVID-19 virusa, pošto je rezultat COVID-19 virusa na neki način, vrsta upale pluća (respiratorni problemi).

Jedan od slučajeva COVID-19 virusa kategorizirao je kao upalu pluća. Niti jednom nije krivo kategorizirao zdravu osobu da ima COVID-19. Drugim riječima, možda je moguće, uz dovoljno primjera, eliminirati pojedine osobe kao kandidate oboljelih COVID-19 virusa.

Ono što me još malo zabrinjava je činjenica da su ovi rezultati vidljivi nakon što simptomi napreduju. Znači, postoje ljudi koji imaju jako slabe simptome, ili ih skoro niti nemaju, te mogu nositi i prenositi virus. Ovaj test nije za takve pojedince, jer oni vjerojatno neće niti doći blizu bolnice. U bolnicu će ići oni koji imaju već (očite?) simptome i za takve bi ovakav test vjerojatno brzo mogao eliminirati mogućnost COVID-19 virusa što bi rasteretilo kapacitete bolnica i smanjio količinu ljudi koji su tamo jer, eto, boli ih lijevo stopalo pa možda imaju virus.

Ono što ovdje nedostaje je veliki broj primjera COVID-19 pacijenata. Ovako odokativno, ne bih se previše kladio da ovo radi reprezentativno dok nemamo barem 200 primjera rendgen slika.

Držite se uputa županijskog i državnog stožera i stvari će vjerojatno biti bolje.