Lukas Neumann——【ICCV2017】Deep TextSpotter_An End-to-End Trainable Scene Text Localization and Recognition Framework


目录

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

作者和相关链接

  • 作者

方法概括

  • 方法概述

    • 该方法将文字检测和识别整合到一个端到端的网络中。检测使用YOLOv2+RPN,并利用双线性采样将文字区域统一为高度一致的变长特征序列,再使用RNN+CTC进行识别。
  • 文章亮点

    • 检测+识别在一个网络中端到端训练
    • 速度很快(100ms/每张图,注意是检测+识别!)
  • 主要流程

    • 如上图,整个端到端识别分为四步:

      • 检测:用去掉全连接层的YOLOv2框架进行fcn+RPN,得到候选文字区域

      • 双线性采样(实际上是一个Spatial Transform module):将大小不同的文字区域统一特征映射为高度一致宽度变长的特征序列

      • 识别:将特征序列用rnn得到概率矩阵(带recurrent的fcn),再接CTC得到识别字符串
      • 最后利用识别的打分情况反过来对检测的boundingbox进行nms,得到精确的检测框

方法细节

  • 检测的FCN网络

    • 使用YOLOv2的前18个convolution layer和5个max pool layer,去掉了最后的全连接层

    • 最后输出的feature map是:W/32 * H/32 * 1024

  • Region Proposals

    • 采用类似于RPN的anchor机制

    • 回归参数5个,除了正常的RPN回归的x, y, w, h的相对值,还有角度ɵÎ[-pi/2, pi/2] (这个怎么加入loss?)

    • 每个anchor点有14个anchor box,这14个anchor box的scale、aspects(angle范围怎么设?)通过在训练集上用k-means聚类得到

    • 正负样本选择:IOU最大为正anchor box,其他均为负样本(合理吗?)

    • NMS使用:利用识别结果对检测结果进行反馈调整(取识别分数大于阈值的所有框进行nms)
  • Bilinear Sampling

    • 这步的目的

      • 将前面detection得到的大小不同的region proposal对应的feature统一成固定高度的feature(为了输入到识别的CNN中,识别的CNN有recurrent network,需要固定高度,但宽度可以变长),并且保持特征不会形变太多;

    • 这一步为什么不直接用Faster R-CNN中的ROI pooling?
      • 答: 第一是因为ROI pooling实际上是固定网格,不论原proposal有多长,最后都会变成比如7*7的网格。而实际的text proposal,文字是变长的,固定网格有可能导致text被拉伸或压缩,造成大的形变;第二(更重要的是)是因为采用ROI pooling只是水平和竖直的grid,无法处理旋转或形变情况。

    • Bilinear Sampling是什么?

      • 文中用的bilinear sampling 是一个以bilinear interpolation kernel为核的Spatial Transformer。

      • 一个Spatial Transformer的结构分为三个部分,Localisation net,Grid generator,和Sampler。Localisation net负责学习一组参数(下一步生成网格要用的),其输入为原特征feature map(记为U),输出即参数ɵ。Grid generator负责给定参数ɵ时生成网格Tɵ(G)。最后的Sampler负责把网格Tɵ(G)打在原feature map上,生成最后transform之后的特征(记为V)。

      • Spatial Transformer简单来说,实际上是用来做特征变换的,包括扭曲、旋转、平移、尺度变换,它的特点是这个变换的参数不是固定的,而是根据每个样本的不同自己学出来的。

      • Bilinear Sampling特征映射公式如下:

  • 识别

    • 传统的变长word识别思路

      • 一个超大类分类器(每一个单词就是一类)
      • 多个二类分类器(每一个位置预测一下是哪一类,类数=字符的总类数,例如英文就是62类)
    • 识别流程
      • 识别FCN(带RNN的)+ CTC(Connectionist Temporal Classification)
    • 识别FCN
      • 一堆conv + pool + recurrent conv + batch norm,最后接一个softmax

    • CTC(Connectionist Temporal Classification)

      • CTC的功能在于可以根据一个概率矩阵得到最可能的序列结果。这个输入的概率矩阵设为A(i, j),i Î[1, m],jÎ[1, n],m表示字符的类别总数(包括背景类,英文即为63类),是一个固定值,n与输入的图像长度相关(本文n=w/4)。A(i, j)可以理解为在水平位置i的滑窗里包含第j个字符的概率大小。输出的序列结果例如“text”等即为最终的识别结果。

Figure 4. Text recognition using Connectionist Temporal Classification. Input W × 32 region (top), CTC output W 4 × |A| ˆ as the most probable class at given column (middle) and the resulting sequence (bottom)

      • CTC操作首先去掉空格和重复的字符(即为化简),然后对化简之后得到同一个单词的串概率求和,最后取总概率最大的字符串即为最终的识别结果。

  • Training

    • 检测和识别单独预训练,然后端到端再合起来训练

    • 检测预训练:SynthText (80万),3epoch,ImageNet预训练模型

    • 识别预训练:Synthetic Word(900万),3epoch,随机初始化N(0,1)

    • 合起来训练:SynthText + Synthetic Word + ICDAR2013-train + ICDAR2015-train, 3epoch,每张图随机crop30%,momentum = 0.9,lr = 0.001,每个epoch将10倍

实验结果

  • 速度说明

    • Nvidia K80 GPU
    • ICDAR2013:图像大小resize成544*544,100ms/每张图
    • ICDAR2015:图像大小608*608,110ms/每张图
  • ICDAR2013

  • ICDAR2015

总结与收获

  • 检测这边基本上是用yolov2,不一样的点在于:第一,加了角度信息;第二,anchor的选择是通过kmeans确定的,虽然有点trick,但感觉也挺有道理的,虽然作者没有验证这样做的generalization;
  • 个人觉得文中最好的点是加入了spatial transform(文中叫bilinear sampling),虽然也不是作者提出的,但作者用在检测+识别中间是第一个,也很有意思。值得一提的是,stn的paper中说stn没有增加多少耗时;
  • 识别这边像是自己设计的简化的网络,RNN+CTC是正常的识别方法;
  • 端到端训练可以借鉴,先预训练检测+预训练识别+合起来训练。

参考文献

  1. M. Jaderberg, K. Simonyan, A. Zisserman, et al. Spatial transformer networks. In Advances in Neural Information Processing Systems, pages 2017–2025, 2015. 2, 3
  2. Raveendran H, Thomas D. Image Fusion Using LEP Filtering and Bilinear Interpolation. International Journal of Engineering Trends and Technology (IJETT)  2014, Volume 12 Number 9

论文阅读(Lukas Neumann——【ICCV2017】Deep TextSpotter_An End-to-End Trainable Scene Text Localization and Recognition Framework)的更多相关文章

  1. 论文阅读(Lukas Neuman——【ICDAR2015】Efficient Scene Text Localization and Recognition with Local Character Refinement)

    Lukas Neuman--[ICDAR2015]Efficient Scene Text Localization and Recognition with Local Character Refi ...

  2. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  3. 【论文阅读】HydraPlus-Net: Attentive Deep Features for Pedestrian Analysis

    转载请注明出处:https://www.cnblogs.com/White-xzx/ 原文地址:https://arxiv.org/abs/1709.09930 Github: https://git ...

  4. 论文阅读 | Towards a Robust Deep Neural Network in Text Domain A Survey

    摘要 这篇文章主要总结文本中的对抗样本,包括器中的攻击方法和防御方法,比较它们的优缺点. 最后给出这个领域的挑战和发展方向. 1 介绍 对抗样本有两个核心:一是扰动足够小:二是可以成功欺骗网络. 所有 ...

  5. [论文阅读] ImageNet Classification with Deep Convolutional Neural Networks(传说中的AlexNet)

    这篇文章使用的AlexNet网络,在2012年的ImageNet(ILSVRC-2012)竞赛中获得第一名,top-5的测试误差为15.3%,相比于第二名26.2%的误差降低了不少. 本文的创新点: ...

  6. 【论文阅读】An Anchor-Free Region Proposal Network for Faster R-CNN based Text Detection Approaches

    懒得转成文字再写一遍了,直接把做过的PPT放出来吧. 论文连接:https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1804.09003v1. ...

  7. BERT 论文阅读笔记

    BERT 论文阅读 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 由 @快刀切草莓君 ...

  8. Deep Reinforcement Learning for Dialogue Generation 论文阅读

    本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...

  9. 【医学图像】3D Deep Leaky Noisy-or Network 论文阅读(转)

    文章来源:https://blog.csdn.net/u013058162/article/details/80470426 3D Deep Leaky Noisy-or Network 论文阅读 原 ...

随机推荐

  1. 一些有用的huginn Agent

    具体API地址 https://huginnio.herokuapp.com/agents 貌似这些Agent都可以按照频率和定时的时间点来触发, 1.Attribute Difference Age ...

  2. mongodb 遇到的问题一 Error: connect ECONNREFUSED 127.0.0.1:27017

    node配合mongodb是配置完成后,访问时出现 Error: connect ECONNREFUSED 127.0.0.1:27017,的报错 原因在于你的mongodb数据库没开, node下的 ...

  3. __x__(31)0908第五天__导航条的练习 <ul> 版本

    效果图:  html代码: <!doctype html> <html> <head> <meta charset="utf-8" /&g ...

  4. BOM 浏览器对象模型_XMLHttpRequest 对象

    XMLHttpRequest 对象 浏览器与服务器之间,采用 HTTP 协议 通信. 用户在浏览器地址栏键入一个网址,或者通过网页表单向服务器提交内容,这时浏览器就会向服务器发出 HTTP 请求 AJ ...

  5. thinkphp实现like模糊查询实例

    原网址:https://www.jb51.net/article/56846.htm

  6. 不让浏览器缓存index.html

    参考文档:https://www.2cto.com/ask/question/4598 location = /index.html { add_header Cache-Control " ...

  7. ERP项目实施记录11-产品工艺流程图及单据关联图

    借助百度的Echarts做了2个图表,一个展示产品的生产工艺流程,一个展示产品与订单.工程单的关系 上图为产品工艺流程图,鼠标放上去可以显示部件信息 黄色SO图标代表销售订单,单击打开销售订单 红色M ...

  8. 一个LinkedBlockingQueue线程安全的例子

    一个LinkedBlockingQueue线程安全的例子 package llj.mf.ace; import java.util.ArrayList; import java.util.HashSe ...

  9. 火狐浏览器安装firebug和firepath插件方法(离线)

    1.下载FF55以内版本安装包,安装后在Firefox 更新选择"不检查更新" 2.火狐浏览器各个版本下载地址:http://ftp.mozilla.org/pub/firefox ...

  10. CentOS7安装MySQL并允许远程登录

    下载 mysql 源安装包 $ curl -LO http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 安装 mys ...