pads 文本不能修改_斜框检测经典网络(文本)- R2CNN

7c4c95e65e63a855baa1a095b233bf5a.png
论文题目:R2CNN:Rotational Region CNN for Orientation Robust Scene Text Detection
论文来源:2017CVPR
论文地址:https://arxiv.org/abs/1706.09579
论文代码:https://github.com/DetectionTeamUCAS/R2CNN_Faster-RCNN_Tensorflow

PS:总结在最后。


文章出发点:

作者提出了一个叫做Rotational Region CNN(R2CNN)的方法,该方法可用于自然场景中任意方向的文本检测。


贡献:

  1. 构建了一个新颖的任意方向场景文本检测的方法,该方法基于Faster R-CNN搭建的。RPN用于提取文本区域,修改后的Fast R-CNN用于文本区域分类、区域修正以及倾斜box的预测。
  2. 任意方向的文本检测问题是一个多任务问题。该方法的核心是对每个由RPN生成的候选框预测文本分数、轴对齐的box以及倾斜的最小box区域
  3. 为了充分利用文字特征,作者对每个RPN的候选区域都做了几个感兴趣池化操作,池化后的特征连结起来用于进一步的检测。
  4. 本文修改的Faster R-CNN添加了一个更小的anchor用于检测小的场景文本,最后用斜的NMS去后处理检测候选结果。

方法:

在本文中,作者考虑到角度并不能很好地表达特殊的点,因而没有采用角度信息。每个矩形框的标注包含5个值

,其中
是左上角点的坐标,
是顺时针方向的第二个点,
表示最小倾斜矩阵的高度。R2CNN的网络结构如下:

f7077a2e195b26543f85655a8f0071ac.png

Rotational Region CNN

本文采用了两阶段目标检测方法,由区域提取和区域分类两部分组成。

RPN for proposing axis-aligned boxes

使用RPN生成轴对齐的bounding box来包围任意方向的文本。在轴对齐的box中文本会属于下列情形之一:1.水平方向的文本;2.垂直方向的文本;3.轴对齐对角线方向的文本。RPN能够生成面向任意文本的轴对齐框形式的文本区域。

为了解决小的场景文本的问题,在RPN中使用了更小尺寸的anchor,anchor的尺度为

ROIPoolings of different pooled sizes

由于一些文本的宽度大于他们的高度,本文尝试使用三种不同尺度的ROIPooling去捕捉更多的文本特征。池化后的特征进一步用于检测。具体来说,本文添加了两个池大小:11×3和3×11。

可以捕捉更多的水平特征,帮助检测宽度远远大于高度的水平文本。
可以捕获更多的垂直特征,对于高度远大于宽度的垂直文本检测很有用。

Regression for text/non-text scores, axis-aligned boxes, and inclined minimum area boxes

在本文的方法中,在RPN之后,本文将RPN生成的候选区域分类为文本或非文本,改进了包含任意方向文本的轴对齐的bounding box,预测了倾斜的bounding box。每个倾斜的box都与一个轴对齐的box相关联。尽管本文的检测目标是倾斜的边界框,但本文认为添加其他约束(轴对齐的边界框)可以提高性能。

Inclined non-maximum suppression

倾斜的交并比。对于紧密相邻的倾斜文本,正常的NMS可能会丢失一些文本,因为轴对齐框之间的IoU可能很高。但倾斜的NMS不会丢失文本,因为倾斜的IoU值低。

3a20781519fcb6e29046a9e4f93e212e.png

Training objective(Multi-task loss)

RPN的训练loss与Faster R-CNN的一样。

在每个候选区域的loss函数是文本/非文本分类loss和box回归loss的和。box的回归loss由两部分组成:轴对齐box的loss和倾斜的最小区域box的loss。在每个候选区域上,多任务loss函数定义如下:

70c36aa845f62a78e2d867e05f81da2a.png

527e3230156ba9234020a53b289895c8.png

实验:

Training Data

本文的训练数据集包含1000个来自ICDAR 2015的附加场景文本图片和2000个搜集到的文本图片。收集到的场景文本图片是不同于ICDAR 2015中的模糊文本的。为了支持任意面向场景的文本检测,本文通过旋转图像来增强ICDAR 2015训练数据集和我们自己的数据。在扩充之后,训练数据由39000张图片组成。

ICDAR 2015中的文本采用四个顺时针方向的四边形点坐标在单词水平上进行标记。通过计算包围四边形的最小面积矩形,从四边形中生成ground truth倾斜包围box(矩形数据)。然后计算最小轴对齐边框,该边框将包围文本作为ground truth轴对齐框。本文同样对采集的图像进行了类似的处理来生成ground truth数据。

