仪表识别之数字表识别

转载自:https://blog.csdn.net/huneng1991/article/details/82049207

1介绍

       好久没有写博客了,主要是去学习深度学习去了,用深度学习解决了人脸检测,人脸对齐,人脸识别三种技术,再写相关的博客感觉没什么意思,所以荒废了许久。最近做了关于仪表识别的工作,并根据此工作成果开了一家公司。这里介绍下仪表识别中数码表识别的成果。

       上图是一张测试结果,蓝色框标注了仪表的位置,绿色文字标注了蓝色框内仪表的标签和数字。

2方法

       这里主要用的方法发是机器学习中的检测+传统方法的颜色分割。流程如下:

       1)仪表检测

       2)数字区域分割

       3)数字检测

2.1仪表检测

      目前开源的物体检测方法很多,对于上面场景来说,很多方法都可以达到理想的效果,比方说SSD,yolo,haar + adaboost等,传统方法,深度学习方法均可,建议采用多标签输出的方法,这样就可以一张图输入,多张标输出。

2.2数字区域分割

       如果直接检测数字,干扰很多,效果很差,最好的方法是特殊场景,特殊对待。如上面这个表,可以检测黑色区域,得到如下的结果:

       颜色检测后进行最小外接矩形计算就可以得到。需要注意的是得到检测框后要往内部padding一定比例的像素。

2.3数字检测

      数字检测可以按照仪表检测的方法来进行。很多人会用tesseract来实现识别,往往是不得其法的,据说tesseract内部的算法是跟比划相关,led的显示是断的,所以两者是相悖的,所以用检测方法会很好的解决这个问题,检测分类包含数字,字母及小数点,为了效果好,标注的时候要用同样大小的框进行标注,比如小数点的标注框要比其面积大很多。

3结果

      结果就看图吧。

4其他

      目前检测方法以深度学习占主流,现在也出现一些网络,模型小,速度快,效果好很多,所以实用是没有问题的。我个人也研发了一些小网络,采用多尺度,级联结构,上面这些张图,i5单核100ms左右,如果仪表占全图一半的面积以上,i5单核实时是肯定没有问题的。

       当然我还做了一些指针表的效果,如下图,采用的方法嘛,就是公司的机密了:

        下面我做了一个具体的讲解视频,有兴趣可以看下

https://v.youku.com/v_show/id_XMzc5NjgyNDcyMA==.html?spm=a2h3j.8428770.3416059.1

展开阅读全文

没有更多推荐了,返回首页