转载自:https://blog.csdn.net/zchang81/article/details/78873347

http://baijiahao.baidu.com/s?id=1585721463716460939&wfr=spider&for=pc

目录

  • 作者和相关链接
  • 几个关键的Idea出发点
  • 方法概括
  • 方法细节
  • 实验结果
  • 总结与收获点

作者和相关链接

  • 个人主页:Zhi Tian,黄伟林,Tong He,Pan He,乔宇
  • 作者简单信息:

  • 论文下载:论文传送门
  • 代码下载:代码传送门

几个关键的Idea出发点

  • 文本检测和一般目标检测的不同——文本线是一个sequence(字符、字符的一部分、多字符组成的一个sequence),而不是一般目标检测中只有一个独立的目标。这既是优势,也是难点。优势体现在同一文本线上不同字符可以互相利用上下文,可以用sequence的方法比如RNN来表示。难点体现在要检测出一个完整的文本线,同一文本线上不同字符可能差异大,距离远,要作为一个整体检测出来难度比单个目标更大——因此,作者认为预测文本的竖直位置(文本bounding box的上下边界)比水平位置(文本bounding box的左右边界)更容易。

  • Top-down(先检测文本区域,再找出文本线)的文本检测方法比传统的bottom-up的检测方法(先检测字符,再串成文本线)更好。自底向上的方法的缺点在于(这点在作者的另一篇文章中说的更清楚),总结起来就是没有考虑上下文,不够鲁棒,系统需要太多子模块,太复杂且误差逐步积累,性能受限。

  • RNN和CNN的无缝结合可以提高检测精度。CNN用来提取深度特征,RNN用来序列的特征识别(2类),二者无缝结合,用在检测上性能更好。
  • 文本检测的其中一个难点就在于文本行的长度变化是非常剧烈的。因此如果是采用基于faster rcnn等通用物体检测框架的算法都会面临一个问题?怎么生成好的text proposal?这个问题实际上是比较难解决的。因此在这篇文章中作者提供了另外一个思路,检测一个一个小的,固定宽度的文本段,然后再后处理部分再将这些小的文本段连接起来,得到文本行

方法概括

  • 基本流程如Fig 1, 整个检测分六步:

    • 第一,用VGG16的前5个Conv stage(到conv5)得到feature map(W*H*C)
    • 第二,在Conv5的feature map的每个位置上取3*3*C的窗口的特征,这些特征将用于预测该位置k个anchor(anchor的定义和Faster RCNN类似)对应的类别信息,位置信息。
    • 第三,将每一行的所有窗口对应的3*3*C的特征(W*3*3*C)输入到RNN(BLSTM)中,得到W*256的输出
    • 第四,将RNN的W*256输入到512维的fc层
    • 第五,fc层特征输入到三个分类或者回归层中。第二个2k scores 表示的是k个anchor的类别信息(是字符或不是字符)。第一个2k vertical coordinate和第三个k side-refinement是用来回归k个anchor的位置信息。2k vertical coordinate表示的是bounding box的高度和中心的y轴坐标(可以决定上下边界),k个side-refinement表示的bounding box的水平平移量。这边注意,只用了3个参数表示回归的bounding box,因为这里默认了每个anchor的width是16,且不再变化(VGG16的conv5的stride是16)。回归出来的box如Fig.1中那些红色的细长矩形,它们的宽度是一定的。
    • 第六,用简单的文本线构造算法,把分类得到的文字的proposal(图Fig.1(b)中的细长的矩形)合并成文本线

Fig. 1: (a) Architecture of the Connectionist Text Proposal Network (CTPN). We densely slide a 3×3 spatial window through the last convolutional maps (conv5 ) of the VGG16 model [27]. The sequential windows in each row are recurrently connected by a Bi-directional LSTM (BLSTM) [7], where the convolutional feature (3×3×C) of each window is used as input of the 256D BLSTM (including two 128D LSTMs). The RNN layer is connected to a 512D fully-connected layer, followed by the output layer, which jointly predicts text/non-text scores, y-axis coordinates and side-refinement offsets of k anchors. (b) The CTPN outputs sequential fixed-width fine-scale text proposals. Color of each box indicates the text/non-text score. Only the boxes with positive scores are presented.

