论文阅读:超高分辨率图像中快速、准确的条码检测

摘要

由于目标对象的尺度不同,超高分辨率 (UHR) 图像中的对象检测长期以来一直是计算机视觉中的一个具有挑战性的问题。在条码检测方面,将 UHR 输入图像调整为更小的尺寸通常会导致相关信息的丢失,而直接处理它们的效率很高且计算成本很高。在本文中,我们建议使用语义分割来快速准确地检测 UHR 图像中各种尺度的条形码。我们的管道涉及大小大于 10k×10k 的图像上的修改后的区域提议网络 (RPN) 和新提出的 Y-Net 分割网络,然后是用于在每个分割的条形码掩码周围拟合边界框的后处理工作流程。端到端系统的延迟为 16 毫秒,比 YOLOv4 快 2.5 倍,比 Mask R-CNN 快 5.9 倍。在准确度方面,我们的方法在合成数据集上分别以 5.5% 和 47.1% 的 mAP 优于 YOLOv4 和 Mask R-CNN。 我们在 http://www.github.com/viplabB/SBD/ 提供了生成的合成条形码数据集及其代码。
关键词: 使用深度神经网络检测条码、条码分割、超高分辨率图像。
作者的网址为:http://www-video.eecs.berkeley.edu/~avz/
论文的地址为:https://www.researchgate.net/publication/349336332_Fast_Accurate_Barcode_Detection_in_Ultra_High-Resolution_Images

1 引言

条形码是数字标志,通常由相邻和交替的黑白小矩形组成,已成为人类社会的固有部分。 例如,在管理中,它们用于编码、保存和检索各种用户的信息。 在杂货店,它们被用来跟踪销售和库存。 在电子商务中更有趣的是,它们用于跟踪和加快仓库和履行中心的处理时间。
在经典信号处理中,用于检测的滤波器是特定于图像的,因为输入图像不一定都是使用相同的照明、亮度、角度或相机获取的。 因此,需要自适应图像处理算法,这会影响检测精度 [1]。 此外,由于经典信号处理方法通常在中央处理单元上运行,因此与在图形处理单元 (GPU) 上轻松优化的深度学习实现相比,它们往往要慢得多。
多年来,已经提出了许多使用经典信号处理检测条形码的方法 [1, 2, 3, 4, 5],但几乎所有方法都需要很长时间来处理超高分辨率 (UHR) 图像 . 更具体地说,[5] 使用平行线段检测器,该检测器改进了他们之前的工作 [6],在霍夫空间中寻找具有最大稳定极值区域的假想垂直线来检测条形码。 卡托纳等人 [3] 使用形态学操作进行条码检测,但由于不同的条码类型具有不同的检测性能,因此该方法不能很好地概括。 类似地,[7] 提出使用 x 和 y 导数差异,但不同的输入图像会产生不同的输出,并且在 UHR 图像上使用这种操作通常会变得非常低效。
使用神经网络,虽然条形码检测任务有了很大改进,但很少有人解决 UHR 图像中快速准确的检测问题。赞贝莱蒂等 [8] 为使用神经网络通过研究霍夫空间来检测条形码铺平了道路。随后是 [9],它采用了 You Only Looked Once (YOLO) 检测器来查找低分辨率 (LR) 图像中的条形码,但众所周知,YOLO 算法在处理长形物体(例如代码 39 条形码)时表现不佳。 Mask R-CNN [10] 等实例分割方法在 1024 × 1024 像素大小的图像上表现更好,但在较小尺寸的图像上,输出的兴趣区域 (RoI) 与长的一维条码结构不能很好地对齐。这是因为无论对象大小如何,它通常都会预测 28×28 像素上的掩码,从而在某些条码预测上产生“摆动”伪影,从而失去空间分辨率。以同样的方式,专用对象检测管道,例如 YOLOv4 [11],虽然它们在较低的联合 (IoU) 阈值上表现良好,但在较高的 IoU 阈值下会受到准确性的影响。在使用 LR 图像分割作为检测手段的那些中,[12] 在更高的 IoU 阈值下也往往表现不佳。
在本文中,我们提出了一种使用深度神经网络检测条形码的管道,如图 1 所示,它由分别训练的两个阶段组成。与经典的信号处理方法相比,神经网络不仅提供了更快的推理时间,而且产生了更高的准确度,因为它们学习了有意义的过滤器以进行最佳特征提取。如图 1 所示,在第一阶段,我们扩展了 Faster R-CNN [13] 中引入的区域提议网络 (RPN),以提取可能存在条形码的潜在位置的高清区域。这个阶段允许我们显着减少在第二阶段本来需要的推理计算时间。在第二阶段,我们引入 Y-Net,这是一种语义分割网络,可检测给定输出 RoI 图像 (400 × 400) 中的所有条码实例。然后我们对预测的掩码应用形态学操作来分离和提取相应的边界框,如图 2 所示。
图 1. 提议的方法,修改后的 RPN 后面是 Y-Net 和边界框提取器
在这里插入图片描述图 2. 我们管道的示例输出; 黄色 - 分段条码像素; 紫色 - 分割的背景像素; 框 - 提取的边界框; (a) 合成条码图像; (b) 真实的条码图像;© (a) 的预测结果; (d) (b) 的预测结果。

