王杜毅,常相茂
(南京航空航天大学 计算机科学与技术学院,南京 211106)
仪表深入生产生活的方方面面,被用于计量或监控各种数据的变化,例如水表、压力表和转速表,而抄表则是生产供应方了解统计数据变化的必备手段.传统的人工抄表方式是一种非常低效的手段,存在着人工成本高、管理难和易出错的问题.基于M-Bus、RS485总线的有线抄表技术通过有线信道对一定区域内的仪表进行集中读数,虽然解决了低效的问题,但是还有着部署成本高、维护困难的缺点[1,2].无线远程抄表技术的出现在一定程度上解决了人工抄表存在的问题,但是基于GRPS、ZigBee等无线技术的抄表方案仍然存在低覆盖、欠稳定和高功耗的不足[3,4].窄带物联网(NB-IoT)由第3代合作伙伴计划(3GPP)委员会制定,被认为是最有前途的低功耗广域网(LPWA)技术之一[5].NB-IoT技术具有低功耗、广覆盖和大容量的特点,为低流量的物联网应用提供了一种更适合的无线传输解决方案[6].已有多种基于NB-IoT的无线抄表系统被提出和应用[7-12].然而,现有的NB-IoT远程抄表系统通常需要对老式表头进行改装或更换,有着较高的安装成本[13],并局限于一种仪表数据的采集,应用范围有限.同时系统功耗较高,远不能达到NB-IoT协议所设计的10年工作寿命.因此,有必要设计一种普适的低功耗抄表系统来满足不同表头的抄表需求.
本文提出并实现了一种基于NB-IoT和图像处理技术的普适远程抄表系统MeterEye.MeterEye通过读取表盘图像避免了对原有表头的改装,只传输包含读数信息的图像变化量,并利用压缩感知技术[14,15]降低图像传输功耗.本文对指针式和字轮式表头的传输图像都进行了图像重建质量分析,并采用基于卷积神经网络(CNN)的数字识别系统的准确率作为衡量图像重建质量的标准[16-18].以水表应用为例,本文对MeterEye的系统功耗和识别准确率进行了实验分析.
本文提出的MeterEye抄表系统具有以下优势:
1)应用广泛.MeterEye采用图像作为读数手段,因此适用于不同种类的表头.实验结果表明,MeterEye在指针式和字轮式表头上都有良好的表现.
2)安装便捷.MeterEye只需在原表基础上安装一个表盖,不需要对原表内部进行改动,因此系统的安装非常便捷.
3)低功耗.MeterEye采用低功耗的NB-IoT作为无线传输方案,降低了系统无线模块的功耗.在确保抄表图像能够识别读数信息的前提下,使用并行压缩感知尽可能的压缩抄表图像.实验结果表明,压缩感知的应用能够降低功耗.
智能抄表节点由微处理器(MCU)、NB-IoT模块、数据采集模块和时钟模块组成,结构如图1所示.MCU负责操控整个节点的工作和抄表数据的处理;NB-IoT模块负责抄表数据的发送和服务器信息的接收;数据采集模块采集抄表图像并通过UART接口发送给MCU进行处理;时钟模块为MCU提供时钟信息和定时唤醒功能.硬件节点的外形如图2(a)(正面)和图2(b)(背面)所示,一个同表头相匹配的塑料外壳用于固定和安装抄表节点,如图2(c)所示.
图1 智能抄表节点结构
图2 智能抄表节点
2.2.1 MCU
MCU主要负责数据的处理以及NB-IoT模块的控制.MCU开机初始化完成后,会建立两个进程,进程1用于接收和处理数据,进程2用于控制NB-IoT模块发送数据.进程1通过UART接口接收摄像头或其他传感器采集到的数据,处理后以Blob数据格式存入本地SQLite数据库中.进程2检索数据库中未发送的数据,通过AT指令控制NB-IoT模块发送数据.我们采用具有32MB DDR2的NuvoTon N32905U1DN(ARM926EJ-S@200MHz)作为抄表节点的MCU.
2.2.2 NB-IoT模块
智能节点中采用的NB-IoT模块是配备海思Hi115芯片的中移物联M5310A模组.模块的运行由MCU通过AT指令进行控制,当不工作时,会进入PSM待机模式节省功耗.当有数据需要发送时,从省电模式(PSM)中被唤醒并通过UDP协议将数据发送至服务器.
2.2.3 数据采集模块
该模块由闪光灯和摄像头组成,如果表头安装在阴暗的地方,需要闪光灯来保证摄像头采集到的抄表图像清晰可辨.采集到的数据通过UART接口传输到MCU进行进一步的处理.
2.2.4 时钟模块
为MCU提供时钟服务,使节点在需要传输数据时通电,其余时间为休眠状态.时钟模块的工作电流为微安级,远小于节点的待机电流,因此可以有效的延长节点的工作寿命.我们选用的时钟模块为PCF8563,在3.0V电压和25摄氏度温度下,典型电流值为0.25μA.
仪表通常安装于阴暗偏僻的环境中,因此由固定位置摄像头拍摄的抄表图像变化很小,相似度很高.抄表图像的变化通常是由环境光和数字读数的变化引起.当环境光发生变化时,图像上像素值的变化量比较连贯,在频域上也非常稀疏.如果采集过程中使用闪光灯作为稳定光源,环境光引起的变化量则可以忽略.数字读数引起的像素值变化在频域上的表现也比原始图像稀疏.
以水表图像为例,我们将先前采集的抄表图像作为模板,用原始图像的像素值与模板图像相减,来求得原始图像上像素值的变化情况,图3(c-d)显示了原始图片与模板图片之间的差异.灰度图像的像素值范围为[0,255],其中0为纯黑色,255为纯白色.像素值的正值变化量表示原始图像中消失的数字,负值变化量表示图像中出现的数字.在图像的离散余弦变化(DCT)系数图像中,白色表示非零系数,黑色表示零系数.我们可以从图3(e-g)中发现,差值图像的DCT系数图像中白色比原始图像少,说明差值图像在DCT域中比原始图像更稀疏.因为压缩感知是利用数据的稀疏性对数据进行大幅度的压缩,所以差值图像会比原始图像在压缩感知中表现更好.
图3 原始图像和模板图像之间的差异以及DCT系数图像
如果将模板图像中的数字抹去,那么负值变化量主要包含表盘读数,而正值变化只包含少量可以忽略的信息,修改后的模板图片如图3(h)所示.从图3(k-l)中可以发现,此时负值图像在DCT域中仍然比原始图像稀疏.因此,可以忽略正值变化量,只发送压缩包含读数信息的负值图像,实现更高程度的压缩.
为了放宽图像的有限等距性质(RIP),来提高并行压缩感知的性能[19],我们选择将之字形扫描应用于图像的DCT系数图像,之字形扫描按照“之”字形的路径,从图像的左上角向右下角进行扫描.在DCT系数图像中,因为图像的能量主要集中在低频上,所以非零系数常聚集在图像的左上角.经过之字形扫描置换后,非零系数会较为均匀的分布在图像的上方,这是因为之字形扫描首先扫描到的是能量聚集的低频,按照从低频到高频,从密集到稀疏的顺序扫描.置换后的系数图像各列之间的非零系数分布更加均匀,有助于提高并行压缩感知的性能.这种方法同样适用于长宽不等的图像.
使用压缩感知进行图像压缩,需要通信双方共享压缩时使用的测量矩阵.为了避免直接存储体积较大的测量矩阵,我们选择由一维混沌系统Logistic映射生成压缩感知的测量矩阵,这样就只需要存储体积很小的Logistic映射的初始值和参数.一维Logistic映射的定义如下所示:
xn+1=μxn(1-xn),x∈(0,1)
(1)
当μ∈[3.57,4]时,一维Logistic映射是一个混沌系统.
假设测量矩阵Φ的大小为N×M.当初始值、参数和采样距离分别为x0、μ0和d0时,Logistic映射生成一串长度为d0+N的序列,其中前d0个元素被抛弃,得到序列s=[s1,s2,…,sN].序列s作为测量矩阵的初始行向量用于构建循环矩阵.测量矩阵Φ的构造方式如下[20]:
(2)
其中2≤i≤M,λ>1用于消除矩阵行向量之间的相关性.
假设抄表图像的X大小为N×P,压缩过程如下所示:
1.求差.原始图像X同模板图像X0相减得到负值图像X′.模板图像由服务器直接发送给节点或者由节点根据服务器反馈自行生成.
2.置换.通过DCT变化得到负值图像X′的稀疏系数矩阵S,对系数矩阵S进行之字形扫描置换得到加扰矩阵S′.
3.生成测量矩阵.设定初始值和参数分别为x0和μ0,Logistic映射进行d0+N次迭代获得序列s,其中x0、μ0和d0由服务器同节点事先分享,之后根据上述方法生成测量矩阵Φ.
4.测量压缩.使用测量矩阵Φ对加扰矩阵S′进行测量,得到测量矩阵Y=ΦS′.
5.量化.Y′是测量矩阵Y中元素根据以下方式映射量化到[0,255]的量化矩阵.
(3)
其中,y和y′分别表示矩阵Y和Y′中的元素,ymax和ymin则表示Y中的最大值和最小值,函数round(x)是将x舍入到最近的整数.量化的目的是将元素从64bits大小的double类型转化到8bits大小的unit8类型,便于数据传输.
压缩完成后,节点将ymax、ymin和量化矩阵Y′通过NB-IoT一同发送给服务器.
服务器接收到ymax、ymin和量化矩阵Y′后,执行逆量化操作得到测量矩阵Y*.根据与节点共享的x0、μ0和d0,生成测量矩阵Φ,之后使用Sl0算法对矩阵Y*进行还原[20,21],重建得到加扰矩阵S′*.最后对加扰矩阵S′*进行逆置换和DCT逆变换就得到重建的负值图像X′*,并从中读取仪表读数.
图像数字识别服务是服务器云端的常见应用,我们以字轮式水表抄表图像数字识别应用为例说明MeterEye的云端应用.系统定位并提取抄表图像中的数字,将提取到的数字大小统一调整为28×28,作为CNN分类网络的输入进行数字识别.
由于照片拍摄存在一定角度,首先需要对图像进行倾斜校正.使用Canny边缘检测算法提取图像边缘,再用霍夫直线变换检测出图像的倾斜角度,图像倾斜校正后如图4(a)所示.之后,根据自适应阈值化算法对图片进行阈值化处理,以便于后续的数字定位处理,如图4(b)所示.数字定位使用轮廓查找算法定位提取出数字(图4(c)),调整数字大小为28×28后(图4(d))输入CNN网络进行数字识别.
图4 抄表图像处理
所采用的CNN网络包含3层卷积层和两层全连接层,前两层卷积层后各接一层最大池化层.最后一层全连接层使用softmax函数作为激活函数,其余卷积层和全连接层使用RELU函数.
在本章节中,使用CNN数字识别系统的准确率来评判分析重建图像的质量,并以水表应用为例,测量评估了MeterEye的系统功耗和数字识别准确率.实验所使用的水表图像都是从实际水表抄表应用中获取,图像大小为100×317.仿真实验测试都是在配置为Intel Core i3-4160 CPU @ 3.60 GHz,8 GB RAM的64位Dell计算机上进行的.
在本实验中,数字提取和CNN分类网络的程序实现分别基于OpenCV和TensorFlow的Python包.共4790张水表抄表图像按照4:1的比例划分为训练集和测试集,每张抄表图片中包含5个数字.训练使用的优化器为Adam,学习率设置为1e-4,损失函数选择稀疏分类交叉熵.CNN网络的数字识别准确率如表1中所示,达到了98.35%,表明系统能够准确的识别出数字.
表1 样本数量和数字识别精确率
峰值信噪比(PSNR)和结构相似度(SSIM)两个指标被用于量化原始图像和重建图像之间的相似度.PSNR的数学定义如下:
(4)
其中,H和W分别表示图像X、Y的高和宽,n代表图像中每个像素值的比特位数,对于灰度图像,n=8.SSIM的数学定义如下:
(5)
图5显示了原始图像和负值图像重建之后的PSNR和SSIM对比.结果表明,在相同压缩率下,负值图像重建之后的图像质量要高于原始图像,这说明负值图像在压缩感知中表现更好.由于量化过程会丢失一部分信息,因此未量化图像的重建图像质量会更好.但是随着压缩率的上升,图像像素数量减少,量化丢失的信息量也减少,量化与未量化图像的重建图像之间差距也逐渐减小.因为原始图像在频域中更加的稠密,量化造成的损失也更大,所以量化与未量化之间的差距更明显.
图5 原始图像和负值图像的重建图像质量对比
为了量化不同压缩率下重建图像中数字的清晰可辨程度,我们比较了在同一字轮式水表上收集的294张图片在不同压缩率下CNN网络数字识别的准确率,结果如图6所示.压缩率下降到7%之前,数字的识别准确率的下降较缓,为94.09%,在可接受范围内.当压缩率达到6%时,准确率下降增大,到达5%时,准确率急剧下降到76.44%.
图6 压缩率与数字识别准确率之间的关系
由于缺少数据集,我们选择如图7中所示的10张指针式仪表图片为例,来分析指针式仪表重建图像的质量.
图7 指针式仪表图像
指针式仪表重建图像的PSNR和SSIM如图8所示.同上述294张字轮式仪表图片的平均值相比,指针式仪表重建图像有着更高的PSNR和SSIM,这意味着指针式仪表重建图像质量比字轮式仪表更好,可以进行更高压缩率的压缩,说明MeterEye同样适用于指针式仪表.
图8 指针式仪表重建图像的PSNR和SSIM
为了确定压缩感知对功耗的影响,我们测量了在不同压缩率下,节点工作一次的功耗,即唤醒后立刻处理发送图片,图片发送完成立即休眠,实验结果如图9所示.实验结果表明,当压缩率达到10%时,所提方案的功耗就低于直接传输原始图片的方式,可以节约8.59%.当压缩率为7%时,功耗最多可以降低15.99%.因此可以根据实际情况,将压缩率设置到10%以下来节约节点功耗,延长工作寿命.
图9 功耗分析
本文针对抄表难、管理难的问题提出了一种基于图像处理和NB-IoT的普适远程抄表系统MeterEye,适用于字轮式和指针式仪表.MeterEye通过采集抄表图像的方式避免了对原有表的改装,只传输包含读数信息的差值图像,并利用并行压缩感知大幅度压缩图像体积,实现传输功耗的降低.我们使用基于CNN网络数字识别系统的准确率来衡量不同压缩率下重建图像的可分辨程度.实验结果表明,到压缩率达到7%时,仍能以94.09%的准确率的从水表抄表重建图像中识别出数字.但是当压缩率为6%时,准确率有较大幅度的下降,压缩率为5%时,压缩率急剧下降到76.44%.实验对比了系统在指针式和字轮式仪表上的表现,结果表明指针式仪表重建图像质量高于字轮式仪表,说明系统同样适用于指针式仪表.本文对MeterEye的系统功耗进行了测试,结果表明当压缩率设置为10%以下时,可以节约8.59%功耗,当压缩率为7%时,功耗最高可以节约15.99%.