目标检测|目标检测之模型篇(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:
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/cdf4a5d29b2c432eb0f1fb56a293a188.jpg)
文章图片
TextBoxes++:
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/e2d9683a19de4d3d9f5c03c1866f41ec.jpg)
文章图片
模型的对比如上图所示,其实大体框架基本没变,就是卷积层从conv6变成了conv5。采用最基本的VGG16,保留了conv1_1到conv5_3,将最后两层由全连接层替换成了卷积层,另外加了8个卷积层。某些层通过textboxes layers之后预测输出,然后nms处理,所以textboxes++只包含卷积层和pooling层,因此可以使用不同尺度的输入。
3.2 default boxes
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/df2174f0617840c6ab41c3c474ea424e.jpg)
文章图片
上图黄色实线框是GT,绿色虚线框是匹配到的Default boxe,红色箭头是学习过程,绿色实现是最小外界框。
网络预测框的表示:
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/fce942692f3b43968ec450b3810e8a66.jpg)
文章图片
用四边形或者矩形表示,长宽比默认为(1, 2, 3, 5, 1/2, 1/3, 1/5),为了适应多个方向的文本。
还为文本设置了垂直偏移,使得默认框在垂直方向密集,如下图所示,没有垂直偏移的只有黑色虚线框,就会漏掉很多连续的垂直方向文本。黄色虚线框是加入了垂直偏移后的,文本信息都被包围了进去。
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/540a51893d8e47a0964b1cd0a47762f6.jpg)
文章图片
3.3 调整GT 3.4 损失函数
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/63cd8445502848cb90e5c09b66514890.jpg)
文章图片
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++】](https://img.it610.com/image/info8/9e68bcbfdb5e4d1ea54a53a1b5e8955d.jpg)
文章图片
3.7 多尺度训练 为了提高训练速度,将随机裁剪的区域调整为大小相对较小的图像。然而,由于其复杂的体系结构,所建议的TextBoxes++的输入图像可以有任意大小。为了更好地处理多尺度文本,我们还在训练阶段的最后几千次迭代中使用了更大的尺度输入大小。
3.8 有效级联NMS 测试的时候改进了nms,将6个尺度的图片归一化,进行nms,由于四边形的nms耗时较多,我们将nms分成了两步执行:
- 进行nms在最小外接框上,设置threshold= 0.5,这一步很快且消除了大量框。
- 四边形nms设置tnreshold = 0.2 输出作为预测结果。
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/3227ef01613e4acf9f50fd9dd9aad666.jpg)
文章图片
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/e0a75b77771d4549b77c00e7042c0f58.jpg)
文章图片
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/9005c6dd4d124141a5a8b5855ea39cbf.jpg)
文章图片
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/e89abf74cf5b43539fa6487339e7ae7c.jpg)
文章图片
4. 总结 TextBoxes和TextBoxes++都是基于SSD的改进,通过改变Default boxes的长宽比、改变卷积核的大小、输入图像多尺度以及单目标检测来更好的定位文本信息。并且它们端到端可训练,加入了识别功能,并通过识别结果来自学习。
但是它们也有局限性,不能很好的检测大型文本、垂直文本(这个可能训练过以后会好)、弯曲文本。
我又看到了白翔老师在ICDAR2017的学术报告PPT,其中提到TextBoxes++为进一步扩大卷积神经网络的感受野,使用了联结多种特征图的inception模块,举个例子,下图的inception模块整合了33、15、5*1三种不同卷积核产生的特征图:
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/1210b0e204ac4c5fb69d528f1c1dd3a5.jpg)
文章图片
结果表明,inception模块可以很有效地检测长文本。
![目标检测|目标检测之模型篇(8)【TextBoxes/TextBoxes++】](https://img.it610.com/image/info8/7d8f33094c4a4c3db17aa3add9be8e61.jpg)
文章图片
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自动发送消息