Weilin Huang——【arXiv2016】Accurate Text Localization in Natural Image with Cascaded Convolutional Text Network


目录

  • 作者和相关链接
  • 背景介绍
  • 方法概括
  • 方法细节
  • 实验结果
  • 总结与收获点
  • 参考文献

作者和相关链接

背景介绍

  • 自底向上方法(bottom up)的一般流程

    • Step 1: 用滑动窗口或者MSER/SWT等方法提取候选区域
    • Step 2: 字符级分类器(SVM,CNN等)
    • Step 3: 后处理,如文本线形成(字符聚类、字符分组),单词切割等
  • 自底向上方法(bottom up)的缺点

    • Step1一般使用的是低级特征(像素级),不够鲁棒,对于光强不均匀,形变较大等的目标都无法提取出候选区域
    • Step1产生的候选区域往往很多,对后续字符级分类器的压力很大,且候选区域越多也会造成整体效率不高
    • 后处理往往很复杂,需要很多人工的规则,参数,而且不通,尤其当库的变化比较大时,参数很可能需要修改
    • 多步的pipeline容易造成误差积累,且整体性能被每一步所限制
  • 从传统方法到引入CNN方法后的改进

    • 字符级CNN的缺点:unreliable, inefficient,complicated,not robust
    • 改进思路一:从字符级CNN到字符串级CNN(文本线级CNN、文本块级CNN)
      • 利用文本区域的上下文信息,更加鲁棒;
      • 不再需要复杂的后处理,更加可靠通用;
    • 改进思路二:修改CNN结构,从经典的Conv+pool+FC修改成FCN(全卷积)
      • 计算共享,更加高效
      • 去掉FC,可以处理各种尺度的输入
      • CNN不再只是做分类,而且做回归,对位置也做regression

方法概括

  • 基本流程

Figure 1. Two-step coarse-to-fine text localization results by the proposed Cascaded Convolutional Text Network (CCTN). A coarse text network detects text regions (which may include multiple or single text  lines) from an image, while a fine text network further refines the detected regions by accurately localizing each individual text line. The ORANGE bounding box indicates a detected region by the coarse text  network. We have two options for each text region: (i) directly output the bounding box as a final detection (solid ORANGE); (ii) refine the detected region by the fine text network (dashed ORANGE), and generate an accurate location for each text line (RED solid central line). The refined regions may include multiple text lines or an ambiguous text line (e.g., very small-scale text).

    • 本文的方法主要分两大步,先用一个coarse-CNN检测粗略的文字区域(文字块),如图Figure1中的黄色虚线部分;再用fine-CNN提取文字区域中的文本线,如图Figuire1的红线。图中的黄色实现表示有些coase CNN得到的文字区域可以直接作为text line输出。
  • 关键点——对VGG16的修改成coarse/fine CNN

    • 卷积核从3*3变成3种:3*7,3*3,7*3(多形状),并且多个卷积还是并行的,而不是连续的!
    • 引入了2个1*1的fully convolution 代替了原来的fully connected层:输入图像大小可以任意,因为都是卷积,没有全连接
    • 多个层进行融合(多尺度):pool5进行了2*2池化,所以最后要进行up sample之后才能和pool4进行融合

方法细节

  • 本文方法分两步,coarse CNN用来检测候选文本区域,再fine CNN用来从候选的文本区域中找出准确的文本线位置。

  • coarse CNN和fine CNN用的是同样的网络结构,输入图像大小是500*500,二者不同的地方在于:

    • 对于coarse CNN,最后的loss层只用到了text region的监督信息,也就是说它的groundTruth和最终得到的heat map如左图。而fine CNN最后的loss和输出是有两个的,一个是和coarse一样的text region supervision,另一个是text line的supervision。如右图所示。text line的gt是整个text line的中心线处为1,逐渐向上下扩展,用高斯分布逐渐递减,半径为整个bounding box的高度的一半。因此,text line的gt实际上是包含了文本线的位置和文本块的高度信息。

coarse CNN(上图)和fine CNN(下图)用到的GT

coarse CNN的输出(b)和fine CNN的输出(e和f)

    • coarse CNN的输入是整张图直接resize成500的,而fine CNN的输入是coase CNN得到的候选区域,但是候选区域需要进行在边界padding 50,并把patch块resize成500*500的。

Figure 3. (b) An resized 500×500 input image, and the actual receptive filed of new Pool-5, which is computed as the response area in the input image by propagating the error of a single
neuron in the new Pool-5.

  • 对于coarse CNN得到的text region,如何判断是否要refine(跑fine CNN)还是直接输出为单个文本线?

    • 对coarse CNN得到的heatmap进行二值化(阈值0.3)
    • 计算图中的area ratio和borderline ratio,如果前者大于0.7,且后者大于5,则直接输出为单个文本线
    • 否则要进行refine。先将图像按1.2倍crop下来,并按边界padding 50(补0),整个patch块resize成500*500,输入到fine CNN中去进行refine得到更细致的文本线进行输出
  • 对于fine CNN得到的两张heatmap,如何结合得到精确的text line(bounding box)输出?
    • 每个heatmap都用MAR(minimum area rectangle)得到rectangle(text line的高度要乘2)
    • 对两张heatmap得到的rectangle进行组合(怎么组合作者没提)得到精确的的文本线输出

