晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI
不少人家里应该都还有这种老式水表,但你能看懂它的读数吗?
恐怕不少人都会感到一脸懵逼。机械式水表可能是最反人类的设计之一了,安装在阴暗的角落,又是指针又是数字,读起来费劲。
现在你可以把查水表交给AI啦!一位德国小哥开发的“AI水表读取器”,只需几十元的成本,在水表上加个“罩子”,就能把机械式水表改装成“智能水表”,
这款设备基于TensorFlow Lite,让AI自动读取当前刻度,实时记录你的用水量。
AI水表读取器主要由3部分组成:3D打印外壳,ESP32-CAM开发板、相机与照明装置。
ESP32-CAM自带LED照明,摄像头型号为OV2640,外壳部分可以使用作者提供的3D打印文件。
据作者介绍,整部装置的费用不超过10欧元(也就是不超过人民币80元)。
AI水表读取器可以直接通过网络管理。将固件烧录到设备并连上Wi-Fi后,只需在浏览器中输入设备的局域网IP即可进入管理界面。
你可以在网页中设置读取框的坐标、图像质量等参数。
甚至你还可以进行OTA升级,将固件文件传输至/firmware文件夹下,再输入http://IP-ESP32/ota?file=firmware.bin对设备进行无线更新。
这款智能水表的原理并不复杂,其数据处理流程如下:
相机线拍下照片,用OpenCV库对图像进行自动对齐、ROI识别,提取中图像中的需要识别的部分。
不过,处理机械水表表盘图像并不容易,不是简单用OCR就能搞定的,因为表盘的数字是连续变化的,你可以会遇到正好处在两个数字之间,比如最右边那种情形。
这时候就需要用CNN训练它,让它知道这张图片是介于数字2和3之间。
表盘上部的数字读数用OCR软件获取,下半部分的模拟表盘交给CNN处理。
对于模拟表盘的部分,要让CNN能识别指针从0到9不同情况,一个“笨”方法是标记10个分类。
但是,如果希望系统估读小数点后一位(0.0、0.1,…,9.8、9.9),那么将会有100个分类,每个分类都要有大量的训练图像。
因此,最终作者使用了另一种方法:在CNN网络的最后一层中仅使用一个可以输出连续值的神经元。
最初开发的版本需要设置外部服务器对这些图像进行处理,经过数次迭代后,图像处理和转换已完全集成在ESP32CAM固件中,真正成了“边缘AI”。
如果你也想改造自家的水表,不妨去试试吧。
项目地址:https://github.com/jomjol/AI-on-the-edge-device
硬件配置:https://www.thingiverse.com/thing:4573481
3D打印文件:https://www.thingiverse.com/thing:4571627/files
,