Detekcia, trasovanie a zber dát o červených krvinkách
Úvodný obrázok zdroj: Vector8DIY, Pixabay
Čaute, rád by som vám popísal využitie neurónových sietí v mojej práci, v ktorej som sa venoval počítačovému spracovaniu obrazu pre vývoj a verifikáciu výpočtových modelov biologických buniek. V kocke, tematika práce bola o spracovaní videí, v ktorých sa nachádzali červené krvinky a úlohou bolo automatizovaným algoritmom nájsť, kde sú a ako sa pohybujú.
Detekcia
Túto úlohu sme si rozdelili na dve časti, detekciu a trasovanie. Práca vychádzala z predošlého výskumu v tíme, ale bohužiaľ algoritmy nefungovali dostatočne na kompletné využitie. Ja som počas toho prišiel s prístupom využitia neurónových sietí na strane detekcie. Ako prvý krok som zostrojil jednoduchý prototyp v knižnici tensorflow, ktorý mal za úlohu spracovať dáta a natrénovať na nich neurónovú sieť, ktorá následne bude rozhodovať o náleze bunky. Samotný prototyp bol veľmi limitovaný, pracoval len s malými 30x30px výsekmi v obraze, ale už hneď v tomto prípade sa mu podarilo poraziť výsledky Hough transformácie z predošlých pokusov. Úspešnosť tohto prototypu bola po vyhodnotení 79% Precision a 85% Recall. S týmto prototypom sme taktiež ďalej experimentovali s dátami, dĺžkou tréningu a taktiež s architektúrou vzhľadom na nové poznatky a výsledný výkon bol 98% Precision a 93% Recall.
Vizualizácia detekcie červených krviniek, zdroj: vlastné
Frameworky
Veľkým nedostatkom tohto prístupu bolo ale pomalé spracovávanie pomocou výsekov, a preto bolo potrebné prejsť k prístupu, čo spracúva celé snímky videa naraz (naše videá boli 1280x720px a 512x512px). V tejto oblasti taktiež existovali rôzne prístupy a ja som zvolil konkrétne tri s existujúcimi implementáciami. Frameworky boli SSD (Single-Shot Detector), R-FCN (Region-based Fully Convolutional Network) a Faster R-CNN (Region-based Convolutional Neural Network). Tieto frameworky podávajú pravdepodobnostný odhad nad výsekmi snímku a sú schopné pracovať v real-time, aj keď toto pre nás nebolo kľúčovým faktorom. Z týchto frameworkov bol problematický SSD, ktorý bol nadizajnovaný na malé objekty.
Kvôli tomu, pred vzájomným vyhodnotením, bolo potrebné nastaviť veľkosť mriežky, ktorá limituje počet nájdených objektov v špecifickej oblasti. Po úprave SSD a následnom natrénovaní týchto troch frameworkov, najlepšie výsledky podával Faster R-CNN s 99.5% Precision a 94.7% Recall. Zvyšné frameworky podávali o pár percent horšie výsledky, a taktiež boli validované 5-násobnou cross validáciou. Dobrá správa týchto výsledkov je, že výsledky detekcie sú postačujúce na plnú funkčnosť zvyšných častí a na vyhodnocovanie. Model bol taktiež prenositeľný na iné video, ale až po pritrénovaní samplov z druhého videa a Faster R-CNN na tomto videu podával výsledky 98.7% Precision a 98.7% Recall.
Trasovanie
Na strane trasovania sme vychádzali z existujúceho algoritmus, ktorý trasuje bunky pomocou fyzikálnych vlastností (rýchlosť, pozícia, tok kvapaliny). Tento algoritmus vďaka vylepšenej detekcii podával dostatočné výsledky na vyhodnocovanie videí. Napriek tomu sme sa ale snažili vytvoriť prototyp pomocou neurónových sietí, ktorý by zlepšil trasovanie.
Podarilo sa vytvoriť prototyp, ktorý na vstupe vzal rýchlosť hľadanej bunky, informácie o okolitých bunkách a hodnoty tokovej matice a na výstupe predikoval vektor rýchlosti bunky do ďalšieho snímku videa. Táto metóda bola schopná na konci algoritmu zlepšiť výsledky vďaka zaplneniu niektorých dier v trasovaní. V priemere jedna trasa v anotovaných dátach je okolo 170 snímok, zatiaľ čo tento vylepšený algoritmus produkuje trasy dĺžky v priemere okolo 70 snímok, čo je okolo 1.8 diery na jednu reálnu trasu.
Príklad detegovaných trás vo videu, zdroj: vlastné
V budúcnosti je možné zlepšiť tento prototyp, aby bol schopný nahradiť celý krok trasovania, prípadne ho skombinovať s inou tradičnou metódou. Vo výsledku sa podarilo vytvoriť ucelený algoritmus, ktorý dokáže produkovať informácie o výskytoch, rýchlostiach a početnostiach buniek aj v prípade menej kvalitných videí. A keďže množstvá dát sa len zvyšujú a je potrebné spracovávať viac a viac, tieto prístupy budú v budúcnosti ešte potrebnejšie.