magicplan-AI, eine Reise in die wunderbare Welt des Deep Learning (Teil 1/3)

In der magicplan

5 Minuten Lesezeit

magisches Plan-Diagramm, das die Unterschiede zwischen Bildklassifikation und Objeksegmentierungstechniken zeigt
magisches Plan-Diagramm, das die Unterschiede zwischen Bildklassifikation und Objeksegmentierungstechniken zeigt
magisches Plan-Diagramm, das die Unterschiede zwischen Bildklassifikation und Objeksegmentierungstechniken zeigt

Die Computer Vision durchläuft eine spektakuläre Revolution dank der Fortschritte in der KI, insbesondere im Bereich des Deep Learning. Jeden Tag zeigt ein neuer Artikel Fähigkeiten, die man sich vor 5 Jahren nicht hätte vorstellen können. Ob von den GAFA-Teams oder von den Spin-offs der besten Labore, es scheint, dass KI für das Verständnis von Bildern ihren Weg in die Unternehmen findet.
Was bedeutet das jedoch für ein kleines Unternehmen, dessen Produkt auf klassischer Computer Vision basiert?
Was braucht es, um den großen Sprung zum Deep Learning zu wagen? Wie robust ist dieser neue Ansatz in Bezug auf Produktionsanforderungen wie Genauigkeit und Geschwindigkeit in einer Smartphone-App?

Mein Name ist Pierre Pontevia. Ich bin Gründer und Chief Research Officer von magicplan. Heute möchte ich unsere Reise mit Ihnen teilen, wie wir ein auf Deep Learning basierendes Feature in unsere App implementieren.

In diesem Artikel werden wir nicht über die Singularität sprechen, noch darüber, einen Go-Meister zu schlagen oder über die neuesten Durchbrüche in den Generativen Netzwerken. Stattdessen werden wir die praktischen Schritte teilen, die notwendig sind, damit ein Team von Ingenieuren ein Deep Learning-Feature aus dem „Labor“ herausnimmt und in einer App integriert, die von Millionen von Smartphone-Besitzern genutzt wird.

Kurze Einführung in magicplan

magicplan ist eine iOS und Android App, die es jedem ermöglicht, in wenigen Minuten einen Grundriss seines Zuhauses zu erstellen, und so einfach ist wie das Aufnehmen eines Bildes.

Mit mehr als 16 Millionen Downloads ist magicplan der Maßstab für Grundriss- und Renovierungs-Apps.
Seit dem ersten Tag hat unsere App „Computer Vision“ basierte Realitätserfassung und Kameraverfolgungsfähigkeiten implementiert, wodurch sie eine der ersten Apps wurde, die eine echte AR-Erfahrung auf einem Smartphone bietet.
Doch heute reicht das nicht aus, und unsere Kunden wünschen sich die Möglichkeit, während des Erfassungsprozesses mehr Informationen zu extrahieren.
Hier kommt Deep Learning ins Spiel, das magicplan eine neue Dimension des Raumverständnisses bietet, wie in diesem Video veranschaulicht:

Sie können sehen, wie ein Benutzer in Echtzeit die Position und Abmessungen der Türen und Fenster eines Raumes erfasst, indem er buchstäblich nur Bilder davon aufnimmt.
So funktioniert es: Jedes Mal, wenn ein Benutzer ein Foto von einer Wand macht, verarbeitet magicplan das aufgenommene Bild mit einer speziellen Art von Deep Learning-Netzwerk, das Fenster und Türen, die irgendwo im Bild vorhanden sind, erkennt, lokalisiert und einrahmt. Die Vorteile in Bezug auf Benutzerfreundlichkeit und Zeitersparnis sind enorm.

In diesem Blog teilen wir unsere Erfahrungen darüber, was nötig war, um dieses Video Realität werden zu lassen. Die Geschichte ist in 3 Hauptteile unterteilt, von denen jeder einen wichtigen Schritt unseres Ansatzes beschreibt:

  • Entwicklung eines POC zur Bewertung der Machbarkeit,

  • Iterieren über Daten und Modelle, um akzeptable Leistung zu erreichen,

  • Einbetten der Funktion in ein Smartphone.

magicplan ist eine iOS und Android App, die es jedem ermöglicht, in wenigen Minuten einen Grundriss seines Zuhauses zu erstellen, und so einfach ist wie das Aufnehmen eines Bildes.

