这是两篇文章,因为这两篇文章大部分是相同的所以写一块了。

TextBoxes

《TextBoxes: A Fast Text Detector with a Single Deep Neural Network
》发表于AAAI2017
github地址:https://github.com/MhLiao/TextBoxes

这篇文章是借鉴SSD的网络用于文字检测,创新也不是太大。还有一点要清楚的是作者设计该网络的时候是将该网络作为word-based这一类来做的,就是说该算法设计初衷是针对词分割的,这里说的词应该是对于英文来说的。

一、网络结构

网络结构如下图所示,该网络结构就是将SSD中的全连接去掉换成卷积,并且为了适应文字检测的任务(考虑到文字的长宽比不同于物体,可能长宽比较大)使用1*5的卷积核代替3*3的卷积核。还有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一半高的位置。

二、损失函数的定义

文章中的损失函数与SSD的损失函数一样,定义如下:
L ( x , c , l , g ) = 1 N ( L c o n f ( x , c ) + α L l o c ( x , l , g ) ) L(x,c,l,g)=\frac{1}{N}(L_{conf}(x,c)+\alpha L_{loc}(x,l,g)) L(x,c,l,g)=N1​(Lconf​(x,c)+αLloc​(x,l,g))
其中, x x x表示匹配指示矩阵(match indication matrix),对于第i个default box和第j个ground truth,如果二者匹配则 x i j = 1 x_{ij}=1 xij​=1反之亦然,c表示预测的置信度,l表示预测的位置,g表示真实的位置。 α \alpha α这里为1,N为与ground truth匹配的default boxes的总数, L l o c L_{loc} Lloc​为L1 loss, L c o n f L_{conf} Lconf​为2值得softmax分类。

文章还有加了CRNN组成的end to end等等实验,可以观看原文。

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;二是将1*5的卷积核改为3*5用来生成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的最小外界水平矩形框。

default box可以用公式表示为 b 0 = ( x 0 , y 0 , w 0 , h 0 ) b_{0}=(x_{0}, y_{0}, w_{0}, h_{0}) b0​=(x0​,y0​,w0​,h0​),回归出来的多角度文本框有两种表示方式,一种是使用四个点表示 q 0 = ( x 01 q , y 01 q , x 02 q , y 02 q , x 03 q , y 03 q , x 04 q , y 04 q ) q_{0}=(x^{q}_{01},y^{q}_{01},x^{q}_{02},y^{q}_{02},x^{q}_{03},y^{q}_{03},x^{q}_{04},y^{q}_{04}) q0​=(x01q​,y01q​,x02q​,y02q​,x03q​,y03q​,x04q​,y04q​),另一种是使用四边形的左上点、右上点和旋转矩形的高表示 r 0 = ( x 01 r , y 01 r , x 02 r , y 02 r , h 0 r ) r_{0}=(x^{r}_{01},y^{r}_{01},x^{r}_{02},y^{r}_{02},h^{r}_{0}) r0​=(x01r​,y01r​,x02r​,y02r​,h0r​),其中 ( x 0 , y 0 ) (x_{0}, y_{0}) (x0​,y0​)表示default box的中心点, w 0 w_{0} w0​和 h 0 h_{0} h0​表示default box的宽和高。上述各个参数间的关系如下列公式表示:
x 01 q = x 0 − w 0 / 2 , y 01 q = y 0 − h 0 / 2 , x^{q}_{01}=x_{0}-w_{0}/2,y^{q}_{01}=y_{0}-h_{0}/2, x01q​=x0​−w0​/2,y01q​=y0​−h0​/2,
x 02 q = x 0 + w 0 / 2 , y 02 q = y 0 − h 0 / 2 , x^{q}_{02}=x_{0}+w_{0}/2,y^{q}_{02}=y_{0}-h_{0}/2, x02q​=x0​+w0​/2,y02q​=y0​−h0​/2,
x 03 q = x 0 + w 0 / 2 , y 03 q = y 0 + h 0 / 2 , x^{q}_{03}=x_{0}+w_{0}/2,y^{q}_{03}=y_{0}+h_{0}/2, x03q​=x0​+w0​/2,y03q​=y0​+h0​/2,
x 04 q = x 0 − w 0 / 2 , y 04 q = y 0 + h 0 / 2 , x^{q}_{04}=x_{0}-w_{0}/2,y^{q}_{04}=y_{0}+h_{0}/2, x04q​=x0​−w0​/2,y04q​=y0​+h0​/2,
x 01 r = x 0 − w 0 / 2 , y 01 r = y 0 − h 0 / 2 , x^{r}_{01}=x_{0}-w_{0}/2,y^{r}_{01}=y_{0}-h_{0}/2, x01r​=x0​−w0​/2,y01r​=y0​−h0​/2,
x 02 r = x 0 + w 0 / 2 , y 02 r = y 0 − h 0 / 2 , x^{r}_{02}=x_{0}+w_{0}/2,y^{r}_{02}=y_{0}-h_{0}/2, x02r​=x0​+w0​/2,y02r​=y0​−h0​/2,
h 0 r = h 0 . h^{r}_{0}=h_{0}. h0r​=h0​.

