© ProStockStudio/Shutterstock.com
Einsatz in einer medizinischen Java-Anwendung

Neuroph und DL4J


In diesem Artikel möchten wir zeigen, wie neuronale Netze, speziell das Multilayer Perzeptron zweier Java Frameworks, für die Erkennung von Blutkörperchen in Bildern verwendet werden können.

Bei mikroskopischen Blutbilduntersuchungen erfolgt unter anderem eine Analyse der sechs Typen von weißen Blutkörperchen. Zu diesen zählen: Neutrophile, Eosinophile, Basophile Granulozyten, Monozyten und Lymphozyten. Anhand der Anzahl, Reife und Verteilung dieser weißen Blutkörperchen erhält man wertvolle Hinweise auf mögliche Erkrankungen. Hier werden wir uns jedoch nicht auf die Handhabung der Blutausstriche, sondern auf die Erkennung der Blutkörperchen konzentrieren.

Für die beschriebenen Tests wurde das Bresser-Trino-Mikroskop mit einem Mikrookular verwendet und mit einem Computer (HP Z600) verbunden. Zur Bildanalyse wurde das von uns in diesem Artikel vorgestellte Programm verwendet. Die Software basiert auf neuronalen Netzen unter Verwendung der Java Frameworks Neuroph [1] und Deep Learning for Java (DL4J) [2]. Die Färbung der Ausstriche für das Mikroskop wurden mit Löffler-Lösung gemacht.

Trainingsdaten

Für das Training der neuronalen Netze wurden die Bilder (Images) der Blutkörperchen zentriert, in das Format gray scala umgewandelt und normalisiert. Nach der Vorbereitung sahen die Bilder aus, wie in Abbildung 1 gezeigt.

steinhauer_dl4j_1.tif_fmt1.jpgAbb. 1: Die JPG-Bilder weisen eine Größe von 100 x 100 Pixel und zeigen (von links nach rechts) Lymphozyt (ly), Basophile (bg), Eosinophile (eog), Monozyt (mo), stabkerniger (junger) Neutrophil (sng), segmentkerniger (reifer) Neutrophile (seg); die Zelltypen wurden für das Training der neuronalen Netze verwendet

Für das Training wurde ein Datensatz von 663 Bildern mit 6 Labels – ly, bg, eog, mo, sng, seg – zusammengestellt. Für Neuroph wurden die in Listing 2 gezeigten imageLabel gesetzt.

Listing 1

List<String> imageLabels = new ArrayList(); imageLabels.add("ly"); imageLabels.add("bg"); imageLabels.add("eog"); imageLabels.add("mo"); imageLabels.add("sng"); imageLabels.add("seg");

Danach sieht das Verzeichnis für die Inputdaten aus wie in Abbildung 2.

steinhauer_dl4j_2.tif_fmt1.jpgAbb. 2: Das Verzeichnis für die Inputdaten

Für DL4J setzt sich das Verzeichnis für die Inputdaten (your data location) anders zusammen (Abb. 3).

steinhauer_dl4j_3.tif_fmt1.jpgAbb. 3: Verzeichnis für die Inputdaten für DL4J

Die meisten Bilder im Datensatz stammen aus eigenen Aufnahmen. Es gab aber auch Bilder von offenen und freien Internetquellen. Zudem enthielt der Datensatz die Bilder mehrfach, da diese jeweils auch um 90, 180 und 270 Grad gedreht und gespeichert wurden.

Neuroph-MLP-Netz

Die wichtigsten Abhängigkeiten für das Neuroph-Projekt in pom.xml sind die in Listing 2 gezeigten.

Listing 2

<dependency...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang