R2CNN
论文Rotational Region CNN for Orientation Robust Scene Text Detection与RRPN(Arbitrary-Oriented Scene Text Detection via Rotation Proposals)均提出了检测出任意角度的文字目标框的方法.两篇论文是同一年出的(2017,R2CNN在RRPN之后3个月,并且在论文中做了结果对比),两个方法的主要区别在于得到候选框角度的网络位置,在RRPN中是在RPN中产生带角度的候选框\((cx,cy,w,h,\theta)\),在后续的RCNN中对候选框分类和回归候选框位置.R2CNN作者认为RPN产生的矩形候选区域足以供RCNN得到更进一步的类别信息和角度信息.因此将角度信息的获取放在了RCNN中.但是作者指出直接使用角度表示并不稳定,如对于角度分别为90度和-90度的box,在不严格区分头尾的情况下可看作相同的角度,但是数值计算上却相差很大.论文采用的box表示法是(x1,y1,x2,y2,h),即宽边上的两个点坐标和高度.在RCNN中在原来两条分支,分类和边框回归分支的基础上再加一条分支,用来输出任意角度的rbox(添分支的方式与mask r-cnn类似).使用不同的权重控制每个分支对整体loss的比例:
\[
\mathcal L(p,t,v,v^*,u,u^*)=L_{cls}+\lambda_1t\sum_{i\in\{x,y,w,h\}}L_{reg}(v_i,v^*_i) \\
+\lambda_2t\sum_{i\in\{x1,y1,x2,y2,h\}}L_{reg}(u_i,u^*_i)
\]
实验结果表明两个box回归分支同时使用比单独使用任意角度的box回归分支效果好.
由于文字通常是长条形,在ROIPooling中仅使用7x7正方形网格提取特征可能不太合适,作者采用了三种尺寸(7x7,11x3,3x11)得到三个特征之后拼接起来.F score有大约1%的提升.RRPN需要按照倾斜角度进行ROIPooling,而R2CNN不需要,因此计算较为方便.R2CNN在ICDAR2015的检测结果F score比RRPN高出5%.由于R2CNN是基于坐标轴方向的box得到任意角度的rbox,因此这种方法很容易迁移到SSD,YOLO等方法中.
TextBoxes++
这是白翔等人在2018年1月初公布的一篇关于文字检测的论文,是TextBoxes的升级版.
其借鉴SSD等网络的做法使文字检测能够end-2-end训练,并与R2CNN类似,在输出坐标对齐的矩形框时同时输出任意角度的目标框(R2CNN中也提到该方法可以用于SSD,YOLO这种方法上,TextBoxes++引用了R2CNN).
TextBoxes++除了输出水平的矩形还可输出更紧确的任意四边形 quadrilateral \((x^q_1,y^q_1,x^q_2,y^q_2,x^q_3,y^q_3,x^q_4,y^q_4)\)或者倾斜的矩形\((x^r_1,y^r_1,x^r_2,y^r_2,h^r)\).这种倾斜矩形表示法采用和R2CNN相同的表示法,不采用角度\(\theta\)表示的原因是数据集中\(\theta\)分布有bias,即不均衡,使得模型会与数据强相关(而R2CNN指出90度与-90度代表相同的结果时数值计算不稳定).这两种表示法的一个主要区别是任意四边形可以是不规则的,对不规则的艺术字等效果更好,将图片拉伸缩放后倾斜的矩形会变形,重设置为矩形则不够贴切.实验结果中表明任意四边形表示法比任意角度的矩形表示法高2.5%.
anchor(default box)的生成方式:
长宽比按照1,2,3,5,1/2,1/3,1/5设计,anchor均设置为水平的矩形,而不像RRPN那样设置多角度的矩形或者DMPNet(Y. Liu and L. Jin, “Deep matching prior network: Toward tighter multi-oriented text detection,” in Proc. CVPR, 2017.)那种多角度的任意四边形.并考虑到文字图片通常在竖直方向上相对比较稠密,因此通过在竖直方向上对anchor增加偏移使得竖直方向上anchor box比较稠密,能够覆盖更多的文字区域.
考虑到文字的形状特点,在卷积层做的改变是采用矩形而不是方形的卷积核.用3x5代替3x3,这样能够减少多余区域带来的噪声.
测试时级联NMS
提高四边形NMS速度,具体做法是先对水平的矩形以较高的IOU(如0.5)去除多余的目标框,接着对任意的四边形或任意角的矩形以较低的IOU(如0.2)去除多余框.
与文字识别相结合提升检测结果
,CRNN也是一个端到端训练的网络,可以和它相结合提升检测的精度,其做法是将识别得到的score与检测的score相结合得到新score.由于检测分数\(s_d\)的阈值与识别\(s_r\)的阈值通常相差较大(0.6 vs 0.005),因此不能直接将两者相加,可以采用调和均值(harmonic mean):
\[
S={2\times e^{s_d+s_r}\over e^{s_d}+e^{s_r}} \tag{$m={2\over {1\over a}+{1\over b}}$}
\]
在ICDAR 2015 Incidental Text dataset上通过识别结果改进检测器可获得1.3%的提升.
数据增广
:改进了SSD的随机裁剪的增广方式.SSD增广随机裁剪时要求裁剪的目标与ground truth之间的Jaccard(IOU)超过阈值.这样裁剪出的图片的目标占比较大,这种情况在文字数据集中很少出现,因此需要避免这种情况,方法便是约束裁减后的目标占原ground truth的比例.
不足之处
:
- 有目标遮挡和较大的字符间隙
- 垂直的文字,由于此类数据较少
- 弯曲文字
对这些问题处理的比较好的方法有:linking segment和EAST.
Rotational Region CNN的更多相关文章
-
论文阅读笔记三:R2CNN:Rotational Region CNN for Orientation Robust Scene Text Detection(CVPR2017)
进行文本的检测的学习,开始使用的是ctpn网络,由于ctpn只能检测水平的文字,而对场景图片中倾斜的文本无法进行很好的检测,故将网络换为RRCNN(全称如题).小白一枚,这里就将RRCNN的论文拿来拜 ...
-
Rotation Proposals
Rotation Proposals 论文Arbitrary-Oriented Scene Text Detection via Rotation Proposals 这篇论文提出了一个基于Faste ...
-
R2CNN论文思路记录
Rotational region cnn 我们的目标是检测任意方向的场景文本,与RRPN类似,我们的网络也基于FasterR-CNN ,但我们采用不同的策略,而不是产生倾斜角度建议. 我们认为RPN ...
-
R2CNN模型——用于文本目标检测的模型
引言 R2CNN全称Rotational Region CNN,是一个针对斜框文本检测的CNN模型,原型是Faster R-CNN,paper中的模型主要针对文本检测,调整后也可用于航拍图像的检测中去 ...
-
大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015
Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...
-
2017-2018_OCR_papers汇总
2017-2018_OCR_papers 1. 简单背景 基于深度的OCR方法的发展历程 近年来OCR发展热点与趋势 检测方法按照主题进行分类 2. ECCV + CVPR + ICCV +AAAI ...
-
Coursera, Deep Learning 4, Convolutional Neural Networks, week3, Object detection
学习目标 Understand the challenges of Object Localization, Object Detection and Landmark Finding Underst ...
-
【目标检测】Faster RCNN算法详解
Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...
-
目标检测-Faster R-CNN
[目标检测]Faster RCNN算法详解 Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with r ...
随机推荐
-
Appfuse:添加自定义页面组件
我之前是做ASP.NET的,碰到被多个页面都使用的类似组件后,就想着采用ascx(用户自定义组件)来解决,那做Java我也想用这种方案. 我要做的效果如下: 实现方案:tag方式(自定义标签) 1. ...
-
【JAVA 小结】Java关于类与对象的代码
分别建立2个类class works 和 Person import java.io.*; public class works { public static void main(String[] ...
-
Entity Framework Code Migration 新建、更新数据库
在Package Manager Console中执行 A:新建数据库: 1.Add-Migration init[名称](为挂起的Model变化添加迁移脚本) 2.Update-Database(将 ...
-
Python网络编程03----Python3.*中socketserver
socketserver(在Python2.*中的是SocketServer模块)是标准库中一个高级别的模块.用于简化网络客户与服务器的实现(在前面使用socket的过程中,我们先设置了socket的 ...
-
odoo 的 拉式 和 推式 库链
推式链的数据定义在 stock.location.path 表,视图定义在 “路线” 界面的 “push rules” 具体可参考 入库设置为 Receipt in 2 steps . push ...
-
折腾iPhone的生活——AirDrop的使用
AirDrop是iOS一个非常大的亮点,其实说是这么说了,但是事实上AirDrop并没有想象中那么好用. AirDrop就是一个用于无线传输文件的方式,实质性跟蓝牙没有太大区别,但是比蓝牙好用,有点像 ...
-
supersocket 遇到的Failed to initialize 和 log4net用法
使用Bootstrap来通过配置启动SuperSocket的时候总是显示Failed to initialize! , 官网配置中 <superSocket> <servers&g ...
-
一个CLR20r3 错误解决。
好久没写过winform程序了,用devexpress写了个小工具,连一个本地的数据库,感觉不会出什么异常,连接时就没加捕获,调通之后就没管,因为特殊需求,需要把程序放到腾讯云上运行,结果一运行就报错 ...
-
&;lt;climits&;gt;头文件定义的符号常量
<climits>头文件定义的符号常量 CHAR_MIN char的最小值 SCHAR_MAX signed char 最大值 SCHAR_MIN signed char 最小值 ...
-
8、判断三角形ABC中是否有点D
思路: 首先连接AD,BD,CD,SABC为三角形的面积,SABD为三角形ABD的面积,SACD....,SBCD....... 因此,若D在三角形则SABC = SABD + SACD + SBCD ...