基于OpenCV的多位数检测器

重磅干货,第一时间送达

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

读取多个数字

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

0.1数字检测

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

  1. 数字查找

  2. 数字识别

数字查找:

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

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

数字识别:

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

MNIST图片

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

日常数字图像

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

SVHN图片

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

02. Keras建模

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

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

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

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

结论

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

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

交流群

(0)

相关推荐

  • 机器学习入门01

    原文链接:https://developers.google.com/machine-learning/crash-course/framing (监督式)机器学习的定义:机器学习系统通过学习如何组合 ...

  • 一文看尽 27 篇 CVPR2021 2D 目标检测论文

    作者丨二玖 编辑丨极市平台 极市导读 本文对我们汇总的 CVPR 2021 检测大类中的2D目标检测领域的论文进行了盘点,将会依次阐述每篇论文的方法思路和亮点.在极市平台回复"CVPR21检 ...

  • OpenCV vs Dlib 人脸检测比较分析

    人脸检测是计算机视觉最典型的应用之一,早期OpenCV的logo就是Haar人脸检测的示意图. 很多人的第一个OpenCV学习目标就是跑通Haar级联人脸检测,Dlib库在业内开始流行很大程度上是因为 ...

  • 基于OpenCV和Tensorflow的深蹲检测器

    重磅干货,第一时间送达 本期我们将介绍如和使用OpenCV以及Tensorflow实现深蹲检测 在检疫期间,我们的体育活动非常有限,这样并不好.在进行一些居家运动时,我们必须时刻保持高度的注意力集中, ...

  • 基于OpenCV实战:车牌检测

    重磅干货,第一时间送达 拥有思维导图或流程将引导我们朝着探索和寻找实现目标的正确道路的方向发展.如果要给我一张图片,我们如何找到车牌并提取文字? 一般思维步骤: 识别输入数据是图像. 扫描图像以查看由 ...

  • 基于OpenCV实战的图像处理:色度分割

    重磅干货,第一时间送达 通过HSV色阶使用彩色图像可以分割来分割图像中的对象,但这并不是分割图像的唯一方法.为什么大多数人偏爱色度而不是RGB / HSV分割? 可以获得RGB / HSV通道之间的比 ...

  • 基于OpenCV的实战:轮廓检测(附代码解析)

    重磅干货,第一时间送达 利用轮廓检测物体可以看到物体的各种颜色,在这种情况下放置在静态和动态物体上.如果是统计图像,则需要将图像加载到程序中,然后使用OpenCV库,以便跟踪对象. 每当在框架中检测到 ...

  • 基于OpenCV实战:绘制图像轮廓(附代码)

    重磅干货,第一时间送达 山区和地形图中海拔高的区域划出的线称为地形轮廓,它们提供了地形的高程图.这些线条可以手动绘制,也可以由计算机生成.在本文中,我们将看到如何使用OpenCV在简单图像上绘制轮廓线 ...

  • 基于OpenCV实战:动态物体检测

    重磅干货,第一时间送达 最近,闭路电视安全系统运行着多种算法来确保安全,例如面部识别,物体检测,盗窃检测,火灾警报等.我们在运动检测的基础上实现了许多算法,因为在空闲帧上运行所有这些进程没有任何意义. ...

  • 基于OpenCV实战:对象跟踪

    重磅干货,第一时间送达 介绍 跟踪对象的基本思想是找到对象的轮廓,基于HSV颜色值. 轮廓:突出显示对象的图像片段.例如,如果将二进制阈值应用于具有(180,255)的图像,则大于180的像素将以白色 ...

  • (2条消息) 基于OpenCV使用OpenPose进行多个人体姿态估计

    目录 1.网络的体系结构 2.下载模型的权重文件 3. 第一步:生成图片对应的输出 3.1 读取神经网络 3.2 读取图像并生成输入blob 3.3 向前通过网络 3.4 样本输出 4. 第二步:关键 ...

  • 实战:基于OpenCV 的车牌识别

    重磅干货,第一时间送达 车牌识别是一种图像处理技术,用于识别不同车辆.这项技术被广泛用于各种安全检测中.现在让我一起基于OpenCV编写Python代码来完成这一任务. 车牌识别的相关步骤 1.车牌检 ...