Allgemeines Projekt

Magic Mushroom App – mit Deep Learning essbare Pilze erkennen

Riccardo Jung, Dominik Wagner

Die Klassifizierung verschiedener Pilzarten ist für Laien extrem schwierig. Die bis anhin zur Verfügung stehenden Hilfsmittel, wie zum Beispiel Pilzbücher, sind für Laien als Entscheidungshilfen nur bedingt geeignet. Viele Merkmale sind nur von Experten sicher zu bestimmen. Das Ziel dieser Arbeit ist die Entwicklung und die Machbarkeitsabklärung einer Web- und Smartphone-Applikation, mit der auch Laien Pilze klassifizieren können. Die Nutzer der App sollen dafür lediglich ein oder mehrere Bilder des gefundenen Pilzes machen und Angaben über die Grösse des Pilzes zur Verfügung stellen. Die Klassifizierung erfolgt durch ein tiefes neuronales Faltungsnetz (CNN). Die App steht unter http://magic.ntb.ch/ zur Verfügung. Experten und Pilzsammler sind eingeladen, durch Hochladen von weiteren Bildern, die App zu verbessern.

Keywords: CNN, deep learing, mushroom classification, tensorflow, deep convolutional neural network

Das Ziel dieser Arbeit bestand aus der Entwicklung einer Applikation, mit welcher Pilze anhand von Bildern klassifiziert werden können. Mit dieser Entwicklung soll die Machbarkeit einer solchen App geklärt werden. Die Klassifizierung war mithilfe von neuronalen Faltungsnetzen (CNN) durchzuführen. Zudem sollte eine grafische Benutzeroberfläche programmiert werden, die einfach und intuitiv zu bedienen ist.

Um solche neuronalen Netze trainieren zu können, mussten sowohl hardware- als auch softwaretechnische Vorkehrungen getroffen werden. Zu Beginn wurde eine Workstation der NTB mit einer NVIDIA GTX 1080 Ti Grafikkarte ausgerüstet und alle benötigten Programme (PyCharm, Python) und Bibliotheken (OpenCV[1], TensorFlow[2]) installiert.

Feature Generation

Die Basis für das Training der neuronalen Netze sind die Trainingsbilder. Es wurden tausende Bilder von verschiedenen Pilzarten aus dem Internet heruntergeladen und standardisiert. Das bedeutet, dass die Pilze in jedem Bild mithilfe von Haar-Merkmalen[3-5] lokalisiert wurden. Anschliessend wurden diese Bilder zentriert, zugeschnitten und auf eine einheitliche Grösse von 256x256 Pixel gebracht. Damit die Anzahl an Bildern möglichst gross ist, wurden anschliessend alle Bilder vervielfacht. Dies gelang durch das Spiegeln, Drehen und durch die Anpassung des Gammawertes jedes einzelnen Bildes. Durch die Kombination dieser Methoden konnten aus jedem Bild zwölf Trainingsbilder erzeugt werden. Die gesamte Anzahl an Bildern der 15 Pilzarten stieg damit auf ca. 35’000 Stück.

Nachdem die Trainingsdaten vorbereitet waren, konnten erste Versuche mit tiefen neuronalen Faltungsnetzwerken (CNNs) gestartet werden. Nach den ersten Versuchen, fünf Pilzarten zu klassifizieren, wurde das Training auf 15 Pilzarten ausgeweitet. Da die Ergebnisse nicht zufriedenstellend waren, wurden die 15 Pilzarten in Röhrlinge und Lamellenpilze unterteilt. Ab diesem Zeitpunkt wurden parallel zwei neuronale Netze entwickelt. Zusätzlich wurden dem neuronalen Netz neben den Bildern auch Informationen über die Grösse des Pilzes zur Verfügung gestellt. Dank den zusätzlichen Informationen über die Grösse des Pilzes konnte die Trefferquote um rund 10 % erhöht werden.

