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 的 :
正向寻找:
- 沿水平正方向,寻找和 水平距离小于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的训练,容易造成梯度爆炸。
。
标签:笔记,regression,学习,算法,LSTM,文本,Anchor,CTPN 来源: https://www.cnblogs.com/starc/p/16080003.html