Wir verwandeln einen Roboterstaubsauger in einen Universalsoldaten

Alles begann mit einer Leidenschaft für tiefes Lernen, neuronale Netze und weiter unten auf der Liste. Ich habe mir ein paar Kurse angesehen, an einem Wettbewerb über Kaggle teilgenommen ... "Was kann ich sonst noch tun?". Dann kroch ein Roboterstaubsauger (Xiaomi Vacuum Cleaner V1) von seinem eigenen Geschäft vorbei und warf eine interessante Idee ...



Lange Einführung


Dieser Artikel ist eine vorläufige Zusammenfassung eines bestimmten Lebenszeitraums. Ich hoffe, es wird für Menschen nützlich sein, die sich mit maschinellem Lernen beschäftigen möchten, aber noch nicht entschieden haben, in welche Richtung sie sich entwickeln sollen. Vor fast einem Jahr habe ich meinen Job und meinen Wohnort erneut gewechselt. An einem neuen Ort sprachen sie viel über maschinelles Lernen, aber hauptsächlich über Manager, die ein Hype-Thema fördern möchten. Der Rest traf das Thema ohne große Begeisterung (immer noch, um für sie zu arbeiten).


Ich fragte mich, worum es beim maschinellen Lernen ging. Ein Jahr später kann ich sagen - das Thema ist erstaunlich umfangreich. Mal sehen, welche spezifischen Aspekte für den Einsatz in Leben und Geschäft verfügbar sind.


  1. Klassisches maschinelles Lernen.
    Kurz gesagt: alles, was vor dem Auftritt war hypa tiefes Lernen (tiefes Lernen). Wenn Sie tabellarische Daten zu Verkäufen, Kunden, Transaktionen haben und den Umsatz steigern, Kunden anziehen, Betrug erkennen möchten, sind Sie hier richtig. Hier sind einige gute Vorlesungen , die Ihnen helfen, Daten zu analysieren und Methoden wie Random Forest, K-Means oder XGBoost zu verwenden. Ich mochte auch die Kaggle-Mikrokurse und den damit verbundenen Wettbewerb zur Vorhersage von Eigenheimpreisen. Vielleicht kann jedes Unternehmen mit echten Kunden (und damit einer Datenbank) diese Methoden anwenden. Es gibt viele interessante Dinge.
  2. Tiefes Lernen
    Unbemannte Autos, unbemannte Autos und Ersetzen des Kopfes von Jack Nicholson durch den Kopf von Jim Carrey . Aber wenn Sie tiefer tauchen, dreht sich jeder Kopf. Hier ist das Erkennen von Gesichtern, Emotionen, Körperhaltung, das Ziehen von Semantik aus dem Video und alle Arten von Videostream-Transformationen. Autotranskription und Autotranslation, Definition von Krankheiten und Unkräutern, na ja, Sie verstehen, fast alles. Neben Computer Vision gibt es auch die Verarbeitung natürlicher Sprache (NLP), die Verarbeitung und Simulation von Audiostreams sowie das Spielen von neuronalen GAN-Netzen. Welchen Aspekt des tiefen Lernens Sie auch wählen, Sie können Zeit damit verbringen, Folgendes zu tun:

  • Vertiefung der Details der Architektur neuronaler Netze.
    Dieser Bereich ist meiner Meinung nach der Wissenschaft am nächsten und erfordert entsprechende Kenntnisse in Mathematik und Informatik. Wenn Sie gerne mit einer neuen Killeraktivierungsfunktion experimentieren, benutzerdefinierte Ebenen verdrehen und die Lernrate nicht nur banal verringern, sondern sich in eine Röhre verwandeln möchten, ist dieser Bereich des tiefen Lernens genau das Richtige für Sie. Öffnen Sie die neuesten wissenschaftlichen Artikel und experimentieren Sie. Aus geschäftlicher Sicht sind dies die Dinge, die Unternehmen tun können, die bereit sind, speziell in die Diskussion zu investieren. Es gibt Vorträge der Stanford University für YouTube-Bekanntschaften auf YouTube .


  • Vertiefung der Infrastrukturdetails.
    Das Training von neuronalen Netzwerken, die zur Erkennung von Bildern abgebildet werden, erfordert Maschinenressourcen. Die Auswahl an Eisen ist groß und nur durch die Größe der Brieftasche begrenzt. Ich denke, die GTX 1070 Ti kann als guter Start angesehen werden, aber vergessen Sie nicht, dass eine Grafikkarte allein nicht alle Probleme löst, da die Daten noch vorbereitet und den neuronalen Netzen zugeführt werden müssen. Eine schwache CPU oder eine langsame Festplatte kann zum Engpass Ihres Systems werden. Kaufen Sie daher einen zusätzlichen i5-Prozessor, 16 Gig RAM und eine Solid-State-Festplatte. Die Tastatur wird am billigsten sein. Eine weitere Option ist Google Cloud, Azure, AWS und Kaggle. Cloud-Dienste bieten Dutzende, wenn nicht Hunderte von Optionen mit einem Startpreis von rund 50 Cent pro Stunde für den K80 (ungefähr der gleiche wie für die GTX 1070 Ti). Google gibt Ihnen eine Einzahlung von 300 US-Dollar zum Üben. Azure gibt 200 Dollar, mit Amazon musste man sich nicht befassen. Ich mochte die Google-Option, weil Sie die Grafikkarten schnell wechseln können ("Ah, gehen Sie wie ein Spaziergang. Heute wird der V100 sein"). Verglichen mit den Gehältern des Rockstar-Datums der Standorttests Ihrer Forschungsabteilung sind diese Ausgaben natürlich echte Pennies. Ein kleiner Life-Hack verwendet beim you_user@your_host -L 8888:127.0.0.1:8888 einer Verbindung zu einem Computer in der Cloud die Portweiterleitung: you_user@your_host -L 8888:127.0.0.1:8888 . Auf diese Weise können Sie Remote-Jupyter auf dem lokalen Computer ausführen. Ich möchte auch über Google TPUs sagen. Sie können völlig kostenlos direkt von Google Colab aus verwendet werden. Ob Sie sie jedoch verwenden können, ist die Frage. Wenn Sie mit mehr oder weniger Standardmodellen arbeiten, sieht alles schön aus, aber benutzerdefinierte Modelle verhalten sich unvorhersehbar, wenn sie gerade erst gestartet werden.


  • Vertiefung der Implementierung in der Produktion.
    Experimente mit Architektur und Teilnahme an Wettbewerben sind sehr nützliche Dinge, aber in Wirklichkeit ist es nicht so wichtig, dass Ihr Modell eine Genauigkeit von 85% oder 87% ergibt. In diesem Fall ist für unbemannte Autos oder mobile Anwendungen die Geschwindigkeit der Entscheidungsfindung wichtiger und für medizinische Bedürfnisse höchstwahrscheinlich eine geringe Anzahl von Fehlern der zweiten Art ("Gesund! Komm schon, auf Wiedersehen!"). Das heißt, die Identifizierung von Prioritäten tritt in den Vordergrund. Außerdem eine Reihe technischer Fragen: Wie kann ein kontinuierlicher Betrieb in der Produktumgebung eingeführt und sichergestellt werden, wie kann das Modell auf neue Daten trainiert werden, wie können die Arbeitsergebnisse überwacht und bewertet werden, wie können schließlich Fehler erkannt und behoben werden? Wir haben bereits alle diese Probleme mit normaler Software, aber jetzt gehen sie auf eine andere Ebene. Es gibt bereits Tools für die Versionskontrolle (Git-LFS, Saturn Cloud), die speziell auf maschinelles Lernen zugeschnitten sind, aber es gibt noch keine allgemein anerkannten Standards, die sicherlich ihre eigene Romantik haben. Ein weiterer Life-Hack: Wenn Sie Hyperparameter in separaten Konfigurationsdateien speichern, können Sie erfolgreiche Experimente problemlos wiederherstellen.


  • Verwenden Sie vorgefertigte Modelle und übertragen Sie das Lernen.
    Der einfachste und attraktivste Teil des maschinellen Lernens für diejenigen, die sehen möchten, wie alles in der Realität funktioniert. Es gibt genug fertige Modelle, ein paar Dutzend Codezeilen und Voila: Mehrfarbige Quadrate laufen über den Bildschirm. Sie müssen keine Zeit und Ressourcen aufwenden, um das Modell von Grund auf neu zu trainieren. Es gibt sogar vorgefertigte Lösungen für Hardware, wenn Sie eine Erkennung vor Ort wünschen (übrigens eine hervorragende Übersicht) . Es scheint, nimm es und benutze es, aber es gibt einige Nuancen. Vorgefertigte Modelle werden an Standarddatensätzen trainiert. Um herauszufinden, wer Sauerrahm aus Ihrem Unternehmen stiehlt: Vaska-Katze oder Semyon-Katze, müssen Sie das Modell noch anpassen (Transferlernen). Vielleicht kostet Baba Masha mit einem Besen das Geschäft viel weniger.



