具体实施方式
以下通过具体示例,进一步阐明本发明实施例技术方案的实质。
为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
发明人在发明过程中注意到:
传统仪表侧的仪表读数识别模块需要对拍摄到的仪表图像进行二值化、去噪等预处理,因此对仪表图像质量和光照等条件要求较高,以及受传统仪表侧的本地运算能力的限制,对于数字转动而非跳变形式的机械仪表同一位数单位上同时出现两个数字,即进位到中间状态时,无法实现对拍摄到的仪表图像的准确识别。
针对上述不足/基于此,本申请实施例提出了云端智能抄表架构,充分发挥云端平台的优势,采用精度较高的深度学习算法,避免传统仪表侧复杂的图像预处理过程,且对图像质量和光照等条件的要求较低,适用于各种仪表类型,实现云端自动抄表,以及通过读数逻辑修正、历史数据拟合等方法,解决机械表进位到中间状态识别精度较差的问题,进一步提升识别率。
为了便于本申请的实施,下面实例进行说明。
实施例1
图1示出了本申请实施例一中云端抄表的方法原理图,如图1所示,该方法包括:
步骤101:获取抄表信息,所述抄表信息包括仪表类型和仪表图像。
步骤102:根据所述仪表类型,对所述仪表图像中的数字区域进行识别,得到有效的仪表读数。
在步骤101中,图2示出了本申请实施例一中云端抄表的方法流程示意图,如图2所示,抄表信息来自仪表侧,仪表包括采集模组硬件,该采集模组硬件包括拍照模组和通信模组。具体为,拍照模组拍摄仪表图像,并通过通信模块将仪表图像和仪表信息传输至云端抄表平台。其中,仪表信息包括仪表类型、仪表编号等信息。
在步骤102中,云端抄表平台对仪表图像和仪表编号的合法性和完整性进行校验,校验通过后,确定仪表类型,如,机械式电表、机械式燃气表、液晶式电表等,根据仪表类型调用相应的识别算法,利用相应的识别算法获取仪表图像中的数字区域,识别得到所有数字区域中的数字信息,尤其针对机械表数字进位转到中间状态的情况,对数字信息进行逻辑修正得到有效的仪表读数。
实施中,根据仪表类型调用相应的识别算法,还包括:根据仪表编号在数据库中查询该仪表的历史数据,并将仪表编号、历史数据和仪表图像输入相应的识别算法得到有效的仪表读数。
在本实施例中,所述对所述仪表图像中的数字区域进行识别,得到有效的仪表读数,包括:
通过获取仪表图像中所有的数字区域,得到所有的数字区域中数字的位置信息;
根据所述的位置信息,对所有的数字区域中的数字进行进位顺序排序,得到有效的仪表读数。
实施中,通过获取仪表中所有的数字区域,得到每个数字区域中数字的位置信息,位置信息包括数字左上角或中心点坐标(x,y)和该数字区域的宽w、高h,将位置信息输入卷积神经网络(CNN:Convolutional Neural Network)得出每个数字区域的识别结果和对应的置信度(取值范围在0~1之间),将每个数字区域的置信度最高的识别结果,按照数字进位顺序排序,得到有效的仪表读数。
现有技术一般采用传统的机器学习算法,并将其部署在终端设备上,相较于传统机器学习,深度神经网络运算开销较大,部署在终端存在瓶颈,本申请采用的基于深度学习的卷积神经网络部署在云端抄表平台,充分发挥云端的性能优势,在识别精度上提升较大。
在本实施例中,所述若所述仪表类型为机械式仪表,则对所有的数字区域中的数字进行进位顺序排序,得到有效的仪表读数,包括:
对所有的数字区域中数字的位置信息进行数字进位顺序排序,得到仪表识别结果;
若仪表识别结果中同一位数单位上存在两个数字区域,则对所述仪表识别结果进行逻辑修正,得到有效的仪表读数。
在本实施例中,所述若仪表识别结果中同一位数单位上存在两个数字区域,则对所述仪表识别结果进行逻辑修正,得到有效的仪表读数,包括:
通过判断所述两个数字区域的识别结果是否符合进位逻辑关系,确定所述同一位数单位上两个数字区域的识别结果;
根据所述两个数字区域的识别结果,确定所述同一位数单位上的有效读数;
根据所确定的所述同一位数单位上的有效读数,得到有效的仪表读数。
在本实施例中,所述通过判断所述两个数字区域的识别结果是否符合进位逻辑关系,确定所述同一位数单位上的两个数字区域的识别结果,包括:
若所述两个数字区域的识别结果之差满足进位逻辑差值,则根据数字区域中数字的位置信息,确定所述两个数字区域中上半位数字区域的识别结果和下半位数字区域的识别结果。
在本实施例中,所述通过判断所述两个数字区域的识别结果是否符合进位逻辑关系,确定所述同一位数单位上的两个数字区域的识别结果,包括:
若所述两个数字区域的识别结果之差不满足进位逻辑差值,则选择所述两个数字区域的识别结果中置信度较高的识别结果为有效识别结果;
若有效识别结果为上半位数字区域的识别结果,则根据ddown=dup%10+1,确定下半位数字区域的识别结果;
若有效识别结果为下半位数字区域的识别结果,则根据dup=(ddown+8)%10+1,确定上半位数字区域的识别结果;
其中,ddown为下半位数字区域的识别结果,dup为上半位数字区域的识别结果,%为取余操作。
在本实施例中,所述根据所述两个数字区域的识别结果,确定所述同一位数单位上的有效读数,包括:
若所述同一位数单位的在前位数单位上存在一个数字区域,则根据所述同一位数单位上的任一数字区域与所述在前位数单位上的数字区域的位置关系,确定所述同一位数单位上的有效读数;
若所述在前位数单位上存在两个数字区域,则根据所述在前位数单位上的有效读数的位置参数,确定所述同一位数单位上的有效读数。
实施中,图3示出了本申请实施例一中云端抄表的仪表图像示意图,如图3所示,将每个数字区域的置信度最高的识别结果按照数字进位顺序排序,排序方式按照从左到右、从上到下的原则,如图3所示,排序后为“0156909090”。对于机械仪表同一位数单位上同时出现两个数字,即进位到中间状态的情况,具体的逻辑修正过程为:
1)确定每个位数单位的识别结果。识别各个位数单位(即,数字区域)上的识别结果,若某位数单位的识别结果只有一个(如图3中的千位和万位),则直接得到有效读数;若某位数单位存在上下两个半位的识别结果(例如,图3中的小数位、个位、十位和百位),则判断是否符合正确的进位逻辑,判断依据为,判断上下两个半位的识别结果之差是否为1或9,如图3中百位的5和6,十位的9和0,若不为1或9,则选择其中识别结果置信度较高的识别结果为正确结果,并修正另一个识别结果,以使其和正确结果之间满足正确的进位逻辑。其中,修正另一个识别结果的规则具体为:
若上方数字为正确结果,则下方数字ddown=dup%10+1;
若下方数字为正确结果,则上方数字dup=(ddown+8)%10+1;
其中,%表示取余操作,例如,假设十位的9和0中下方的0为正确结果,则上方数字应为(0+8)%10+1=9。
2)修正不同位数单位之间的逻辑关系。如图3所示,正确读数是“01599.9”或“01600.0”,当读数为“01500.0”、“01699.9”、“01509.0”,则读数为错误读数。不同位数单位之间的逻辑关系的进位修正具体为:
a)获取所有数字区域的纵轴坐标y的最小值,以及纵轴坐标y与数字区域的高h之和的最大值,即y+h的最大值,两个参数分别对应所有数字区域在垂直方向分布的最小值和最大值,并计算出y的最小值和y+h的最大值的均值mean。
b)从仪表的最高位开始进行修正,若识别结果为一个完整数字,则直接得到有效读数;若当前位数单位的识别结果为上下两个识别结果,且前一位数单位的识别结果为一个完整数字,则分别判断当前位数单位位于下方的半位数字的中心点坐标Centery1和前一位数单位的完整数字的中心点坐标Centery2与步骤a)中均值mean的关系,例如,图3中判断百位的6和千位的1与均值mean的关系,若(Centery1–mean)*(Centery2–mean)<0,则说明当前位数单位位于下方的半位数字和前一位数单位的完整数字位于均值mean所在水平线的两侧,即取当前位数单位位于上方的半位数字作为当前位数单位的有效读数,并设置当前位数单位的位置参数为0;若(Centery1–mean)*(Centery2–mean)>=0,则取当前位数单位位于下方的半位数字作为当前位数单位的有效读数,并设置当前位数单位的位置参数为1。
c)若同一位数单位上存在上下两个识别结果,且前一位数单位的识别结果同样也是上下两个识别结果,则根据步骤b)设置的位置参数确定当前位数单位的有效读数,即若前一位数单位的位置参数为0,则确定当前位数单位位于上方的半位数字为有效读数;若前一位数单位的位置参数为1,则确定当前位数单位位于下方的半位数字为有效读数。例如,图3中的百位为5,则十位取9,百位为6,则十位取0,依次类推。
d)此外,由于光照、仪表位置旋转等原因,导致前一位数单位的识别结果为上下两个识别结果,而当前位数单位仅识别出一个读数,针对上述情形,对仅识别出的数字是否符合进位逻辑进行判断,根据上述b)可知,若前一位数单位的位置参数为0,则当前位数单位位于上方的半位数字为有效读数,但当前位数单位的数字的中心点坐标Centery1位于均值mean所在水平线的下方,则需要重新对当前位数单位的读数进行修正,修正规则参见上述1)。
3)判断仪表是否存在小数位,若存在则滤除。具体为,机械式仪表通过识别数字区域中的特殊颜色确定小数位,液晶式仪表通过识别数字区域中是否存在小数点确定小数位。
在本实施例中,还包括:
当判断所述有效的仪表读数为异常的仪表读数时,根据仪表历史数据得到仪表预测读数;
通过判断所述有效的仪表读数与所述仪表预测读数的差值是否在阈值范围内,确定最终的仪表读数。
在本实施例中,所述通过判断所述有效的仪表读数与所述仪表预测读数的差值是否在阈值范围内,确定最终的仪表读数,包括:
若所述有效的仪表读数与所述仪表预测读数的差值在阈值范围内,则所述有效的仪表读数为最终的仪表读数;
若所述有效的仪表读数与所述仪表预测读数的差值超过阈值范围,则所述仪表预测读数为最终的仪表读数。
在本实施例中,所述判断所述有效的仪表读数为异常的仪表读数,包括:
若所述有效的仪表读数的位数少于预设仪表位数、所述数字区域的识别结果中置信度低于预设值或者其结合,则有效的仪表读数为异常的仪表读数。
实施中,根据仪表读数位数、数字区域的识别结果对应的置信度、数字区域的位置信息中的一个或多个,综合判断有效的仪表读数是否存在异常,若异常则输出最终的仪表读数、置信度信息、异常标识等,并判断是否请求人工后台介入进行修正。
1)有效的仪表读数异常包括但不限于以下种类:
a)仪表读数位数太少,如电表的最少位数一般为4位;
b)识别结果对应的置信度低于一定的阈值,置信度过低代表数字区域可能存在反光、模糊、光照过暗等情况;
c)数字区域的位置过于靠近边缘,导致数字区域拍摄不完整,从而得到错误的识别结果。
2)判断是否请求人工后台介入进行修正包括但不限于以下情况:
若仪表读数位数太少,如电表的最少位数一般为4位,仅识别得到3位,则确定为严重异常,直接请求人工后台介入进行修正;若识别结果对应的置信度低于第一阈值,例如,第一阈值为40%,但当前识别结果对应的置信度高于第二阈值,例如,第二阈值为30%,则确定为轻微异常,不需要请求人工后台介入进行修正,直接输出最终的仪表读数、置信度信息、异常标识等信息即可。
实施中,若确定有效的仪表读数存在异常,还可以利用数据拟合算法对仪表历史数据的规律进行训练并预测出当前的仪表读数,若预测出的仪表读数与识别得到的有效的仪表读数之差大于一定的阈值,则采用预测出的仪表读数作为最终的仪表读数,否则采用识别得到的有效的仪表读数为最终的仪表读数。
其中,云端抄表平台将最终的仪表读数、置信度信息、异常标识等存入数据库,并将由于算法识别导致错误的仪表图像加入仪表历史数据中进行训练,以提升算法性能。
本申请以具体场景为例,对本申请实施例1进行详细描述。
本申请实施例应用范围包括但不限于机械式/电子式的电表、燃气表、水表等。以机械式电表为例,具体流程如下:
步骤201:电表的拍照设备定时拍摄电表的照片,拍照设备包括摄像头和补光照明设备等,拍摄时,照明设备自动开启,拍摄后,通过通信模块将照片和仪表编号等信息上传至云端抄表平台。
步骤202:云端抄表平台对照片和仪表编号等信息的合法性和完整性进行校验,校验内容包括:照片来源是否已授权、照片文件是否完整等。
步骤203:校验通过后,识别仪表类型,如,机械式电表、液晶式电表等,根据仪表类型调用相应的识别算法。
步骤204:识别电表所有数字区域中的数字,得到有效的仪表读数。
步骤205:根据仪表读数位数、数字区域的识别结果对应的置信度、数字区域的位置信息中的一个或多个,综合判断有效的仪表读数是否存在异常,若异常则输出最终的仪表读数、置信度信息、异常标识等,并判断是否请求人工后台介入进行修正;或者,利用数据拟合算法预测出当前的仪表读数,若预测出的仪表读数与识别得到的有效的仪表读数之差大于一定的阈值,则采用预测出的仪表读数作为最终的仪表读数,否则采用识别得到的有效的仪表读数为最终的仪表读数。
步骤206:将最终的仪表读数、置信度信息、异常标识等存入数据库。
步骤207:定期采集由于算法识别导致错误的仪表图像,并作为训练样本加入仪表历史数据中进行训练,以提升算法性能。
实施例2
基于同一发明构思,本申请实施例中还提供了一种云端抄表装置,由于这些设备解决问题的原理与一种云端抄表方法相似,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。
图4示出了本申请实施例二中云端抄表的装置结构图,如图4所示,云端抄表装置400可以包括:
获取模块401,用于获取抄表信息,所述抄表信息包括仪表类型和仪表图像。
识别模块402,用于根据所述仪表类型,对所述仪表图像中的数字区域进行识别,得到有效的仪表读数。
判断模块403,用于当判断所述有效的仪表读数为异常的仪表读数时,根据仪表历史数据得到仪表预测读数;以及,
通过判断所述有效的仪表读数与所述仪表预测读数的差值是否在阈值范围内,确定最终的仪表读数。
在本实施例中,所述对所述仪表图像中的数字区域进行识别,得到有效的仪表读数,包括:
通过获取仪表图像中所有的数字区域,得到所有的数字区域中数字的位置信息;
根据所述的位置信息,对所有的数字区域中的数字进行进位顺序排序,得到有效的仪表读数。
在本实施例中,所述若所述仪表类型为机械式仪表,则对所有的数字区域中的数字进行进位顺序排序,得到有效的仪表读数,包括:
对所有的数字区域中数字的位置信息进行数字进位顺序排序,得到仪表识别结果;
若仪表识别结果中同一位数单位上存在两个数字区域,则对所述仪表识别结果进行逻辑修正,得到有效的仪表读数。
在本实施例中,所述若仪表识别结果中同一位数单位上存在两个数字区域,则对所述仪表识别结果进行逻辑修正,得到有效的仪表读数,包括:
通过判断所述两个数字区域的识别结果是否符合进位逻辑关系,确定所述同一位数单位上两个数字区域的识别结果;
根据所述两个数字区域的识别结果,确定所述同一位数单位上的有效读数;
根据所确定的所述同一位数单位上的有效读数,得到有效的仪表读数。
在本实施例中,所述通过判断所述两个数字区域的识别结果是否符合进位逻辑关系,确定所述同一位数单位上的两个数字区域的识别结果,包括:
若所述两个数字区域的识别结果之差满足进位逻辑差值,则根据数字区域中数字的位置信息,确定所述两个数字区域中上半位数字区域的识别结果和下半位数字区域的识别结果。
在本实施例中,所述通过判断所述两个数字区域的识别结果是否符合进位逻辑关系,确定所述同一位数单位上的两个数字区域的识别结果,包括:
若所述两个数字区域的识别结果之差不满足进位逻辑差值,则选择所述两个数字区域的识别结果中置信度较高的识别结果为有效识别结果;
若有效识别结果为上半位数字区域的识别结果,则根据ddown=dup%10+1,确定下半位数字区域的识别结果;
若有效识别结果为下半位数字区域的识别结果,则根据dup=(ddown+8)%10+1,确定上半位数字区域的识别结果;
其中,ddown为下半位数字区域的识别结果,dup为上半位数字区域的识别结果,%为取余操作。
在本实施例中,所述根据所述两个数字区域的识别结果,确定所述同一位数单位上的有效读数,包括:
若所述同一位数单位的在前位数单位上存在一个数字区域,则根据所述同一位数单位上的任一数字区域与所述在前位数单位上的数字区域的位置关系,确定所述同一位数单位上的有效读数;
若所述在前位数单位上存在两个数字区域,则根据所述在前位数单位上的有效读数的位置参数,确定所述同一位数单位上的有效读数。
在本实施例中,所述通过判断所述有效的仪表读数与所述仪表预测读数的差值是否在阈值范围内,确定最终的仪表读数,包括:
若所述有效的仪表读数与所述仪表预测读数的差值在阈值范围内,则所述有效的仪表读数为最终的仪表读数;
若所述有效的仪表读数与所述仪表预测读数的差值超过阈值范围,则所述仪表预测读数为最终的仪表读数。
在本实施例中,所述判断所述有效的仪表读数为异常的仪表读数,包括:
若所述有效的仪表读数的位数少于预设仪表位数、所述数字区域的识别结果中置信度低于预设值或者其结合,则有效的仪表读数为异常的仪表读数。
实施例3
基于同一发明构思,本申请实施例中还提供了一种电子设备,由于其原理与一种云端抄表方法相似,因此其实施可以参见方法的实施,重复之处不再赘述。
图5示出了本申请实施例三中电子设备的结构示意图,如图5所示,所述电子设备包括:接收设备501,存储器502,一个或多个处理器503;以及一个或多个模块,所述一个或多个模块被存储在所述存储器中,并被配置成由所述一个或多个处理器执行,所述一个或多个模块包括用于执行任一上述方法中各个步骤的指令。
实施例4
基于同一发明构思,本申请实施例还提供了一种与电子设备结合使用的计算机程序产品,由于其原理与一种云端抄表方法相似,因此其实施可以参见方法的实施,重复之处不再赘述。所述计算机程序产品包括计算机可读的存储介质和内嵌于其中的计算机程序机制,所述计算机程序机制包括用于执行任一上述方法中各个步骤的指令。
为了描述的方便,以上所述装置的各部分以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。