NEWS
Wasserzähler - Selfmade
-
@jomjol super vielen dank das hat mir echt geholfen. vllt kannst du das mit in deine Anleitung mit aufnehmen. Das ist ein guter hinweis.
Jetzt brauche ich aber nochmal ein wenig support. Habe die Kamera auch soweit eingerichtet. Habe mir ein Bild runtergeladen und bei deinem Programm zum einrichten der Zahlen hochgeladen. Nur leider klappt das nicht so wie in deine Beschreibung. Wie kann ich die roten Zahlen auch mit einbinden??
Meine Wasseruhr sieht so aus:Mein Server zeigt mir das Bild auch sehr Komisch an.
Über weitere Hilfe würde ich mich sehr freuen.
Gruß -
@hugo1215 Das verzerrte Bild zeigt, dass dein Alignment nicht funktioniert. Welche Aligmentmarken hast du den geteached?
Die roten Zahlen funktionieren nicht, da das neuronale Netz momentan auf schwarze Zahl auf weissem Grund angelernt ist. Kann ich gerne erweiteren, dann brauche ich aber Bilder zum trainieren. Kannst du erzeugen, wenn du erstmal alles am Laufen hast.
Hier eine Handanleitung zum Einstellen deiner Config:
https://github.com/jomjol/water-meter-system-complete/blob/master/Config_Description.md
Beste Grüße,
jomjol -
Hallo , was passiert denn eigentlich hier ?
Die Anlagen werden als 3980 erkannt, aber der Zählerstand ist .2980 ?
-
Hallo zusammen,
wer hat Lust, die neuste Version zu testen? Ich habe in einer speziellen Version von Tensorflow auf Tensorflow-Lite umgestellt und das Alignment des Bildes asynchron gestellt. Beides beschleunigt die Bildverarbeitung.
TFLite verkleinert auch deutlich die Docker-Images, da ich nur die Runtime und nicht die komplette Tensorflow-Umgebung installieren muss.
Einziger Nachteil ist, dass die Netzwerkdefinition nicht mehr im h5-Format, sondern als spezielles tflite-Format bereit gestellt werden muss und damit die Konfiguration nicht abwärtskompatibel ist.
Wenn das gut funktioniert, werde ich jedoch die zukünftigen Versionen vollständig darauf umstellen.
Ihr bekommt das Docker Image mit folgendem Tag:- Raspberry:
jomjol/wasserzaehler:raspi-rolling-lite
- Synology:
jomjol/wasserzaehler:rolling-lite
Das Config-File, insbesondere die Neuronalen-Netzwerkfiles findet ihr bei GitHub hier (egal ob Raspi oder Synology):
https://github.com/jomjol/water-meter-system-complete/tree/rolling-lite/code/config/neuralnetsMeldet euch gerne, wenn ihr es probiert habt.
Beste Grüße,
jomjol - Raspberry:
-
Hallo @jomjol normalerweise halte ich es mit: ... never change a running system... kann man Deine neue Version irgendwie mit der Alten vereinbaren und wenn ja wie?
-
@mameier1234 sagte in Wasserzähler - Selfmade:
Hallo , was passiert denn eigentlich hier ?
Die Anlagen werden als 3980 erkannt, aber der Zählerstand ist .2980 ?
Hinter der Umwandlung der analogen Zeiger steckt eine intelligente Logik:
Schau dir die Situation genau an: der erste Zeiger wird als 3.1 erkannt. Im Rahmen der Erkennungs- und Zeigerpositionsunschärfe könnte es aber auch 3.0 oder 2.9 sein. Daher prüft die Logik bei Ziffern, die um den Wechsel der ganzen Zahlen liegt, ob die Ziffer eine Stelle tiefer schon über die 0 weg ist.
Hier ist die nächstniedrigere Ziffer eine 9.7, also noch nicht über die 0 hinweg. Daher kann es sich nur um die Ziffer "2" und nicht "3" handeln.
Wenn der tiefere Zeiger jetzt über die 0 hinweg geht (9.7 --> 0.0) dann wechselt die Ziffer auch auf die "3".
Gruß,
jomjol -
@pfried sagte in Wasserzähler - Selfmade:
Hallo @jomjol normalerweise halte ich es mit: ... never change a running system... kann man Deine neue Version irgendwie mit der Alten vereinbaren und wenn ja wie?
Du könntest Testweise einen zweiten Docker auf einen anderen Port laufen lassen. Deine alte Config funktioniert auch weiter. Du musst nur für die lite-Images die CNN-Files im Verzeichnis networks kopieren und in der Config die Namen bei modelfile ändern. Das hast du auch schnell wieder zurück geändert.
-
@jomjol OK, mache ich. Starte den Test morgen. LG
-
@jomjol Test läuft mit 2 Containern parallel (innerhalb von 10sec aufgenommen)
-
@jomjol Super vielen dank. Habe alles zum laufen bekommen. Erkennung klappt soweit auch nicht schlecht aber irgendwie scheint bei mir eine Zahl nicht richtig zu klappen. Aus einer 2 macht er eine 8. Habe schon versucht mit einer guten Ausrichtung und Schärfe das ganze hinzubekommen aber irgendwie mag er die 2 nicht.
-
@hugo1215 sagte in Wasserzähler - Selfmade:
@jomjol Super vielen dank. Habe alles zum laufen bekommen. Erkennung klappt soweit auch nicht schlecht aber irgendwie scheint bei mir eine Zahl nicht richtig zu klappen. Aus einer 2 macht er eine 8. Habe schon versucht mit einer guten Ausrichtung und Schärfe das ganze hinzubekommen aber irgendwie mag er die 2 nicht.
Hallo Hugo,
klingt gut ist aber echt ein glücklicher Zufall. Bemerke erst jetzt, dass deine Ziffern ja auch weisse Schrift auf schwarzem Grund sind. Darauf ist das CNN nicht trainert. Das ist aber auch spannend für andere Nutzer. Daher folgende Bitte: kannst du eine zeitlang die Bilder loggen und wenn du dann von jeder Ziffer 3-4 hast, mir das Log-Verzeichnis schicken. Bitte jeweils für rote und schwarze Ziffern.
Dann erweitere ich das Training mit den Ziffern und es sollte auch mit der 2 klappen.
Beste Grüße,
jomjol -
@jomjol Ich bekomme bei beiden Dockern (6.0 und Lite) die gleiche Versionsinfo. Ich habe beide parallel laufen.
Wäre schön wenn du diese noch unterschiedlich ausgibst.Bis jetzt konnte ich mit der neuen „Lite“ Version keine Auffälligkeiten feststellen. Scheint gut zu laufen.
Ich finde dein Projekt immer noch geil, und das läuft ja auch schon seit November 2019 -
@Knallochse Du hast natürlich Recht. Docker mit Versionsupdate kompiliert.
Danke für die Rückmeldung, dass bei dir alles läuft. Ich werde mittelfristig auf die lite-Version umstellen, da ich dann komplett das Kompilieren der Tensorflow-Bibliothek für Synology verzichten kann.
Was meinst du, wie die Community mit einer nicht abwärtskompatiblen Version zurecht kommt? -
@jomjol Also ich habe deine Dockerversionen mit dem Bridge_Netzwerk erstellt. Dabei habe ich mehrere Container mit verschiedene Ports (+1) benutzt. Dadurch lässt sich die Auswertung der Daten in IoBroker gut anpassen. Ob man nun den Parser Adapter, oder das Script von @sissiwup nutz oder mein Blockly, so kann mann einfach zwischen den verschiedenen Docker Versionen wechseln (auch der Lite-version). Ich sehe hier kein Problem mit der Abwärtskompatibilität, da die Daten in den verschiedenen Versionen gleich ausgegeben werden.
Der Arbeitsspeicherbedarf mit der Lite_Version schein aber wesentlich besser zu sein
Zusammenfassend möchte ich sagen, dass dein Projekt bei mir funktioniert. Das ist nicht selbstverständlich. Ich habe schon andere "Bastelobjekte" unternommen, und musste kapitulieren. Aber ich experimentiere gern.
-
@jomjol Bei mir gibt die Lite Version exakt dasselbe aus wie die Full Version!
EDIT: Dachte der Container raspi-rolling-lite läuft, habe aber eine falsche Abfrage gemacht. Sorry!
Der Container raspi-rolling-lite läuft auf meinem RB3+ nicht. Er reseted wiederkehrend. -
@jomjol Frage zu der Bilderkennung: was ist wichtiger, das die roten Zeiger genau in der Mitte sind, oder die Ziffernbeschriftungsscheibe genau zentriert? Beispiel Zeiger1, ganz rechts:
-
@pfried Ich bin mir selber nicht ganz sicher. Der Zeiger ist aber wichtiger, wie die Ziffern, den letztlich enthält er die Informationen.
-
@pfried Kannst du mal schauen, ob du eine Fehlermeldung aus dem Log-File bekommst? Ich habe den Container auch auf einen Raspi3 getestet und er hat funktioniert.
Wichtig ist aber, dass du die Config.ini anpasst und die CNN-Netzwerkinfos als tflite-Dateien zur Verfügung stellst. -
@jomjol wollte gerade auf meiner QNAP in Docker die Lite Version mal testen, bekomme den Container aber gar nicht erst gestartet.
0.0 Start Init Zaehlerstand Traceback (most recent call last): File "./wasseruhr.py", line 120, in <module> wasserzaehler = lib.ZaehlerstandClass.Zaehlerstand() File "/lib/ZaehlerstandClass.py", line 47, in __init__ self.readAnalogNeedle = lib.UseAnalogCounterCNNClass.UseAnalogCounterCNN(model_file, in_dx, in_dy, log_Image, LogNames) File "/lib/UseAnalogCounterCNNClass.py", line 38, in __init__ for i in range(in_numberclasses): NameError: name 'in_numberclasses' is not defined
-
@jomjol So jetzt funktioniert es mit dem Docker Container. Die Auswertung hat immer noch das Problem mit den Zeigern:
Erkannt wird:
Also 29.8965 statt 29.8929
Lasse jetzt mal die Lite Version laufen. Wenn ich was testen soll lasse es mich bitte wissen.