Letzten Frühling kam mein Schwager Luciano mit einem interessanten technischen Drawback zu mir: Aus verschiedenen, komischen Gründen vergessen die anderen Menschen, die in seinem Haus leben, die Türen ihrer Garagen offen, eine Tatsache, die oft große Auswirkungen hat Auswirkungen auf die autonome Temperaturregelung seines Good-House-Techniques. Die Frage für mich battle additionally: „Wenn ich eine kostengünstige WLAN-Kamera in diesen Garagen anbringe, gibt es dann eine KI-Möglichkeit, den Offen-/Geschlossen-Zustand der Türen zu erkennen, um entsprechend die Wärmepumpenrichtlinie zu aktualisieren?“ ?“. Die Antwort battle „Ja“.
Vor nicht allzu vielen Jahren waren die Lösungen für diese Artwork von Problemen größtenteils elektronisch. Man musste: den richtigen Sensor finden (je nach Artwork der Tür); schließen Sie es an den Stromkreis an; Geben Sie ihm eine angemessene, kontrollierte Ernährung; Rüste es mit mindestens einem Arduino aus; Schreiben Sie die Software program für den Prozessor und konfigurieren Sie die Kommunikation zwischen ihm und dem Hausautomationssystem. Dies ist im Allgemeinen kein teurer oder komplexer Prozess, aber für einen Informatiker wie wir ist es eine sehr unnatürliche Artwork, den Informationsfluss zu strukturieren.
Andererseits und zum Glück für uns bieten moderne intelligente Geräte eine sofort einsatzbereite Benutzerfreundlichkeit, die den Benutzer dazu einlädt, sich auf die Software program- statt auf die {Hardware}-Seite zu konzentrieren. Darüber hinaus können die heutzutage explodierenden datenwissenschaftlichen Techniken diesen Geräten wirklich leistungsstarke Fähigkeiten verleihen, sodass sie auch für Aufgaben nützlich sind, die weit von denen entfernt sind, für die sie entwickelt wurden.
Wir hatten in jeder Storage eine drahtlose Kamera mit einer Akkulaufzeit von jeweils einem Monat und einer stabilen WLAN-Verbindung zwischen ihnen und allen Computern, die die Hausautomation des Hauses verwalteten – additionally konnten wir loslegen.
Der erste Schritt, den wir machten, battle die Anpassung unseres Arbeitsablaufs: Als Datenwissenschaftler erzählte ich Luciano alles, was ich brauchte, um die ersten Experimente durchzuführen. dh einige Hundert Fotos der Türen, die jeweils mit einem „offen“ oder „geschlossen“-Schlüsselwort gekennzeichnet sind. Wir kamen schnell zu dem Schluss, dass ein Verzeichnis voller Bilder mit einer Wörterbuchdatei, die jeden Pfad zu dem durch das Bild darin dargestellten Zustand abgleicht, für unsere Aufgabe ausreichte.
Mit dieser Struktur im Hinterkopf baute Luciano eine Datenerfassungspipeline für die drahtlosen Kameras auf, die alle paar Minuten ein Foto der Türen aufnahm und es auf einen seiner Webserver hochlud. In der Zwischenzeit wurde die oben genannte Wörterbuchdatei mit einer ebenfalls von ihm selbst entwickelten Tagger-App iterativ geschrieben – dieses Mal natürlich manuell. Nach nicht allzu vielen Tagen battle eine erste Model des Datensatzes bereit, über einen anderen selbst gehosteten Webdienst, auf dem eine benutzerdefinierte Model von Github ausgeführt wurde („hausgemacht“ ist das Schlüsselwort für dieses Projekt), in mein Repo geladen zu werden.
Dies battle die Zeit, mit maschinellem Lernen zu beginnen – oder zumindest dachte ich das. Tatsächlich stellten wir nach der Untersuchung des Datensatzes fest, dass unsere Richtlinie zur zeitgleichen Erfassung einen unausgeglichenen Satz von Bildern mit 80 % erfasste. geschlossen Türen und 20 % offen Einsen. Wir müssen additionally noch ein paar Tage warten, bis wir ankommen zirka Insgesamt 1500 Bilder mit einer 50–50-Verteilung der Bundesstaaten.
Mit diesem letzten Datensatz waren wir wirklich bereit für die Datenwissenschaft. Ich habe zwei Hauptwege verfolgt: ein grundlegendes neuronales Netzwerk von Grund auf trainieren; Feinabstimmung einer heruntergeladenen Architektur, die für eine ähnliche Pc-Imaginative and prescient-Aufgabe vorab trainiert wurde. Bei nicht so vielen Exams habe ich herausgefunden, dass, selbst wenn alle Modelle bei ihrer Trainingsaufgabe eine hervorragende Leistung (99 % Genauigkeit) erreichen könnten (dh klassifizieren als offen oder geschlossen die Tür der spezifischen Storage, auf die sie trainiert wurden), zeigte nur das von Grund auf trainierte Vanilla Convolutional Neural Netowrk eine akzeptable Qualität der Ausgabe (92 % Genauigkeit), auch bei „der anderen Aufgabe“ (dh Klassifizierung des Torzustands der anderen Storage) ohne dass eine weitere Schulung erforderlich ist. Aus diesem Grund blieben wir dabei und versuchten, diese Architektur ein wenig zu optimieren, bevor wir sie in der Produktion einsetzten.
Nach einigen weiteren Experimenten stellten wir fest, dass die Probleme bei den falsch klassifizierten Testproben hauptsächlich drei waren: menschliche Fehler bei der Kennzeichnung der letzteren; Nachtfotos im Trainingsset unterrepräsentiert; Fotos, auf denen die Garagentore halb offen und halb geschlossen waren, Situationen, die auch für einen menschlichen Klassifizierer mehrdeutig waren. Wir haben das erste und das zweite Drawback durch eine unmittelbar folgenreiche Datenkuratierung/-sammlung behoben, während wir das dritte als intrinsische Grenze der Aufgabe beibehalten haben.
Als letzte Anmerkung zum Forschungsprozess stellten wir fest, dass wir durch die sechsfache Reduzierung der Anzahl der Neuronen des Algorithmus nahezu keinen Punkt an Genauigkeit verloren haben. Deshalb haben wir diese letzte Miniversion des Modells in Produktion genommen.
Und hier sind wir. Wir haben das Modell in ein für die Inferenz geeignetes Format konvertiert, das gesamte Projekt dockerisiert und es auf einem der Webserver von Lucianos Hausautomationssystem ausgeführt. Der gesamte Dienst läuft jetzt einwandfrei und liefert Prognosen, die quick immer mit dem tatsächlichen Zustand der Türen übereinstimmen. In der Zwischenzeit führen wir eine sanfte Datenerfassung durch, um die Genauigkeit des Modells rechtzeitig zu verfolgen und es im Falle einer Verschlechterung durch weiteres Coaching anzupassen.
Was zukünftige Arbeiten anbelangt, so ist eines der wichtigsten Merkmale des Ansatzes, den wir für dieses Projekt verwendet haben, seine äußerst allgemeine Formulierung: Das in die kostengünstige Überwachungskamera integrierte neuronale Netzwerk hätte auch für ganz andere Aufgaben trainiert werden können, wobei es nahezu dasselbe bliebe Bilder eingeben. Durch das Markieren der Fotos mit der Liste der in jeder Probe enthaltenen Personen hätte beispielsweise ein Anwesenheitserkennungssystem aufgebaut werden können.
Letzteres und die anderen in diesem Artikel hervorgehobenen Merkmale sind die Vorteile des Umgangs mit Software program statt mit {Hardware}: Wenn die Intelligenz in den Prozessoren statt in den Sensoren (oder in den Schaltkreisen) verbleibt, kann der Zweck des Techniques je nach Bedarf leicht angepasst werden auf die Scenario. Die Stärkung des Domotiksystems eines Good Houses, damit es sich seines internen Zustands bewusster wird, ist ein perfektes Feld zum Testen dieser Artwork von Pipelines, und ich bin gespannt, wie weit das gehen kann.
Aber das ist jetzt alles! In der Hoffnung, dass dieser Bericht für Sie nützlich sein wird, möchte ich ihn mit einem besonderen Dank an Luciano abschließen, der mich in den Prozess einbezogen hat. Hurra für die Wissenschaft! 🤖
Stefano Martire, www.stefanomartire.it
Wir sind uns bewusst, dass wir bei der Entwicklung dieses Projekts nichts erfunden haben, und das ist der Grund, warum wir die entsprechenden Codes nicht veröffentlicht haben: Die von uns verwendeten Instruments waren ziemlich standardisiert und wir fanden keinen Wert darin, sie als Open Supply bereitzustellen. In diesem letzten Abschnitt möchte ich jedoch einige der Bibliotheken zitieren, auf denen wir unsere Forschung basierten, um dem Leser einen Hyperlink und Inspiration für die Umsetzung ähnlicher Projekte zu geben.
Das Wörterbuch, das wir zur Beschreibung des Datensatzes verwendeten, battle eine einfache JSON-Datei, die alle erforderlichen Informationen für jede Probe enthielt. dh ein Schlüssel für den Pfad, der auf das Bild zeigt, und ein Schlüssel für den Zustand, der durch dieses Bild dargestellt wird. Der JSON wurde iterativ mit einer von Luciano entwickelten Net-App erstellt Schlanksodass wir problemlos alle gewünschten Bilder mit einer sehr hässlichen, aber sehr effektiven Einzelseitenanwendung markieren konnten.
Der „selbstgehostete Webdienst, auf dem eine benutzerdefinierte Model von Github ausgeführt wird“ battle Giteaim wahrsten Sinne des Wortes ein Open-Supply-Reskin von GitHub, das Sie privat auf einem Raspberry Pi ausführen können.
TensorFlowin seiner Foundation Python-API für die Modellforschung und in der Javascript eins für den Einsatz, wurde für die Entwicklung der neuronalen Netze verwendet. Die beiden Arten von Architektur, die für die von Grund auf trainierte Pipeline untersucht wurden, waren das Multi-Layer-Perceptron und das Convolutional Neural Community, während wir für die fein abgestimmte Pipeline versuchen, sie zu verwenden MobileNet V3 Vorab auf die klassische ImageNet-Klassifizierungsaufgabe trainiert.
Was den systemischeren Teil des Projekts betrifft, haben wir die gesamte Inferenzpipeline in einem ausgeführt Dockerschwarm auf zufälligen Raspberry Pis und recycelter Normal-{Hardware} aus dem Elektroschrott-Eimer, die alle mit dem interagieren Heimassistent beispielsweise die Stromversorgung des Domotiksystems. Letzterer könnte leicht abfragen Express JS Webdienst, der die zur Bestimmung des Zustands der Türen durchgeführten neuronalen Netzwerkberechnungen offenlegte.
Endlich einige Apple HomeKit Code wurde geschrieben, um den Zustand der Garagen vom Telefon aus zu überwachen und sie auch mit Siri zu öffnen/schließen.