当前位置: 首页 > news >正文

论文解读 | [CVPR2019] 基于自适应文本区域表示的任意形状场景文本检测

目录

1 研究背景及意义

2 总体设计

3 方法论

3.1 自适应文本区域表示

 3.2 文本建议

3.3 建议改进

 4 损失函数

5 实验及结果

1 研究背景及意义

现有的场景文本检测方法使用固定点数的多边形来 表示文本区域。例如,水平文本使用2个点(左上/右下)表示文本区域,多方向文本用4个点表示文本区域,对于弯曲文本(CTW1500)使用14个点表示文本区域。虽然使用固定点数的方式能很好的适应对应的实例,但面对复杂的场景文本时仍然不能很好的表示文本区域。例如,弯曲的长文本即使是用14个点也不足以表示出文本区域,而对于定向或多方向文本14个点右显得很浪费。

针对上面的问题,本文提出了一种针对不同形状文本使用不同点数的自适应文本区域表示方法。同时,使用RNN学习每个文本区域的自适应表示,使用该表示可以直接标记文本区域,并且不需要逐像素分割。

2 总体设计

图1 本文提出的任意形状文本检测流程图,包括文本建议建议改进两个阶段。

文本建议:Text-RPN 生成图像的文本建议,同时提取输入图像的 CNN 特征图,用于后面的操作。

建议改进:使用细化网络对文本建议进行细化和验证。其中包括文本/非文本边界框回归基于 RNN 的自适应文本区域表示。最后,输出标记有自适应点数的多边形的文本区域作为检测结果。

3 方法论

3.1 自适应文本区域表示

传统的使用固定点数的文本区域表示方法对于复杂的场景文本并不实用,本文使用自适应点数的多边形来表示文本区域,并且这样才是合理的。

如图2(a) 所示,文本区域边界上的角点可以用于文本区域的表示,但是这种方法对于点不是按方向排列的,可能很难学习表示,同时还可能需要人为矫正来实现精确的分割。在本文中,考虑到文本区域通常具有近似对称的上下边界。使用上下边界的成对点表示文本区域似乎更合适,如图2(b)。并且对这些成对点从一端到另一端的学习也会很容易。

图2

 图3 (a)由4个点(2对)表示的文本区域; (b)由6个点(3对)表示的文本区域;

(c) 由12个点(6对)表示的文本区域。

 3.2 文本建议

Text-RPN 生成文本区域候选。Text-RPN 与 Faster R-CNN 中的 RPN 相似,骨干网络使用 SE-VGG16,如图4所示。通过将压缩和激励块(SE)添加到 VGG16 而获得的。SE模块(图5)通过显式建模信道之间的相互依赖性,自适应地重新校准信道特性响应,这可以产生显著的性能改进。FC为全连接层,ReLU 表示矫正线性单位函数。

 图4 SE-VGG16网络的架构

图5 SE模块的架构

3.3 建议改进

将文本建议模块中生成的文本区域候选进行验证和细化。如图6所示,一个细化网络用于提案细化,它由几个分支组成:文本/非文本分类边界框回归基于RNN的自适应文本区域表示。这里,文本/非文本分类和边界框回归与其他两阶段文本检测方法相似,而最后一个分支被提出用于任意形状的文本表示。

 

图6 细化网络 

 该分支输入的是文本提议的特征,输出的是每个文本区域边界上自适应成对点数量和坐标。文本提议的特征是通过使用 ROI 池和 SE-VGG16 生成的 CNN 特征图获得的。使用长短期存储(LSTM)学习文本区域表示。LSTM 中每个时间步骤的输入是相应文本提案的 ROI 池特征。

由于不同的文本区域点数不同,因此需要停止标签来表示预测网络何时停止。停止标签预测是分类问题,坐标预测是回归问题。所以一个 LSTM 有两个分支:一个用于坐标回归,一个用于停止标签预测。如果标签继续,则在下一时间步骤中预测另两个点的坐标和新坐标。否则,停止预测,文本区域用之前预测的所以成对点表示。

 

 

 

图7 

 成对边界点的两种表示方式:

\bullet  (x_{i}, y_{i}, x_{i+1}, y_{i+1})。通过这种方式,成对点的坐标被用作回归目标,如图7所示。

\bullet (x^{c}_{i}, y^{c}_{i})、 h_{i} 和 \theta_{i} 。(x^{c}_{i}, y^{c}_{i})为成对边界点的中心坐标,h_{i} 是到它们的距离,\theta_{i} 为方向(角度)。