现有条码检测工作的局限性之一是训练示例数量不足。 ArTe-Lab 1D Medium Barcode Dataset [8] 和 WWU Muenster Barcode Database [14] 是现有可用数据集的两个示例。 它们分别包含 365 和 595 张图像,地面实况掩码的分辨率为 640 × 480。ArTe-Lab 数据集中的大多数样本每个样本图像只有一个 EAN13 条形码,而在 Muenster 数据库中很少有超过 给定图像上的一个条形码实例。 为了解决此数据集可用性问题,我们发布了 100,000 个 UHR 和 100,000 个 LR 合成条形码数据集以及它们相应的边界框地面实况和地面实况掩码,以促进进一步研究。 本文的大纲如下:在第 2 节中,我们描述了我们的方法的细节; 在第 3 节中,我们总结了我们的实验结果,在第 4 节中,我们总结并扩展了我们未来的工作。

2 建议的方法

如图 1 所示,我们提出的方法由三个阶段组成:修改后的区域建议网络阶段、我们的 Y-Net 分割网络阶段和边界框提取阶段。
我们的 Y-Net 架构类似于英文字母“Y”,与 [15] 不同,[15] 使用预训练的编码器网络,该网络使用未经训练的镜像网络和解码器网络进行增强。

2.1 修改后的区域建议网络

区域建议在计算机视觉中具有影响力,在 UHR 图像中的对象检测方面更是如此。 在 UHR 图像中,条形码聚集在图像的一个小区域中是很常见的。 为了过滤掉大部分非条形码背景,我们修改了 Faster R-CNN [13] 中引入的 RPN,为我们的下一阶段提出条形码区域。 首先将 UHR 输入图像转换为 256×256 大小的 LR 输入图像,训练 RPN 以识别 LR 图像中的斑点。 一旦在识别出的斑点周围放置了一个边界框,所产生的提议边界框就会通过透视变换重新映射到输入的 UHR 图像,并裁剪出结果区域。 选择 RPN 的 LR 输入大小为 256 × 256,因为较低的分辨率会导致相关信息的丢失。 非最大抑制 (NMS) 用于预测以选择最可能的区域。

2.2 Y-Net 分割网络

如图 3 所示,Y-Net 由分布在 2 个分支中的 3 个主要模块组成:一个以蓝色显示的正则卷积模块构成左分支,一个以棕色显示的金字塔池化模块,以及一个扩张的橙色显示的卷积模块经过串联和卷积后构成了右分支。
在这里插入图片描述图 3. Y-Net 架构

常规卷积模块接收 RPN 的 400 × 400 输出图像,并由卷积层和池化层组成。 它从 64 通道 3 × 3 内核开始,每层的数量翻倍。 我们在卷积和最大池化之间交替,直到我们达到 25 × 25 像素的特征图大小。 该模块允许模型学习输入图像中任何位置的一般像素信息。
膨胀卷积模块利用条形码具有交替的黑白矩形的事实来学习其结构中的稀疏特征。 这个模块的动机来自这样一个事实,即扩张卷积算子在双正交小波分解的“算法”中发挥着重要作用 [16]。 因此,这种过滤器可以更准确地学习条形码中交替图案的不连续性和锐利边缘。 此外,它们利用多分辨率和多尺度分解,因为它们允许内核以从 1 到 16 的膨胀率扩大其感受野。这里也使用了 400 × 400 输入图像,我们保持 32 – 通道 3 × 3 内核遍及整个模块,而层的维度使用 2 的步幅逐渐减小,直到获得 25 × 25 像素的特征图。
Pyramid Pooling Module 允许模型学习关于不同尺度条形码潜在位置的全局信息,并且其层与膨胀卷积模块上的层连接,以保留从两个模块中提取的特征。
然后将来自右分支的结果特征图添加到正则卷积模块的输出中,这允许修正任一分支可能遗漏的特征。换句话说,每个分支的输出构成了另一个分支的残余校正,从而改进了每个节点的结果,如白色所示。然后对节点进行上采样并与以相应维度的红色和黄色显示的转置卷积特征图连接。在整个网络中,我们在每一层之后使用 ReLU 作为非线性,并添加 L2 正则化以解决训练期间可能发生的过拟合情况。在所有数据集上,我们将 80% 用于训练集,10% 用于验证集,其余 10% 用于测试集。我们使用一个 NVIDIA Tesla V100 GPU 进行训练。由于这是一个分割网络,我们对分类背景和条形码感兴趣,我们使用二进制交叉熵作为损失函数。

