当前位置: 首页 > 编程日记 > 正文

商汤联手华科:提出文字检测模型GNNets,新颖模块可解决几何分布难题


加入「公开课」交流群,获取更多学习资料、课程及热招岗位等信息

编辑 | Jane

出品 | AI科技大本营(ID:rgznai100)

【导读】今年的ICCV,商汤科技及联合实验室共有57篇论文入选ICCV 2019(包含11篇Oral),同时在Open Images、COCO、LVIS等13项重要竞赛中夺冠!

本文简要介绍商汤科技研究团队在ICCV2019上录用的一篇文章:Geometry Normalization Networks for Accurate Scene Text Detection(GNNets),针对自然场景下文字检测的几何归一化网络。该文章通过对待处理图像的特征图进行几何变换,从而将待处理图像中几何分布差异较大的文本框归一化到一定的几何分布范围内,提高了自然场景下文本测检的效果。

一、研究背景

随着深度学习的迅速发展,计算机视觉技术对实际生产具有影响越来越重要的影响。对图像中的文本进行检测和识别,有助于计算机理解视觉内容。由于卷积神经网络(CNN)方法的通用性,自然场景文本检测受益于常规物体检测而快速发展。但由于自然场景中的文本在实际应用场景中具有较大的几何变化(例如宽高比或文字方向),所以其自身仍存在巨大的挑战。

对于尺度变化问题,现有方法一般通过使用一个检测头(detection header)对不同层级的特征进行检测,利用NMS融合结果后作为输出或者使用类似FPN [1]的网络将多尺度特征融合然后进行文本检测。对于角度变化问题,现有方法一般通过直接回归文本框角度或使用对方向敏感的卷积来预测任意方向。但目前的方法中要求检测头(detection header)需要学习到文字巨大的几何差异或者检测头(detection header)仅在所有训练样本中一个子集进行学习,这可能导致性能欠佳。

作者研究了几何分布对场景文本检测的影响,发现基于CNN的检测器只能捕获有限的文本几何分布,但充分利用所有训练的样本可以提高其泛化能力。为了解决上述难题,作者提出了一种新颖的几何规范化模块(GNM)。每个自然场景图片中的文本实例可以通过GNM归一化到一定的几何分布范围内。这样所有训练样本均被归一化为有限的分布,因此可以有效地训练一个共享的文本检测头。


本文提出的GNM是通用的,可以直接将该模块插入到任何基于CNN的文本检测器中。为了验证提出方法的有效性,作者针对文字方向的差异性新建了一个测试集(Benchmark)并发布。

二、方法描述 

Fig.1. Overall architecture.

Fig. 1是GNNets的整体网络结构图。总体网络结构由Backbone,GNM,Shared Text Detection Header组成。通过Backbone提取的特征图会被输入到具有多个分支的几何规范化模块(GNM)中,每个分支由一个尺度归一化单元(SNU)和方向归一化单元(ONU)组成。SNU有两个不同比例的尺归一化单位(S,S1/2)和四个方向归一化单位(O,Or,Of,Or + f)。通过SNU和ONU的不同组合,GNM会生成不同的几何归一化特征图,这些特征图将被输入到一个共享文本检测标头中。

Fig.2. ONU.

Fig. 2是作者提出的ONU模块的示意图。通过应用ONU可以更改文本框方向。如图所示“绿色”框是原始框,“灰色”框是转换过程中的中间框,“红色”框是ONU的输出的结果框。θ和θ’分别是原始框和结果框的角度。(a),(b),(c)和(d)分别是O,Or,Of,Or + f的过程的示意图。由上图可以简单明了的表示ONU具有将[0,π/4],[-π/2,-π/4],[-π/4,0]和[π/4,π/2]角度的文本转换为在[0,π/4]角度的文本。

Fig.3. Architecture of GNM.

Fig. 3展示了GNM在网络中的结构设置。对于SNU中的S使用1x1的卷积操作和3x3的卷积操作;S1/2使用1X1的卷积,步长为2的下采样以及3x3的卷积。对于ONU中的O,Or,Of,Or + f中的Operations则分别采用不操作,旋转feature maps,翻转feature maps和旋转后再翻转feature maps。

由于多分支网络的影响,作者提出了一个针对GNNets的抽样训练策略。在训练期间,作者随机采样一个文本实例,并通过旋转和调整大小7次来对其进行扩充,以使GNM的每个分支在每批次中都具有有效的文本实例用于训练。这样可以对GNM的所有分支进行统一训练。并且在训练过程中如果文本实例不在预先设定的几何区间内,则忽略分支中的该文本实例。在测试过程中,作者将GNM中所有分支输出文本框相应地反向投影到原始比例和方向。不在分支预先设定的几何区间内的文本框会被丢弃。其余的文本框通过NMS合并。

三、实验结果

Table 1. Comparison with the state-of-the-art methods on both ICDAR 2015 and ICDAR 2017 MLT.

与原始的PSENet[2] 相比,作者提出的GNNets在ICDAR 2015[3]和ICDAR 2017 MLT [4]上分别实现了约1.3%和2.1%的性能提升。与ICDAR 2015上的EAST[5]和ITN [6]相比,GNNet的F-score比它们分别高出8%和9%。与FTSN [7]相比,获得了4.5%的性能提升。GNNets在ICDAR 2015上的表现优于FOTS [8],在ICDAR 2017 MLT上的F-score更超出其7.3%。并且FOTS使用了文字识别的数据。在单尺度测试中,作者提出的GNNets在ICDAR 2015和ICDAR 2017 MLT上均达到了state-of-the-art的性能。Fig. 5可视化了GNNets和其他文本检测方法在ICDAR 2015和ICDAR 2017 MLT上的检测结果。

Fig.5. Qualitative results on ICDAR 2015 and ICDAR 2017 MLT. The right column shows GNNets results.

四、总结及讨论

1. 在本文中,作者提出了一种新颖的几何归一化模块(GNM)以生成多个几何感知特征图。并且GNM是通用的,可以应用到任何基于CNN的检测器中,以构建端到端的几何归一化网络(GNNet)。实验表明,GNNet在检测几何分布较大的文本实例方面相较于baseline表现出出色的性能。并且,GNNet在两个文字检测主流的数据集上较最新的方法获得了显著的性能提升。

2. 文中研究了几何分布对场景文本检测的影响,发现基于CNN的检测器只能捕获有限的文本几何分布,但充分利用所有训练的样本可以提高其泛化能力,对后续文字检测以及其他相关领域有启发性影响。

3. 综上所述,文本检测是OCR任务的首要前提,但自然场景下文字的字体变化、悬殊的宽高比、任意角度给检测任务带来巨大的挑战,本文为我们提出了目前研究方向上忽略的点,并提供了一个新颖的解决方法,但是相较与常规物体检测,文本检测领域仍然有其特殊性以及较大的提升空间。

(*本文为AI科技大本营投稿文章,转载请微信联系 1092722531)

精彩公开课

推荐阅读

  • 20行代码发一篇NeurIPS:梯度共享已经不安全了

  • 图灵奖得主Bengio:深度学习不会被取代,我想让AI会推理、计划和想象

  • 4大主流CPU处理器技术架构,不知道就out了!

  • 国产数据库年终大盘点

  • 支付宝也崩溃,中心化支付体系尚能饭否?

  • Android 10 vs iOS 13,逐鹿手机操作系统之王!

  • 搞定面试算法系列 | 分治算法三步走

  • 我在华为做外包的真实经历

  • 了不起的 Unicode!

  • 想开发智能合约?先 get 下这个适合所有人的模型驱动法(文末有福利)

  • 你点的每个“在看”,我都认真当成了AI

相关文章:

(链表)反转链表Reverse List