Hauptteil


Hier kehren wir zum Anfang des Beitrags zurück. Als der Roboter-Staubsauger vorbeikam, wollte ich eine einfach funktionierende Anwendung oder ein Gerät mit Bildverarbeitung erstellen. So kam die Idee auf, dem Staubsauger einen weiteren Kommunikationskanal mit der Außenwelt zu geben.
Wenn Sie eine kleine Kamera daran anschrauben, können Sie fertige Modelle verwenden oder Ihre eigenen trainieren. Die Anwendungsmöglichkeiten sind voll. Von der Fleckenreinigung bis zur Verfolgung des Hundes. Sie können mit GAN eine Art Spiel im physischen Raum entwickeln oder mit NLP-Modellen spielen und ihm beibringen, wie man wie ein Sprachassistent spricht. Kurz gesagt, die Zeit, um Ihren eigenen Heimroboter zu trainieren.


Natürlich müssen Sie mit einfachen Dingen beginnen. Zum Beispiel, um nach Habré zu suchen, das uns schon gemacht wurde. Es stellt sich heraus, dass es "in ihrem" Ubuntu 14.04 ist, was bedeutet, dass Sie, wenn Sie eine Wurzel haben, diese beispielsweise über den Joystick steuern können . Wenn Sie die Lidar-Daten abrufen, finden Sie nicht weniger einen Prototyp eines unbemannten Autos zur Hand.
Die Auswahl beginnt bereits in dieser Phase. Nehmen Sie eine fertige Kamera mit Wi-Fi und einem Akku oder ein Board für Schlussfolgerungen wie Jetson Nano? Und kann ich eine Kamera, WLAN und einen Akku am Raspberry Pi zusammenbauen? Jeder Ansatz ist auf seine Weise interessant, aber ich habe versucht, mich an das Hauptziel zu halten: ein einfach funktionierendes Gerät mit maschinellem Lernen herzustellen, also habe ich mich für die erste Option entschieden.


