PSENet
Shape Robust Text Detection with Progressive Scale Expansion Network
论文地址:https://arxiv.org/abs/1806.02559
代码地址:https://github.com/whai362/PSENet
文章主要针对的问题
场景文字检测面临两个问题:
- 大部分的state-of-art 的算法都是预测四边形的检测框来表示文本框,但是这种方式在任意形状的文本行检测问题上的效果较差。
- 距离较近的文本行容易检测错误,检测结果容易相互有重叠或者多个文本行因为没有分开而被检测为一个。
基于CNN的场景文字检测算法主要可以分为两类:
- regression-based approaches(基于回归的方法)
基于回归的方法使用CNN回归问本行的边界框,这种方法一般应用在文本行可以用具有一定方向的矩形或四边形的形式表示的情况下,比如水平文本行。在任意方向的场景文字检测问题上,因为文本行形状多变,四边形并不能有效地表示一串文本行,所依据与回归的方法在locate the texts with arbitrary shape 问题上效果不佳。 - segmentation-based approaches(基于分割的方法)
基于分割的方法把文本行检测看做像素点分类问题,即通过设计CNN网络分割出文本和非文本像素点,但是没直接的分割方法很难分开相近的文本行,于是在输出检测结果的时候会把多个粘连的文本行预测为一个。
PSENet网络结构
PSENet主要框架如图:
整体架构: 特征提取阶段采用的骨干网络为ResNet,并将低层和高层的特征进行相连(FPN网络结构),将FPN的最后四层特征 P 2 , P 3 , P 4 , P 5 P_2,P_3,P_4,P_5 P2,P3,P4,P5 融合为一个特征层 F F F,然后将 F F F再次映射到 n n n个分割结果: S 1 , S 2 , . . . , S n S_1,S_2,...,S_n S1,S2,...,Sn。每一个 S i S_i Si都表示在某一个尺度上的文本行像素分割结果。 S 1 S_1 S1表示一个文本行(字符串)的最小尺度的分割图(原始的文本行mask图向里收缩一定比例后的mask), S n S_n Sn表示文本行(字符串)原始的分割图。得到这些分割图后,采用 P S E PSE PSE(Progressive Scale Expansion Algorithm) 从 S 1 S_1 S1到 S n S_n Sn逐步融合CNN生成的分割图像,从而得到最终的检测结果:
R = P S E { S 1 , S 2 , . . . , S n } R = PSE \{S_1,S_2,...,S_n\} R=PSE{
S1,S2,...,Sn}
具体细节: 四个特征层 P 2 , P 3 , P 4 , P 5 P_2,P_3,P_4,P_5 P2,P