Connectionist Text Proposal Network

简介

CTPN是通过VGG16后在特征图上采用3*3窗口进行滑窗,采用与RPN类似的anchor机制,固定width而只预测anchor的y坐标和高度,达到比较精准的text proposal效果。同时,文章的亮点在于引入了RNN,使用BLSTM使得预测更加精准。CTPN在自然场景下文本提取的效果很不错,不同于传统的bottom-up方法,传统方法通过检测单个字符然后再去连接文本线,其准确性主要依赖于单个字符的识别,而且错误会累积,其使用的仅仅是low-level的feature;而本文采用的方法提取的是深度的特征,采用anchor机制做的精准预测,然后用循环神经网络对anchor识别的区域进行连接,精度要高很多。

结构:

Detecting Text in Fine-scale Proposals

detection过程很简单,直接在vgg-16后面用3*3的滑窗去滑feature map的最后一个卷积层,固定感受野大小为228pixels,total stride为16pixels,这样每个anchor对应在原图中的间隔就是16pixels。total stride和感受野的大小都是由网络结构决定的,也就是说,在网络结构确定的情况下,我们可以人为地去设置感受野的大小和total stride,由于total stride = s *2 *2 *2 *2,由于设置的total stride =16 ,所以可以确定3*3的stride是1,也就是后面每个anchor的水平距离在原图中对应的是16pixels。

之后,作者修改了原始的rpn,去预测长度固定为16pixels的区域,与rpn不同的是,本文只预测区域的y轴坐标和高度,此外,还输出anchor是或不是文字区域的二分类结果。由于上面确定了每次anchor移动的距离恰好是total stride,所以这里对应上了。然后对每个特征点设计了10种vertical anchor,这些anchor的宽度都为16pixels,高度从11 到 273pixels(每次除以0.7),让这10个anchor独立地预测中心点坐标(vc)和高度(vh),定义如下:

对每个预测而言,水平坐标和k个anchor的位置是固定的,这些都是可以预先在图像进来之后计算出来的,而分类器输出的结果是text/non-text的得分和预测的k个anchor的y轴坐标(v)。而识别出来的text proposals 是从那些text/non-text的得分大于0.7,然后再经过MNS得到的。这样只预测纵坐标的做法比rpn的准确率提升了很多,因为其提供了更多的监督信息。

Recurrent Connectionist Text Proposals

本文的亮点就在于使用了循环神经网络来连接text proposals,为了提升定位的准确率,作者把文本线看成是一连串的text proposals,然后去单独预测,但是这样做发现很容易错将非文字区域识别为文字区域。由于RNN对处理上下文很好,而文字有着很强的上下文关联,所以作者顺理成章的引入RNN,将conv5层的feature的每个window扫描后的结果作为RNN的输入,然后循环更新这个隐状态定义如下:

作者使用的是双向LSTM作为RNN的结构,因此每个window都具有他之前的window的上下文信息,每个window的卷积特征作为256D的 双向lstm的输入,然后将每个隐状态全连接到输出层,预测第t个proposal。

使用RNN后,明显减少了错误的识别,将很多之前没识别到的地方也识别到了,说明上下文信息对预测确实很有帮助。

Side-refinement

由于预测的text proposal 可能与ground truth在最左和最右两边不一定重叠度高,所以可能被弃掉,因此提出了边框修正,来修正这一点,如果不修正,那么预测到的proposal的文字区域可能在两边有缺失。

结果如下

Outputs And Loss Functions

模型一共有三个输出,分别是text/non-text scores、竖直坐标v(包括anchor在原图中对应的竖直坐标和高度)以及修正系数o。对于每个特征点k个anchor,分别输出2k,2k,k个参数,而文章也是采用了多任务学习来进行优化模型参数,模型的loss functions定义如下:

分类误差用的是softmax计算的,回归误差用的是smooth L1函数计算的,两个λ是为了调整loss的权重。

论文原文