Performance

本文在ICDAR 2015和ICDAR 2013两个数据集上评估了模型的性能。评估指标遵循ICDAR Robust Reading Competition的标准,为精度、召回率和F-measure。检测结果提交至竞赛网站,并在网上获得评比结果。

ICDAR 2015

该方法的召回率为79.68%,精密度为85.62%,F-measure为82.54%。

在实验中,作者主要分析了轴对齐box回归(

)、倾斜box回归(
)、anchor尺度、NMS以及不同尺度的ROIPoolings的影响。

首先在ICDAR 2015上对所有模型进行单尺度测试;然后对R2CNN-3、R2CNN-4以及R2CNN-5进行了多尺度测试。实验结果如下:

3d705d5706ef4da0bbe825fbd1100b50.png

与其他方法的对比:

78170e9e18fe28a2900b295e3c9335dd.png

ICDAR 2013

ICDAR 2013测试数据集包含233张聚焦的场景文本图像。图片中的文字是水平的。由于我们可以估计轴向框和倾斜框,本文使用轴向框作为ICDAR 2013的输出。和其他方法的比较结果如下:

2a960c50d15f6e8cbbac58784ce21aa2.png

这证明本文设计的方法对于水平文本检测也有一定的优势。


总结:

  • 本文的方法是在Faster R-CNN的基础上进行改进的,目的是完成倾斜文本的检测。所设计的方法对Faster R-CNN的主体结构并没有太大的修改,该方法也可以换用其他的baseline,比如SSD和YOLO,对其他的检测框架有较强的适用性。
  • 在其他斜框检测方法中,一般都是引入了角度信息,而作者引入的是相邻两点坐标以及矩阵的高,这样可以在一定程度上解决如-90°与90°混淆的问题,有利于文本识别的使用。
  • 从实验结果上来看,R2CNN对倾斜和水平的文本检测都表现出了不错的优势,在对倾斜文本框进行检测时,数据集是对水平文本进行人为旋转构建的,与实际倾斜场景可能有些区别。

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

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

相关文章

【题解】炮兵阵地

【题解】炮兵阵地 luogu 题解 暴力状压记录上一行和上上行信息,暴力判断是否存在不合法的阵地,暴力滚动数组,暴力统计,暴力转移即可。 看了yyb代码,我感觉我不曾写过代码... 加入说不要那么暴力也可以,可以…

matlab reshape矩阵维度变换

B reshape(A,m,n) 将矩阵A的元素返回到一个mn的矩阵B。如果A中没有mn个元素则返回一个错误。 B reshape(A,m,n,p,...) or B reshape(A,[m n p ...]) 把A中元素进行重塑成mnp…的矩阵,特别地,指定的维数mnp…的积必须与prod(size(A))相同。 …

使用Arquillian测试Spring Data + Spring Boot应用程序(第2部分)

在上一篇文章中 ,我写了关于如何使用Arquillian Cube和 Docker一起测试Spring Data应用程序的信息。 测试看起来像: RunWith(SpringRunner.class) SpringBootTest(classes PingPongController.class, webEnvironment RANDOM_PORT) ContextConfigurati…

OpenCV circle图像上画圆

OpenCV中circle与rectangle函数显示,只不过rectangle在图像中画矩形,circle在图像中画圆。 void circle(Mat img, Point center, int radius, Scalar color, int thickness1, int lineType8, int shift0) img为源图像 center为画圆的圆心坐标 radius…

如何得到长整数逆序后的整数

目录 一 如何得到长整数逆序后的整数注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 如何得到长整数逆序后的整数 最近在写代码遇到这样一个问题:如何得到得到一个长整型数逆序后的长整型数?比如输入…

python网页表格读取_是否可以读取网页html表格数据?

我目前正在考虑一些自动读取网页数据。因此,有没有可能从网页中读取以下类型的表格:excel应该有一个值name of condion,Operator and Expressions。在编辑>>> from urllib import urlopen>>> from bs4 import BeautifulSoup>>&g…

matlab exist()判断目录文件是否存在

if exist(abc.doc,file)0error(display(文件不存在));end判断当前目录中是否存在x文件夹,若不存在则创建if exist(x,dir)0mkdir(x);end

20190608笔试题のCSS-属性继承

以下的CSS属性哪些可以继承?(单选) A. font-sizeB. marginC. widthD. padding emmm,这题答案是A,看到这题我是能选对的,但又不由让我想到一件事情,在全部的CSS属性里有哪些是不可被继承…

