Hej, powracam po krótkiej nieobecności. We wcześniejszym konkursie Kaggle za bardzo nie powalczyłem, może teraz coś więcej się uda. Nie owijając w bawełnę, w tym artykule chciałbym, abyśmy się pochyli nad konkursem Kaggle dedykowanemu walce ze ślepotą!
Ślepota ta nie jest byle jaka, bo jest to retinopatia cukrzycowa. A dokładniej chodzi nam tutaj o jak najwcześniejsze jej wykrywanie wśród biednej ludności Indii. W sumie nie chodzi tylko o mieszkańców Indii, ale o tym dalej.
Parametry
- Nazwa: APTOS 2019 Blindness Detection
- Opis: Detect diabetic retinopathy to stop blindness before it’s too late
- Pula nagród: $50,000
- Sponsor: Asia Pacific Tele-Ophthalmology Society (APTOS)
- Zakończenie: 05.09.2019
- Metryka: quadratic weighted kappa
- Dane: 10GB (skompresowane)
- Typ danych: obrazki
Cel
Indie, jak i cała masa innych krajów, mają problemy ze świadczeniem wysokiej jakości usług medycznych najuboższym. Okazuje się jednak, że często da się znaleźć sposoby na znaczne poprawienie jakości zdrowia, poprzez stosowanie profilaktyki. Profilaktyka działa jednak sensownie, jeśli trafia do pacjenta w odpowiednim stadium jego choroby. Dodatkowo profilaktyka wiąże się z niezerowym kosztem i niezerowym wpływem na organizm, mamy więc motywację do jak najdokładniejszego wytypowania pacjentów, którzy mogą najwięcej skorzystać.
Aktualnie, w biednych krajach, lekarze podróżują ze swoim sprzętem niczym obwoźni komiwojażerzy od wioski do wioski i tam badają pacjentów. Mają różny sprzęt, różne doświadczenie i różne warunki, w których oglądają oczy. Na bazie swoich oględzin próbują wytypować osoby, które są zagrożone ślepotą.
Celem tego konkursu jest opracowanie mechanizmu, który pozwoli, na bazie zebranych zdjęć oka i eksperckiej oceny ryzyka, automatycznie dokonać jak najdokładniejszej oceny ryzyka. Idea jest taka, że nawet jeśli znajdzie się filantrop, który będzie w stanie sponsorować kupno maszyny do badania, to może być już trudniej ze znalezieniem pieniędzy na utrzymanie takiego wędrownego lekarza. A w ten sposób, proces ten będą mogły obsługiwać mniej wyszkolone osoby. Co w efekcie pozwoli uchronić większą liczbę osób przed ślepotą.
Mięso
Mięsem tego konkursu są zdjęcia oczu. Każde zdjęcie jest określone stopniem postępu retinopatii. Mamy tutaj następującą skalę:
- 0 – No DR
- 1 – Mild
- 2 – Moderate
- 3 – Severe
- 4 – Proliferative DR
Obejrzyjmy sobie przykładowe zdjęcia:





Nie mam zielonego pojęcia, co przedstawiają te obrazki, ale na szczęście nie mam w planach zdawać egzaminu z budowy oka z w najbliższym czasie. Widzę jednak, z jakimi problemami, oprócz klasyfikacji, będziemy musieli się zmierzyć:
- Różne rozdzielczości — obrazki mamy w różnych rozdzielczościach — pewnie pochodzą z różnych systemów albo systemy te miały różne ustawienia.
- Różne przycięcia — każdy obrazek jest inaczej przycięty. Model będzie musiał sobie z tym poradzić.
- Różne rozlokowanie punktów charakterystycznych — na każdym obrazku możemy łatwo zauważyć jaśniejszą plamkę. Jest to pewnie jakiś charakterystyczny element budowy oka. Na obrazkach raz jest z lewej, raz z prawej. Czasem jest przy krawędzi, a czasem pośrodku. Nie będzie to zbytnio pomocne.
- Błędy w ocenie — nie jestem ekspertem w tej dziedzinie. W opisie konkursu jest informacja, że ocena eksperta dokonana na bazie tych obrazków może być błędna. Jeśli miałbym się pokusić o podważenie opinii eksperckiej, to powyższy obrazek z wartością 3 oceniłbym jako 4, a obrazek o wartości 4 jako 3. Jest to przykład potencjalnego szumu, który może występować w samych klasach, a nie obrazkach.
Co dalej?
Muszę przyznać, że nie miałem jeszcze okazji zabrać się za implementację żadnego modelu w tym konkursie. Konkurs ten wydaje się jednak być idealny do przetestowania nowo nabytej umiejętności tworzenia klasyfikatora obrazków. Jedyny problem, jaki tutaj widzę, jest taki, że trzeba zrobić upload wytrenowanego wcześniej modelu (np. resnet34 lub resnet50) do kernela Kaggle. Jest to jednak dozwolone i można skorzystać bez problemu z tej opcji. Cóż, trzeba się więc zabrać za ten problem. O tym już jednak w innym artykule.