[论文理解] Connectionist Text Proposal Network的更多相关文章

  1. 论文阅读(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 目录 ...

  2. 论文阅读笔记四:CTPN: Detecting Text in Natural Image with Connectionist Text Proposal Network(ECCV2016)

    前面曾提到过CTPN,这里就学习一下,首先还是老套路,从论文学起吧.这里给出英文原文论文网址供大家阅读:https://arxiv.org/abs/1609.03605. CTPN,以前一直认为缩写一 ...

  3. 深度学习论文翻译解析(三):Detecting Text in Natural Image with Connectionist Text Proposal Network

    论文标题:Detecting Text in Natural Image with Connectionist Text Proposal Network 论文作者:Zhi Tian , Weilin ...

  4. 跟我读论文丨Multi-Model Text Recognition Network

    摘要:语言模型往往被用于文字识别的后处理阶段,本文将语言模型的先验信息和文字的视觉特征进行交互和增强,从而进一步提升文字识别的性能. 本文分享自华为云社区<Multi-Model Text Re ...

  5. 论文阅读(Zhuoyao Zhong——【aixiv2016】DeepText A Unified Framework for Text Proposal Generation and Text Detection in Natural Images)

    Zhuoyao Zhong--[aixiv2016]DeepText A Unified Framework for Text Proposal Generation and Text Detecti ...

  6. [论文理解] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 简介 Faster R-CNN是很经典的t ...

  7. Deep Learning 28:读论文“Multi Column Deep Neural Network for Traffic Sign Classification”-------MCDNN 简单理解

    读这篇论文“ Multi Column Deep Neural Network for Traffic Sign Classification”是为了更加理解,论文“Multi-column Deep ...

  8. 论文《Piexel Recurrent Nerual Network》总结

    论文<Piexel Recurrent Nerual Network>总结 论文:<Pixel Recurrent Nerual Network> 时间:2016 作者:Aar ...

  9. [论文理解] CornerNet: Detecting Objects as Paired Keypoints

    [论文理解] CornerNet: Detecting Objects as Paired Keypoints 简介 首先这是一篇anchor free的文章,看了之后觉得方法挺好的,预测左上角和右下 ...

随机推荐

  1. 天梯赛L2-006. 树的遍历L3-010. 是否完全二叉搜索树

    L2-006. 树的遍历 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历 ...

  2. 黑科技抢先尝(续2) - Windows terminal中Powershell Tab的极简美化指南

    目录 安装python 安装git 安装powerline字体 主题定制 安装oh-my-posh 查看策略组的执行权限 使用choco 安装终端模拟器 - ConEmu 优化 PowerShell ...

  3. linux端口netstat

    netstat -aptn命令行,查看所有开启的端口号 netstat -nupl       查看所有udp端口号 netstat -ntpl   查看所有tcp端口号 查看某服务占用的端口情况,比 ...

  4. Unite 2017 | 基于Animation Instancing的大规模人群模拟

    在Unite 2017的国内技术专场,Unity技术团队为参会者们带来了Unity引擎功能相关的技术分享.今天这篇文章,将由Unity技术支持工程师金晓宇为大家分享基于Animation Instan ...

  5. mysql--浅谈子查询1

    这是对自己学习燕十八老师mysql教程的总结,非常感谢燕十八老师. 依赖软件:mysql5.6 系统环境:win 子查询概念 子查询就是在原有的查询语句中嵌入新的查询 子查询分类 1.where型子查 ...

  6. java基础第十二篇之集合、增强for循环、迭代器和泛型

    Collection接口中的常用方法: * 所有的子类子接口都是具有的 * 集合的方法:增删改查 * * public boolean add(E e);//添加元素 返回值表示是否添加成功 * pu ...

  7. jvm 默认字符集

    最近在读取第三方上传的文件时,遇到一个问题,就是采用默认字符集读取,发现个别中文乱码,找到乱码的字,发现是生僻字:碶. 由于在window是环境下做的测试,并没有报错,但是在linux服务器上执行,发 ...

  8. Python-11-循环

    x = 1 while x <= 100:     print(x)     x += 1   基本上, 可迭代对象是可使用for循环进行遍历的对象. numbers = [0, 1, 2, 3 ...

  9. CC22:检查是否为BST

    题目 请实现一个函数,检查一棵二叉树是否为二叉查找树. 给定树的根结点指针TreeNode* root,请返回一个bool,代表该树是否为二叉查找树. 解法 二叉排序树有个特点是,结点通过中序遍历出来 ...

  10. 7-36 旅游规划 (25 分(Dijkstra)

    有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...