CTPN理论学习笔记
2022/3/31 6:21:36
本文主要是介绍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相连。【比单项更为优秀,可以做双向预测,即后验预测】
网络结构
![](/upload/202203/31/202203310621070458.png)
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的训练,容易造成梯度爆炸。
。
这篇关于CTPN理论学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-30uniAPP 实现全屏左右滚动滚动的效果-icode9专业技术文章分享
- 2024-06-30如何在本地使用授权或插件-icode9专业技术文章分享
- 2024-06-30伪静态规则配置方法汇总-icode9专业技术文章分享
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享
- 2024-06-28忘记eyoucms后台密码怎么办?-icode9专业技术文章分享
- 2024-06-26终极指南:Scrum中如何设置需求优先级
- 2024-06-26AI大模型企业应用实战(25)-为Langchain Agent添加记忆功能
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding