0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于OpenCV的多位数检测器

OpenCV学堂 来源:小白学视觉 作者:小白学视觉 2022-04-20 10:12 次阅读

现在数字无处不在,无论是闹钟、健身追踪器、条形码还是包装好了的送货包裹。利用MNIST数据集,机器学习可用来读取单个手写数字。现在,我们可以将其扩展为读取多个数字,如下所示。底层的神经网络同时进行数字定位和数字检测。这在很多实际环境中是非常有用的,例如读取商店中的标签,车牌,广告等。

65979246-bfb8-11ec-bce3-dac502259ad0.png

读取多个数字

但是,为什么不直接使用OCR呢?OCR虽然可以自动检测数字,但是效果并不总是很好,有时我们需要为特定任务训练特定的神经网络。

0.1数字检测

数字检测问题可分为2部分

数字查找

数字识别

数字查找:

数字可能出现在图像的任何位置,要检测到这些数字,我们首先需要查找包含这些数字的区域。这些数字可以有不同的大小和背景。

有多种检测数字位置的方法。比如可以利用简单的图像形态学操作(例如二值化,腐蚀,膨胀)来提取图像中的数字区域。但是,由于存在诸如阈值,内核大小等调整参数,因此这些处理方式不具有普遍性。此外我们还可以使用无监督特征检测器,深度模型等。

数字识别:

确定好区域的数字即可进入数字识别的过程。MNIST数据集是用于手写数字识别的规范数据集。大多数数据科学家已经对该数据集进行了实验。它包含约60,000个用于培训的手写数字和10,000个用于测试的手写数字。一些示例如下所示:

65af080e-bfb8-11ec-bce3-dac502259ad0.png

MNIST图片

但是,现实生活中的数字通常大不相同。它们具有不同的颜色,通常按照以下情况打印。

65c1680a-bfb8-11ec-bce3-dac502259ad0.jpg

65cf4f42-bfb8-11ec-bce3-dac502259ad0.jpg

日常数字图像

另一个公共数据集SVHN-街景房数数据集。数据集包含从Google的街景中收集并带有注释的门牌号图像。以下是SVHN的示例图片:

65d905f0-bfb8-11ec-bce3-dac502259ad0.png

SVHN图片

该数据集在许多背景下都有各种数字组合,对于通用模型更合适。

02. Keras建模

我们选择此基于SVHN位数检测器来实现多位数检测器。它写得很好并且易于遵循。数字定位使用最大稳定的外部区域(MSER)方法完成,该方法用作稳定的特征检测器。MSER主要用于图像内的斑点检测。斑点是像素的连续集合,其外边界像素强度高于内边界像素强度(给定阈值)。如果这些区域在强度变化量上变化不大,则可以说是最大稳定的。MSER的运行时复杂度较低,为O(nlog(log(n))),其中n是图像上像素的总数。该算法对于模糊和缩放也很鲁棒。这使其非常适合提取文本/数字。

使用具有卷积,maxpool和FC层的CNN来完成数字识别,这些层将每个检测到的区域分类为10个不同的数字。分类器在测试集上的准确性达到95%。

我们通过各种示例对存储库进行了测试,发现它运行良好。请参阅上面共享的示例。

在某些间隙中,要么本地化器无法正常工作(未检测到数字1的位置),要么检测器发生故障($被检测为5)。

65f421a0-bfb8-11ec-bce3-dac502259ad0.png

结论

我们希望该博客被证明是了解多位数检测管道如何工作的良好起点。我们共享了一个github链接,该链接可用于在SVHN数据集上构建模型。如果此模型无法正常运行。大家可以收集自己的数据并微调已训练的模型。

SVHN链接:https://github.com/penny4860/SVHN-deep-digit-detector

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测器
    +关注

    关注

    1

    文章

    809

    浏览量

    47281
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40758
  • 数据集
    +关注

    关注

    4

    文章

    1176

    浏览量

    24340

