Shangxuan Tian——【ICCV2017】WeText_Scene Text Detection under Weak Supervision
目录
- 作者和相关链接
- 文章亮点
- 方法介绍
- 方法细节
- 实验结果
- 总结与收获
作者和相关链接
- 作者
文章亮点
- 用半监督和无监督来学习字符分类器,解决字符标注数据量少的问题
- 用regression的思路来学习字符分类器,而且是把proposal + text/non-text classification整合在一个网络中学习(这一点没有第一点亮)
方法介绍
- 检测流程
-
用SSD检测字符(文章的亮点在于如何训练这个SSD)
- 用TextFlow的图模型把字符连成单词输出
-
Figure 2: The framework of the proposed WeText system: A “light” supervised model is pre-trained using a small amount of annotated character image set. The light model is then applied to an unannotated dataset to search for more character samples which are combined with the small annotated dataset to train a semi-supervised model. Under certain weak annotations, better character samples can be searched to train a semi-supervised model
- 训练SSD的半监督方法
-
用一个小数据集(记为D)采用监督的方式训练一个light的base model(记为M)
-
用M跑一遍没有标注的大数据集(记为R),将其中分数大于阈值(0.5)的样本作为正样本(记为数据集P)
-
用数据集D+数据集P训练新的model(记为M’)
-
- 训练SSD的弱监督方法
-
用一个小数据集(记为D)采用监督的方式训练一个light的base model(记为M)
-
用M跑一遍有单词标注信息的大数据集(记为R’),将其中分数大于阈值(0.2)且与单词标注GT有重叠(水平和竖直IOU阈值0.8)的样本作为正样本(记为数据集P’)
-
用数据集D+数据集P’训练新的model(记为M’’)
-
方法细节
- 几种SSD模型效果对比
Figure 4: Comparison of different character detectors. Images in the top row from left to right are the input image and output of the baseline detector. Images in the bottom row from left to right are outputs of “COCO-Text Semi” and “COCO-Text Weakly” detectors, respectively. The thickness of the box boundary lines indicates the detection confidence
- Training
- Base model:ICDAR2013的字符集
- FORU: FORU_Semi为半监督,FORU_Weakly为弱监督,FORU_GT为完全监督(FORU本身有字符集标注信息,COCO-Text上没有,故没有COCO-Text_GT)。FORU_GT的目的在于验证用半监督和弱监督的方法也可以达到几乎和完全监督的效果是一样的(FORU_GT算是算法的精度上限),证明其半监督和弱监督的有效性;
- COCO_Text: 由于COCO-Text的样本集比FORU大,所以实验证明了无监督数据越多,效果越好;
实验结果
- 速度说明
- Nvidia Titan X GPU
- ICDAR2013:190ms-SSD模型,130ms-text line model,总的320ms/每张图
- ICDAR13
- SVT
总结与收获
- 这篇文章最大亮点无疑是用弱监督来扩增训练数据的思想,非常有参考价值,所以虽然点少但是也中ICCV。但是文中没有太多训练细节,比如在新的数据库上是重新train还是在原base model上fine-tune的,以及SSD的anchor设置细节之类的。
- 不看亮点,单看检测方法,其缺点在于:第一,速度比较慢;第二,只能处理水平的,无法处理多方向的;第三,由于采用了character-based的pipeline,导致必须加上text flow里的图模型来合并文本线。这种思路不但需要两个分离的模型,速度降低,也会因为分步累计误差,且无法端到端训练。且第二点也是因为采用这种pipeline导致的,实际上要将character合并成多方向的text line也是可以的,但是不能用text flow里的,而是需要设计新的算法来替换(这个也蛮有难度的)。