[text detecte] Textboxes
https://zhuanlan.zhihu.com/p/43545190https://arxiv.org/abs/1611.06779https://github.com/MhLiao/TextBoxes文章目录论文关键ideaPipeline:Text-box layerLearningMulti-scale Inputs非极大值抑制(NMS)训练参数总结源码实现与论文中的差异论文关键ide
- https://zhuanlan.zhihu.com/p/43545190
- https://arxiv.org/abs/1611.06779
- https://github.com/MhLiao/TextBoxes
论文关键idea
本文和SegLink一样,也是在SSD的基础上进行改进的.相比SSD做了以下的改进:
- 修改了default box的apect ratio,分别为
[1 2 3 5 7 10]
(w:h),目的是适应文本行长度比较长,高度比较短的特性,也就是说现在的default box是长条形 - 提出了text-box层,修改classifier卷积核的大小为
1x5
,而SSD中卷积核的大小为3x3
,这样做的目的是更适合文本行的检测,避免引入非文本噪声 - 提出了端到端的训练框架.在训练的时候,输入图像由单尺度变成了多尺度
Pipeline:
TextBoxes是一个28层的全连接卷积网络,整个网络结构是基于SSD的改进版,具体步骤如下:
- 对于特征提取层:依然采用VGG16作为主干特征网络,保持conv1_1到conv4_3不变,将VGG16的最后两个全连接层改成卷积层.并在此网络的基础上增加若干个卷积层和池化层(conv_6到pool11).
- 对于text-box层:主要是通过提取不同层(包括conv4_3,conv7,conv8_2,conv9_2,conv10_2,pool11)的feature map,分别通过不规则形状( [公式] )的卷积核.对于不同的feature map,最后输出的维度为72
- 将上述的输出经过非极大值抑制(NMS),得到最终的输出结果.
具体的网络结构如下:
为了更好地与SSD网络结构进行对比,这里也给出SSD的网络结构,如下:
Text-box layer
它是TextBoxes的核心,同时负责两种预测:文本行/非文本行预测和文本行的bbox预测.在每个特征图的每个位置上,它同时输出文本行的概率及其相对于default box的偏移.
- default box
为了更好地适应文本行的large aspect ratio,论文中设计了长宽比分别是1、2、3、5、7、10的default box(即长条形的default box)。但同时也引入了另外一个问题:default box在水平方向上排列紧密而垂直方向上排列稀疏,这会造成检测失误的情况
针对上述问题,论文中将水平方向上的这些默认框全部向下平移半个区域的单位(下图中黑色与绿色,蓝色与红色),这样一个位置总共12
个默认框,解决了默认框排列不均匀的问题。
- 输出层的卷积核
在text-box层采用的是不规则(核大小为 [公式] )的卷积核,而SSD中采用的是的 [公式] 卷积核,这就产生了矩形感受野,更适合用于文字检测,避免正方形感受野引入的噪声.
值得注意的是:TextBoxes主体结构全部由卷积层和池化层构成,因此它在训练和检测的过程中可以适应任何尺寸的图片。
- 层输出维度
每个位置有12个default boxes,所以网络的输出维度:12x(2+4)=72
,其中2表示文本/非文本,4表示bbox的(x,y,w,h)
Learning
损失函数方面,TextBoxes的损失函数与SSD的损失函数一样,也包含两部分构成:文本行的二分类损失和文本行的bbox位置回归损失,具体公式如下:
Multi-scale Inputs
虽然在default box和卷积核上进行了改进和优化,但是在检测长文本行(即超过了默认框的最大比例)还是会出现检测不到的情况.针对这个问题,
论文提出将原图片放缩到不同的大小(这里缩放到5个不同的尺寸,分别为 300x300;700x700;300x700;500x700;1600x1600
),
这样某些在水平方向很长的文字就会被挤压从而满足默认框的比例,这种方法提高了检测的准确度,但是会消耗一定的运算能力。
非极大值抑制(NMS)
对text-box层的输出,采用非极大值抑制得到最终的检测结果
训练参数
TextBoxes训练的图片大小为 300x300
,使用的SGD进行优化,Momentum设置的是0.9,
权重衰变(weightdecay)设置的是 5e-4 。学习率开始的时候为 1e-3 ,经过40k次迭代后 1e-4
总结
- 与SegLink一样,TextBoxes也是基于SSD进行改进,与SSD和SegLink的不同之间在于default box的个数及aspect ratio.输出层的卷积核大小也不一样
- 与CTPN一样,TextBoxes在水平方向检测效果的好,因为其default box是水平框,回归的是水平矩形框
- TextBoxes的不足之处,对于曝光过度的地方并不能识别出文字,对于字符之间间距过大的单词识别效率也不高
源码实现与论文中的差异
- TextBoxes的源码是基于caffe的实现,虽然文中说的text-box层中每个feature map的输出维度是72(12个default box的文本/非文本得分及bbox的位置信息),
而实际源码中除了conv4_3的输出维度是12x(2+4)=72
,其它层的(conv7,conv8_2,conv9_2,conv10_2,pool11)的输出维度是14x(2+4)=84
,这里和SSD一样,每层的default box的个数不同. - 论文中text-box层中的pool11的卷积核大小为
1x1
,而实际源码中的卷积核的大小为1x5
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)