2.3 边界框提取

由于一些图像包含彼此非常接近的条形码,它们的 Y-Net 输出反映了相同的配置,这使得单个条形码边界框的提取变得复杂,如图 4(a)所示。 为了有效地分离它们,我们使用像素校正余量执行腐蚀、轮廓提取和边界框扩展。 如图 4(b) 所示,腐蚀阶段允许算法扩大分段条码之间的间隙,这些条码可能由 1 个或多个像素分隔。 然后在图 4© 中的轮廓提取阶段,通过边界跟踪,使用得到的掩码来推断单个条形码边界框。 如图 4(d) 所示,在扩展阶段使用像素校正余量来恢复原始边界框的尺寸。 我们流水线的这个后处理阶段的平均处理时间为 1.5 毫秒 (ms),因为它由一组 Python 矩阵操作组成,可以有效地从预测掩码中提取边界框。
在这里插入图片描述图 4. (a) Y-Net 输出; (b) 侵蚀后的 Y-Net 输出; © 在侵蚀输出上提取边界框——红色,真实边界框——绿色; (d) Y Net 输出的像素校正余量后的最终边界框; (e) 被遮挡条码场景的 Y-Net 输出; (f) 由于输入图像中的条形码重叠,最终提取的边界框在像素校正余量后分组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 多线程 场景,精选Android初中级面试题 (三): 深探Handler,多线程,Bitmap

码个蛋(codeegg) 第 930 次推文作者:Focusing链接:https://juejin.im/post/5c85cead5188257c6703af47Handler1、谈谈消息机制Handler作用 ?有哪些要素 ?流程是怎样的 ?参考回答:负责跨线程通信,…

python计算bmi的编程_Python学习-计算BMI的小程序

示例:小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:低于18.5:过轻18.5-25:正常25-28:过重28-32:肥胖高于32:严重肥…

通过超分辨率重构来提高二维码的对比度

1 问题描述 (1)图像分辨率小。例如一些嵌入在海报(如图1)或远距离拍摄的码,其分辨率远小于通常情况下的码图像。 图1.海报中的二维码占比很小 (2)图像质量较低。有很多是经过了多次的压缩和转…

android web 访问数据库,Web下的JDBC访问数据库的基本步骤

Web下的JDBC访问数据库的基本步骤(2012-06-02 12:09:33)在Java程序中连接数据库的一般步骤分为一下几部分,我摘录出来,跟大家分享。(1)将数据库的JABC驱动加载到classpath中,在基于JavaEE的Web应用开发过程中,通常把JDBC驱动放在W…

linux 磁盘扩容_记录一次ESXi Linux在线扩容,不重启系统

因为工作需要,需要将运行在ESXi主机上面的一台Centos 里面的一个LV卷进行扩容,下面记录了此次扩展的详细过程,整个过程,不需要重启服务器。1. 首先通过df-h 查看当前磁盘结构如下:我们此次的最终目标,就是将…

我目前的主要研究方向

推荐系统 https://blog.csdn.net/search_129_hr/article/details/118680185 游戏难度动态调整 https://blog.csdn.net/search_129_hr/article/details/119204173 睡眠声音识别与增强 https://blog.csdn.net/search_129_hr/article/details/118568452 二维码图像识别与增强…

linux的任务计划6,Linux计划任务

Linux计划任务:未来的某个时间执行一次任务,或者周期性执行某个任务,执行结果会通过邮件通知定时任务:at batch周期性任务:crontab系统任务调度:/ect/crontab用户任务调度:/var/spool/cronmail​…

aws python lambda_python – AWS Lambda发送HTTP请求

