NEWS
Wasserzähler - Selfmade
-
@jomjol
Da muss ich Knallochse zustimmen. Für den schnellen Start sicherlich leichter umzusetzen aber wer schnellere Auswertungen braucht wird damit nicht glücklich.
Wenn ich einen neuen Gedanken nennen darf: ich hätte mir lieber gewünscht dass das neuronale Netz selbstständig dazulernt. Ist natürlich abhängig davon ob sich sowas automatisieren lässt. Dann wäre man nicht abhängig von dir. -
@jomjol
Ich weiß nicht, ob der Dockercontainer so ein großer Aufwand ist. Das einzeln zusammen installieren wäre sicherlich einiges, aber, wenn man sich mal überwunden hat, geht es mit dem docker doch recht unproblematisch.
Das war für mich das einfachste an der ganzen Geschichte. Allerdings hab ich auch eher Erfahrung mit Software/Linux als Hardware (das flashen hat ca. einen halben Tag gedauert bis ich das mal raus hatte). -
@jomjol
danke für die Antwort.
Ja das hatte ich ja gemacht - allerdings wurde aufgrund der fehlerhaften Erkennung keine weitern Werte mehr eingelesen - da sie wohl nicht sauber erkannt werden.
Deshalb die Frage ob man Bilder zum Trainieren irgendwo bereitstellen kann. -
@ehome du kannst du Bilder einfach mir schicken - Mail kommt per PM.
Von Zeit zu Zeit mache ich ein Update der tflite. Das funktioniert leider nicht automatisch.
-
@jomjol Ich würde momentan beim Docker bleiben. Wenn man sich mal etwas damit befasst hat geht das recht schnell und komfortabel. Auch ein Update ist so ruckzuck erledigt. Beim ESP32 müsste ich jedesmal den mechanischen Aufbau entfernen und das Teil via USB am PC anschliessen und neu laden (oder läuft das auch per OTA?).
Die Antwortzeiten sind schon auch entscheidend. Wenn es mal eingerichtet ist und stabil läuft ist es tatsächlich nicht kritisch. Wenn ich mir aber vorstelle, wie oft ich als Anfänger "reload" gedrückt habe bis alles gepasst hat und ich jedesmal über 1min hätte warten müssen...Übrigens, meine Installation läuft jetzt und meine Zeiger werden trotz "ungelernt" schon richtig gut erkannt!! Hier mein Setup
ROI:
Das Bild nehme ich mit einer XGA-Auflösung auf.
openHAB:
Passt!
Die 1 erkennt er aber meistens als 7 und wenn ich die Log-Bilder der Zeiger anschaue, stimmt die Kommastelle meistens nicht. Deshalb sammle ich trotzdem die 200-300 Bilder und schick sie dir dann.
-
@jomjol Hallo Jomjol, war ein langes WE in Ö, deshalb verspätet meine Antwort:
... ich würde lieber beim Docker bleiben und die kürzeren Antwortzeiten bevorzugen
... sollte wirklich einmal ein schnellerer ESP-CAM zur Verfügung stehen, kann man das in Angriff nehmen
... vorher sollte vielleicht eine OTA verwirklich werden und
... ein selbstlernendes AI wäre sicherlich von immenser Vereinfachung (Training Mode)Appropo lernen: Kannst Du mir Bitte die Neun weiter oben im Thread 931 anlernen, da zuckt leider meine Erkennung total aus. Thx!
-
@pfried OTA geht doch schon längst meine ich.
-
@watcherkb Ich habe es einmal getestet, da ging es nicht, oder ich habe etwas falsch gemacht.... Kannst Du bitte eine Anleitung zur Verfügung stellen?
-
-
@jomjol
Zu deiner Frage die ganze Bildverarbeitung auf den ESP32 zu verlagern.Von mir ein klares Ja zu solo Lösung.
Längere Antwortzeiten sind, so denke ich zu verkraften.Wenn du noch Unterstützung bezüglich Hardware benötigst sag beschied. Ich könnte dir eine passende Hardware entwickelt entweder mit einem ESP32 mit externem zusätzlichem RAM oder evtl mit einem zusätzlichem Co-Prozessor oder Prozessor, FPGA, mit einem ESP8266 ....
-
@pfried Problier mal folgendes tlite-File: https://github.com/jomjol/neural-network-digital-counter-readout/blob/master/Train_CNN_Digital-Readout_Version_6.1.2.tflite
Dachte, ich hätte sie schon beim letzten Mal geteached. Gerade aber erst gemerkt, dass dein Bild in Thread 931 ein png-Format hat. Ich hatte es einfach reinkopiert, aber der Algo verarbeitet nur jpg-Dateinen und hat es daher beim Anlernen einfach ausgelassen :-).
-
@pfried, @michaeljoos, @ehome, @Knallochse und natürlich ALLE anderen
Ich fasse mal eure Rückmeldungen zusammen:
- jetzige Lösung mit ESP + Docker passt für fast alle ( ihr habe es ja auch am laufen)
- Vereinzelt auch Wunsch nach einer "einfachen" Single-Tool Lösung
- Hauptthema ist die lange Response-Zeit für eine ESP32-only Lösung
- Debugging und Testen ist bei den langen Response-Zeiten auch aufwendig
Für die Responsezeiten hätte ich die Lösung: das Auslesen kann ich per Timer auch offline periodisch stattfinden lassen und dann eine sofortige Rückmeldung mit dem zuletzt umgewandelten Wert kommt. Ich denke auch, dass eine Hybridlösung einfach möglich sein sollte. Denn wenn das System mal läuft, wäre es ein leichtes, auch als Bildserver für den Docker-Container zu funktionieren. Letzterer könnte dann sogar als Generator für das Config-File für des ESP32 dienen.
Technischer Stand ist der Folgende:
- einige Komponenten laufen schon im Einzelmodus (Bildererkennung, Bildalignment und ROI-Exktraktion, Vereinfache Config.ini Prozessierung
- noch fehlende Komponenten: Ansteuerung Kamera, http-Server Implementierung
- bisher ist die Rechenpower und der Speicher (4 MB PSRAM) ausreichend
- Hauptproblem: bei Kombination von mehr als drei Modulen kommt es zu einem unbekannten Stack-Overflow, dessen Ursache ich noch nicht finden konnte. Leider geht JTAG-Debuging nicht, da die Debugports durch Kamera und SD-Karte belegt sind. Das macht die Fehlersuche sehr aufwendig.
Ich halte euch auf dem Laufenden.
Beste Grüße,
jomjol -
@jomjol
wenn du die SD-Karte nicht brauchst dann kann ich dir gerne ein JTAG Interface "anlöteten" -
@Stev8176 Danke für das Angebot - leider ist die SD-Karte notwendig. Ich muss die Bilder zwischenspeichern, denn ich kann nicht mehrere Bitmaps und das Neuronale Netz im Speicher belassen. Dafür reicht schlicht der Speicher nicht.
Aber bei nächster Gelegenheit werde ich auf dein Angebot für Hardware kommen. Denn da fehlt mir noch etwas Erfahrung.
Beste Grüße,
jomjol -
@jomjol Die vielen zugriffe auf die SD-Karte reduziert die Lebensdauer.
Wie viel RAM würdest du den benötigen um alles zu speichern? Würden dir 8MB reichen? 8MB ist das was der ESP32 ohne weiteres kann aber halt nur 4MB Memory Mapped zur gleichen zeit.Grüße
-
@watcherkb Danke für den Hinweis!
-
@jomjol Sorry, mein Fehler in Zukunft nur mehr jpg Dateien
-
@jomjol Habe unterdessen die >200 Bilder für die Zeiger bereit. Aber so wie es ausschaut, kann ich noch keine PN verschicken. Ich häng die Zip-Datei einfach hier rein und hoffe es klappt --> Zeiger.zip
-
@michaeljoos Bilder sind angekommen - ich werde es bei nächster Gelegenheit (Wochenende?) trainieren.
-
Moin.
Hab mich nun auch an das Projekt gewagt, da es ziemlich genau das ist, was ich vor hatte selber zu erstellen. Vielen Dank schonmal für die viele Arbeit, die hier reingesteckt wurde!!
Und sorry vorab, wenn einige Fragen bereits irgendwo beantwortet wurden. Das Nachladen der Artikel ist ein wenig ein Krampf.ESP32-CAM liegt in einer gedruckten Halterung und schaut auf den Zähler, ca. 6 cm Abstand. Bild sieht soweit ok aus, nicht ganz weiß, sondern etwas grau.
Erstes Problem: Der interne Blitz ist grell und spiegelt sich im Glas, was die Zahlen teilweise unlesbar macht. Ich habe dafür den Arduino-Code angepasst, so dass ich die Intensität des flashes einstellen kann - hat aber nur bedingt geholfen, da er auch bei niedriger Intensität schnell einen ziemlich grellen Punkt in die Mitte und in die Rundung der Zahlenräder haut. Ich habe mir daher beholfen, in dem ich einen aus Alufolie gebastelten Diffuser in die Halterung gefriemelt hab (leider konnte ich nur in schwarz drucken - weiß wäre hier wohl besser gewesen). Jetzt hab ich keine Reflexionen mehr in den wesentlichen Bereichen des Bildes.Jetzt steh ich vor der Einrichtung der Config für das Docker Image (welches auf meiner Syno läuft).
- config: Rotation.
Habe gemerkt, dass trotz aller Berechnungen, ich das Bild in Photoshop um 1° gegen den Uhrzeigersinn drehen muss, um es gerade zu bekommen. Trage ich jetzt unter
[alignment] initial_rotation_angle=1
ein, oder
-1
oder359
?- config manuell: [Digital_Digit]
Wenn ich jetzt für die Digitalen Ziffern x, y, w, h angebe: beziehe ich das auf mein Originalbild, oder auf das um 1° gedrehte? Dadurch, dass zumindest PS beim Drehen ja einiges an Rahmen einfügt, stimmen die Zahlen ja eventuell gar nicht mehr.
Oder wie bekomme ich ein Bild, wie es nach dem Rotieren vom Programm verwendet wird?- Meine erstellte config wollte ich im tool http://wasserzaehler.ignorelist.com/preparation/ hochladen, bekomme aber Fehler, die nicht ganz schlüssig sind.
Exception Type: KeyError Exception Value: Analog_Counter
Ich habe in
AnalogReadOut
stehen:Enabled=False
Und den o.g. Key auskommentiert. Das schein ihm nicht zu gefallen.
Wenn ich ihn wieder einbaue, bekomm ich entspr. Fehler mitModelfile
und anschließendnames
. Schreibe ichnames=
, da ich keine habe, gibt's einen anderen Fehler:Exception Value: Analog_Counter.
-- dieses Mal mit Punkt.
Wie bekomme ich es hin, dass ich das Tool nutzen kann, um meine Config zu prüfen oder zu erstellen ohne Analog Counter?- Frage wäre: Da ich beim Sensus weiße Zahlen auf schwarzen Grund vorne und weiß auf rot hinten habe: gibt's da schon ein Modelfile für, oder wie kann ich Ziffern beitragen zum Lernen?
Viele Fragen, aber ich hoffe, hier Antworten zu finden.
Danke schonmal vorab