原文地址:https://blog.csdn.net/qq_34606546/article/details/84963144
PixelLink: Detecting Scene Text via Instance Segmentation
一篇通过实例分割(没有用回归哦)的场景文字检测论文,发表于AAAI(2018)
github项目源码地址:
https://github.com/ZJULearning/pixel_link
看完论文后觉得本方法的重点是将文本检测问题进行简化,而不是像很多文本检测方法使用普通物体检测的思路,即文本/非文本分类(text/nontext classification)和位置回归(location regression)。该篇论文提出了直接通过实例分割进行文本/非文本的分类和边界框抽取的方法模型:PixelLink
重点:
1、使用Instance Segmentation的思路(利用了二分类+每个像素点与周围8个顶点的link分类
2、边界框不需要通过回归进行预测,直接通过positive pixel组成的Connected Components (CC)通过类似minAreaRect的方法OpenCV实现
3、利用图像处理的方法进行后处理,不需要NMS,具体什么方法在后面会写到滴,比较简单
方法概述
本文的方法采用实例分割的思路,预测text/non-text和pixel-lin的关系,再使用简单的图像处理方式进行后处理(post-Filtering)进行滤波去除噪声。
Architecture of PixelLink. A CNN model is trained to perform two kinds of pixel-wise predictions: text/non-text prediction and link prediction. After being thresholded, positive pixels are joined together by positive links, achieving instance segmentation. minAreaRect is then applied to extract bounding boxes directly from the segmentation result. Noise predictions can be efficiently removed using post-filtering. An input sample is shown for better illustration. The eight heat-maps in the dashed box stand for the link predictions in eight directions. Although some words are difficult to separate in text/non-text prediction, they are separable through link predictions..
3.1 Network Architecture(paper)
与大多数物体检测特征提取方法相同,本文使用的是VGG-16作为特征提取模型,对提取的特征图进行不同CONV层上的1x1卷积,用作后面反卷积进行(类似FCN结构),整个模型有两个独立的“头部”,一个是text/non-text prediction,另一个是link prediction,两者都使用SoftMax,所以输出是1x2+8x2=18通道的。text/non-text占两个通道,后面的8指像素点相邻的其余8个link pixel。
从结构整体来看还是基于FPN的思想。和EAST中的Resnet50基础结构,CTPN中的VGG16结构思想都很像。
文章还指出,根据conv1*1在不同的conv stage上链接,分为两类模型:PixelLink+VGG16 2s, and PixelLink+VGG16 4s (Two settings of feature fusion layers are implemented: {conv2 2, conv3 3, conv4 3, conv5 3, fc 7}, and {conv3 3, conv4 3, conv5 3, fc 7}, denoted as PixelLink+VGG16 2s, and PixelLink+VGG16 4s, respectively.),PixelLink+VGG16 2s模型的预测尺度是PixelLink+VGG16 4s的二倍,所以需要更多的计算但是同时具有更好的效果。网络结构采用VGG16基础框架。
1/2下采样结构最多unsample到conv2_2,相当于只有一个pooling操作,输出featuremap为原图的1/2。1/4下采样结构最多unsample到conv3_3,相当于2个pooling操作,输出featuremap为原图的1/4。
3.2 Linking Pixels Together(paper)
从网络模型输出后(图1的CNN),会得到pixels和links的预测,positive pixels组成了Connected Components (CC),每一个CC表示一个检测实例,至此,实例分割结束。link的规则(given two neighboring positive pixels, their link are predicted by both of them, and they should be connected when one or both of the two link predictions are positive.)1、两个像素都是positive --> link是positive的;2、一个是text,另一个是non-text --> link是positive的; 3、两个都是non-text时 --> link是nagative的。文章还表示,这种link的处理可以使用disjoint-set的数据结构,这是一种什么样的数据结构还需要我下来再继续学习,不过这里不清楚无伤大雅了,可以继续往下看。
3.3 Extraction of Bounding Boxes
边界框提取前面提到过,是采用OpenCV种类似minAreaRect(直译过来是最小面积矩形)的方法进行边界框提取的,这一步也是本方法与其他主要方法的不同之处,即边界框直接通过实例分割得到,而不是通过基于位置回归的方式。
3.4 Post Filtering after Segmentation
为了去除噪声的干扰,添加了这个后滤波部分,其实也就是后处理,这里的方法比较直观,作者举了一个例子,他们在IC15数据集的实验中去除了短边小于10,和面积小于300的检测框。
第四章主要讲的是该方法的细节部分,包括ground truth计算,loss设计和数据增强。
4.1 Ground Truth Calculation
pixels:文本框内的像素点被标记为positive,如果存在重叠区域,则重叠区域像素点为negative。
links:给定pixel和8个邻域点其中之一,两者都在实例内则他们之间的link是positive的,否则是negative。
Ground Truth计算是在resize到与预测层图像相同尺寸的输入图像上进行的, 即ground truth的计算是在缩放后(具体缩放的比例与其预测的feature map大小一致)的原图上进行的
4.2 Loss Function
整体损失函数由pixel loss和link loss组成,因为link loss只在positive pixel上进行计算,所以pixel loss的分类损失赋予了更高的权重,本文所有实验中λ 都设置为2.0
Loss on Pixels
针对小面积文本实例与大面积实例使用相同的损失权重,对小面积的instance而言有点不太公平,所以为了能够更好的对小面积instance进行分割,本文提出了Instance-Balanced Cross-Entropy Loss(实例平衡交叉熵损失)。
第i个instance,他的权重为wi = Bi / Si,Si是该instance的面积,Bi=S/N,都是相同的,是指全部面积/实例个数,即平均每个实例的面积。
(若Si/Bi则大的占比更大, 小的占比更小, 对小的实例不公平, 这里若第i个实例的Si小于平均面积Bi则对它提供更大的比重)
像素分类损失为:
其中Lpixel_ce是文本/非文本预测的交叉熵损失矩阵,r是negative-positive数量比,所以(1+r)*S就是整幅图的面积。
(S是instance的面积,即全部positive的面积, rS为全部negative的面积,二者相加即为总面积. W为权重矩阵, Lpixel_ce通过提特征的网络计算得出, 二者相乘即为文本区域各实例loss之和)
Pixel分类的损失如上面式子所示,L表示softmax_cross_entrop,W表示预测的pixel分类的权值矩阵,r表示负正样本比例,论文中r=3,S表示每个文本实例的面积。最终,当文本实例的面积比较大,占的loss损失就会被相对拉小,文本实例的面积比较小,占的loss损失就会被相对拉大。这样做的好处就是使得小的文本实例不会被大的文本实例的loss掩盖掉,也可以有loss回传。
同时pixel分类任务还使用了OHEM策略,每次回传S(正样本实例像素和)+r*S(负样本像素和)的loss,更加有利于分类任务的学习。这点改进比EAST中所有像素的loss都回传可以得到更好的分类结果,而不是像EAST那样,一个实例中间的像素分类的好,边缘的像素分类的差的情况。
Loss on Links
positive links和negative links的loss是独立计算的,对于pixel(i,j)的第k个临域有
具体的W的计算表示为pixel分类权值矩阵和link分类矩阵基于每个通道的element_wise乘积。
W是公式3中的W,由此有
在这里插入图片描述
Link_ce是预测link时的交叉熵损失矩阵,最后的link loss为:
在这里插入图片描述
rsum是将一个tensor内全部元素求和,得到一个标量。
4.3 Data Augmentation
百分之二十的图像进行了旋转的增强,旋转角度分别为0, π/2, π, or 3π/2(是否意味着其余旋转角度的文本检测效果会不是那么好呢),0.1-1范围的随机裁剪,所有图像统一resize成512*512。数据增强后,这里好像有一个预处理的滤除噪声的操作,与后处理类似,去掉了短边小于10的文本实例,小于百分之二十的也被去掉,这些忽略掉的实例,在loss计算的时候其权重始终为0。
第五部分就是实验部分了
PixelLink models are optimized by SGD with momentum = 0.9 and weight decay = 5 × 10−4. Instead of fine-tuning from an ImageNet-pretrained model, the VGG net is ran- domly initialized via the xavier method (Glorot and Bengio 2010). Learning rate is set to 10−3 for the first 100 iterations, and fixed at 10−2 for the rest.训练过程这里只提到了随机梯度下降,动量0.9,权重衰减0.0005,并且这里没有用fine-tuning预训练好的vgg,二十通过Xavier初始化方法,随机初始化了vgg的权重。学习率设置为0.001在前100次迭代?(100?),后续训练使用固定的学习率0.01(这里也有点疑问,为什么学习率还提高了10倍?)
下面是实验结果对比,直接上图了:
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
对比指标:Recall、Precision、F-score(应该是F1)还有帧率。
(DetEval为了适应文本检测算法的特点,计算方式比mAP更复杂。相比于mAP仅考虑一对一matching,DetEval还考虑了多对一、一对多matching, 一般情况下(取各自的默认参数计算得到的值), DetEval的值要大于mAP。)
第六章很重要,至少我觉的是非常重要滴,作者在这一章指引读者进行了一些思考和讨论。
6.1 The Advantages of PixelLink
数据对比得出本文的PixelLink方法,即使trained from scratch(从头开始训练),训练25K次迭代即可达到EAST和SegLink相同的标准,25K差不多是EAST和SegLink训练次数的一半。作者启发了一个问题, why PixelLink can achieve a bet- ter performance with many fewer training iterations and less training data?
Requirement on receptive fields
对比了EAST和SegLink,大致意思是模型分割text时需要的内容越少,效果越好。EAST为了找出任何长度的文本需要获取整幅图像,而SegLink只需要预测文本片段(奥坎姆剃刀定律)。
Difficulty of tasks
相比于分类加回归的方法,PixelLink只需要知道像素本身和其临域在特征图上的状态,所以pixelLink具有更小的Requirement on receptive fields 和 difficulty of tasks。作者还发人深省的提到,文本检测较于一般物体检测,是一个较为简单的任务,因为需要的是大量的低级纹理特征和小量的高层分隔特征。(text detection is much simpler than general object detection. Text detection may rely more on low-level texture feature and less on high- level semantic feature.)
6.2 Model Analysis
1、link是很关键滴,将link的阈值设置为0,导致精度和召回率巨幅下降,作者解释因为link是语义分隔到实例分割的关键。
2、还记得loss那里(4.2)为了权衡大面积与小面积实例的问题,作者提出了Instance-Balanced Cross-Entropy Loss,实验对比了有无IB的效果:
3、图像尺寸对实验效果影响也很明显,换成384384的图像训练,精度和召回率都有明显的下降。(This phenomenon is in
accordance with SSD.)*为什么是因为SSD呢?图像小,细节少,难以学习到特征吗?
4、后处理也很关键,取消Post-filtering,recall略微上升(当然拉,Post-filtering删掉了一些经验认为是噪声的instance,取消Post-filtering召回率会上升,即查全率上升),可是随之而来的是精确度的大幅下降。
5、高分辨率的图像预测更加精准,但是更加耗时。
最后贴出原文conclusion部分:
7 Conclusion and Future Work
PixelLink, a novel(新颖的) text detection algorithm is proposed in this paper. The detection task is achieved through instance segmentation by linking pixels within the same text instance together. Bounding boxes of detected text are directly extracted from the segmentation result, without performing location regression. Since smaller receptive fields are required and easier tasks are to be learned, PixelLink can be trained from scratch with less data in fewer iterations, while achieving on par(平价) or better performance on several benchmarks than state-of-the-art(业界最新) methods based on location regression.
VGG16 is chosen as the backbone for convenient compar- isons in the paper. Some other deep models will be investigated(研究) for better performance and higher speed.
Different from current prevalent(流行的) instance segmentation methods (Li et al. 2016) (He et al. 2017a), PixelLink does not rely its segmentation result on detection performance. Applications of PixelLink will be explored on some other tasks that require instance segmentation.
网友评论