这可能是一个简单回答的问题,但我似乎无法弄明白.背景:我有一个python Lambda函数来获取数据库中的更改,然后使用HTTP将json中的更改发布到URL.我正在使用urllib2这样:# this runs inside a loop, in reality my error handling is much betterrequest …

标签分布学习相关研究

1 标记增强及标签分布学习 https://mp.weixin.qq.com/s/cXiR-UeJkcdkljJvE2eERw http://palm.seu.edu.cn/xgeng/files/sc-info18.pdf https://baijiahao.baidu.com/s?id1687693358774525583&wfrspider&forpc https://blog.csdn.net/weixin_42001089/article/details/…

android item三种,Android RecyclerView中的ItemDecoration的几种绘制方法

如题,我们使用recyclerview的时候,如果没有设置显示条目的margin,或者padding的话,是没有分割线效果的。那么除去使用margin或padding,其余的方法是用itemdecoration绘制分割线我们绘制分割线的时候通常会使用drawable去绘制&…

上传文件和提交textfield_0基础掌握Django框架(37)文件上传

为了更好的学习效果,请搭配视频教程一起学习:Django零基础到项目实战 - 网易云课堂​study.163.com文件上传:文件上传是网站开发中非常常见的功能。这里详细讲述如何在Django中实现文件的上传功能。前端HTML代码实现:在前端中&…

2021年第3周LDL方向的周报

LDL小组: 如何快速进入研究状态 (1)系列性的工作,papermaker:读文献,顶刊顶会,综述性文章–》进行扩展,研究主线 (2)接手师兄师姐的工作–》并且对已有的工作…

2021年第3周人工智能方向的周报

快速进入研究: (1)读文献–》综述性的文献–》你自己去综述性文献 (2)已有的工作 (3)有没有相关的数据? 下一步事情: (1)想一想自己的横向做什么…

华为p10刷原生android,华为p10怎么刷机 华为p10刷机方法【详细介绍】

喜欢折腾手机的用户一定对于手机root权限获取不陌生,root后虽然不能享受官方联保服务但同时带来的好处不用小编多说。前面给大家介绍了 华为p10 刷入第三方recovery教程,现在华为p10刷机包已经放出来,小编给大家带来华为p10刷机权限获取教程。…

pythoncookie自动模拟登录_用Python模拟技巧带你实现自动抽屉登录自动点赞

原标题:用Python模拟技巧带你实现自动抽屉登录&自动点赞/1 前言/嘿,各位小伙伴们晚上好呀,今天小编又给大家带来干货内容啦,今天带来的是,如何自动登录抽屉,并且点赞!原计划是不打算使用selenium的,但是…

同学之间互相出的一些有趣题目

题目1:过隧道时间最短问题 四个人(A、B、C、D)晚上过隧道,并且只有一个手电筒,每次只能过两个人,并且还需要有一个人回来传递手电筒,四个人过隧道的速度不一样,分别是1、2、5、10分钟,问怎么过隧道最快?总共用多长时间? 问题扩展&#xf…

android studio sqlitedatabase,在SQLite数据库Android Studio上使用预填充数据库

本问题已经有最佳答案,请猛点这里访问。在这里,我想使用我预先填充的SQLite数据库到我的Android应用程序。 因此,首次运行时,它会自动从assets文件夹中复制数据库,并在我的Android应用程序中将其用作数据库。到目前为止…

使用container的嵌套_ElementUI 技术揭秘(4)— Container 布局容器组件的设计与实现。...

前言上一篇文章我们分析了 Layout 布局组件的设计和实现,它的应用场景通常是局部布局。对于整个页面的布局,element-ui 提供了 Container 布局容器组件,专门用于 PC 管理后台页面的整体布局。需求分析我们先通过几幅图看一下页面的常见布局。…

推荐系统最新研究进展

算法相关的综述 从200多篇顶会论文看推荐系统前沿方向与最新进展 基于强化学习的推荐系统相关研究进展、经典论文整理分享 推荐系统去偏(Debiased Recommendation)研究进展概述 Deep Learning Based Recommender System: A Survey and New Perspectives…

html自动生成在线试题,HTML5测试题整理Ⅰ

1.在 HTML5 中,哪个元素用于组合标题元素?答案:2.HTML5 中不再支持哪个元素?答案:,,,,,,,,,,,3.在 HTML5 中,onblur 和 onfocus 是?答案:事件属性4.在 HTML5 中,新多媒体…