论文解读 | [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
成对边界点的两种表示方式:
。通过这种方式,成对点的坐标被用作回归目标,如图7所示。
、
和
。
为成对边界点的中心坐标,
是到它们的距离,
为方向(角度)。
方法2中,角度在某些特殊情况下并不稳定,这就使得网络很难很好的学习角度目标。所以,该方法使用点 的坐标作为回归目标。
4 损失函数
Text-RPN 与 Faster R-CNN 中的 RPN 相似,因此 Text-RPN 的训练损失也以与之相似的方式计算。本文关注细化网络的损失:文本/非文本损失、边界框回归损失、边界点回归损失和停止/继续标签分类损失的总和。 、
和
是控制这些项之间权衡的平衡参数,被设置为1。

文本/非文本损失: t 是类别标签的指示符。文本: t=1; 非文本: t=0。p = () 是 softmax 之后计算的文本和背景类的概率。
边界框回归损失:v = () 是包含中心点坐标、宽度和高度的真实边界框回归目标的元组,
= (
) 是每个文本提案的预测元组。本文使用 Faster R-CNN 中给出的 v 和
的参数化,其中 v 和
指定了相对于对象建议的比例不变平移和对数空间高度/宽度偏移。
边界点回归损失: 真实边界点坐标的元组;
文本标签的预测点的元组。为了使所学习的点适用于不同尺度的文本,还应该处理学习目标以使它们尺度不变。参数
处理如下:

其中, 和
表示边界点的坐标,
和
表示相应文本提案的中心点坐标,
和
表示该提案的宽度和高度。
停止/继续标签分类损失:设 表示
或者
,
定义为平滑
损耗,如 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…...
前端页面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…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