Mit mehr als 16 Millionen Downloads ist magicplan der Maßstab für Grundriss- und Renovierungs-Apps.
Seit dem ersten Tag hat unsere App „Computer Vision“ basierte Realitätserfassung und Kameraverfolgungsfähigkeiten implementiert, wodurch sie eine der ersten Apps wurde, die eine echte AR-Erfahrung auf einem Smartphone bietet.
Doch heute reicht das nicht aus, und unsere Kunden wünschen sich die Möglichkeit, während des Erfassungsprozesses mehr Informationen zu extrahieren.
Hier kommt Deep Learning ins Spiel, das magicplan eine neue Dimension des Raumverständnisses bietet, wie in diesem Video veranschaulicht:

Sie können sehen, wie ein Benutzer in Echtzeit die Position und Abmessungen der Türen und Fenster eines Raumes erfasst, indem er buchstäblich nur Bilder davon aufnimmt.
So funktioniert es: Jedes Mal, wenn ein Benutzer ein Foto von einer Wand macht, verarbeitet magicplan das aufgenommene Bild mit einer speziellen Art von Deep Learning-Netzwerk, das Fenster und Türen, die irgendwo im Bild vorhanden sind, erkennt, lokalisiert und einrahmt. Die Vorteile in Bezug auf Benutzerfreundlichkeit und Zeitersparnis sind enorm.

In diesem Blog teilen wir unsere Erfahrungen darüber, was nötig war, um dieses Video Realität werden zu lassen. Die Geschichte ist in 3 Hauptteile unterteilt, von denen jeder einen wichtigen Schritt unseres Ansatzes beschreibt:

  • Entwicklung eines POC zur Bewertung der Machbarkeit,

  • Iterieren über Daten und Modelle, um akzeptable Leistung zu erreichen,

  • Einbetten der Funktion in ein Smartphone.

Teil 1 — Entwicklung eines POC zur Prüfung der Machbarkeit

Als Leiter eines kleinen Forschungsteams in einem kleinen Start-up besteht meine erste Aufgabe darin, sicherzustellen, dass wir an etwas arbeiten, das einen Einfluss auf das Produkt hat. Das bedeutet, dass wir schnell und mit minimalen Kosten herausfinden müssen, ob eine potenziell innovative Technologie es wert ist, untersucht zu werden oder nicht.

Ein Proof of Concept (POC) ist entscheidend, um dies zu erreichen. Mit POC meinen wir, einen Ansatz / Algorithmus / eine Lösung, die hauptsächlich in akademischen Artikeln beschrieben wird, in einen ausführbaren Code zu übersetzen, den wir ausführen werden, um die Leistung des Algorithmus unter Bedingungen zu bewerten, die so nah wie möglich an dem Endfall sind, den wir lösen möchten.

Mehrere Faktoren haben uns geholfen, den POC wirklich schnell zu entwickeln und zu bewerten:

  • Fast alle Tools und Frameworks, die für Deep Learning verwendet werden, sind Open Source, was die Hürden für den Zugang zu einer professionellen / zuverlässigen Umgebung erheblich senkt,

  • Die akademische Welt ist im Bereich „Deep Learning für Computer Vision“ sehr aktiv, und Forscher teilen, was sie mit der Gemeinschaft entwickeln, wodurch die Arbeit zur Übersetzung einer Idee in Code drastisch vereinfacht wird,

  • Die GAFAs haben hervorragende Arbeit geleistet, um die beliebtesten Deep-Learning-Modelle mit der KI-Gemeinschaft zu strukturieren und zu teilen, was die Aufgabe beschleunigt, ein besonders beliebtes Modell in einem spezifischen Teilbereich zu testen,

  • Daten sind entscheidend im Deep Learning. Glücklicherweise gibt es einige große und kostenlose annotierte Datenbanken im Internet, die für das Training von Modellen verfügbar sind,

  • Deep Learning ist rechenintensiv. Die gute Nachricht ist, dass die Hardware für Deep Learning günstiger wird. Als Alternative können Sie beginnen, GPUs in der Cloud zu nutzen und anfängliche Investitionen zu vermeiden (wenn Sie sich nicht sicher sind, wie vielversprechend die Idee ist).

Unterstützt von diesen Faktoren strukturierten wir den POC in 4 Hauptschritte:

  • Identifizierung des Bereichs der akademischen Forschung, der unseren Bedürfnissen entspricht,

  • Sich mit dem beliebtesten Deep-Learning-Framework vertraut machen,

  • Nutzung vortrainierter relevanter Modelle aus den Model-Zoos, die im Internet verfügbar sind,

  • Sie an unserer spezifischen Herausforderung zu testen: das Erfassen von Türen und Fenstern.