群晖套件来源_群晖安装IPKG包管理器及第三方社区安装包步骤

运行环境为群晖DS1517,系统版本为DSM6.2.3。群晖虽然是基于Linux开发的,但与Red Hat或者Ubuntu这样的公开发行版不同,群晖除了官方的图形化包管理器外,并没有提供类似yum或者apt-get等类似包管理器。为了通过命令行安装诸如nano 等…

tf.app.flags和tf.app.run的使用

tf.app.flags和tf.app.run的使用 tf.app.flags主要用于处理命令行参数的解析工作,其实可以理解为一个封装好了的argparse包(argparse是一种结构化的数据存储格式,类似于Json、XML)。 我们通过tf.app.flags来调用这个flags.py文件…

redis 持久化性能_高性能持久消息

redis 持久化性能总览 尽管有许多可用于Java的高性能消息传递系统,但大多数都避免引用基准,包括持久消息传递和消息的序列化/反序列化。 这样做有多种原因。 1)您并不总是需要或想要持久消息2)您希望使用自己的序列化选项。 避免使…

python标签使用教程_怎样用Python做标签云

怎样用Python做标签云标签云是比较直观的频率分布表现方式,很多网站和APP在年度盘点和总结时会使用。Python生成标签云有一个比较易用的库 pytagcloud。Python做标签云的具体方法如下:1、导入头文件from pytagcloud import create_tag_image, make_tagsf…

057-while循环

<?php$x1; //初始化变量while($x<5){ //执行while循环echo "$x<br />";$x;} ?> 转载于:https://www.cnblogs.com/tianpan2019/p/10995180.html

OpenCV显示中文汉字,未使用CvxText和FreeType库

OpenCV显示中文汉字&#xff0c;未使用CvxText和FreeType库 采用windows的GDI显示系统的TrueType字体&#xff0c;没有封装&#xff0c;就两个函数&#xff0c;分成了h和cpp文件&#xff0c;可以自己编辑文件名和函数名&#xff0c;亦可以直接将cpp的代码复制到你需要的程序中…

使用Arquillian测试Spring Data + Spring Boot应用程序(第1部分)

Spring Data的使命是为数据访问提供一个熟悉且一致的&#xff0c;基于Spring的编程模型&#xff0c;同时仍保留基础数据存储的特​​殊特征。 它提供了与一些后端技术的集成&#xff0c;例如JPA&#xff0c;Rest&#xff0c;MongoDB&#xff0c;Neo4J或Redis。 因此&#xff0…

生日祝福小程序_广告配音剪映零基础入门教程第二十六篇:如何给朋友制作生日祝福视频...

经常听到小伙伴问到生日祝福视频怎么做&#xff0c;当然我想既然要为他人做生日祝福视频&#xff0c;那么这个人必定是自己身边比较重要的人&#xff0c;而生日又是每个人都是非常重要的&#xff0c;在这种充满意义的时刻&#xff0c;我们想给自己极其重要的人送上一份祝福&…

putty WinScp 免密登录远程 Linux

该方法的原理是预先生成一对公钥和私钥&#xff0c;私钥以文件的形式保存在本地&#xff0c;公钥保存在远程机器上。这样每次登录只需指定私钥文件&#xff0c;远程机器通过比对公钥和私钥来验证登录的合法性。 Putty 免密登录 第一步 生成公钥/私钥对 使用 putty 安装目录中的…

tensorflow log 日志级别设置

log 日志级别设置 import os os.environ["TF_CPP_MIN_LOG_LEVEL"]1 # 这是默认的显示等级&#xff0c;显示所有信息 os.environ["TF_CPP_MIN_LOG_LEVEL"]2 # 只显示 warning 和 Error os.environ["TF_CPP_MIN_LOG_LEVEL"]3 # 只显示 Error

springcloud微服务实战--笔记--1、基础知识

微服务的问题&#xff1a; 分布式事务和数据一致性。 由于分布式事务本身第实现难度就非常大&#xff0c;所以在微服务架构中&#xff0c;我们更强调在各服务之间进行无事务第调用&#xff0c;而对于数据一致性&#xff0c;只要求数据在最后第处理状态是一致第即可&#xff1b;…

OpenCV imwrite

imwrite(const string& filename, InputArray img, const vector<int>& paramsvector<int>() ) 1、filename:需要写入的文件名&#xff0c;会自己创建&#xff08;像imwrite("1.jpeg",src);这样&#xff09; 2、img:要保存的图像 3、pa…