方法2中,角度在某些特殊情况下并不稳定,这就使得网络很难很好的学习角度目标。所以,该方法使用点 (x_{i}, y_{i}, x_{i+1}, y_{i+1}) 的坐标作为回归目标。

 

 4 损失函数

Text-RPN 与 Faster R-CNN 中的 RPN 相似,因此 Text-RPN 的训练损失也以与之相似的方式计算。本文关注细化网络的损失:文本/非文本损失边界框回归损失边界点回归损失停止/继续标签分类损失的总和。\lambda _{1} 、\lambda _{2} 和 \lambda _{3} 是控制这些项之间权衡的平衡参数,被设置为1。

 文本/非文本损失: t 是类别标签的指示符。文本: t=1; 非文本: t=0。p = (p_{0}, p_{1}) 是 softmax 之后计算的文本和背景类的概率。

 边界框回归损失:v = (v_{x}, v_{y}, v_{w}, v_{h}) 是包含中心点坐标、宽度和高度的真实边界框回归目标的元组,v^{*} = (v^{*}_{x}, v^{*}_{y}, v^{*}_{w}, v^{*}_{h}) 是每个文本提案的预测元组。本文使用 Faster R-CNN 中给出的 v 和 v^{*} 的参数化,其中  v 和 v^{*} 指定了相对于对象建议的比例不变平移和对数空间高度/宽度偏移。

 边界点回归损失u = (u_{x_{1}}, u_{y_{1}},...,u_{x_{n}}, u_{y_{n}}) 真实边界点坐标的元组;u = (u^{*}_{x_{1}}, u^{*}_{y_{1}},...,u^{*}_{x_{n}}, u^{*}_{y_{n}}) 文本标签的预测点的元组。为了使所学习的点适用于不同尺度的文本,还应该处理学习目标以使它们尺度不变。参数 (u^{*}_{x_{i}}, u^{*}_{y_{i}}) 处理如下:

其中,x^{*}_{i} 和 y^{*}_{i} 表示边界点的坐标,x_{a} 和 y_{a} 表示相应文本提案的中心点坐标,w_{a} 和 h_{a} 表示该提案的宽度和高度。

停止/继续标签分类损失:设 (w, w^{*}) 表示 (v_{i}, v^{*}_{i}) 或者 (u_{i}, u^{*}_{i})L_{reg}(w, w^{*}) 定义为平滑 L_{1} 损耗,如 Faster R-CNN所示:

对于停止/继续标签分类损失术语,它也是一种二进制分类,其损失的格式类似于文本/非文本分类损失。

5 实验及结果

相关文章:

论文解读 | [CVPR2019] 基于自适应文本区域表示的任意形状场景文本检测

目录 1 研究背景及意义 2 总体设计 3 方法论 3.1 自适应文本区域表示 3.2 文本建议 3.3 建议改进 4 损失函数 5 实验及结果 1 研究背景及意义 现有的场景文本检测方法使用固定点数的多边形来 表示文本区域。例如,水平文本使用2个点(左上/右下)表示文本区域&…...

2月编程语言排行榜谁还没有看?

近日,TIOBE公布了2023年2月编程语言排行榜,本月各个语言表现如何?谁又摘得桂冠?一起来看看吧! TIOBE 2月Top15编程语言: 详细榜单查看TIOBE官网 https://www.tiobe.com/tiobe-index/ 关注IT行业的小伙伴们…...

nginx.conf配置方法详细介绍

从前面的内容学习中,我们知道Nginx的核心配置文件默认是放在/usr/local/nginx/conf/nginx.conf,这一节,我们就来学习下nginx.conf的内容和基本配置方法。读取Nginx自带的Nginx配置文件,我们将其中的注释部分【学习一个技术点就是在…...

【微信小程序】一文带你吃透开发中的常用组件

写在前面 小程序中的组件也是由宿主环境提供的,开发者可以基于组件快速搭建出漂亮的页面结构。 官方把小程序的组件分为了9大类,分别是: 1.视图容器 2.基础内容 3.表单组件 4.导航组件 5.媒体组件 6.地图组件 7.画布组件 …...

Nginx 部署 Vue 项目以及 Vue 项目刷新出现 404 的问题(完整步骤)(亲测有效)

