最近拜读了白翔老师等的巨著TextBoxes++,现给出我看完论文之后的理解,和大家一起研究研究,小女子才疏学浅,如有错误,请多多指教,望不要嫌弃!(没有大片时间来写,可能需要一段时间完成)
大家知道我们所知道的目标检测检测的目标框默认是矩形框,常见的物体检测,这种矩形框检测可能对物体识别的影响不是很大,但在图像中文字检测识别来说,检测非矩形框的文字区域对后面的识别是非常重要的,这篇论文就是给出了任意四边形(或者倾斜矩形)的文字区域检测方法,该方法是基于SSD实现的,要想理解该论文,建议先看懂Faster RCNN、SSD等(先理论,后代码,在理解上有点点区别,建议都要看)。下面正式开始这篇论文的解读:
摘要:
场景文本检测是场景文字识别中不可或缺的一步,也是具有挑战性的一步;与一般物体检测相比,难点在于场景中的文字方向多变、多种比例、字小;该论文提出了TextBoxes++,检测任意方向的场景文本,具有很高的accuracy和efficiency: 在1024*1024的ICDAR 2015上 f-measure = 0.817 且速度上达到11.6 fps,........(作者给出的源码:https://github.com/MhLiao/TextBoxes_plusplus)
Introduction、Related works:
略
TextBoxes++
A. 概要:
TextBoxes++建立在一个端对端的全卷积网络上,能够检测任意方向的文本,实在SSD的基础上改进的。该论文通过四边形或者倾斜的矩形(oriented rectangles)来表示图像中文本区域,在SSD的各个输出层后面通过预测回归(edefalut boxs------类似Faster RCNN中的anchor-----到四边形或倾斜的矩形)从而检测任意方向的文本区域。另外:该论文中使用了密集的default box来更好的检测文本,并且由于文本区域的特点,使用了长卷积核来更好的提取文本特征。
B_1. 网络结构
如上图(盗的,不重要*_*),和SSD类似,使用VGG作为base_network,将fc6、fc7都换成卷积层,再在后面加上几个卷积层,我们知道SSD在6个不同的卷积层的feature maps上做检测从而达到检测不同尺度的物体的目的,这里类似(具体做法,在各个输出卷积层后面连接一个用于检测的卷积层并输出各个default box的类别----这里是包含text的概率-----以及box位置偏置信息)。
B_2 . default box ( 本文最重要的地方 )
TextBoxes++最重要的部分就是text-box layer ( 就是6个卷积的feature map后加上的用于检测的卷积层;和SSD的区别在于: 1、卷积核大小由 3*3 变为3*5;2、SSD的输出是每个box的类别信息以及4个位置偏置信息(x,y,w,h,就可以计算真实box(矩形)位置),而这里类别信息就1个类别, 位置输出为14或11,原因在后面讲 )。
Text-box layer在feature map的基础上预测每个box的文本存在概率(text presence)和box信息,位置信息输出包括:倾斜的矩形框(或者四边形),以及包含倾斜矩形的最小的水平方向的矩形框;通过预测每个default box(水平方向矩形)到四边形等的回归信息得到到。
首先,假设表示default box,相对应的四边形表示方法为:(便于后面IOU),倾斜的矩形表示为:,其中,是default box的中心点,是default box的宽度和高度,四边形和矩形表示的计算方法如下:
四边形左上角坐标
四边形右上角坐标
四边形右下角坐标
四边形左下角坐标
倾斜矩形左上角坐标
倾斜矩形右上角坐标
倾斜矩形高度
然后,在每个feature map后的text-box layer将预测每个box上的文本存在概率以及位置偏置(offsets, 至于为什么是偏置,而不是直接坐标点的值,这个我将会在另一片博客中解释---------Faster RCNN论文及代码解释),如果检测四边形,输出值为:,检测倾斜矩形时,输出值为:。则, 检测到的最小矩形和四边形(或倾斜矩形)为:
在训练阶段,default box与Groud Truth计算得到真实值,然后通过真实值和预测值之间的差距计算LOSS值。
如果该博客对你有用,点个赞(*—*)