Während die Kamera unterwegs war, fuhr der Staubsauger und fuhr darauf. Es funktioniert perfekt, es bleibt noch Zeit zum Träumen. Nehmen wir an, Hector zog einen Stock von der Straße und zog ihn auf seinem Lieblingsteppich. Die Kamera, die hoch genug aufgehängt ist, erfasst die Verschmutzung (hier erinnerte ich mich an die Herausforderung bei schmutzigem Geschirr ) und sendet die Koordinaten an den Staubsauger. Die Jagd nach einem Hund ist noch einfacher. Es reicht aus, die Kamera auf den Staubsauger selbst zu stellen und sich vorwärts zu bewegen, wenn der Hund erkannt wird, dann einen vollen Kreis zu schließen und zur Basis zurückzukehren.


Aber das sind Pläne für die Zukunft. Lassen Sie uns jetzt etwas sehr Einfaches tun. Lassen Sie den Staubsauger je nach Objekt, das in Sichtweite der Kamera kam, unterschiedliche Geräusche machen. Dazu benötigen wir zwei Threads, die durch eine gemeinsame Warteschlange verbunden sind.


  • Das Modell (ich habe eines der vorgefertigten Modelle des TensorFlow-Modellzoos verwendet) erkennt das Objekt und stellt seinen Namen in die Warteschlange.
  • Ein anderer Thread nimmt den Namen des Objekts aus der Warteschlange und generiert die URL zur Audiodatei.
  • Der Pfad wird an den Staubsauger übergeben und klopft über FTP oder http an die empfangene Adresse für die Datei.
  • Im Ordner jedes Objekts befinden sich zur Änderung mehrere Dateien. Die Datei wird zufällig ausgewählt. Zusätzlich gibt es einen Parameter für die Wahrscheinlichkeit der Tonwiedergabe, so dass der Staubsauger, der Hector mit einer Geschwindigkeit von 10 fps fixiert, nicht wie verrückt klappert, sondern etwas überzeugend und würdevoll kommuniziert.

Das Diagramm sieht folgendermaßen aus:



So funktioniert es:



Zwischensumme


Das Ziel ist erreicht: Der Staubsauger spricht. Ich bin froh, dass ich nicht zu viele Dinge gleichzeitig gemacht habe. Der nächste Schritt besteht darin, die Mustererkennung mit dem Fluss zu verknüpfen, der die Bewegung reguliert, und auch das Transferlernen zu versuchen.


Künstliche Intelligenz, das Thema ist so umfangreich, dass es schwierig ist zu bestimmen, was überhaupt unternommen werden soll. Meiner Meinung nach gibt es keinen einzigen Einstiegspunkt. Es ist überhaupt nicht notwendig, mit der Berechnung komplexer Ableitungen oder Python-Programmierkursen zu beginnen (obwohl beide sicherlich nützlich sind). Wählen Sie, was für Sie persönlich interessant ist, und vielleicht liegt die Stärke bei Ihnen, das zu beenden, was Sie begonnen haben.


Details zur PS-Implementierung befinden sich im Repository . Kommentare und Pull-Anfragen sind willkommen.

Source: https://habr.com/ru/post/de474024/


All Articles