Nginx 部署 Vue 项目以及 Vue 项目刷新出现 404 的问题(完整步骤)(亲测有效) 1.流程步骤(本教程下载的是1.20.2版本,放在D盘) 1-1. 首先去官方下载 nginx ,然后在当前目录下创建ht…...

leaflet 加载geojson数据,随机显示不同颜色的circleMarker

第086个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet项目中加载geojson数据,随机显示不同颜色的circleMarker. 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共89行)相关API专栏目标示例效果 配置方式…...

UL grant的分配(LCP)

欢迎关注同名微信公众号“modem协议笔记”。 UE有UL data时,会发送BSR的告知网络侧自己详细的请求,期望网络能够如期下发UL grant,正常情况下网络侧会给UE足够的UL grant去发送UL data,整个过程都会比较顺利。UE收到UL grant后&a…...

真我air笔记本电脑怎么重装Win10系统?

真我air笔记本电脑怎么重装Win10系统?最近真我air笔记本电脑挺多用户购买的,因为这款电脑性价比比较高,适合学生和一些办公人员来使用。但是系统预制了Win11系统,有用户想要将系统重装到Win10来使用。那么如何去进行系统的重装呢&…...

【闲聊杂谈】深入剖析SpringCloud Alibaba之Nacos源码

Nacos核心功能点 服务注册 Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中; 服…...

MySQL删除或清空表内数据的方法

