4_fun: Digitale Forstarbeit bei 4eyes

Gemeinsam Positives bewirken

4_fun: Digitale Forstarbeit bei 4eyes

Der “4_fun Tag” steht bei 4eyes im Zeichen der Experimentierfreude. Wir wollen gemeinsam Positives bewirken und uns auch im Home Office als Team verbunden fühlen. Wir liessen deshalb das Tagesgeschäft für einen Tag ruhen und widmeten uns einer gemeinsamen digitalen Herausforderung.

Unser Ziel: Die Entwicklung eines Prototypen zur automatischen Erkennung und Kategorisierung der Anzahl von gefällten Baumstämmen in einem Holzstapel. Der gemeinsame Tag an der virtuellen Werkbank brachte neue Erkenntnisse und Abwechslung ins Homeoffice.

4_fun Tag bringt Leben in den Lockdown

Der 4_fun Tag bringt Abwechslung in unseren durch das Homeoffice geprägten Arbeitsalltag. Spass an unserer Arbeit und an digitalen Tools haben wir immer –  allerdings bleibt in der täglichen Arbeit zu wenig Zeit, um die Lust am Ausprobieren auszuleben. Deshalb legen wir an festen Tagen unsere Diensthandys zur Seite und widmen uns mit aller Energie einem bestimmten Projekt.

Die Erprobung neuer Technologien und Frameworks, die Experimentierfreude und der Spass an Innovationen stehen dabei im Vordergrund. Wir wollen Tools und Technologien an einem konkreten Case ausprobieren und besser kennenlernen, um für unsere Kunden auf der Höhe der Zeit zu bleiben. 

Beim letzten 4_fun Tag stand ein Projekt aus der Forstwirtschaft auf dem Programm: Wir wollten mit unserem Team eine App entwickeln, welche die Anzahl der gefällten Baumstämme in einem Holzstapel über die Kamera bestimmt. 

Der Use Case: Digitale Tools in der Forstwirtschaft

Die Entwicklung unseres Tools begann mit der Beschreibung eines Use Cases auf Basis einer bereits existierenden App namens iFOVEA für Android und iOS. Wir stellten uns einen Forstarbeiter vor, der schnell und einfach die Anzahl der Baumstämme in einem Stapel gefällter Baumstämme bestimmen möchte. Dazu zieht er sein Smartphone aus der Hosentasche und startet eine App. 

Die App funktioniert schnell und selbsterklärend. Im ersten Schritt wird der Forstarbeiter angeleitet, den Massstab am Stapel zu positionieren. Dieser dient dazu, die Grössenverhältnisse genauer bestimmen zu können. Die hinterlegte Software erkennt in Echtzeit die Durchmesser der Stämme. Der Standard-Massstab ist ebenfalls im System hinterlegt und wird bei der Bilderkennung referenziert.

Die Durchmesser-Kreise der Stämme werden dem User direkt auf dem Smartphone dargestellt. Das Foto im Hintergrund bleibt dabei abgeschwächt sichtbar. Der Fokus liegt auf der Anzahl der Baumstämme sowie deren Durchmesser. Der Forstarbeiter kann nun die einzelnen Kreise anwählen und die automatisch generierten Durchmesser-Daten mit weiteren Informationen ergänzen. Zur Auswahl der kleineren Durchmesser kann in die Ansicht hinein gezoomt werden.

Visueller Prototyp in Figma
Visueller Protoyp in Marvel

Die Umsetzung in mehreren Gruppen

Zur optimalen Bearbeitung der Challenge teilten wir die Arbeit auf drei Kleingruppen auf: 

  • Gruppe 1 Entwicklung des Use Case und der Benutzerführung
  • Gruppe 2 kümmerte sich um die Frameworks für Mobile Apps
  • Gruppe 3 befasste sich mit dem Modellbau mit Machine Learning, der automatischen Erkennung und Machine Learning direkt im Browser.

Gruppenarbeit und Informationen im Zoom-Call