Die Vorhersage beruht auf einem neuronalen Netz, welches momentan für 15 Pilzarten trainiert wurde. Diese Pilzarten sind:

  1. Sommer-Steinpilz (Boletus aestivalis)
  2. Kiefern-Steinpilz (Boletus pinophilus)
  3. Gemeiner-Steinpilz (Boletus edulis)
  4. Schwarzhütiger-Steinpilz (Boletus aereus)
  5. Fliegenpilz (Amanita muscaria)
  6. Butterpilz (Suillus luteus)
  7. Gold-Röhrling (Suillus grevillei)
  8. Sand-Röhrling (Suillus variegatus)
  9. Ziegenlippe (Xerocomus subtomentosus)
  10. Gelber-Knollenblätterpilz (Amanita citrina)
  11. Grauer-Wulstling (Amanita excelsa)
  12. Grüner-Knollenblätterpilz (Amanita phalloides)
  13. Pantherpilz (Amanita pantherina)
  14. Perlpilz (Amanita rubescens)
  15. Pfifferling (Cantharellus cibarius)

Bestimmen der optimalen Architektur der CNN durch eine systematische Gittersuche

Die optimale Architektur und die optimalen Hyperparameter des CNN wurde mit einer Gittersuche (grid search) bestimmt. Damit die Ergebnisse bestmöglich verglichen werden konnten, wurden bei jedem Test Logdateien erstellt, welche anschliessend ausgewertet werden konnten. Dank diesen Massnahmen konnten die Resultate stetig verbessert werden.

Image size [Pixel]

# CNN layers

Filter size

Fully connected layer size

Validation accuracy

Validation loss

128x128

5

[4, 4, 3, 3, 3 ]

256

75.0 %

0.862

128x128

5

[3, 3, 3, 3, 3 ]

128

75.0 %

0.879

64x64

5

[4, 4, 3, 3, 3 ]

256

73.4 %

0.908

128x128

5

[4, 4, 3, 3, 3 ]

128

73.4 %

0.838

64x64

4

[4, 4, 3, 3]

256

72.7 %

0.912

Tabelle 2: Ergebnis der fünf besten neuronalen Netze der 3. Testreihe (Röhrlinge)

Nach der Trainingsperiode lag die Trefferquote bei den Lamellenpilzen bei 85.2 % und bei den Röhrlingen 75.0 %, was als ein gutes Ergebnis eingestuft werden kann. Dank der Konfusionsmatrix konnten die Probleme bei der Klassifizierung sehr gut aufgezeigt werden. Da vier verschiedene Steinpilzarten klassifiziert werden können, die sich sehr ähnlich sind, kam es bei den Röhrlingen häufiger zu Fehlklassifizierungen als bei den Lamellenpilzen. Zudem konnten dank dem TensorBoard die Probleme des Übertrainings sehr gut visualisiert werden. Dies war der Fall, weil die Anzahl an Parametern in den neuronalen Netzen um einiges höher ist als die Anzahl zur Verfügung stehender Trainingsbilder.

Webapplikation

Ausserdem wurde eine Webapplikation entwickelt, welche sowohl von einem Computer, als auch von einem Mobilgerät aus verwendet werden kann. Dazu ist weder eine Installation, noch ein bestimmtes Betriebssystem vorausgesetzt. Zurzeit ist die App in Deutsch und Englisch unter http://magic.ntb.ch verfügbar. Der Benutzer hat damit die Möglichkeit, direkt ein oder mehrere Bilder mit seinem Mobilgerät aufzunehmen oder Bilder aus seinem Verzeichnis auszuwählen, um diese klassifizieren zu lassen. Anschliessend muss er selbst bestimmen, ob es sich um einen Lamellenpilz oder einen Röhrling handelt, da wie bereits erwähnt, zwei verschiedene neuronale Netze für die Klassifizierung eingesetzt werden. Zudem muss der Benutzer die ungefähre Grösse des gefundenen Pilzes angeben, um eine möglichst gute Klassifizierung zu erhalten. Die Webapplikation zeigt daraufhin das Resultat inklusive eines Beispielbildes und einigen allgemeinen Informationen zum klassifizierten Pilz an. Mithilfe der Detailansicht sieht der Benutzer zudem, wie gross die Wahrscheinlichkeiten aller anderen Pilzarten sind.