MySQL删除或清空表内数据的方法 一、使用MySQL清空表数据命令:truncate SQL语法为: truncate table 表名注意: truncate该命令会直接将数据表内数据清空;truncate该命令删除数据后会重置Identity(标识列、自增字段…...

Android 权限(二): 动态权限讲解

1. 前言 继上一篇文章说到Android权限汇总, 请移步笔者的文章Android 权限(一):权限大全_broadview_java的博客-CSDN博客_android 仅使用中允许权限 先要理清楚权限分类和定义,本篇文章继续说一下动态权限的申请和框架层的实现流程, 以及如何实现赋予系统应用默认的…...

【C++】2.类和对象(上)

1.面向过程和面向对象 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 2.类的引入…...

扬帆优配|3300点半日游!上证指数冲高回落;再迎重磅利好!

今天早盘,A股冲高回落,上证指数3300点得而复失,深证成指也于12000点无功而返。 盘面上,煤炭、钢铁、房地产、才智政务等板块涨幅居前,酿酒、酒店餐饮、日用化工、IT设备等板块跌幅居前。北上资金净流入7.77亿元。 房地…...

如何编写性能测试计划?一篇文章教你设计符合项目的性能测试计划

上篇文章,我们讲过性能测试计划,接下来我们就来讲讲如何设计符合项目的性能测试计划。到上篇为止,我们了解了性能测试计划中包含的内容,但是,这个颗粒度,我觉得作为一名测试经验不够丰富的性能工程师来说&a…...

第3章 Windows 下安装 Memcached教程

官网上并未提供 Memcached 的 Windows 平台install 包,咱们可以使用以下链接来download ,需要根据自己的去下载: 点击下载 在 1.4.5 版本以前 memcached 可以作为一个服务install ,而在 1.4.5 及之后的版本删除了该功能。因此咱…...

RXjava中的操作符

要使用Rxjava首先要导入两个包,其中rxandroid是rxjava在android中的扩展 implementation io.reactivex:rxandroid:1.2.1implementation io.reactivex:rxjava:1.2.0Rxjava中的操作符 创建型操作符 interval 创建一个按固定时间间隔发射整数序列的Observable&#xf…...

前端页面jquery规范写法

使用最新版本的 jQuery 最新版本的 jQuery 会改进性能和增加新功能,若不是为了兼容旧浏览器,建议使用最新版本的 jQuery。以下是三条常见的 jQuery 语句,版本越新,性能越好: $(.elem) $(.elem, context) context.find(.elem) 结果 1.6.2 版执行次数远超两个老版本。 jQ…...

【HEC-RAS水动力】HEC-RAS 1D基本原理(恒定流及非恒定流)

一、数据说明 HEC-RAS模型主要由工程文件 (.prj) 文 件 、 河道地形数据文件 ( .g01)、运行文件(p01)、非恒定流文件 ( .u01) 等部分组成。 1. 一般数据 在创建并保存project文件(*.prj)后,其他data文件均会自动以同样的名字保存,但采用不同的后缀来区分各类文件。 &qu…...

2.Gin内容介绍

目录 参考 主要内容 关于Web 创建项目 为什么要用框架 Gin框架介绍 Gin框架安装与使用 安装 第一个Gin示例: RESTful API Gin渲染 HTML渲染 自定义模板函数 静态文件处理 使用模板继承 补充文件路径处理 JSON渲染 XML渲染 YMAL渲染 protobuf渲染…...

python--matplotlib(3)

前言 Matplotlib画图工具的官网地址是 http://matplotlib.org/ Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制作的图形达到出版级的标准。 其他matplotlib文章 python--matpl…...

蓝桥杯单片机之通过实现同一个按键的短按与长按功能

实现按键的短按与长按的不同功能 问题分析 对于按键短按,通常是松开后实现其功能,而不会出现按下就进行后续的操作;而对于按键长按,则不太一样,按键长按可能分为两种情况,一是长按n秒后实现后续功能&…...

几种简单的排序算法(C语言)

目录 1 简介 2 冒泡排序 2.1 基本思路 2.2 代码实现 3 选择排序 3.1 基本思路 3.2 代码实现 4 插入排序 4.1 基本思路 4.2 代码实现 5 快速排序 5.1 基本思路 5.2 代码实现 6 归并排序 6.1 基本思路 6.2 代码实现 7 基数排序 7.1 基本思路 7.2 代码实现 8 …...

408第一季 - 数据结构 - 线性表

只能用C/C! 顺序表 闲聊 线性表的逻辑顺序和物理顺序相同 都是1234 顺序表的优点: 随机访问,随机访问的意思是访问的时间 和位置没有关系,访问下标1和100一样的,更深层就是直接计算 a100 * 数组大小,随便…...

Linux进程(中)

目录 进程等待 为什么有进程等待 什么是进程等待 怎么做到进程等待 wait waitpid 进程等待 为什么有进程等待 僵尸进程无法杀死,需要进程等待来消灭他,进而解决内存泄漏问题--必须解决的 我们要通过进程等待,获得子进程退出情况--知…...

跟我学c++中级篇——理解类型推导和C++不同版本的支持

一、类型推导 在前面反复分析过类型推导(包括前面提到的类模板参数推导CTAD),类型推导其实就是满足C语言这种强类型语言的要求即编译期必须确定对象的数据类型。换一句话说,理论上如果编译器中能够自动推导所有的相关数据类型&am…...

数仓面试提问:在资源(计算、存储、人力)受限的情况下,如何优先处理需求并保证核心交付?

在资源受限的情况下高效处理需求并保证核心交付,是每个团队管理者都会面临的挑战。这种既要“少花钱多办事”又要确保关键任务不延误的压力,面对这种情况,我们需要一套系统化的方法来实现需求评估、优先级排序和有效沟通。以下是经过实践验证的策略和方法: 🛠️ 一、 保证…...

在 Kali 上打造渗透测试专用的 VSCode 环境

Kali Linux 是渗透测试领域的首选操作系统,搭配一款高效的代码编辑器可以显著提升工作效率。Visual Studio Code(VSCode)以其轻量、强大的扩展性和跨平台支持,成为许多安全研究者的选择。本文将详细介绍如何在 Kali Linux 上安装 …...

优化电脑的磁盘和驱动器提高电脑性能和延长硬盘寿命?

磁盘优化 磁盘清理: 使用系统自带的磁盘清理工具(如Windows的“磁盘清理”)删除不必要的文件。清空回收站。删除临时文件和缓存。 磁盘碎片整理(针对机械硬盘): 定期进行磁盘碎片整理,以提高文…...

分布式锁-Redisson实现

目录 本地锁的局限性 Redisson解决分布式锁问题 在分布式环境下,分布式锁可以保证在多个节点上的并发操作时数据的一致性和互斥性。分布式锁有多种实现方案,最常用的两种方案是:zookeeper和redis,本文介绍redis实现分布式锁方案…...

CMake 为 Debug 版本的库或可执行文件添加 d 后缀

在使用 CMake 构建项目时,我们经常需要区分 Debug 和 Release 构建版本。一个常见的做法是为 Debug 版本的库或可执行文件添加后缀(如 d),例如 libmylibd.so 或 myappd.exe。 本文将介绍几种在 CMake 中实现为 Debug 版本自动添加 d 后缀的方法。 方法一:使用 CMAKE_DEBU…...