与SSD做法一样,不是直接输出文本检测框的坐标而是输出回归的信息。
对于使用四点坐标表示文本框的表示方法来说,网络输出的是 ( Δ x , Δ y , Δ w , Δ h , Δ x 1 , Δ y 1 , Δ x 2 , Δ y 2 , Δ x 3 , Δ y 3 , Δ x 4 , Δ y 4 , c ) (\Delta x,\Delta y,\Delta w,\Delta h,\Delta x_{1},\Delta y_{1},\Delta x_{2},\Delta y_{2},\Delta x_{3},\Delta y_{3},\Delta x_{4},\Delta y_{4},c) (Δx,Δy,Δw,Δh,Δx1​,Δy1​,Δx2​,Δy2​,Δx3​,Δy3​,Δx4​,Δy4​,c),最终输出的水平矩形 b = ( x , y , w , h ) b=(x,y,w,h) b=(x,y,w,h)和文本框 q = ( x 1 q , y 1 q , x 2 q , y 2 q , x 3 q , y 3 q , x 4 q , y 4 q ) q=(x^{q}_{1},y^{q}_{1},x^{q}_{2},y^{q}_{2},x^{q}_{3},y^{q}_{3},x^{q}_{4},y^{q}_{4}) q=(x1q​,y1q​,x2q​,y2q​,x3q​,y3q​,x4q​,y4q​)计算方式如下所示,c表示置信度:
x = x 0 + w 0 Δ x , x=x_{0}+w_{0}\Delta x, x=x0​+w0​Δx,
y = y 0 + h 0 Δ y , y=y_{0}+h_{0}\Delta y, y=y0​+h0​Δy,
w = w 0 e x p ( Δ w ) , w=w_{0}exp(\Delta w), w=w0​exp(Δw),
h = h 0 e x p ( Δ h ) , h=h_{0}exp(\Delta h), h=h0​exp(Δh),
x n q = x 0 n q + w 0 Δ x n q , n = 1 , 2 , 3 , 4 x^{q}_{n}=x^{q}_{0n}+w_{0}\Delta x^{q}_{n},n=1,2,3,4 xnq​=x0nq​+w0​Δxnq​,n=1,2,3,4
y n q = y 0 n q + h 0 Δ y n q , n = 1 , 2 , 3 , 4 y^{q}_{n}=y^{q}_{0n}+h_{0}\Delta y^{q}_{n},n=1,2,3,4 ynq​=y0nq​+h0​Δynq​,n=1,2,3,4

上面是对于输出检测文本框使用四点坐标表示的,如果采用的是第二种方式表示(旋转矩形),则网络输出为 ( Δ x , Δ y , Δ w , Δ h , Δ x 1 , Δ y 1 , Δ x 2 , Δ y 2 , Δ h r , c ) (\Delta x,\Delta y,\Delta w,\Delta h,\Delta x_{1},\Delta y_{1},\Delta x_{2},\Delta y_{2},\Delta h^{r},c) (Δx,Δy,Δw,Δh,Δx1​,Δy1​,Δx2​,Δy2​,Δhr,c),对于最终输出 r = ( x 1 r , y 1 r , x 2 r , y 2 r , h r ) r=(x^{r}_{1},y^{r}_{1},x^{r}_{2},y^{r}_{2},h^{r}) r=(x1r​,y1r​,x2r​,y2r​,hr)计算方法为:
x n r = x 0 n r + w 0 Δ x n r , n = 1 , 2 x^{r}_{n}=x^{r}_{0n}+w_{0}\Delta x^{r}_{n},n=1,2 xnr​=x0nr​+w0​Δxnr​,n=1,2
y n r = y 0 n r + h 0 Δ y n r , n = 1 , 2 y^{r}_{n}=y^{r}_{0n}+h_{0}\Delta y^{r}_{n},n=1,2 ynr​=y0nr​+h0​Δynr​,n=1,2
h r = h 0 r e x p ( Δ h r ) . h^{r}=h^{r}_{0}exp(\Delta h_{r}). hr=h0r​exp(Δhr​).

ground truth的表示

a) 对于采用四点坐标表示的文本框

水平框的ground truth就是标定框的外界水平矩形,且该矩形的四个点是顺时针排列的,第一个点为矩形的左上角点

文本框的ground truth就是标定的框,但是规定文本框的四个点也为顺时针排列,第一个点为左上角点,这里左上角点的定义为将文本框与水平框的四个点按照顺时针方向计算四点的距离和(这里需要计算四次)。当距离和最小的那次,与水平框左上角点对于的点为文本框的第一个点。