Zudem können die Benutzer auch eigene bereits klassifizierte Bilder von Pilzen auf einen Server der NTB hochladen, damit die neuronalen Netze zu einem späteren Zeitpunkt erweitert werden können. Der Benutzer kann dabei bis zu 100 Bilder eines Pilzes auswählen und mit wenigen Klicks zur Verfügung stellen. Das Ziel liegt darin, die Magic Mushroom App mithilfe der Community stetig zu erweitern und damit zu verbessern.

Zusammenfassung und Ausblick

Diese Arbeit hat grundsätzlich gezeigt, dass die Pilzerkennung mittels neuronalen Netzen möglich ist. Mit einer validation accuracy von 75 % mit den Bildern der Röhrlinge und 85.2 % mit den Lamellenpilzen kann man das Ergebnis als gut einstufen.

Durch die Einbindung des Hutdurchmessers, sowie der Stiellänge als zusätzliche Features vor dem fully connected layer wurde eine Steigerung von rund 10 % in der validation accuracy erreicht. Einziger Nachteil dieser Features, sowie der Trennung in zwei verschiedene Netze für Röhrlinge und Lamellenpilze ist, dass sie eine Entscheidung der Benutzer erzwingt. Dadurch können Fehlinformationen bei der Vorhersage eingebracht werden, was zu einer Fehlklassifizierung führen kann. Da es sich jedoch um einfach zu erkennende Merkmale handelt, ist diese Fehlerquelle als gering einzustufen.

Mit der Hilfe des Upload-Features kann die App wachsen und stetig erweitert werden. Sobald genügend Bilder einer weiteren Pilzart vorhanden sind, kann erneut ein neuronales Netz trainiert werden, das anschliessend der Community zur Verfügung gestellt wird. Eine Verbesserung der Klassifizierungsgenauigkeit kann durch Einführen von zusätzlichen Features erzielt werden, die ein Pilzsammler leicht erkennen kann, z.B. Vorhandensein eines Rings wie bei einem Fliegenpilz oder einem Knollenblätterpilz. Durch Schwenken der Smartphone-Kamera vor und über dem Pilz könnte eine 3D-Rekonstruktion des Pilzes und daraus zusätzliche geometrische und texturielle Features generiert werden. Ausserdem kann dadurch bereits eine Klassifizierung von Objekt und Hintergrund vorgenommen werden. Die Ansicht aus unterschiedlichen Perspektiven (front, side, top) wird ausserdem die Klassifizierungsgenauigkeit erhöhen.

Referenzen:

[1]   Open CV: https://opencv.org/

[2]   Tensorflow: https://www.tensorflow.org/

[3]   Haar-Featues: https://en.wikipedia.org/wiki/Haar-like_feature

[4]   Viola and Jones, "Rapid object detection using a boosted cascade of simple features", Computer Vision and Pattern Recognition, 2001, http://www.merl.com/publications/docs/TR2004-043.pdf

[5]   Haar A. Zur Theorie der orthogonalen Funktionensysteme, Mathematische Annalen, 69, pp. 331–371, 1910. http://www.laurent-duval.eu/Documents-WITS-starlet/Haarlets/Haar_A_1910_ma_zur_tofs-haarlet.pdf

Laufzeit: 11.10.2018

Durch Operationen wie Spiegeln, Drehen und Ändern der Gamma-Werte der Bilder wurden aus jedem Bild insgesamt zwölf Bilder erzeugt.
Confusion Matrix der Testreihe «Röhrlinge» – Die Probleme bei der Klassifizierung der Steinpilzarten sind eindeutig zu erkennen. Pilzarten innerhalb der gleichen Familie (Steinpilze) sind schwierig voneinander zu trennen.
Confusion Matrix der Testreihe «Lamellenpilze» – In dieser Abbildung ist ausser bei den Fliegenpilzen und den Pfifferlingen eine relativ homogene Verteilung an Fehlklassifizierungen zu beobachten.
Architektur des optimalen CNN für Röhrlingebestehend aus fünf Faltungslagen und insgesamt zwei voll vernetzten Lagen.