Als Leiter eines kleinen Forschungsteams in einem kleinen Start-up besteht meine erste Aufgabe darin, sicherzustellen, dass wir an etwas arbeiten, das einen Einfluss auf das Produkt hat. Das bedeutet, dass wir schnell und mit minimalen Kosten herausfinden müssen, ob eine potenziell innovative Technologie es wert ist, untersucht zu werden oder nicht.

Ein Proof of Concept (POC) ist entscheidend, um dies zu erreichen. Mit POC meinen wir, einen Ansatz / Algorithmus / eine Lösung, die hauptsächlich in akademischen Artikeln beschrieben wird, in einen ausführbaren Code zu übersetzen, den wir ausführen werden, um die Leistung des Algorithmus unter Bedingungen zu bewerten, die so nah wie möglich an dem Endfall sind, den wir lösen möchten.

Mehrere Faktoren haben uns geholfen, den POC wirklich schnell zu entwickeln und zu bewerten:

  • Fast alle Tools und Frameworks, die für Deep Learning verwendet werden, sind Open Source, was die Hürden für den Zugang zu einer professionellen / zuverlässigen Umgebung erheblich senkt,

  • Die akademische Welt ist im Bereich „Deep Learning für Computer Vision“ sehr aktiv, und Forscher teilen, was sie mit der Gemeinschaft entwickeln, wodurch die Arbeit zur Übersetzung einer Idee in Code drastisch vereinfacht wird,

  • Die GAFAs haben hervorragende Arbeit geleistet, um die beliebtesten Deep-Learning-Modelle mit der KI-Gemeinschaft zu strukturieren und zu teilen, was die Aufgabe beschleunigt, ein besonders beliebtes Modell in einem spezifischen Teilbereich zu testen,

  • Daten sind entscheidend im Deep Learning. Glücklicherweise gibt es einige große und kostenlose annotierte Datenbanken im Internet, die für das Training von Modellen verfügbar sind,

  • Deep Learning ist rechenintensiv. Die gute Nachricht ist, dass die Hardware für Deep Learning günstiger wird. Als Alternative können Sie beginnen, GPUs in der Cloud zu nutzen und anfängliche Investitionen zu vermeiden (wenn Sie sich nicht sicher sind, wie vielversprechend die Idee ist).

Unterstützt von diesen Faktoren strukturierten wir den POC in 4 Hauptschritte:

  • Identifizierung des Bereichs der akademischen Forschung, der unseren Bedürfnissen entspricht,

  • Sich mit dem beliebtesten Deep-Learning-Framework vertraut machen,

  • Nutzung vortrainierter relevanter Modelle aus den Model-Zoos, die im Internet verfügbar sind,

  • Sie an unserer spezifischen Herausforderung zu testen: das Erfassen von Türen und Fenstern.

Das akademische Forschungsfeld

In unserem Fall war es einfach, ‚Objekterkennung (oder Lokalisierung)‘ als das Forschungsgebiet zu identifizieren, in das wir eintauchen wollten. Interessanterweise ist ‚Objektlokalisierung‘ nur die zweite Ebene in der Skala der Komplexität dessen, was man in einem Bild verstehen kann, wie in der Tabelle unten beschrieben.

In unserem Fall war es einfach, ‚Objekterkennung (oder Lokalisierung)‘ als das Forschungsgebiet zu identifizieren, in das wir eintauchen wollten. Interessanterweise ist ‚Objektlokalisierung‘ nur die zweite Ebene in der Skala der Komplexität dessen, was man in einem Bild verstehen kann, wie in der Tabelle unten beschrieben.

Deep-Learning-Frameworks

TensorFlow (im Besitz von Google) ist das am häufigsten verwendete Deep Learning-Framework heute. Das bedeutet, dass es eine hohe Wahrscheinlichkeit gibt, dass jede in einem Artikel beschriebene Arbeit mit TensorFlow implementiert oder reproduziert wurde. Als Anmerkung zur Auswahl des Frameworks ist Popularität ein wichtiges Kriterium, aber nicht das einzige. Benutzerfreundlichkeit und/oder Reife von Produktionswerkzeugen sind ebenfalls wichtig.

Zugriff auf vortrainierte Modelle