Nach dem gemeinsamen Start im Breakout Room arbeiteten wir in Kleingruppen und tauschten uns über den Tag verteilt immer wieder aus. Unser Leitgedanke: Wir wollen am Ende des Tages einen grob funktionsfähigen Prototypen zum Zählen von gefällten Baumstämmen entwickeln. 

Niemand von uns erwartete, dass wir in nur wenigen Stunden eine derart komplexe Mobile App finalisieren können. Der Spass an der Sache und die gemeinsame Freude am Experimentieren standen für das Team im Vordergrund. Umso schöner, dass wir nach nur wenigen Stunden bereits mit handfesten Ergebnissen aufwarten konnten.

Die Entwicklung einer Mobile App

Für die Entwicklung einer Mobile App für die Stapelerkennung standen drei Kandidaten zur Verfügung: Flutter, Ionic und React native. Alle drei Frameworks haben ihre Vor- und Nachteile. 

  • Flutter ist ein Open-Source-UI-Entwicklungs-Kit von Google, über welches Cross-Platform Apps in der Programmiersprache Dart entwickelt werden.
  • Ionic ist ein Open-Source-Webframework auf Basis von HTML5, CSS, Sass und JavaScript/TypeScript zur Erstellung von Hybrid-Apps und Progressive Web Apps. 
  • React Native wird von Facebook betrieben und ist ein Open-Source-Framework für mobile Anwendungen.

Nutzungszahlen von App-Entwicklungsframeworks als weitere Entscheidungsgrundlage

Für die Entwicklung der Applikation verwendeten wir das weit verbreitete Tool React Native. Das Framework basiert auf der bekannten Programmiersprache JavaScript und ist eng mit dem uns bekannten “React” verwandt. Ausserdem bietet das Tool gute Möglichkeiten für Device Access und zeigt ganz allgemein eine starke Performance.

Die Wahl des Frameworks: Expo CLI vs. React Native CLI?

Beim Start von React Native hatten wir die Wahl zwischen einem Expo CLI – oder einem React Native CLI (Command Line Interface) – Projekt. Beide Frameworks arbeiten verschieden und haben individuelle Vor- und Nachteile

Wir haben uns für Expo CLI entschieden, da diese Variante weitreichende Native-Hardware-Zugriffe zulässt. Ob das CLI in gewissen Bereichen an seine Grenzen stösst, müsste in längerfristigen Tests geprüft werden.

Um eine abschliessende Entscheidung für die Umsetzung eines Projektes fällen zu können, sollte man die genauen Anforderungen in diesem Bereich ganz genau überprüfen. Idealerweise sollten Beispiele oder sogar ein POC erstellt werden, um diese kritischen Faktoren im Vorfeld zu prüfen.

Regelmässiger Austausch mit detaillierten Insights

Aufsetzen der Navigation

Für die Navigation zwischen mehreren Screens verwendeten wir dieses Beispiel aus der React Native Dokumentation als Vorlage. Die Implementierung war einfach und bereitete keinerlei Probleme. Spannend wäre es noch gewesen, zu prüfen, ob diese Lösung gut skaliert, oder ob bei grösseren Applikationen weitere Abstraktionsstufen von Vorteil wären.

Die Implementierung der Kamera

Die Aufnahme und das Speichern von Bildern sind eine Kernkomponente unseres Prototypen. Generell wollten wir deshalb prüfen, ob wir Smartphone-Kamera grundsätzlich nutzen können. Die Ablage der Bilddateien im lokalen Dateisystem des Geräts war ebenfalls wichtig.

Tatsächlich konnten wir mittels eines Expo-Plugins eine Kamera implementieren und die wichtigsten Features aktivieren: Die Aufnahme von Fotos, den Switch zwischen Front- und Hauptkamera und den Zugriff auf die Medienbibliothek