b)对于采用两个点和一个高来表示的文本框(旋转矩形)

水平框获得方法同a)

文本框的获得,先按照a)中的方式确定出文本框的左上和右上点,高为旋转矩形的高

三、损失函数的定义

损失函数同TextBoxes

TextBoxes++还有一些数据增强的方法和其他实验,详细可以查看原文

中文本定位与识别的评测方法

欢迎加入OCR交流群:785515057(此群已满)
欢迎加入OCR交流群2:826714963

TextBoxes与TextBoxes++算法详解相关推荐

  1. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

  2. 图论-最短路Dijkstra算法详解超详 有图解

    整体来看dij就是从起点开始扩散致整个图的过程,为什么说他稳定呢,是因为他每次迭代,都能得到至少一个结点的最短路.(不像SPFA,玄学复杂度) 但是他的缺点就是不能处理带负权值的边,和代码量稍稍复杂. ...

  3. C++中的STL算法详解

    1.STL算法详解 STL提供能在各种容器中通用的算法(大约有70种),如插入.删除.查找.排序等.算法就是函数模板,算法通过迭代器来操纵容器中的元素.许多算法操作的是容器上的一个区间(也可以是整个容 ...

  4. 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码

    粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...

  5. 基础排序算法详解与优化

    文章图片存储在GitHub,网速不佳的朋友,请看<基础排序算法详解与优化> 或者 来我的技术小站 godbmw.com 1. 谈谈基础排序 常见的基础排序有选择排序.冒泡排序和插入排序.众 ...

  6. 目标检测 RCNN算法详解

    原文:http://blog.csdn.net/shenxiaolu1984/article/details/51066975 [目标检测]RCNN算法详解 Girshick, Ross, et al ...

  7. Twitter-Snowflake,64位自增ID算法详解

    Twitter-Snowflake,64位自增ID算法详解 from: http://www.lanindex.com/twitter-snowflake%EF%BC%8C64%E4%BD%8D%E8 ...

  8. 数据结构与算法详解目录

    数据结构与算法详解是一本以实例和实践为主的图书,主要是经典的数据结构与常见算法案例,来自历年考研.软考等考题,有算法思路和完整的代码,最后提供了C语言调试技术的方法. 后续配套微课视频. 第0章  基 ...

  9. [搜索]波特词干(Porter Streamming)提取算法详解(2)

     接[搜索]波特词干(Porter Streamming)提取算法详解(1), http://blog.csdn.net/zhanghaiyang9999/article/details/4162 ...

  10. 【目标检测】Faster RCNN算法详解

    转载自:http://blog.csdn.net/shenxiaolu1984/article/details/51152614 Ren, Shaoqing, et al. "Faster ...

最新文章

  1. r语言和python-R语言和Python —— 一个
  2. all any 或 此运算符后面必须跟_用 ANY、SOME 或 ALL 修改的比较运算符
  3. Anaconda, conda, pyenv, virtualenv的区别
  4. 什么是CPU虚拟化?打开好还是关闭好?
  5. VMware卸载后再安装提示无法打开注册表项 UNKNOWN\Components\…解决办法
  6. linux系统怎么改待机时间,LINUX操作系统——易用程度/待机时间/连接功能_手机_手机其它OS-中关村在线...
  7. html 分号的作用,分号的作用是什么
  8. 恶心的极速输入法windows10 删除
  9. 成大事,赚大钱,都要有股永不服输的精神
  10. delphi 企业微信消息机器人_消息通知支持企业微信、钉钉机器人,MeterSphere v1.4.0发布...
  11. 卷积层的主要作用_对卷积神经网络CNN的理解,一文读懂卷积神经网络。
  12. 机械革命无法使用U盘启动linux,机械革命bios设置,教您机械革命bios怎么设置u盘启动...
  13. 《计算机组成原理》第九章:控制单元【知识点总结】
  14. 另辟蹊径!公众号留言功能新思路
  15. CSDN便捷编辑收藏内容和删除收藏夹(网页版)
  16. 电视、报纸、杂志、网络等曝光度好的媒体有哪些?
  17. 说一下DDOS攻击与CC攻击的区别
  18. android开发资料!4年小Android的心路历程,附大厂真题面经
  19. PG数据库 timestamp入库时间少8小时
  20. PDF下载!南京大学的Python数据分析课件

热门文章

  1. 开源配置管理系统的选择和搭建
  2. 最详细的MOS管讲解
  3. 软件性能测试参数化数据准备,性能测试之如何准备测试数据
  4. iframe 嵌入页面
  5. GitHub如何从远程库克隆
  6. rocketMq监控平台界面
  7. 利用微信小程序实现web监控界面
  8. ADSL modern 的常用密码
  9. 敏捷观点和态度-《敏捷项目管理》读后感
  10. matlab加速度转化为位移,科学网—Matlab编写由加速度积分得到速度和位移函数 - 王德才的博文...