C/C++教程

CTPN理论学习笔记

本文主要是介绍CTPN理论学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
https://zhuanlan.zhihu.com/p/34757009 https://zhuanlan.zhihu.com/p/51383402

 [CRNN]

https://zhuanlan.zhihu.com/p/43534801

介绍

 

  • CTPN是在ECCV 2016提出的一种文字检测算法。
    • CTPN <------ Faster RCNN【也就是接引入LSTM】
    • CNN作用是:提取感受野内的空间信息;
    • LSTM作用是:学习序列特征;
    • 双向LSTM=2个相反方向的LSTM相连。【比单项更为优秀,可以做双向预测,即后验预测】

 

网络结构

 

 

conv5 feature map

  • 取一点周围的9个点,每一个点都做处理:9*H*W,每个通道都要做。

为何使用双向LSTM?

  • 我的手机坏了,我打算____一部新手机。

如何通过FC层输出产生图中的Text proposals?

  • CTPN=“空间 + 序列”,在"FC"卷积层后接入RPN网络。这里的RPN与Faster R-CNN类似。
  • 左边分支用于bounding box regression回归。由于fc feature map每个点配备了10个Anchor,同时只回归中心y坐标与高度2个值,所以rpn_bboxp_red有20个channels。
  • 右边分支用于Softmax分类其Anchor的类别。

 

如何通过Text proposals确定最终的文本位置,即文本线构造算法?

竖直Anchor定位文字位置

  • 由于CTPN针对的是横向排列的文字检测,所以其采用了一组(10个)等宽度的Anchors,用于定位文字位置。Anchor宽高为:

  • 由于CTPN采用VGG16模型提取特征,那么conv5 feature map的宽高都是输入Image的宽高的
  • 同时FC与conv5 width和height都相等。【恢复图像尺寸】
  • CTPN为fc feature map每一个点都配备10个上述Anchors。好处
    • 保证在 方向上,Anchor覆盖原图每个点且不相互重叠。【因为宽度相同,每个点之间的宽度保证不重叠】
    • 不同文本在 方向上高度差距很大,所以设置Anchors高度为11-283,用于覆盖不同高度的文本目标。

  • Anchor尺寸对应原图尺寸,就不需要回归到很大的位置,只需要小范围调整。
  • bbox只修正Anchor的中心y坐标和高度,不修正Anchor的X坐标和宽度。【???】

  • 其中, 是回归预测的坐标, 是Ground Truth, 是Anchor的中心y坐标和高度。

效果

  • Anchor经过上述Softmax和 方向bounding box regeression处理后,会获得图7所示的一组竖直条状text proposal。后续只需要将这些text proposal用文本线构造算法连接在一起即可获得文本位置。

文本线构造算法

  • 已经获得了图所示的一串或多串text proposal,接下来就要采用文本线构造办法,把这些text proposal连接成一个文本检测框
  • 假设某张图有图所示的2个text proposal,即蓝色和红色2组Anchor,CTPN采用如下算法构造文本线:
    • 按照水平 坐标排序Anchor。
    • 按照规则依次计算每个Anchor ,组成
    • 通过 建立一个Connect graph,最终获得文本检测框。

细节

文本线构造算法通过如下方式建立每个Anchor

正向寻找:

  1. 沿水平正方向,寻找和 水平距离小于50像素的候选Anchor(每个Anchor宽16像素,也就是最多正向找再反向寻找:

     

    1. 沿水平负方向,寻找和 水平距离小于50的候选Anchor
    2. 从候选Anchor中,挑出与 竖直方向 的Anchor
    3. 挑出符合条件2中Softmax score最大的

    最后对比 :

    1. 如果 ,则这是一个最长连接,那么设置
    2. 如果 ,说明这不是一个最长的连接(即该连接肯定包含在另外一个更长的连接中)。

    举例说明

    Anchor已经按照 顺序排列好,并具有图中的Softmax score(这里的score是随便给出的,只用于说明文本线构造算法):

    1. ,向前寻找50像素,满足 且score最大的是 ,即 反向寻找,满足 且score最大的是 ,即 。由于 是最长连接,那么设置
    2. 正向寻找得到 反向寻找得到 ,但是 ,即 不是最长连接,包含在 中。
  2. ,所以Anchor index 0->3->7组成一个文本,即蓝色文本区域。
  3. ,所以Anchor index 6->10->12组成另外一个文本,即红色文本区域。

这样就通过Text proposals确定了文本检测框。

损失函数

  1. Anchor Softmax loss:该Loss用于监督学习每个Anchor中是否包含文本 表示是否是Groud truth。
  2. Anchor y coord regression loss:该Loss用于监督学习每个包含样本的Anchor的Bouding box regression y方向offset,类似于Smooth L1 loss。其中 中判定为有文本的Anchor,或者与Groud truth vertical IoU>0.5。
  3. Anchor x coord regression loss:该Loss用于监督学习每个包含文本的Anchor的Bouding box regression x方向offset,与y方向同理。前两个Loss存在的必要性很明确,但这个Loss有何作用作者没有解释(从训练和测试的实际效果看,作用不大)

  • 在Bounding box regression的训练过程中,其实

     

     

    总结

    • 有LSTM,对水平文本识别效果好。
    • 由于Anchor设定尺寸原因,仅能检测水平文字,对倾斜文字检测效果不好。
    • 对LSTM的训练,容易造成梯度爆炸。

     

     

这篇关于CTPN理论学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!