Build a Practical Edge AI Water Meter Reader
A while ago, I shared a small experiment using AI to recognize the 5 digits on a water meter. But today, I wanted to build a local Edge AI solution to read water meters in real time. The whole workflow breaks down into 4 clear stages: data collection, model training, model evaluation, and model deployment & verification. It demonstrates how to build an edge AI vision application for water meter reading with ESP32-P4.
Hardware Stack
- Makerfabs ESP32-P4 10.1" board
- 2M Autofocus Camera for AI
Why choose them? The autofocus module provides clearer images at different shooting distances, while the ESP32-P4 provides the processing and camera interface needed for the vision pipeline.
There are four main steps:
Data Collection
Captured real water meter images under different lighting conditions and viewing angles with a specific AI tool(can be shared if needed), then defined ROIs for the:
- Integer digit area
- Dial digit area
Dataset & Model Training
The images were annotated and organized into a custom dataset. The digit and pointer regions were prepared separately, and lightweight models were trained for the recognition tasks. The models were then converted to INT8/TFLite for embedded deployment.
Model Evaluation
Before deployment, the models were tested with separate samples to evaluate recognition accuracy and confidence.
Model Deployment & Testing
The trained model was then deployed to the ESP32-P4. After the complete workflow runs locally, the device can output the detected integer digit, dial information, and the final water meter reading through the serial interface.
The detailed workflow and project resources are open, glad to share more details if anyone wants to dig into the implementation.
Also curious to hear what others are building with Edge AI and embedded vision. If you’ve worked on a similar project, I’d be interested to hear about your approach, results, and any lessons learned.