Connectionist Text Proposal Network
作者提出了 CTPN(Connectionist Text Proposal Network) 模型, 来直接检测文字序列.(端到端)
CTPN 主要做了三个工作使它这么强:
- Detecting Text in Fine-scale proposals(将文本检测任务转化为一连串小尺度文本框的检测)
- Recurrent Connectionist Text Proposals(引入RNN 中的 Bidirectional LSTM 提升上一步的文本检测效果)
- Side-refinement(连接文本, 并对边缘位置的锚框进行优化)
作者的工作:
Ren 等人使用 锚回归机制 来使小尺寸滑动窗口能够检测到不同大小的对象 (对象检测).
> 作者借鉴了RPN(Region Proposal network)的思想, 提出了竖直锚回归.--- RPN 在目标检测上有这 stat of art 的表现, 但是对于文字检测有着缺陷
作者借鉴了这个思想, 提出了 竖直锚回归(vertical anchor mechanism), 它可以
- 同时生成 text/non-text 分数 和 每个锚框的 y 坐标
- 更可靠的检测出固定宽度的文本建议 (指可以是文本的一部分), 而不是检测单个字符
- 它使用与不同大小和高宽比的文本
同时, 受到 RNN 在文字检测中优秀表现的影响 (能利用文本信息改善模型性能), 作者尝试了 LSTM , 他可以缓解来自 RNN 训练过程中梯度消失和梯度爆炸的问题. 并且, 作者更进一步尝试了 BLSTM , 它可以编码来自两个方向的卷积层的信息, 即他可以利用文本的上下文信息.
最后, 作者将 竖直锚机制 和 BLSTM 结合起来, 开发了一个端到端的可训练模型.
锚框的合并: 当两个锚框
- 是最想领的两个锚框
- 距离小于 50 pixels
- text / non-text 分数大于0.7
则将两个锚框合并.
并且, 作者利用下式
vc=(cy−cya)/ha,vh=log(h/ha)vc∗=(cy∗−cya)/ha,vh∗=log(h∗/ha)\begin{array}{ll}{v_{c}=\left(c_{y}-c_{y}^{a}\right) / h^{a},} & {v_{h}=\log \left(h / h^{a}\right)} \\ {v_{c}^{*}=\left(c_{y}^{*}-c_{y}^{a}\right) / h^{a},} & {v_{h}^{*}=\log \left(h^{*} / h^{a}\right)}\end{array}vc=(cy−cya)/ha,vc∗=(cy∗−cya)/ha,vh=log(h/ha)vh∗=log(h∗/ha)
来调整处于文本检测边缘位置的锚框.
CTPN 的缺点: 对于非水平的文本的检测效果不好.
对于任意角度的文本检测, 参考论文 《Detecting Oriented Text in Natural Images by Linking Segments》, CVPR, 2017.