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的更多相关文章

  1. 论文阅读笔记三:R2CNN:Rotational Region CNN for Orientation Robust Scene Text Detection(CVPR2017)

    进行文本的检测的学习,开始使用的是ctpn网络,由于ctpn只能检测水平的文字,而对场景图片中倾斜的文本无法进行很好的检测,故将网络换为RRCNN(全称如题).小白一枚,这里就将RRCNN的论文拿来拜 ...

  2. Rotation Proposals

    Rotation Proposals 论文Arbitrary-Oriented Scene Text Detection via Rotation Proposals 这篇论文提出了一个基于Faste ...

  3. R2CNN论文思路记录

    Rotational region cnn 我们的目标是检测任意方向的场景文本,与RRPN类似,我们的网络也基于FasterR-CNN ,但我们采用不同的策略,而不是产生倾斜角度建议. 我们认为RPN ...

  4. R2CNN模型——用于文本目标检测的模型

    引言 R2CNN全称Rotational Region CNN,是一个针对斜框文本检测的CNN模型,原型是Faster R-CNN,paper中的模型主要针对文本检测,调整后也可用于航拍图像的检测中去 ...

  5. 大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015

    Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...

  6. 2017-2018_OCR_papers汇总

    2017-2018_OCR_papers 1. 简单背景 基于深度的OCR方法的发展历程 近年来OCR发展热点与趋势 检测方法按照主题进行分类 2. ECCV + CVPR + ICCV +AAAI ...

  7. Coursera, Deep Learning 4, Convolutional Neural Networks, week3, Object detection

    学习目标 Understand the challenges of Object Localization, Object Detection and Landmark Finding Underst ...

  8. 【目标检测】Faster RCNN算法详解

    Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...

  9. 目标检测-Faster R-CNN

    [目标检测]Faster RCNN算法详解 Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with r ...

随机推荐

  1. toString 方法在数组中的使用

    对于一个一维数组,他在转换成字符串的时候应该调用Arrays.toString(); 对于一个多维数组,他在转换成字符串的时候应该调用Arrays.deepToString(); 实例: packag ...

  2. Python网络编程(2)-粘包现象及socketserver模块实现TCP并发

    1. 基于Tcp的远程调用命令实现 很多人应该都使用过Xshell工具,这是一个远程连接工具,通过上面的知识,就可以模拟出Xshell远程连接服务器并调用命令的功能. Tcp服务端代码如下: impo ...

  3. Yii的URL助手

    Url 帮助类 获得通用 URL 记住 URLs 检查相对 URLs Url 帮助类提供一系列的静态方法来帮助管理 URL. 获得通用 URL 有两种获取通用 URLS 的方法 :当前请求的 home ...

  4. 避免Toast重复弹出

    Toast.matkText才会创建一个新的实例 private Toast toast = null; private void checkToastResult() { if (toast != ...

  5. mysql的常用引擎

    在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyIASM. 首先: 1.简单介绍这两种引擎,以及该如何去选择.2.这两种引擎所使用的数据结构是什么. 1. a.Innodb引擎,Inn ...

  6. Http请求小结

    1.Http请求:get方式 public void httpGet(String url,Map<String,Object> map) { try { String joint = p ...

  7. APICloud常用模块

    常用模块 基础 fs db 支付 wxPay aliPay unionPay 消息 ajpush rongCloud2

  8. 腾讯云+校园扶持计划是bug还是福利

    前言   上午突然收到好友的微信消息.打开一看是关于关腾讯云"云+校园扶持计划".仔细看下了意思就是用户可以花360大洋购买腾讯云服务器配置为1核2G,1M带宽的服务器3年.(腾讯 ...

  9. 编译、裁剪、安装、删除 Ubuntu内核和模块管理

    一.下载最新内核文件 地址:http://www.kernel.org,一般下载Full Source版本. 下载完毕后,放到任意文件夹中,使用命令: tar jxvf linux-x.x.x.tar ...

  10. NLP+词法系列(一)︱中文分词技术小结、几大分词引擎的介绍与比较

    笔者想说:觉得英文与中文分词有很大的区别,毕竟中文的表达方式跟英语有很大区别,而且语言组合形式丰富,如果把国外的内容强行搬过来用,不一样是最好的.所以这边看到有几家大牛都在中文分词以及NLP上越走越远 ...