方法细节

  • Detecting Text in Fine-scale proposals

    • k个anchor尺度和长宽比设置:宽度都是16,k = 10,高度从11~273(每次除于0.7)
    • 回归的高度和bounding box的中心的y坐标如下,带*的表示是groundTruth,带a的表示是anchor

  • score阈值设置:0.7 (+NMS)
  • 与真值IoU大于0.7的anchor作为正样本,与真值IoU最大的那个anchor也定义为正样本,这个时候不考虑IoU大小有没有到0.7,这样做有助于检测出小文本。

    与真值IoU小于0.5的anchor定义为负样本。

    只保留score大于0.7的proposal

  • 一般的RPN和采用本文的方法检测出的效果对比

  • Recurrent Connectionist Text Proposals

    • RNN类型:BLSTM(双向LSTM),每个LSTM有128个隐含层
    • RNN输入:每个滑动窗口的3*3*C的特征(可以拉成一列),同一行的窗口的特征形成一个序列
    • RNN输出:每个窗口对应256维特征
    • 使用RNN和不适用RNN的效果对比,CTPN是本文的方法(Connectionist Text Proposal Network)

  • Side-refinement

    • 文本线构造算法(多个细长的proposal合并成一条文本线)

      • 主要思想:每两个相近的proposal组成一个pair,合并不同的pair直到无法再合并为止(没有公共元素)
      • 判断两个proposal,Bi和Bj组成pair的条件:
        1. Bj->Bi, 且Bi->Bj。(Bj->Bi表示Bj是Bi的最好邻居)
        2. Bj->Bi条件1:Bj是Bi的邻居中距离Bi最近的,且该距离小于50个像素
        3. Bj->Bi条件2:Bj和Bi的vertical overlap大于0.7
    • 固定要regression的box的宽度和水平位置会导致predict的box的水平位置不准确,所以作者引入了side-refinement,用于水平位置的regression。where xside is the predicted x-coordinate of the nearest horizontal side (e.g., left or right side) to current anchor. x side is the ground truth (GT) side coordinate in x-axis, which is pre-computed from the GT bounding box and anchor location. cax is the center of anchor in x-axis. wa is the width of anchor, which is fixed, wa = 16

  • 使用side-refinement的效果对比

实验结果

  • 训练

    对于每一张训练图片,总共抽取128个样本,64正64负,如果正样本不够就用负样本补齐。这个和faster rcnn的做法是一样的。

    训练图片都将短边放缩到600像素。

    准备训练数据

    正如上文所提的,这个网络预测的是一些固定宽度的text proposal,所以真值也应该按照这样来标注。但是一般数据库给的都是整个文本行或者单词级别的标注。因此需要把这些标注转换成一系列固定宽度的box。代码在prepare_training_data这个文件夹。

    整个repo是基于RBG大神的faster rcnn改的,所以根据他的输入要求。要再将数据转换为voc的标注形式,这部分代码也在prepare_training_data这个文件夹。

  • 时间:0.14s with GPU
  • ICDAR2011,ICDAR2013,ICDAR2015库上检测结果

总结与收获点

  • 这篇文章的方法最大亮点在于把RNN引入检测问题(以前一般做识别)。文本检测,先用CNN得到深度特征,然后用固定宽度的anchor来检测text proposal(文本线的一部分),并把同一行anchor对应的特征串成序列,输入到RNN中,最后用全连接层来分类或回归,并将正确的text proposal进行合并成文本线。这种把RNN和CNN无缝结合的方法提高了检测精度