Das TensorFlow-Team pflegt einen Model Zoo in einem zusätzlichen Repository. Dort finden Sie mehrere Python-Module, die APIs bieten, um die beliebtesten Deep Learning-Modelle zu implementieren, einschließlich Objekterkennungsmodelle. Diese Modelle verfügen über vortrainierte Konfigurationen. Das Training wurde mit verfügbaren Datensätzen wie COCO durchgeführt. Das hat uns in den frühen Phasen der Evaluierung Zeit und Entwicklungen gespart.

Die Implementierung der ‚Objekterkennung‘ in der Bibliothek bietet die Möglichkeit, ‚Transfer Learning‘ durch Feinabstimmung zu verwenden. In diesem Ansatz beginnen Sie mit einem bestehenden Modell, das auf Millionen von Bildern (wie dem COCO-Datensatz) vortrainiert wurde, und Sie trainieren es erneut auf einem kleineren Satz von Bildern (ein paar hundert Bilder sind für erste Tests ausreichend) Ihrer Sub-Domain (Bilder von Fenstern und Türen, die in unserem Fall aus Innenräumen aufgenommen wurden).

Dieser Ansatz ersparte uns die Belastung durch zwei wesentliche Herausforderungen während des POC:

  • die Tatsache, dass Deep Learning normalerweise MASSEN von Daten benötigt, um auf ein gegebenes Problem korrekt zu generalisieren. Und es ist ziemlich unwahrscheinlich, dass Sie zu Beginn Ihrer Untersuchung über dieses Datenvolumen verfügen,

  • die Tatsache, dass das Training mit Millionen von Bildern viel Zeit (und Geld) in Anspruch nimmt, wenn Sie nicht über die richtigen Hardware-Ressourcen verfügen. Das ist wahrscheinlich der Fall, wenn Sie ein Anfänger in der Welt des Deep Learning sind.

Die Herausforderung, mehrere Tausend bereits annotierte Bilder von Türen und Fenstern zu finden, wurde durch die Verfügbarkeit des ImageNet-Trainingsdatensatzes überwunden.

ImageNet bietet Zugriff auf mehr als 16 Millionen Bilder, die mit einem semantischen Baum von über 35.000 verschiedenen Kategorien indiziert sind. Durch die Auswahl der Bilder, die die Schlüsselwörter ‚Tür‘ oder ‚Fenster‘ enthalten, konnten wir etwa 3500 Bilder sammeln, genug, um ein ordnungsgemäßes „Transfer Learning“ basiertes Training durchzuführen.

Testen unseres Anwendungsfalls

Im Hinblick auf die Echtzeitbeschränkungen des magicplan-Erfassungsszenarios haben wir uns entschieden, mit einem einfachen und beliebten Modell namens „SSD Inception V2“ (weitere Details im nächsten Teil) zu beginnen, um zu sehen, wie gut es mit der Aufgabe umgehen kann.

Wir haben das Modell mit 3300 Bildern neu trainiert, die in ein Trainingsdatenset und ein Validierungsdatenset aufgeteilt wurden, wie es für ein richtiges Training empfohlen wird. Die verbleibenden 200 Bilder wurden als Testdatensatz verwendet, um den Fortschritt unserer verschiedenen Iterationen zu messen.

Innerhalb von Wochen konnten wir ein erstes akzeptables Leistungsniveau mit dem trainierten Modell erreichen. Weit davon entfernt, perfekt zu sein, waren die Ergebnisse gut genug, um die Entscheidung zu treffen, mehr Zeit und Ressourcen in die deeplearningbasierte Objekterkennung für Fenster und Türen zu investieren.

Gelerntes aus Erfahrungen

Die wichtigste Lektion dieser ersten Phase ist, dass Sie, wenn es darum geht, Funktionen zu implementieren, die auf validierten Deep-Learning-Techniken (wie der Objekterkennung) basieren, alle bestehenden Deep-Learning-Ressourcen im Internet nutzen können und sollten, um die Effizienz bei der Entwicklung und dem Testen Ihres Prototyps zu maximieren.

Das gesagt, es ist eine Sache, einen funktionsfähigen Prototypen zu haben, der das Potenzial des Ansatzes zeigt. Es ist eine andere Sache, ihn Teil einer App zu machen, die täglich von Millionen von Benutzern heruntergeladen wird.

Kommende nächste

Im Teil 2 von 3 werden wir genauer beschreiben, welche Arbeiten erforderlich sind, um von einem Prototyp zu einem nutzbaren Feature in Bezug auf die Leistung zu wechseln.