CTPN理论学习笔记
[CRNN]
介绍
- 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 的
:
正向寻找:
- 沿水平正方向,寻找和
水平距离小于50像素的候选Anchor(每个Anchor宽16像素,也就是最多正向找再反向寻找:
- 沿水平负方向,寻找和
水平距离小于50的候选Anchor
- 从候选Anchor中,挑出与
竖直方向
的Anchor
- 挑出符合条件2中Softmax score最大的
最后对比
和
:
- 如果
,则这是一个最长连接,那么设置
- 如果
,说明这不是一个最长的连接(即该连接肯定包含在另外一个更长的连接中)。
举例说明
![]()
Anchor已经按照
顺序排列好,并具有图中的Softmax score(这里的score是随便给出的,只用于说明文本线构造算法):
- 对
的
,向前寻找50像素,满足
且score最大的是
,即
;
反向寻找,满足
且score最大的是
,即
。由于
,
是最长连接,那么设置
- 对
正向寻找得到
;
反向寻找得到
,但是
,即
不是最长连接,包含在
中。
- 沿水平负方向,寻找和
且
,所以Anchor index 0->3->7组成一个文本,即蓝色文本区域。
且
,所以Anchor index 6->10->12组成另外一个文本,即红色文本区域。
这样就通过Text proposals确定了文本检测框。
损失函数
- Anchor Softmax loss:该Loss用于监督学习每个Anchor中是否包含文本。
表示是否是Groud truth。
- Anchor y coord regression loss:该Loss用于监督学习每个包含样本的Anchor的Bouding box regression y方向offset,类似于Smooth L1 loss。其中
是
中判定为有文本的Anchor,或者与Groud truth vertical IoU>0.5。
- Anchor x coord regression loss:该Loss用于监督学习每个包含文本的Anchor的Bouding box regression x方向offset,与y方向同理。前两个Loss存在的必要性很明确,但这个Loss有何作用作者没有解释(从训练和测试的实际效果看,作用不大)

- 在Bounding box regression的训练过程中,其实
总结
- 有LSTM,对水平文本识别效果好。
- 由于Anchor设定尺寸原因,仅能检测水平文字,对倾斜文字检测效果不好。
- 对LSTM的训练,容易造成梯度爆炸。
。


浙公网安备 33010602011771号