Hab soetwas schon Mal mit Kamera und KI gesehen ist bestimmt auch für dich interessant.
Hab da auch schon ein wenig recherchiert. Ein Raspberry 3 oder Jeason Nano müsste reichen evtl. Reicht auch ein ESP32 + Kanada mit Tensorflow Lite
Eine KI erkennt in einem Videotunnel die einzelnen Bienen verfolgt sie und schaut wo’s sie herkommen und wieder verschwinden.
Hatte ich auch überlegt und hat auch so seinen Charm. Mit den Kamerabildern kann man ja noch mehr anfangen, als Bienen zählen, z.B. Pollenfarbe oder Varroa erkennen. Allerdings ist der Aufwand auch höher. Kamera, Optik, Beleuchtung, Auswertung - da kommt was zusammen.
Bei mir kommt noch dazu, das der Bereich schlecht zugänglich ist.
Ich werde wohl bei dem ‘klassischen’ Ansatz mit Lichtschranken bleiben.
Was auch noch zu bedenken ist, wie das in unser Messkonzept passt. Momentan ist das eine Einmalmessung zu einen Zeitpunkt. Nötig wäre hier aber einen Dauermessung mit Aggregierung über bestimmte Zeiträume.
Bei den Beispielbildern dort ist A.mellifera bereits dabei; auf diesem Bild wird die Honigbiene mit einem score von 0,931 erkannt, eigene Bienenbilder werden durchweg gut erkannt, keins davon kommt unter 0,8 (alle anderen dabei fehl-erkannten Insekten bekommen entweder 0 oder Werte im Tausendstel-Bereich). Ein Bild einer Haus-Feldwespe (Polistes dominula) wurde immerhin noch mit 0,6 richtig erkannt, die recht ähnliche Polistes chinensis wird auf gleichem Bild mit fast 0,2 ‘erkannt’.
Für die counter-Anwendung ist ja sicher nur “Biene / keine Biene” wichtig, davon allerdings gleich mehrere in einem Bild, auch deren Bewegungsrichtung (ausfliegend / ankommend) dürfte kniffelig werden für einen ESP32.
So als AI-Idee würde es reichen, wenn ein Algorithmus
auf einem sonst statischen Hintergrund sich bewegende Punkte erkennt
die Punkte dann nachverfolgt und registriert, ob …
… die Punkte am Bildrand auftauchen und in der Bildmitte / Flugloch verschwinden → dann wären es ankommende Bienen* oder
… die Punkte in der Bildmitte / Flugloch auftauchen und am Bildrand verschwinden → dann wären es abfliegende Bienen*
* ggf. auch Wespen, Hummeln, Hornissen, da könnte man sich später drum kümmern
ESP-WHO / ESP-DL
Für den ESP-EYE, ein ESP mit onboard Kamera und Mikrofon gibt es ESP-WHO, eine
image processing development platform based on Espressif chips.
Die könnte schon mal “cat_face_detection” (kein Witz!!), aber auch motion_detection. Aller verlinkter code für die ESP-IDF zusammen mit ESP-DL, einer Erweiterung für
Neural Network (NN) Inference, Image Processing, Math Operations and some Deep Learning Models.
Und hier der Werbeblock:
With ESP-DL, you can use Espressif’s SoCs for AI applications easily and fast.
Das Ding hört sich eher danach an als wäre es dafür gestrickt aus einem Bild eine event / eine bestimmte Person (China halt!) zu identifizieren. Fraglich,
ob die Auflösung der Cam die Identifizierung einer einzelnen Bienen zulässt und
das framework die Möglichkeit hat viele verschiedene Bewegungen parallel zu identifiieren, und als Punkte zu verfolgen
und ob der ESP das hardwaretechnisch kann oder es was größeres sein muss?
Ich hab mal ein wenig gegoogelt und alle Projekte benutzen die ESP32 CAM nur zum Streaming des Videobilds. Die Auswertung läuft dann auf einem PC. Der ESP hat wohl zuwenig Bumms, um das alleine zu stemmen.
Das ganze mit eine Raspi geht wohl - das ist aber auch nix, das auf Batterie laufen kann. D.h. Strom & WLAN sind in Reichweite, wenn man sowas realisieren will.
Den ganzen face und cat recognition-Kram der oben verlinkt ist läuft doch auch “nur” auf dem ESP32. Ist es dann tatsächlich die fehlende Rechenpower oder gibt es noch nicht die enstprechende Software für den ESP32 und daher wird eher der RasPi verwendet?
Ein Einzelbild aufnehmen und das dann 500 ms oder Länger zu “analysieren” ist natürlich was anderes als mehrere Bilder pro Sekunde aufzunehmen, x sich bewegende Punkte zu tracken und dann noch die Ergebnisse per Telemetrie zu verschicken …
Hast du allgemein nach Video-Projekten geschaut oder speziell Bienen / bee counter? Falls wir die noch nicht hier gelistet haben, gerne ergänzen.
Ich habe nach ‘object tracking’ gesucht. Der Anwendungsfall war da allerdings immer nur wenige Objekte. Die benutzten alle die ESP CAM als Videokamera und openCV.js zur Auswertung.
Spezielle ESP Software für diesen Zweck habe ich nicht gefunden. Vermutlich ist das Einsatzfeld dafür zu klein.
Das hier geht vermutlich zwar noch nicht “embedded”, zeigt aber den Stand der Forschung von 2018 – mit entsprechender Beleuchtung können scheinbar sogar Varroa Milben erkannt werden.
Wie @poesel oben beschreibt, verwenden viele Projekte in diesem Umfeld ESP32-CAM – aber eben nur als Kameramodul – zur Weiterverarbeitung auf einem stärkeren Rechner.
Hier kommt dann auch der NCS ins Spiel, der schwächeren Maschinen (hier: Raspberry Pi) die notwendige Rechenleistung verschafft, dort realisiert mit “Tiny-YOLO”.
Weitere Einordnung
Für den geplanten Anwendungsfall braucht man bestimmt kein Modell, das auf generische Objekterkennung trainiert ist. Mat Kelcey strebt(e) mit seinem optimierten Modell 120 fps auf dem NCS an, hier ist damals noch ein proof-of-concept zustande gekommen: bnn/HACK_running_on_ncs.md at ncs_poc · matpalm/bnn · GitHub
Das ist schon echt ein starkes Projekt. Bisher hatte ich noch Scheu, das mal aufzusetzen, weil es ja doch meistens in weiterer Arbeit mündet ;].
Ich wollte hier nun aber mindestens mal festhalten, dass Jonathan Byrne den entsprechenden “to-bee-or-not-to-bee” Datensatz unter der CC BY-SA 4.0 veröffentlicht hat, das passierte schon 2018, kurz nach Deinem ursprünglichen Beitrag.
An das Projekt von Mat Kelcey hab ich mich zwar immer noch nicht herangetraut, dafür ließen sich mit einem anderen ein paar schnelle Schnappschüsse gewinnen, basierend auf:
Wenn Ihr weitere oder bessere Anflug- oder Fluglochvideos habt, verlinkt sie gerne hier im Beitrag.
Details
Die Maschinerie erkennt die Objekte und verfolgt sie über die Zeit, wie im annotierten Video zu sehen. Auf der Konsole sieht die Log-Ausgabe unterdessen folgendermaßen aus (pro Frame ein Eintrag):
Und dort bei HiveControl/scripts/beecount at master · rcrum003/HiveControl · GitHub gibt es per beecounter_svc.py ein Python Programm, basierend auf OpenCV und NumPy. Es nimmt bereits die im Bild durch die grünen vs. roten Tracks dargestellte Unterscheidung nach Einflug/Ausflug vor. Außerdem regelt es automatisch die Beschaffenheit des Hintergrunds nach, das ist bestimmt für die sich im Tagesverlauf ändernden Lichtverhältnisse sinnvoll.