CTPN - 自然场景文本检测相关推荐

  1. 选字验证码破解思路:CTPN - 自然场景文本检测

    前言 最近准备极验3代,选字验证码的破解.之前用CNN实现端到端的字符型验证码破解已满足不了需求了,我以为破解选字验证码关键步骤有三:1.图片文本的识别:2.字符坐标的识别:3.字序的识别.设计的技术 ...

  2. EAST 自然场景文本检测

    自然场景文本检测是图像处理的核心模块,也是一直想要接触的一个方面. 刚好看到国内的旷视今年在CVPR2017的一篇文章:EAST: An Efficient and Accurate Scene Te ...

  3. 自然场景文本检测识别技术集合(转)

    本文及其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造,自2019年1月出版以来已重印3次. 书的购买链接 书的勘 ...

  4. 自然场景文本检测识别技术综述

    其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 番外青蛇 ...

  5. 论文翻译:自然场景文本检测与识别综述

    论文翻译:自然场景文本检测与识别综述 引言 介绍 文章回顾 文本检测 文本识别 实验结果 总结和未来工作展望 引言 自然图片的检测和识别是计算机视觉领域的两个主要的问题,在运动视频分析,自动驾驶,工业 ...

  6. opencv 文字识别_Python+opencv+EAST做自然场景文本检测!

    在本教程中,您将学习如何使用OpenCV通过EAST文本检测器检测自然场景图像中的文本. OpenCV的EAST文本检测器是一种深度学习模型,基于新颖的架构和训练模式.它的优势是 (1)可以以13 F ...

  7. 自然场景文本检测识别技术综述【转】

    转载自https://blog.csdn.net/SIGAI_CSDN/article/details/80858565 番外青蛇: 姐, 图像文本检测和识别领域现在的研究热点是什么? 白蛇: 白纸黑 ...

  8. 【OCR技术系列之五】自然场景文本检测技术综述(CTPN, SegLink, EAST)

    文字识别分为两个具体步骤:文字的检测和文字的识别,两者缺一不可,尤其是文字检测,是识别的前提条件,若文字都找不到,那何谈文字识别.今天我们首先来谈一下当今流行的文字检测技术有哪些. 文本检测不是一件简 ...

  9. 文字识别(五)--自然场景文本检测技术综述(CTPN, SegLink, EAST)

    转自:https://www.cnblogs.com/skyfsm/p/9776611.html 文字识别分为两个具体步骤:文字的检测和文字的识别,两者缺一不可,尤其是文字检测,是识别的前提条件,若文 ...

  10. MSER — 自然场景文本检测

    MSER是最大稳定极值区域:是对一幅灰度图像(灰度值为0-255)取阈值进行二值化处理,阈值从0到255依次递增.阈值的递增类似于分水岭算法中的水面的上升,随着水面的上升,有一些较矮的丘陵会被淹没,如 ...

最新文章

  1. 12.OpenStack镜像和存储服务配置
  2. singleton模式四种线程安全的实现
  3. fabio负载均衡入门
  4. 如何在Java中检查对象是否为空?
  5. linux vi行尾总是显示颜色,【转载】Linux 下使用 vi 没有颜色的解决办法
  6. 四大浏览器再战Windows平台:Opera勇夺第一
  7. predicate 列存储索引扫描_MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
  8. 喵哈哈村与哗啦啦村的大战(四)(树形DP)
  9. springboot jvm参数
  10. 阿里巴巴高级技术专家章剑锋:大数据发展的 8 个要点
  11. web前端@css选择器
  12. 关于一个微信公众号:原子与分子模拟
  13. excel Cell函数
  14. Laravel5利用163邮箱实现发送邮件mail功能
  15. BTT6030芯片手册
  16. 简单解决Edge浏览器被sb360篡改的方法
  17. 中国加油!武汉加油!
  18. 夜神模拟器连接Android Studio
  19. 电子表格的历史:除非你知道它从何而来,否则你将无法预测它将走向何方
  20. 机器学习算法实践——K-Means算法与图像分割

热门文章

  1. wps excel 操作指南
  2. c语言自学教材百度网盘,110G超强C语言和C++编程0基础从入门到精通自学教程 百度云盘资源...
  3. 【数字信号处理】划重点
  4. WPS中word转pdf文件时给pdf文件增加目录
  5. java snakeyaml_JAVA基于SnakeYAML实现解析与序列化YAML
  6. wordpress采集插件自动采集伪原创免费插件
  7. linux 汉字乱码 window中正常显示
  8. 【PS】抠图教程(0基础快速入门)
  9. html+浏览器自动全屏,web 使网站在浏览器中全屏显示 fullscreen=yes
  10. webmax函数高级教程整理集2