bolausson / watermeter

Use a neural network for image recognition to digitize your water meter and store the values in InfluxDB

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

watermeter

Use a neural network for image recognition to digitize your water meter and store the values in InfluxDB. Tools used in this workflow:

You might want to check out AI-on-the-edge-device which is way more advanced and easiert to use water meter read-out approach using a ESP32-CAM.

Hardware setup

Attach two webcams to e.g. a RaspberryPi, aim them at your cold and warm water meters

  • Raspberry Pi 4
  • Logitech C925e HardwareSetup

Procedure

  • Adjust monitor-water.py to fit your needs (camera device, crop, etc)
  • Capture a bunch of images using monitor-water.py (set SAVE_FOR_TRAINING to True to capter just everything)
  • Training should be done on a system with CUDA enabled GPU.
  • Use the scripts in the "train" folder in order:
  1. To rsync the images generated by monitor-water.py to the "training" system
  2. View all images and assign them a value (We will use OpenCV do display the extracted features to manually assign a value according to what is in the picture)
  3. Review your work (I will display all characterized images to spot eventually miscahractericed images)
  4. Fix image <-> value asignment in case you screwd up in step 1 and found the mistake in step 2
  5. Append new images to the an existing image set (Python pickle file)
  6. Get some info about exiting image sets
  7. Train your model with the images in the image set
  8. Rsync test data (images which have not yet been seen by the model) to the training system
  9. Test your model

Procedure in pictures

Step 1a
Step 1a Step 1b Step 1b Step 2 Step 2 Step 3 Step 3 Step 4 Step 4 Step 5 Step 5 Step 6 Step 6 Step 8 Step 8

Grafana dashboard screenshot

Grafana dashboard screenshot

Running on Raspberry Pi 4

Running on Raspberry Pi 4

About

Use a neural network for image recognition to digitize your water meter and store the values in InfluxDB

License:GNU General Public License v3.0


Languages

Language:Python 99.4%Language:Shell 0.6%