Damit haben wir den ersten und wichtigsten Punkt erfüllt: Den nativen Kamerazugriff über das Expo-Framework. Die Ablage eines Photos in das lokale Dateisystem des Geräts konnten wir aus zeitlichen Gründen leider nicht mehr überprüfen. Anhand der Dokumentation des Expo-Frameworks sollten dabei jedoch keine Probleme auftreten.

Automatische Bild-Erkennung und Machine Learning

Ein zentraler Teil der Applikation ist die automatische Erkennung der Durchmesser der einzelnen Baumstämmen. Wir haben uns dabei drei Aspekte angeschaut

  • Erkennung von Kreisen in Bilder mittels normaler Bilderkennung
  • Erkennung von komplexeren Formen mittels Machine Learning
  • Nutzung von Machine Learning direkt im Browser

Beim Erkennen von Kreisen haben wir auf OpenCV gesetzt. OpenCV ist ein beliebtes Framework für Bildverarbeitung und Bilderkennung und beitet einen grossen Funktionsumfang, unter anderem ein Funktion für genau unsere Aufgabe: Hough Circle Transform. Die Ergebnisse sind schon nach kurzer Zeit erstaunlich gut, abhängig natürlich von der Bildqualität. Bei unseren Tests haben wir die Parameter jedem Bild angepasst, was natürlich im Alltagseinsatz keine Option ist. Weitere Ideen wären noch die automatische Korrektur der Perspektive, wenn das Bild schräg aufgenommen wurde etc.

Erste Erfolge mit der Bilderkennung mittels openCV

Solche Bilderkennung ist eine ideale Anwendung klassische Analysen mit Machine Learning zu kombinieren, wir haben dazu ein Modell trainiert, welches auch nicht ganz runde Stämme erkennen soll. Während das Trainiern dank passender Software (lableme) benutzerfreundlich funktioniert, reichte die Zeit leider nicht um das ausführlich zu testen und die Modelle zu verbessern.

Mit Programmen wie «lableme» lassen sich Modelle einfach trainieren

Damit der Benutzer diese Funktionen anschliessend in seiner App nutzen kann, haben wir uns angeschaut, wie man mit trainierten Modellen direkt im Browser arbeiten kann und konnten mit Tensorflow entsprechende Experimente machen und Erfahrungen sammeln.

Positives Fazit am Ende des 4_fun Tages

Die Entwicklung mit React Native über das Expo-CLI-Framework gestaltete sich überraschend einfach – zumindest, wenn man bereits React-Erfahrung mitbringt. Expo bringt trotz dem zusätzlichen Layer zwischen Applikation (React Native) und dem OS (iOS/Android) offenbar ein umfangreicher Zugriff auf die Geräte-Hardware. Ob dies auch für komplexere Use-Cases ausreicht und wie schnell der Wechsel auf das React Native CLI nötig wird, konnten wir nicht abschliessend klären.

Damit wir bei unserm Vorhaben zielführender voran kamen, hatten wir in den Arbeitsgruppen so viel wie möglich parallel gearbeitet und uns nach 1 stündigen Iterationen wieder im Team ausgetauscht. Dann wurde die Ausrichtung der nachfolgenden Iteration festgelegt und weiter verfolgt. Dieses Vorgehen erwies sich als sehr effektiv und effizient.

Alles in allem war es für unser Team spannend zu erleben, was innerhalb eines einzigen Tages alles entstehen kann. Durch die unterschiedlichen Sichtweisen auf ein Thema entstehen schnell neue Ideen und frische Lösungsansätze. Die von uns getesteten Frameworks sind gut dokumentiert und scheinen auch untereinander gut zusammenzuarbeiten. 

Es war ein tolles Erlebnis im Team gemeinsam neue Erkenntnisse sammeln und uns den Homeoffice geprägten Zeiten an einem gemeinsamen Projekt ausprobieren. Wir freuen uns bereits auf den nächsten «4_fun» Tag und sind gespannt, mit was wir uns dann auseinandersetzen werden.

Welche Aufgabe oder welches Thema würde dir an einem solchen 4_fun day Spass machen?