逆转链表是简单而又简单的链表问题,其问题的方法之一可以设置三个指针,一个指向当前结点,一个指向前驱结点,一个指向后继指针 代码如下: class Solution { public:ListNode* ReverseList(ListNode* pHead) { // if(pHeadNULL || pHead->nextNULL) // return pH…

很长时间没有来了

好长时间没有来自己的博客了,更新的速度实在是太慢了,自己已经找了一份新的工作,给自己一个好的环境吧,有时间可以去学习更多的网络知识了.学习万岁!加一下,博友:思念狗的骨头:[url]http://starger.blog.51cto.com/ [/url] 他的文章还是比较不错的!转载于:https://blog.51cto.c…

十年磨一剑,可重构计算架构将引领未来芯片市场

2019 年 6 月,AI 芯片创业公司清微智能首款可重构计算架构 AI 芯片实现量产的消息在业内迅速传开,可重构计算架构芯片再次引发一波讨论的热潮。经历过十多年的技术积累,这枚小小的芯片在全球芯片市场中开启了全新的篇章。时光倒流&#xff0c…

PyTorch中nn.Module类中__call__方法介绍

在PyTorch源码的torch/nn/modules/module.py文件中,有一条__call__语句和一条forward语句,如下: __call__ : Callable[…, Any] _call_impl forward: Callable[…, Any] _forward_unimplemented 在PyTorch中nn.Module类是所有神经网络模块…

压缩和归档及vi的使用

1.cat(more less head tail) /etc/passwd :查看/etc/passwd文件内容2.head -13 /etc/passwd | tail -1 :只查看/etc/passwd文件中第13行3.wc -l /etc/passwd :统计/etc/passwd文件有多少行4.grep -v "^#" /etc/inittab | grep -v &…

看到抖音上Python工程师晒得工资条,我沉默了......

我是个抖音中毒者闲来无事就喜欢刷抖音最近刷到了一个Python工程师的工资条然后我默默的打开看了然后我默默的关闭了我想这个工资算下来好像也不算高我就去其他渠道搜索了一下相关的Python工作岗位的工资好吧,都是比这个工资更高的emmm.....此时我很沉默后悔为什么我…

windows上通过cmake-gui生成pytorch工程

在Windows下通过cmake-gui.exe生成不带cuda的Torch.sln工程操作步骤:PyTorch版本使用1.8.1。首先可以先通过打开cmake-gui.exe,指定pytorch源代码目录和生成vs2017工程的位置;然后点击Configure,选中”Visual Studio 15 2017 Win6…

RequisitePro SQL SERVER数据库的配置

安装好Rational RequisitePro后,新建立一个project时,要选择库的类型,可以支持MS Access、SQL SERVER和oralce首先在SQL SERVER里新建一数据库名为”RequisitePro”然后在查询分析器里执行其自带的脚本文件,位置在《Rational安装目…

yum三种方法

RHEL5中实现各种服务的准备条件:(一)、制作YUM本地源:YUM简介:YUM是Yellow dog Updater Modified的简称,yum是软件的仓库,它可以是http或ftp站点,也可以是本地软件池,但必须包含rpm的header&…

损失函数之Cross-Entropy介绍及C++实现

在深度学习中,损失函数用来评估模型的预测值与真实值之间的差异程度,是模型对数据拟合程度的反映,拟合的越差,损失函数的值越大;反之,损失函数越小,说明模型的预测值就越接近真实值,…

C语言应用于LR中-如何得到数组长度

C语言没有提供获取数组长度的函数,最起码我不知道,所以编写了一个函数取数组的长度,调试成功,大家可以试试。另外也可以用sizeof(a)/4来取得整型数组的长度,因为整型占4个字节。效果相同。#include "web_api.h&qu…

6个你必须知道的机器学习的革命性的教训

加入「公开课」交流群,获取更多学习资料、课程及热招岗位等信息作者 | James Warner编译 | ronghuaiyang来源 | 转载自AI公园(ID:AI_Paradise)【导读】机器学习是未来,因为它将广泛应用于计算机和其他领域。尽管如此,开发有效的机…

vim ctags使用方法

一、用好系统自带软件ctags大部分的unix系统都有ctags软件,它能跟vim很好地合作。用途:生成c语言的标签文件,实现相关c文件之间的跳转。用法:1.生成标签文件在当前目录下(运行$提示符后面的命令): $ctags -R .-R表示recursive,递归,为当前目录…

pybind11介绍

pybind11是一个轻量级的仅头文件库,主要用于创建现有C代码的Python绑定,它的源码在https://github.com/pybind/pybind11,license为BSD,最新发布版本为2.9.1。 可将pybind11库视为Boost.Python的一个小型自包含版本(Think of this …

改善AI性别偏见的4种方法 | CSDN博文精选

加入「公开课」交流群,获取更多学习资料、课程及热招岗位等信息作者 | Josh Feast翻译 | 王子龙校对 | 王琦本文阐述导致AI偏见的原因并提出应用的解决方案。任何对AI偏见的审查都需要意识到一个事实:这些偏见主要源于人类固有的偏见。我们创建、训练的模…

C#程序调用外部程序

/**编程语言:VisualStudio.NetC#(Beta2)*作者:迪泊威*功能:通过C#程序调用Windows记事本程序编辑一个*名为test.txt的文本文件。**在整个程序中System.Diagnostics.Process.Start(Info)*为主要语句。*如果只是单独执行一个外部程序&#xff0…

svn 同步脚本

REPOS"$1"REV"$2"export LANGen_US.UTF-8/usr/bin/svn update /home/wwwroot/yswifi --username yangxc --password yangxc >>/tmp/svn_hook_log.txtecho who am i,$REPOS,$REV >> /tmp_hook_var.txt转载于:https://www.cnblogs.com/xkcp008/p…

DevOps火爆,招人却太难了!

DevOps一词最近两年人们谈的比较多,很多人简单地理解为“Dev”“Ops”,是否将开发人员和运营人员放在一个部门就完事了呢?其实DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通、协作与整合。…

网络数据包分析软件Wireshark简介

Wireshark是被广泛使用的免费开源的网络协议分析软件(network protocol analyzer)或网络数据包分析软件,它可以让你在微观层面上查看网络上发生的事情,它的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包信息。它的源码在https://…

SEO研究:网站结构

在衡量所有权重之间,网站结构大概占到30%,这也是很多网站排名不好,或者有站长根本不用优化就能获得很好排名的原因。说到结构必须明白两个概念,一个是物理概念,就是文件存放的路径,另一个是逻辑结构。比较好的情况是逻…

form实现登陆操作

这几天想写个保存cookies的网页&#xff0c;先写了个登陆界面&#xff0c;奈何点击登陆后总是无法正常跳转。经查阅资料和询问高手&#xff0c;总算得以解决。 原错误代码如下&#xff1a; <html> <title>SaveCookies</title> <head> <script>fu…

深度学习中的优化算法之BGD

之前在https://blog.csdn.net/fengbingchun/article/details/75351323 介绍过梯度下降&#xff0c;常见的梯度下降有三种形式&#xff1a;BGD、SGD、MBGD&#xff0c;它们的不同之处在于我们使用多少数据来计算目标函数的梯度。 大多数深度学习算法都涉及某种形式的优化。优化指…

死宅福音:乐高不怕多,智能分拣机帮你归类

作者 | 神经小兮来源 | HyperAI超神经&#xff08;ID&#xff1a;HyperAI&#xff09;【导读】乐高现在几乎已经是优质玩具的代名词&#xff0c;该品牌旗下最为知名的&#xff0c;莫过于乐高积木。其丰富的形状与多样的玩法&#xff0c;无论大人小孩都喜欢。但是&#xff0c;这…

优化eclipse启动速度

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 最近发现eclipse越来越慢&#xff0c;影响了开发使用速度。经过处理&#xff0c;快了一些&#xff0c;希望给大家一些提示。 1&#xff0c;取消系统的自动折叠 操作方法&#xff1a;…

一个基于J2EE的web应用程序运行起来需要什么?

2019独角兽企业重金招聘Python工程师标准>>> Eclipse &#xff1f;IDEA&#xff1f;这是目前市面上最常用的开发工具啦&#xff0c;我的理解是这些只是开发工具&#xff0c;是为了方便开发的&#xff0c;而不是web应用程序运行起来必须的东西。 为什么会有些这方面东…

深度学习中的优化算法之MBGD

之前在https://blog.csdn.net/fengbingchun/article/details/75351323 介绍过梯度下降&#xff0c;常见的梯度下降有三种形式&#xff1a;BGD、SGD、MBGD&#xff0c;它们的不同之处在于我们使用多少数据来计算目标函数的梯度。 大多数深度学习算法都涉及某种形式的优化。优化指…

华科提出目标检测新方法:基于IoU-aware的定位改进,简单又有效

作者 | 周强来源 | 我爱计算机视觉&#xff08;ID&#xff1a;aicvml&#xff09;【导语】近日&#xff0c;华中科技大学发表了一篇新论文《IoU-aware Single-stage Object Detector for Accurate Localization》&#xff0c;在此论文中作者提出了一种非常简单的目标检测定位改…

js init : function ()

这个init外面应该还有一层&#xff0c;比如 var a { init: function () {...}, exit: function () {...} } 这样的话&#xff0c;可以用a.init()来调用这个函数&#xff0c; <script type"text/javascript">var obj{init:function(str){alert("init调用&…

Google提出移动端新SOTA模型MixNets:用混合深度卷积核提升精度

作者 | Google译者 | 刘畅编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09; 【导语】目前&#xff0c;深度卷积&#xff08;Depthwise convolution&#xff09;在追求高性能的卷积网络中的应用变得越来越流行&#xff0c;但很多研究忽略了其内核…

桌面窗口的一些发现

最近因业务需要&#xff0c;玩了一下全屏问题。后来&#xff0c;对windows xp sp2的桌面窗口产生了兴趣。写了段代码&#xff0c;玩了一下。同时结合网上的一些知识&#xff0c;发现了以下一些现象。&#xff08;转载请指明出处&#xff09; 首先窗口名有#32769、Progman、Shel…