目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】


文章目录

  • 1. 前言
  • 2. TextBoxes模型
  • 3. TextBoxes++模型
    • 3.1模型结构
    • 3.2 default boxes
    • 3.3 调整GT
    • 3.4 损失函数
    • 3.5 On-line hard negative mining
    • 3.6 数据增广
    • 3.7 多尺度训练
    • 3.8 有效级联NMS
    • 3.9 结果
  • 4. 总结
  • 5. 参考文献

1. 前言 上篇看到Seglink模型,这次看TextBoxes/TextBoxes++模型。这三个模型都来自华科的白翔老师团队(还有之前读的RARE和端到端的CRNN,也是他们团队的…真正的大佬),同是one-stage方法的,就放在一起看了。但不同的是,TextBoxes系列是端到端可训练的,不仅包含了文本检测,还包含了识别(但是我关注的还是检测)。
2. TextBoxes模型 TextBoxes也是个改进版的SSD,相对SSD的具体改变如下:
  • 修正检测框的长宽比,变成长条状(下图红色虚线框)
  • 将卷积核从3x3变成了1x5,更适合文本检测(下图绿色矩形框)
    目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
    文章图片
  • 损失函数改变,从多类检测问题变为单类检测问题
  • 输入图像从单尺度变为多尺度
  • 利用识别来调整检测的结果
总体方法:
Step 1: 图像输入到修改版SSD网络中 + 非极大值抑制(NMS)→ 输出候选检测结果
Step 2: 候选检测结果 + CRNN进行单词识别 → 新的检测结果 + 识别结果
改进后,原本只能识别物体的SSD变为可以端到端训练作文本检测、识别用的TextBoxes模型。速度快,准确率也高。但是毕竟是16年的文章了,文本检测这一块又是热门,所以很快18年就出现了TextBoxes++版本。
3. TextBoxes++模型 3.1模型结构 Textboxes:
目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

TextBoxes++:
目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

模型的对比如上图所示,其实大体框架基本没变,就是卷积层从conv6变成了conv5。采用最基本的VGG16,保留了conv1_1到conv5_3,将最后两层由全连接层替换成了卷积层,另外加了8个卷积层。某些层通过textboxes layers之后预测输出,然后nms处理,所以textboxes++只包含卷积层和pooling层,因此可以使用不同尺度的输入。
3.2 default boxes 目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

上图黄色实线框是GT,绿色虚线框是匹配到的Default boxe,红色箭头是学习过程,绿色实现是最小外界框。
网络预测框的表示:
目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

用四边形或者矩形表示,长宽比默认为(1, 2, 3, 5, 1/2, 1/3, 1/5),为了适应多个方向的文本。
还为文本设置了垂直偏移,使得默认框在垂直方向密集,如下图所示,没有垂直偏移的只有黑色虚线框,就会漏掉很多连续的垂直方向文本。黄色虚线框是加入了垂直偏移后的,文本信息都被包围了进去。
目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

3.3 调整GT 3.4 损失函数 目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

N是与GT匹配的default boxes数量, α \alpha α设为0.2
3.5 On-line hard negative mining 一些纹理和符号与文本非常相似,网络很难区分。我们遵循hard negative mining来抑制它们。更准确地说,对相应数据集的训练分为两个阶段。第一阶段的负样本与正样本之比设置为3:1,第二阶段改为6:1。
3.6 数据增广 【目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】】加入Jaccard overlap(J)和object coverage(C)。
目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

3.7 多尺度训练 为了提高训练速度,将随机裁剪的区域调整为大小相对较小的图像。然而,由于其复杂的体系结构,所建议的TextBoxes++的输入图像可以有任意大小。为了更好地处理多尺度文本,我们还在训练阶段的最后几千次迭代中使用了更大的尺度输入大小。
3.8 有效级联NMS 测试的时候改进了nms,将6个尺度的图片归一化,进行nms,由于四边形的nms耗时较多,我们将nms分成了两步执行:
  • 进行nms在最小外接框上,设置threshold= 0.5,这一步很快且消除了大量框。
  • 四边形nms设置tnreshold = 0.2 输出作为预测结果。
3.9 结果 目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

4. 总结 TextBoxes和TextBoxes++都是基于SSD的改进,通过改变Default boxes的长宽比、改变卷积核的大小、输入图像多尺度以及单目标检测来更好的定位文本信息。并且它们端到端可训练,加入了识别功能,并通过识别结果来自学习。
但是它们也有局限性,不能很好的检测大型文本、垂直文本(这个可能训练过以后会好)、弯曲文本。
我又看到了白翔老师在ICDAR2017的学术报告PPT,其中提到TextBoxes++为进一步扩大卷积神经网络的感受野,使用了联结多种特征图的inception模块,举个例子,下图的inception模块整合了33、15、5*1三种不同卷积核产生的特征图:
目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

结果表明,inception模块可以很有效地检测长文本。
目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】
文章图片

5. 参考文献 1.《TextBoxes: A Fast Text Detector with a Single Deep Neural Network》
2.《TextBoxes++: A Single-Shot Oriented Scene Text Detector》
3.TextBoxes代码
4.TextBoxes++代码
5.https://zhuanlan.zhihu.com/p/33723456
6.https://www.cnblogs.com/lillylin/p/6204099.html
7.https://blog.csdn.net/xz1308579340/article/details/79760038
8.数据增广之详细理解

    推荐阅读