仪表探测&读数

PART I:仪表探测

* 方式1: 接入实时巡检视频流,生成带有仪表盘的顺序截图

a. 从视频中detect仪表,并用bounding box标出, 使用Faster_rcnn_resnet101网络训练,为提高计算速度,每1秒取一帧画面就可以,因为机器人移动速度很慢,在表盘的停留时间够长

b. 因为读表盘示数对表盘大小&清晰度要求较高,只有当探测图像占据的面积达到画面一定比例以上时,且位置相对居中,才符合截图条件

c. 为避免重复截图,时序上连续符合条件的截图只保留一张,但要注意聚焦问题,(cv.Laplacian(image, cv2.CV_64F).var() < threshold, then blur)与运行轨迹对应可以将仪表图片对号入座

Test 1

2018/08/24中午11点半左右开始,机器人具体出库时间不详,程序共运行62.5分钟

其中在48.6分钟内检测到18块仪表,发现三个误判

(编号空白因为没有截到仪表编号/仪表没有编号)

Cropped示例 & 识别示例 & 三个误判::

仪表编号在测试后进行过改编,此测试仅供效果参考

* 方式2: 调取API接口传入图片,得到图片是否包含仪表盘的判断

对gauge_detection model使用falsk进行封装,图片地址是以img_addr=XXX 的形式嵌入在请求中的,需要把其中的”=”全部用”%26”替换,否则会影响识别,对”img_addr=”中的”=”造成混淆

接口返回值示例:

包含了PARTII仪表读数部分的结果

code部分为识别结果

0:存在可读数仪表盘;1:圆盘定位故障;2:复杂表盘读数故障;3:数字&角度validate失败

4:读数故障;5:不存在可读数仪表盘

msg部分为读数结果

读数精确到小数点后一位

PART II:仪表读数

难点分析:表盘种类繁多,有的还为多指针

Step1: 用深度学习识别数字

Step2: 根据数字位置定位表盘及圆心

Step3: 定位指针角度

Step4: Generate readings

测试结果示例:

准确度还是比较高的,对于开*视频流中唯一一种复杂表盘,无法用以上通用读法攻克,单独做了应对处理。

PART III : PROJECT PROGRESS

2018/10/12

两个场地的测试样本接收,4500条

2018/10/13 - 2018/10/25

一轮一轮的调试优化代码

2018/10/26 

识别及读数效果统计



2018/10/29

场地三测试样本接收,10000条

2018/10/30 -

因为新的测试样本中有很多表盘带有小数点,更新算法以解决小数点的问题

source code: https://git.c.citic/lijy/GaugeReading (Private,未对外开设权限)

你可能感兴趣的:(仪表探测&读数)