OCR检测方法(一)——TextBoxes与TextBoxes++算法详解
转载自:TextBoxes与TextBoxes++算法详解
尊重原创,请看原文
文章目录
TextBoxes
《TextBoxes: A Fast Text Detector with a Single Deep Neural Network
》发表于AAAI2017
github地址:https://github.com/MhLiao/TextBoxes
这篇文章是借鉴SSD的网络用于文字检测,创新也不是太大。还有一点要清楚的是作者设计该网络的时候是将该网络作为word-based这一类来做的,就是说该算法设计初衷是针对词分割的,这里说的词应该是对于英文来说的。
一、网络结构
网络结构如下图所示,该网络结构就是将SSD中的全连接去掉换成卷积,并且为了适应文字检测的任务(考虑到文字的长宽比不同于物体,可能长宽比较大)使用15的卷积核代替33的卷积核。还有default boxes的比例也不同于SSD,采用1、2、3、5、7、10几种。得到的default boxes后使用SSD一样的回归方式回归出可能的结果。
还有一个不同于SSD的地方,因为文中采用了不一样尺寸的default boxes,这些尺寸都是细长形的,这样可能导致default boxes在水平方向密集在垂直方向上稀疏,从而导致检测不准确。为了解决上述问题,文中给每个default box加上垂直偏移,如下图所示。下图中为了便于观看只显示了宽高比为1和5的default box,其余比例的box以此类推。图中黑色框(宽高比为5的框)和蓝色框(宽高比为1的框)是中心在cell中心的default box,绿色(宽高比为5的框)和红色(宽高比为1的框)的框中心位于cell中心加上cell一半高的位置。
二、损失函数的定义
TextBoxes++
《TextBoxes++: A Single-Shot Oriented Scene Text
Detector》发表于AAAI2018
github地址:https://github.com/MhLiao/TextBoxes_plusplus
从名字就可以看出,该文章是上面TextBoxes的一个扩展,扩展在TextBoxes只可以检测水平文本,而TextBoxes++可以检测多角度的文本,但该方法也是基于SSD结构且是针对词来检测的(word-based)。
一、网络结构
不同于TextBoxes,为了更好的对多角度文本进行检测,文章做了三个改动,一是改了default box的宽高比,使用1、2、3、5、1/2、1/3、1/5;二是将15的卷积核改为35用来生成text box layers,三是网络的输出不同(这点会在ground truth中介绍)。框架与TextBoxes是一样的,如下图所示。
类似于TextBoxes,因为使用的是细长形的default boxes,这样可能导致default boxes在水平方向密集在垂直方向上稀疏,从而导致检测不准确。为了解决上述问题,文中给每个default box加上垂直偏移,如下图所示。
二、网络的输出及ground truth的表示
网络输出
网络的输出是为了适应多角度的文本而相对于SSD和TextBoxes做了一些更改。网络输出一系列的多角度文本框使用{q}或者{r}集合表示,同时输出对应与多角度文本框的最小外界水平矩形框使用{b}集合表示。
多角度文本框是通过default box回归得到的,如下图表示,图中绿色虚线表示与ground truth匹配的default box,黄色框表示ground truth,红色箭头表示回归的方向,黑色框表示未匹配到真值的default box,绿色实线框表示对应与ground truth的最小外界水平矩形框。
ground truth的表示
a) 对于采用四点坐标表示的文本框
水平框的ground truth就是标定框的外界水平矩形,且该矩形的四个点是顺时针排列的,第一个点为矩形的左上角点
文本框的ground truth就是标定的框,但是规定文本框的四个点也为顺时针排列,第一个点为左上角点,这里左上角点的定义为将文本框与水平框的四个点按照顺时针方向计算四点的距离和(这里需要计算四次)。当距离和最小的那次,与水平框左上角点对于的点为文本框的第一个点。
b)对于采用两个点和一个高来表示的文本框(旋转矩形)
水平框获得方法同a)
文本框的获得,先按照a)中的方式确定出文本框的左上和右上点,高为旋转矩形的高
三、损失函数的定义
损失函数同TextBoxes
TextBoxes++还有一些数据增强的方法和其他实验,详细可以查看原文
自己的总结
textboxes
- 两种方法都是在SSD的基础上做修改,所以要理解SSD的相关思路
- 相对SSD修改了default boxes的长宽比
- 网络中最后一层采用1×5的conv,(考虑到文字比较长)
- default box在ssd的基础上加了垂直偏移,所以default box会是ssd的两倍
textboxes++
- 还是采用同样的default box生成策略
- 修改了default box的宽高比
- 预测输出的最后一层conv的卷积核改为了3×5
- 网络的输出有两种形式,输出4个点,8个值的要好理解一些
疑问
- 为default box指定label的时候采用的是计算矩形IOU
- default box太多了,动不动就是100w,实时性是大问题