【Keras计算机视觉OCR文字识别】文字检测算法中CTPN、CRAFT的讲解(图文解释 超详细)

觉得有帮助麻烦点赞关注收藏~~~

一、OCR文字识别的概念

OCR(Optical Character Recognition)图像文字识别是人工智能的重要分支,赋予计算机人眼的功能,可以看图识字。如图6-1所示,图像文字识别系统流程一般分为图像采集、文字检测、文字识别及结果输出四个部分。  识别流程图如下

 二、文字检测

传统的问题检测算法

输入一张文字图像,传统的文字检测算法将文字检测出来,要有图像预处理和文字行提取两个阶段,其中图像预处理包括几何校正、模糊校正、二值化等,文字行提取是基于版面分析获取文字行区域

预处理之后即可进行文字识别,文字行识别主要有基于切分的文字识别和不依赖切分的文字识别这两种方法,基于切分的文字识别方法需要先将文字行切分成单字,然后提取文字的方向梯度直方图或者通过卷积神经网络得到的特征信息,最后将提取的特征送入AdaBoost、SVM等分类器中进行识别,而不依赖于切分的文字识别方法能够对文本行直接进行识别,无须切分处理,主要包括基于滑窗的文字识别方法和基于序列的文字识别方法

基于深度学习的文字检测算法

基于深度学习的文本检测,通常遵循前面介绍的经典算法R-CNN网络框架,首先提取可能包含有文本的候选区域,之后利用卷积神经网络将其分类为文本或者非文本区域,并通过回归的方式校正文本区域的坐标位置信息。下面介绍CTPN CRAFT是目前最流行的两种文本检测算法,下面将着重介绍CTPN和CRAFT两种文本检测算法

1:基于CTPN的文本检测算法

CTPN算法是在目标检测算法Fasetr R-CNN模型上改进的算法,CTPN网络结果本质上是全卷积神经网络,通过在卷积特征图上以固定步长的滑动窗孔检测文本行,输出细粒度文本候选框序列。文本检测的难点在于文本的长度是不固定的,可以是很长的文本,也可以是很短的文本。CTPN针对文字检测的特点,提出了关键性的创新,即提出了垂直锚点机制,具体的做法是只预测文本的竖直方向上的位置,水平方向的位置不预测,与Faster R-CNN中的锚点类似,但是不同的是,垂直锚点的宽度是固定的16像素,而高度则从11像素到273像素变化,检测得到细粒度的文字检测结果,采用RNN循环网络将检测的小尺度文本进行连接,得到需要的文本框

CTPN结构如下图所示,在后面加入了LSTM层,首先将原图片输入VGG-16卷积神经网络的前五个卷积层,在第五层卷积层进行了卷积操作后,特征图输入到双向LSTM中,之后将双向LSTM层连接到512维的全连接层,再将全连接层特征输入到三个分类器中来预测候选框的文本或非文本分数、坐标信息以及文本框边缘调整补偿值,最后通过文本线将多个候选框构造成一个文本框

 

 

2:基于CRAFT算法的文本检测算法

CRAFT算法实现文本行的检测如下图所示,首先将完整的文字区域输入CRAFT文字检测网络,得到字符级的文字得分结果热图和字符级文本连接得分热图,最后根据连通域得到每个文本行的位置

CRAFT算法通过探索每个字符和字符之间的亲和力来有效的检测文本区域,通过学习中间模型估计真实图像的字符集标签,并利用了合成图像的给定字符集注释,克服了缺乏单个字符级注释的缺点,为了估计字符之间的亲和力,使用关联性表示来训练网络,,CRAFT模型在解码部分用了类似图像分割U-Net算法的结构,最终的输出有两个通道:文字区域分数和连接分数

网络输入文字区域分数和连接之后,下面就要把字符区域合成文本行,首先通过阈值过滤文字区域分数,进行二值化,然后通过连通域分析算法,得到最终的文本行

创作不易 觉得有帮助请点赞关注收藏~~~ 

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于tensorflow、keras/pytorch实现对自然场景的文字检测及端到端的OCR文字识别 功能 文字检测 实现keras端到端的文本检测识别(项目里面有两个模型keras和pytorch。) 不定长OCR识别 Ubuntu下环境构建 Bash ##GPU环境 sh setup-python3-gpu.sh ##CPU python3环境 sh setup-python3-cpu.sh ##额外依赖的安装包 apt install graphviz pip3 install graphviz pip3 install pydot pip3 install torch torchvision 模型 一共分为3个网络 文本方向检测网络-Classify(vgg16) 文本区域检测网络-CTPN(CNN+RNN) EndToEnd文本识别网络-CRNN(CNN+GRU/LSTM+CTC) 文字方向检测-vgg分类 基于图像分类,在VGG16模型的基础上,训练0、90、180、270度检测的分类模型. 详细代码参考angle/predict.py文件,训练图片8000张,准确率88.23% 模型地址[BaiduCloud](链接:https://pan.baidu.com/s/1Sqbnoeh1lCMmtp64XBaK9w 提取码:n2v4) 文字区域检测CTPN 支持CPU、GPU环境,一键部署, 文本检测训练参考 OCR 端到端识别:CRNN ocr识别采用GRU+CTC端到到识别技术,实现不分隔识别不定长文字 提供keras 与pytorch版本的训练代码,在理解keras的基础上,可以切换到pytorch版本,此版本更稳定 使用 体验 运行demo.py或者pytorch_demo.py(建议) 写入测试图片的路径即可,如果想要显示ctpn的结果,修改文件./ctpn/ctpn/other.py 的draw_boxes函数的最后部分,cv2.inwrite('dest_path',img),如此,可以得到ctpn检测文字区域框以及图像的ocr识别结果 在进行体验的时候,注意要更改里面的一些内容(比如模型文件等)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

showswoller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值