共计 8547 个字符,预计需要花费 22 分钟才能阅读完成。
深度学习利用篇 - 计算机视觉 -OCR 光学字符识别[7]:OCR 综述、罕用 CRNN 识别方法、DBNet、CTPN 检测办法等、评估指标、利用场景
1.OCR 综述
OCR(Optical Character Recognition, 光学字符识别)是指对图像进行剖析辨认解决,获取文字和版面信息的过程,是典型的计算机视觉工作,通常由文本检测和文本辨认两个子工作形成。
- 文字检测:将图片中的文字区域地位检测进去(如图 1(b)所示);
- 文字辨认:对文字区域中的文字进行辨认(如图 1(c)所示)。
- OCR 倒退历程
早在 60、70 年代,人们就开始对 OCR 进行钻研。在钻研的初期,次要以文字识别方法钻研为主,而且辨认的文字仅为 0 - 9 的数字。数字辨认次要利用在辨认邮件上的邮政编码。
在深度学习呈现之前,传统算法 (如积分投影、侵蚀收缩、旋转等) 在 OCR 畛域占据主导地位。其规范的解决流程包含:图像预处理、文本行检测、单字符宰割、单字符识别、后处理。
其中:
- 图像预处理次要是对图像的成像问题进行修改,包含几何变换(透视、扭曲、旋转等),去模糊、光线改正等;
- 文本检测通常应用连通域、滑动窗口两个方向;
- 字符识别算法次要包含图像分类、模版匹配等。
受传统算法的局限性,传统 OCR 仅在比拟规整的印刷文档上体现比拟好,但在简单场景 (图像含糊、低分辨率、烦扰信息) 之下,文字检测、辨认性能都不够现实。
自 2012 年 AlexNet 在 ImageNet 比赛夺冠以来,深度学习办法开始在图像视频畛域大幅超过传统算法,OCR 畛域也引入了深度学习,包含基于卷积神经网络(Convolutional Neural Network, CNN)来取代传统算法提取特色。深度学习 OCR 次要分为 2 步,首先是检测出图像中的文本行、接着进行文本辨认。
1.1 OCR 罕用检测办法
OCR 文字检测就是将图片中的文字区域检测进去。
罕用的基于深度学习的文字检测办法个别能够分为基于回归的、基于宰割的两大类,当然还有一些将两者进行联合的办法。
1.1.1 基于回归的办法
基于回归的办法又分为 box 回归和像素值回归:
1) box 回归
采纳 box 回归的办法次要有 CTPN、Textbox 系列和 EAST
- 长处:对规定形态文本检测成果较好
- 毛病:无奈精确检测不规则形态文本。
2) 像素值回归
采纳像素值回归的办法次要有 CRAFT 和 SA-Text,这类算法可能检测蜿蜒文本且对小文本成果优良然而实时性能不够。
1.1.2 基于宰割的算法
如 PSENet,这类算法不受文本形态的限度,对各种形态的文本都能获得较好的成果,然而往往后处理比较复杂,导致耗时重大。目前也有一些算法专门针对这个问题进行改良,如 DB,将二值化进行近似,使其可导,融入训练,从而获取更精确的边界,大大降低了后处理的耗时。
1.3 OCR 罕用识别方法
Rosetta
CRNN
STAR-Net
RARE
SRN
1.4 OCR 罕用评估指标
(1)检测阶段:先依照检测框和标注框的 IOU 评估,IOU 大于某个阈值判断为检测精确。这里检测框和标注框不同于个别的通用指标检测框,是采纳多边形进行示意。检测准确率:正确的检测框个数在全副检测框的占比,次要是判断检测指标。检测召回率:正确的检测框个数在全副标注框的占比,次要是判断漏检的指标。
(2)辨认阶段:字符识别准确率,即正确辨认的文本行占标注的文本行数量的比例,只有整行文本辨认对才算正确辨认。
(3)端到端统计:端对端召回率:精确检测并正确辨认文本行在全副标注文本行的占比;端到端准确率:精确检测并正确辨认文本行在 检测到的文本行数量 的占比;精确检测的规范是检测框与标注框的 IOU 大于某个阈值,正确辨认的的检测框中的文本与标注的文本雷同。
1.5 利用场景
在日常生活中,文字内容无处不在,依据拍摄的内容,主动剖析图像中的文字信息曾经成为人们的宽泛诉求。而通过深度学习技术,能够主动的定位文字区域,并且学习蕴含丰盛语义信息的特色,辨认出图像中的文字内容。以后这一技术曾经广泛应用于金融、交通等各行各业中。
- 通用场景:办公文档、广告图、表格、手写数字、天然场景图等;
- 卡证:身份证、银行卡、营业执照、名片等;
- 汽车:车牌、驾驶证、合格证等;
- 财务票据:火车票、飞机票、银行支票等;
- 医疗票据:医疗发票、病例首页等;
- …
1.6 OCR 面临的挑战
对应到 OCR 技术实现问题上,则个别面临仿射变换、尺度问题、光照有余、拍摄含糊等技术难点;另外 OCR 利用常对接海量数据,因而要求数据可能失去实时处理;并且 OCR 利用常部署在挪动端或嵌入式硬件,而端侧的存储空间和计算能力无限,因而对 OCR 模型的大小和预测速度有很高的要求。
2.OCR 检测办法
2.1 CTPN
CTPN(Connectionist Text Proposal Network)[1]是指标检测算法 Faster R-CNN 的改良算法,用于文字检测。CTPN 依据文本区域的特点做了专门的优化:
- 应用更加合乎天然场景文字检测特点的 anchor(相比于物体,文字尺寸小);
- 引入 RNN 用于解决场景文字检测中存在的序列特色;
- 引入 Side-refinement(边界优化)晋升文本框边界预测精度。
2.1.1CTPN 模型构造
CTPN 采纳的办法是将文本行宰割成一个个小块(长度是固定的),而后去检测这些小块,最初应用一种文本行结构法将所有块连起来,如 图 1 所示。
<center>
图 1 CTPN 序列特色 </center>
CTPN 网络结构如 图 2 所示:
<center>
图 2 CTPN 网络结构示意图 </center>
整个检测分为 5 步:
1)筹备数据集、并获取锚点 anchor;
2)输出图片,通过 backbone(用 VGG16 的前 5 个 Conv stage,即 Conv5),提取图片 feature map。通过 VGG16 之后失去的特色图长宽是原图的 1 /16,通道是 512。
3)在 Conv5 失去的 feature map 上再做卷积核大小为 3,步长为 1 的卷积,进一步提取特色,用于预测以后卷积核所在位置 k 个 anchor 对应的类别信息、地位信息。其中,C 示意通道数。
4)把每一行的所有窗口对应的 3 *3* C 的特色输出到 BiLSTM(双向 LSTM)网络中,提取文字的序列特色,这时候失去的特色是图像特色和序列特色的交融。
5)将第三步失去的特色输出到 FC 全连贯层,并将 FC 层特色输出两个分类或者回归层中。
CTPN 工作 1 的输入是 $$ 2k $$,用于预测候选区域 box 的起始 $$y$$ 坐标和高度 $$h$$;工作 2 是用来对前景和背景两个工作的分类评分;工作 3 是 $$k$$ 个输入的 side-refinement 的偏移 (offset) 预测。
2.1.2 模型 loss
CTPN 的 loss 分为三局部:
- Ls:预测每个 anchor 是否蕴含文本区域的 classification loss,采纳穿插熵损失;
- Lv:文本区域中每个 anchor 的核心 y 坐标 cy 与高度 h 的 regression loss,采纳 Smooth L1;
Lo:文本区域两侧 anchor 的核心 x 坐标 cx 的 regression loss,采纳 Smooth L1。
公式如下:
$L(s_{i},V_{j},O_{k})=\frac{1}{N_{s}}\sum\limits_{i}L^{cl}_{S}(S_{i},S^{*}_{i})+\frac{λ_{1}}{N_{v}}\sum\limits_{j}L^{re}_{V}(V_{j},V^{*}_{j})+\frac{λ_{2}}{N_{o}}\sum\limits_{k}L^{re}_{O}(O_{k},O^{*}_{k})$
其中,i 示意预测的所有 pn_anchor 中的第 i 个,Ns 示意 pn_anchor 的数量。
j 示意 IoU>0.5 的所有 pn_anchor 中的第 j 个,$v_{j}$ 为判断有文本的 pn_anchor,Nv 示意和 groudtruth 的 vertical IOU>0.5 的 pn_anchor 的数量。λ1 为多任务的均衡参数,个别取值 1.0。
Lo 只针对位于在文本区域的左边界和右边界的 pn_anchor,来精修边缘。
2.1.3 模型毛病
- 对于非程度的文本的检测成果不好
- 参考文献
[1] Detecting Text in Natural Image with Connectionist Text Proposal Network
2.2 EAST
CTPN 在程度文本的检测方面成果比拟好,然而对于竖直方向的文本,或者多方向的文本,CTPN 检测就很差。然而,在理论场景中,咱们会遇到多种存在竖直方向文本的状况,例如很多书本封面的文本,如 图 1 所示。
<center> 图 1 多计划文本示意图 </center>>
因而,很多学者也提出了各种改良办法,其中,比拟经典一篇的就是旷世科技在 2017 年提出来的 EAST[1]模型。
2.2.1 EAST 模型构造
EAST 的网络结构总共蕴含三个局部:Feature extractor stem(特征提取分支), Feature-merging branch(特色合并分支)以及 Output layer(输入层),网络结构如 图 2 所示:
<center> 图 2 EAST 网络结构示意图 </center>
每一部分网络结构:
1)特征提取分支
- 应用 backbone 网络提取特色,论文默认 backbone 为 PVANet;
也能够应用其余的卷积网络,比方 VGG16 等
2)特色合并分支
因为在一张图片中,各个文字尺寸大小不统一,所以须要交融不同档次的特色图,小文字的预测须要用到底层的语义信息,大文字的预测要用到高层的语义信息。
- 上一步提取的 feature map f1 被最先送入 unpool 层(将原特色图放大2倍);
- 而后与前一层的 feature map f2 进行拼接;
- 接着顺次送入卷积核大小为 1×1 和 3×3 的卷积层,核数通道数随着层递加,顺次为 128,64,32;
- 反复下面三个步骤2次;
- 最初将通过一个卷积核大小为 3×3,核数通道数为 32 个的卷积层;
3)输入层
网络层的输入蕴含文本得分和文本形态,依据不同的文本形态又分为 RBOX 和 QUAD 两种状况:
- RBOX:次要用来预测旋转矩形的文本,蕴含文本得分和文本形态(AABB boundingbox 和 rotate angle),一共有6个输入,这里 AABB 别离示意绝对于 top,right,bottom,left 的偏移;
- QUAD:用来预测不规则四边形的文本,蕴含文本得分和文本形态(8个绝对于 corner vertices 的偏移),一共有9个输入,其中 QUAD 有8个,别离为 $$(x_{i},y_{i}),i\in[1,2,3,4]$$。
2.2.2 模型 loss
EAST 损失函数由两局部组成,具体公式如下:
$$L=L_{s}+λ_{g}L_{g}$$
其中,$$L_{s}$$ 为分数图损失,$$L_{g}$$ 为几何损失,$$λ_{g}$$ 示意两个损失之间的重要性。
分数图损失
应用类均衡穿插熵:
$$L_{s} = -\beta Y^{*}log(\hat{Y})-(1-\beta)(1-Y^*)log(1-\hat{Y})$$
几何损失
- RBOX:IOU 损失
$$L_{AABB} = -log\frac{\hat{R}\cap R^*}{\hat{R}\cup R^*}$$
选转角度损失计算:$L_{\theta}(\hat{\theta},\theta^*) = 1-cos(\hat{\theta}-\theta^*)$
$$L_g=L_{AABB} + \lambda L_\theta$$
其中 $\hat{R}$ 代表预测的 AABB 几何形态,$R^*$ 为其对应的高空真实情况。
- QUAD:smooth L1 损失
$$ L_g = \min\limits_{\tilde{Q}\in P_{Q^*}} \sum\limits_{c_i \in C_Q, \tilde c_i \in C_\tilde Q}\frac{smoothed_{L_1}(c_i, \tilde{c}_i)}{8*N_{Q^*}} $$
其中 $N_{Q^*}$ 是四边形的短边长度,公式如下:
$$N_{Q^*} = \min\limits_{i=1}^{4} D(p_i, p_{(i mode 4)+1})$$
2.2.3 模型优缺点
长处
- 能够检测多方向的文本
毛病
- 不能检测蜿蜒文本
- 参考文献
[1] EAST: An Efficient and Accurate Scene Text Detector
2.3 DBNet
个别宰割算法流程是先通过网络输入文本宰割的概率图,而后应用事后设定好的阈值将概率图转换为二值图,最初应用后处理操作将像素级的后果转换为检测后果。然而,这样就会使得算法性能很大水平上取决于二值化时阈值的抉择。
DBNet[1]对这个流程进行了优化,对每个像素点进行自适应二值化,二值化的阈值由网络学习失去,彻底将二值化这一步骤退出到网络里一起训练,这样最终的输入图对于阈值就会十分鲁棒。
2.3.1 模型输出标签
DB 网络中,网络的输入为 3 个局部:概率图、阈值图和近似二值图:
- 概率图:图中每个像素点的值为该地位属于文本区域的概率。
- 阈值图:图中每个像素点的值为该地位的二值化阈值。
- 二值图:由概率图和阈值图通过 DB 算法计算失去,图中像素的值为 0 或 1。
在结构损失函数时,咱们须要获取对应的实在标签。阈值图的标签 $$G_{d}$$,概率图标签 $$G_{s}$$。DB 网络中,标签的获取形式参考了 PSENet(Progressive Scale Expansion Network, 渐进式尺度扩大网络)中的办法,应用扩张和膨胀的形式别离获取上述两个实在标签。标签的结构过程如 图 1 所示:
<center>
图 1 DB 标签结构示意图 </center>
在该办法中,对于一幅文字图像,文本区域的每个多边形应用一组线段 $G=\{S_k\}^n_{k=1}$ 来进行形容,n 为线段个数。如 图 1 所示,$n=14$。
概率图标签 $G_s$ 的获取办法应用了 Vatti clipping 算法,该算法罕用于膨胀多边形,其中,膨胀的偏移量 D 能够应用周长 L 和面积 A 计算失去,公式如下:
$$
D = \frac{A(1-r^2)}{L}
$$
其中,r 为膨胀因子,试验中依据教训设置为 0.4。
在阈值图标签 $G_d$ 的计算中,首先应用概率图标签 $G_s$ 的计算过程中失去的偏移量 D 进行多边形的裁减,而后计算 $G_d$ 与 $G_s$ 之间的像素到原始框最近边的归一化间隔,最初将其中的值进行缩放,失去的就是最终的阈值图标签 $G_d$。
DB 文本检测模型应用了规范的 FPN 构造,网络结构如 图 2 所示。
<center>
图 2 DB 模型网络结构示意图 </center>
- 第一模块:应用 CNN 网络,对输出图像提取特色,失去特色图,本试验应用的骨干网络是轻量化网络 MobileNetv3,同时应用了 FPN 构造,获取多尺度的特色,在本试验中,咱们提取 4 个不同尺度下的特色图做拼接。
- 第二模块:应用一个卷积层和两个转置卷积层的构造获取预测的概率图和阈值图;
- 第三模块:应用 DB 办法 获取近似二值图。
注:这里的 DB 办法和本文的 DB 模型是有差异的,本文提出的 DB 办法为可微二值化(Differentiable Binarization),接下来将会具体解释。
在传统的图像宰割算法中,咱们获取概率图后,会应用规范二值化(Standard Binarize)办法进行解决,将低于阈值的像素点置 0,高于阈值的像素点置 1,公式如下:
$$ B_{i,j}=\left{
\begin{aligned}
1 , if P_{i,j} >= t ,\
0 , otherwise
\end{aligned}
\right.$$
然而规范的二值化办法是不可微的,所以也就无奈放入到网络中进行优化。因而,本文中提出了可微二值化(Differentiable Binarization),简称 DB 办法。可微二值化也就是将规范二值化中的阶跃函数进行了近似,应用如下公式进行代替:
$$\hat{B} = \frac{1}{1 + e^{-k(P_{i,j}-T_{i,j})}}$$
其中,P 是上文中获取的概率图,T 是上文中获取的阈值图,k 是增益因子,在试验中,依据教训选取为 50。
规范二值化和可微二值化的比照图如 图 3(a) 所示。
之所以 DB 办法会改善算法性能,咱们能够在反向流传时梯度的计算上进行察看。当应用穿插熵损失时,正负样本的 loss 别离为 $l_+$ 和 $l_-$
$$ l_+ = -log(\frac{1}{1 + e^{-k(P_{i,j}-T_{i,j})}})$$
$$l_- = -log(1-\frac{1}{1 + e^{-k(P_{i,j}-T_{i,j})}})$$
咱们对输出 x 求偏导,则会失去:
$$\frac{\delta{l_+}}{\delta{x}} = -kf(x)e^{-kx}$$
$$\frac{\delta{l_-}}{\delta{x}} = -kf(x)$$
此时,因为有了加强因子 k,谬误预测对梯度的影响也就被放大了,从而能够促成模型的优化过程并产生更为清晰的预测后果。图 3(b) 中,$x<0$ 的局部为正样本预测为负样本的状况,能够看到,增益因子 k 将梯度进行了放大;而 图 3(c) 中 $x>0$ 的局部为负样本预测为正样本的状况,梯度同样也被放大了。
<center>
图 3 DB 算法示意图 </center>
在训练阶段,应用 3 个预测图与实在标签共同完成损失函数的计算以及模型训练;在预测阶段,只须要应用概率图,通过一系列的后处理形式即可取得最终的预测后果。
因为网络预测的概率图是通过膨胀后的后果,所以在后处理步骤中,应用雷同的偏移值将预测的多边形区域进行扩张,即可失去最终的文本框。
2.3.2 模型 loss
因为训练阶段获取了 3 个预测图,所以在损失函数中,也须要联合这 3 个预测图与它们对应的实在标签别离构建 3 局部损失函数。总的损失函数的公式定义如下:
$$L = L_b + \alpha \times L_s + \beta \times L_t$$
其中,$L$ 为总的损失,$L_b$ 为近似二值图的损失,应用 Dice 损失;$L_s$ 为概率图损失,应用带 OHEM 的 Dice 损失;$L_t$ 为阈值图损失,应用预测值和标签间的 $L_1$ 间隔。其中,$\alpha$ 和 $\beta$ 为权重系数。
接下来剖析这 3 个 loss:
1)首先是 Dice Loss,Dice Loss 是比拟预测后果跟标签之间的类似度,罕用于二值图像宰割。
$dice\_loss = 1 – \frac{2 \times intersection\_area}{total\_area}$
2)其次是 MaskL1 Loss,是计算预测值和标签间的 $L_1$ 间隔
2)最初是 Balance Loss,是带 OHEM 的 Dice Loss,目标是为了改善正负样本不平衡的问题。OHEM 为一种非凡的主动采样形式,能够主动的抉择难样本进行 loss 的计算,从而晋升模型的训练成果。
2.3.3 模型优缺点
长处
- 能够同时检测程度、多方向和蜿蜒文字;
- 在性能和速度上都获取不错的成果。
- 参考文献
[1] Real-time Scene Text Detection with Differentiable Binarization
3.OCR 识别方法:CRNN
传统的文本识别方法须要先对单个文字进行切割,而后再对单个文字进行辨认。本试验应用的是图像文本辨认的经典算法 CRNN[1]。CRNN 是 2015 年被提出的,到目前为止还是被广泛应用。该算法的次要思维是认为文本辨认其实须要对序列进行预测,所以采纳了预测序列罕用的 RNN 网络。算法通过 CNN 提取图片特色,而后采纳 RNN 对序列进行预测,最终应用 CTC 办法失去最终后果。
3.1 CRNN 模型构造
CRNN 的次要构造包含基于 CNN 的图像特征提取模块以及基于多层双向 LSTM 的文字序列特征提取模块。CRNN 的网络结构如 图 1 所示:
<center> 图 1 CRNN 模型网络结构示意图 </center>
1)第一模块:应用 CNN 网络,对输出图像进行特征提取,从而失去特色图。本试验应用的 CNN 网络同样是轻量化网络 MobileNetv3,其中输出图像的高度对立设置为 32,宽度能够为任意长度,通过 CNN 网络后,特色图的高度缩放为 1;
2)第二模块:Im2Seq,将 CNN 获取的特色图变换为 RNN 须要的特征向量序列的形态;
3)第三模块:应用双向 LSTM(BiLSTM)对特色序列进行预测,学习序列中的每个特征向量并输入预测标签散布。这里其实相当于把特征向量的宽度视为 LSTM 中的工夫维度;
4)第四模块:应用全连贯层获取模型的预测后果;
5)第五模块:CTC 转录层,解码模型输入的预测后果,失去最终输入。
3.2 模型 loss
为了解决预测标签与实在标签无奈对齐的问题,这里应用了 CTC loss 进行模型,具体参考:CTC 算法
3.3 模型优缺点
长处
- 能够进行端到端的训练;
- 能够进行不定长文本的辨认;
- 模型简略,成果好。
毛病
- 受 CTC 算法对速度的要求,输入长度受到限制,辨认文本不能太长。
更多文章请关注公重号:汀丶人工智能
- 参考文献
[1] An End-to-End Trainable Neural Network for Image-based SequenceRecognition and Its Application to Scene Text Recognition