实验结果

  • 运行时间:1.3s
  • coarse CNN和fine CNN对比

  • ICDAR2011,ICDAR2013检测结果

  • 多语言和多方向检测结果

  • 结果示例

总结与收获点

  • 本文的亮点有两点,第一是解决问题的思路从bottom up的pipeline改成了现在流行的top down,先检测候选的文本块区域,再在粗略的文本区域中找出更精细的文本线。这种方法鲁棒性,可靠性,效率,方法的复杂度都更好。第二个亮点在于把传统的CNN改造成可以用来检测文字区域,改进的点在修改卷积核长宽比,引入全卷积代替全连接,多层融合这三点。

论文阅读(Weilin Huang——【arXiv2016】Accurate Text Localization in Natural Image with Cascaded Convolutional Text Network)的更多相关文章

  1. ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network

    最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...

  2. ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network SOC

    最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...

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

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

  4. ORB-SLAM3论文阅读:ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

    简介 ORB-SLAM3是第一个能在单目.双目.RGBD鱼眼相机和针孔相机模型下运行视觉.视觉-惯导以及多地图SLAM的系统.其贡献主要包括两方面:提出了完全依赖于最大后验估计的紧耦合视觉-惯导SLA ...

  5. 论文阅读笔记三十五:R-FCN:Object Detection via Region-based Fully Convolutional Networks(CVPR2016)

    论文源址:https://arxiv.org/abs/1605.06409 开源代码:https://github.com/PureDiors/pytorch_RFCN 摘要 提出了基于区域的全卷积网 ...

  6. 论文阅读笔记二十三:Learning to Segment Instances in Videos with Spatial Propagation Network(CVPR2017)

    论文源址:https://arxiv.org/abs/1709.04609 摘要 该文提出了基于深度学习的实例分割框架,主要分为三步,(1)训练一个基于ResNet-101的通用模型,用于分割图像中的 ...

  7. 论文阅读(Weilin Huang——【AAAI2016】Reading Scene Text in Deep Convolutional Sequences)

    Weilin Huang--[AAAI2016]Reading Scene Text in Deep Convolutional Sequences 目录 作者和相关链接 方法概括 创新点和贡献 方法 ...

  8. 论文阅读(Weilin Huang——【TIP2016】Text-Attentional Convolutional Neural Network for Scene Text Detection)

    Weilin Huang--[TIP2015]Text-Attentional Convolutional Neural Network for Scene Text Detection) 目录 作者 ...

  9. 论文阅读(Weilin Huang——【ECCV2016】Detecting Text in Natural Image with Connectionist Text Proposal Network)

    Weilin Huang——[ECCV2016]Detecting Text in Natural Image with Connectionist Text Proposal Network 目录 ...

随机推荐

  1. coolSQL安装与使用

    由于笔者最近支援其他项目,所使用的数据库为informix 所以安装一个coolSQL客户端方便些,当然命令行方式也可以,但是感觉不太友好,下面把安装与简单使用过程分享给大家. 一.下载coolSQL ...

  2. 在Node.js中使用ffi调用dll

    类似的文章还是比较多的,但或多或少有一些问题没有解决,在此我将其整合并分享给大家: 测试环境: Node.js 9.9.0 VisualStudio 2015 "ffi": &qu ...

  3. opencv coudn't find video stream from "XXX(文件名)"

    opencv coudn't find video stream from "XXX(文件名)" 我用的是clion 解决方法: 把路径设为完整路径,如"C:/XXX&q ...

  4. CSS3_过渡_2D 变换_瓶体旋转_动态时钟

    1. 过渡 transition 允许 CSS 的属性值在一定时间内平滑的过渡, 在鼠标点击,鼠标滑过或对属性改变中触发,并圆滑的改变 CSS 的属性值 简写属性: #box { width: 300 ...

  5. (57)Wangdao.com第九天_JavaScript 对象的简介及分类

    对象 引用数据类型. 对象是一种复合的数据类型,可以存储多个不同类型的变量. 以后我们看到的,只要不是String.Number.Boolean.Null.Undefined,那么就一定是 Objec ...

  6. Reward List 赏金列表

    博主昨晚正在刷题,突然手机语音大声提示“微信支付收款到账”,把博主吓了一跳,打开一看,居然收到了第一笔打赏,还是博主最喜欢的数字,老开心了-感谢网友对于博主工作的认可与支持,多谢多谢!不管大家是物质打 ...

  7. Nestjs 微服务

    文档 工作示例 安装: $ npm i --save @nestjs/microservices main.ts import { NestFactory } from '@nestjs/core'; ...

  8. [Codeforces Round #433][Codeforces 853C/854E. Boredom]

    题目链接:853C - Boredom/854E - Boredom 题目大意:在\(n\times n\)的方格中,每一行,每一列都恰有一个被标记的方格,称一个矩形为漂亮的当且仅当这个矩形有两个角是 ...

  9. CUDA相关问题

    之前装了GPU驱动后,再装了CUDA 9.0,再装了cuDNN,并且对样例mnistCUDNN进行执行,显示“Test passed!"通过.但是倒忘了有没有测试CUDA是否安装成功.驱动也 ...

  10. NOIP 2017 解题报告

    ---恢复内容开始--- NOIP 2017 的题真的很难啊,怪不得当年我这个萌新爆零了(当然现在也是萌新)越学越觉得自己什么都不会. 想要成为强者要把这些好题都弄懂弄透 至少现在6道题我都比较陌生 ...