目标检测|目标检测之模型篇(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,更适合文本检测(下图绿色矩形框)
文章图片
- 损失函数改变,从多类检测问题变为单类检测问题
- 输入图像从单尺度变为多尺度
- 利用识别来调整检测的结果
Step 1: 图像输入到修改版SSD网络中 + 非极大值抑制(NMS)→ 输出候选检测结果
Step 2: 候选检测结果 + CRNN进行单词识别 → 新的检测结果 + 识别结果
改进后,原本只能识别物体的SSD变为可以端到端训练作文本检测、识别用的TextBoxes模型。速度快,准确率也高。但是毕竟是16年的文章了,文本检测这一块又是热门,所以很快18年就出现了TextBoxes++版本。
3. TextBoxes++模型 3.1模型结构 Textboxes:
文章图片
TextBoxes++:
文章图片
模型的对比如上图所示,其实大体框架基本没变,就是卷积层从conv6变成了conv5。采用最基本的VGG16,保留了conv1_1到conv5_3,将最后两层由全连接层替换成了卷积层,另外加了8个卷积层。某些层通过textboxes layers之后预测输出,然后nms处理,所以textboxes++只包含卷积层和pooling层,因此可以使用不同尺度的输入。
3.2 default boxes
文章图片
上图黄色实线框是GT,绿色虚线框是匹配到的Default boxe,红色箭头是学习过程,绿色实现是最小外界框。
网络预测框的表示:
文章图片
用四边形或者矩形表示,长宽比默认为(1, 2, 3, 5, 1/2, 1/3, 1/5),为了适应多个方向的文本。
还为文本设置了垂直偏移,使得默认框在垂直方向密集,如下图所示,没有垂直偏移的只有黑色虚线框,就会漏掉很多连续的垂直方向文本。黄色虚线框是加入了垂直偏移后的,文本信息都被包围了进去。
文章图片
3.3 调整GT 3.4 损失函数
文章图片
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)。
文章图片
3.7 多尺度训练 为了提高训练速度,将随机裁剪的区域调整为大小相对较小的图像。然而,由于其复杂的体系结构,所建议的TextBoxes++的输入图像可以有任意大小。为了更好地处理多尺度文本,我们还在训练阶段的最后几千次迭代中使用了更大的尺度输入大小。
3.8 有效级联NMS 测试的时候改进了nms,将6个尺度的图片归一化,进行nms,由于四边形的nms耗时较多,我们将nms分成了两步执行:
- 进行nms在最小外接框上,设置threshold= 0.5,这一步很快且消除了大量框。
- 四边形nms设置tnreshold = 0.2 输出作为预测结果。
文章图片
文章图片
文章图片
文章图片
4. 总结 TextBoxes和TextBoxes++都是基于SSD的改进,通过改变Default boxes的长宽比、改变卷积核的大小、输入图像多尺度以及单目标检测来更好的定位文本信息。并且它们端到端可训练,加入了识别功能,并通过识别结果来自学习。
但是它们也有局限性,不能很好的检测大型文本、垂直文本(这个可能训练过以后会好)、弯曲文本。
我又看到了白翔老师在ICDAR2017的学术报告PPT,其中提到TextBoxes++为进一步扩大卷积神经网络的感受野,使用了联结多种特征图的inception模块,举个例子,下图的inception模块整合了33、15、5*1三种不同卷积核产生的特征图:
文章图片
结果表明,inception模块可以很有效地检测长文本。
文章图片
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.数据增广之详细理解
推荐阅读
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 生活随笔|好天气下的意外之喜
- 感恩之旅第75天
- python学习之|python学习之 实现QQ自动发送消息