原文标题:基于OpenCV的多位数检测器

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    检测器电路图分享

    检测器是指能检测色谱柱流出组分及其量的变化的器件。检测器通常分为积分型和微分型两类。对检测器的要求是:灵敏度高,线性范围宽,重现性好,稳定性好,响应速度快,对不同物质的响应有规律性及可
    的头像 发表于 01-10 15:47 3871次阅读
    <b class='flag-5'>检测器</b>电路图分享

    Arduino篇—多位数码管的应用

    数码管:是由7个LED封装在一起组成的“8”字型的器件,再加上一位小数点,器件中就一共包含有8个LED灯。其他任何多位数码管也都是1位数码管集合而成。
    的头像 发表于 11-01 14:25 704次阅读
    Arduino篇—<b class='flag-5'>多位数</b>码管的应用

    多位数码管驱动电路介绍

    电子发烧友网站提供《多位数码管驱动电路介绍.doc》资料免费下载
    发表于 10-27 10:22 0次下载
    <b class='flag-5'>多位数</b>码管驱动电路介绍

    openCV边缘检测原理是什么?

    openCV是通过什么原理来实现边缘检测
    发表于 10-10 06:21

    单双张检测器-叠料检测器-铜片检测-阿童木科技

    检测器
    阿童木(广州)智能科技有限公司
    发布于 :2023年09月08日 11:29:32

    12伏简单灵敏的火焰警报 火苗检测器 监控检测器

    检测器
    学习电子知识
    发布于 :2023年07月17日 20:20:30

    4段高灵敏断线检测器

    检测器
    学习电子知识
    发布于 :2023年07月17日 19:48:59

    阿童木金属双张检测器的原理

    检测器
    阿童木(广州)智能科技有限公司
    发布于 :2023年06月27日 15:20:04

    请用Verilog分别实现1位半加器和1位全加器

    多位数相加时,半加器可用于最低位求和,并给出进位数。第二位的相加有两个待加数和,还有一个来自前面低位送来的进位数
    的头像 发表于 06-26 16:32 1611次阅读
    请用Verilog分别实现1位半加器和1位全加器

    单片机入门之多位数码管倒计时

    在之前的文章中我们学习了单片机是如何实现一位数码管显示数字,一位数码管只能显示个位数让我们观察到,那如何显示十位数、百位数,甚至更大的数字呢
    发表于 06-26 15:41 841次阅读
    单片机入门之<b class='flag-5'>多位数</b>码管倒计时

    ESP32-S3 RGB接口屏方案ESP32上运行OpenCV的RGB像素检测器直方图

    检测器
    YS YYDS
    发布于 :2023年06月25日 22:11:44

    高效液相色谱(HPLC)|检测器

    泵、色谱柱及检测器是HPLC的三大关键组成部分。样品经色谱柱分离后随流动相共同进入检测器检测器将样品的物理或化学信号转换为电信号,得到样品组分分离的色谱图。
    的头像 发表于 06-01 14:47 1884次阅读
    高效液相色谱(HPLC)|<b class='flag-5'>检测器</b>

    如何在OpenCV中使用基于深度学习的边缘检测

    在这篇文章中,我们将学习如何在OpenCV中使用基于深度学习的边缘检测,它比目前流行的canny边缘检测器更精确。
    的头像 发表于 05-19 09:52 1657次阅读
    如何在<b class='flag-5'>OpenCV</b>中使用基于深度学习的边缘<b class='flag-5'>检测</b>?

    基于89C51单片机的多位数按键加减(不闪烁)数码管显示源程序

    基于89C51单片机的多位数按键加减(不闪烁)数码管显示源程序
    发表于 05-16 09:10 0次下载

    基于89C51单片机的多位数按键加减(闪烁)数码管显示源程序

    基于89C51单片机的多位数按键加减(闪烁)数码管显示源程序
    发表于 05-12 17:21 1次下载