Objekterkennung nutzen als Mülltonnenerkennung

  • Hallo,

    ich bin nicht ganz neu im Thema Raspberry Pi, aber auch absolut kein Profi.

    Ich benutze Home Assistant als System im Hause auf einem Intel NUC, da 9 Kameras in 4K gestreamt werden. Das schafft der Raspberry einfach nicht, habe ich getestet.

    Da ich über das Home Assistant Automationen geschrieben habe, möchte ich es gern versuchen, mittels Kamera und Objekterkennung (4 Mülltonnen mit verschiedenen Größen und Farben) an einem Standort zu erkennen, bzw. deren Anwesenheit oder Abwesenheit zu melden. Denn am Tage vor der Müllabfuhr bekommen wir im ganzen Haus über die Alexas mitgeteilt, dass morgen Abholung ist und die Mülltonnen raus müssen. Nun soll aber wenn abends nach x Uhr die entsprechende Tonne noch an ihrem Platz steht eine weitere Meldung ausgegeben wird, solange bis die Tonne eben raus ist.


    Dazu brauche ich eben die Erkennung durch die Kamera. Wäre das mit einem Raspberry Pi5 machbar?

  • Eine relativ einfache Lösung wäre, auf die Tonnen große QR- oder Strichcodes zu kleben und mit OpenCV zu erkennnen.
    Es müssen nicht mal Codes sein - OpenCV hat auch ne schöne Funktion, um Muster wiederzuerkennen (feature matching) - du könntest also auch ein Minion oder Mikey-Mouse oder das Firmenlogo drauf kleben. Das müsste sogar recht gut klappen, wenn die Tonne schief steht...

    Ein Pi reicht dafür völlig. Allerdings, da es zeitunkritisch ist, wäre es einfacher, mit einem ESP32 oder so die Bilder zu machen und an den HA-Server zu schicken. Dort kann dann das OpenCV laufen und das Bild in Ruhe auswerten.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • [...] Finde im Home Assistant dazu auch keine Integration oder Addon?

    Also eine Plug and Play Lösung wird es höchstwahrscheinlich nicht geben, sodass du selber aktiv werden und programmieren musst.

    Auch wenn die Bilderkennung nicht invasiv ist und keinen physischen Aufwand benötigt, weil du schon die Kameras hast, ist die Umsetzung dafür in der Software aufwändiger. Mit Tensorflow hättest du eine einfache Objekterkennung, die Mülltonnen erkennen kann und in Boxen einrahmt. Die Farbe zu erkennen musst du dann aber selbst machen, indem du z.B. den Anteil einer bestimmten Farbe im obersten Viertel einer Box bestimmst. Oder du lernst ein eigenes Modell mit hunderten Bildern von deinen Mülltonnen an, alle schön händisch selektiert und mit Farbe gelabelt, aber das ist auch wieder aufwändig.

    Hier gibt es eine Anleitung für Tensorflow, die man selbst im Browser ausprobieren kann: https://www.tensorflow.org/hub/tutorials/tf2_object_detection (oben musste ich die numpy Version von 1.24.3 auf 1.26.4 ändern, damit es funktioniert. Weiter unten in der Variable `IMAGES_FOR_TEST` kann man eigene Bilder oder eine URL angeben.)


    Ich kenne deine Gegebenheiten nicht, weil du keine Beispielbilder gezeigt hast, aber ich gehe mal davon aus, dass die Tonnen immer an der gleichen Stelle stehen und die Reihenfolge gleich bleibt. Mit OpenCV wäre mein Ansatz ähnlich, nur dass du selbst einmal die Boxen für die Deckel festsetzt und danach wieder die Farben bestimmst. Die Kamera sollte sich nicht bewegen können. Bisschen fortgeschrittener ist es dann, wenn die Reihenfolge egal ist und du immer alle Deckelfarben bestimmst und zählst. Fehlt Farbe x, fehlt auch die Mülltonne x.

    Was mir gerade noch einfällt, was zu beachten ist:

    • Tag und Nacht. Liefert deine Kamera bei wenig Licht trotzdem noch ein Farbbild?
    • Allgemein Licht: Gibt es Schatten auf den Mülltonnen? Wie ändern sich die Lichtverhältnisse? Sind die Farben zu erkennen, wenn die Sonne hell scheint?
    • Versperrte Sicht: Wenn gerade jemand an der Mülltonne steht und die Kamera keine freie Sicht hat, dann muss später nochmal geprüft werden. Ich würde sowieso denken, dass man bei diesem Vorhaben nur alle z.B. 30 Minuten ein Bild auswertet anstatt 24/7 den Videostream. Und dann z.B. noch zweimal mit jeweils einer Minute Pause. Dann hast du drei Messungen und kannst zur Not eine verwerfen, falls da gerade jemand an der Tonne stand.


    So schön die Idee mit der Bilderkennung auch ist, finde ich sie relativ aufwendig, vor allem wenn man jetzt nicht gerade Computer Vision Engineer bei Tesla ist :D Wie sieht es hardwaremäßig bei dir aus? Als Alternative kann ich mir Ultraschallsensoren oder Lichtsensoren vorstellen. Ultraschallsensoren an der Wand und die Tonnen werden davor gestellt. Wird ein kleiner Abstand gemessen, ist die Tonne anwesend. Das funktioniert auch bei Nacht. Lichtsensoren würde ich auf dem Boden platzieren und wenn die Tonnen draufsteht und es dunkel ist, ist die Tonne anwesend. Das funktioniert aber nicht bei Nacht und im Winter wird man damit auch keinen Spaß haben.

    Kelvin

  • Danke für alle Infos. Ich glaube mit Kamera wird zu aufwendig.

    Mit Ultraschall hatte ich es schon gebaut mit ESP32 für eine Tonne als Test. Funzt auch perfekt, aber für 4 Tonnen müsste ich eine Art Gestell bauen hinter den Tonnen um alle 4 Ultraschall Sensoren ordentlich zu verbauen. Dazu Strom.

    Da sieht ja total Mist aus, es sei denn, ich würde die Tonnen in spezielle Mülltonnenboxen stellen, dann würde das alles versteckt funktionieren. Aber dafür nun noch
    € 3000,00 nur für die Tonnen zu investieren habe ich kein Bock.

    Schade

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!