• 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
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