FOTS:自然场景的文本检测与识别(下)

简介: FOTS:自然场景的文本检测与识别

准备识别数据

对于识别任务,我们必须提供文本图像作为输入,以及编码的文本序列(在该图像中)。在给出图像作为输入之前,我们将调整所有图像的高度和宽度。在我的例子中,我将所有图像的大小调整为(15,64,3)。我对所有与图像对应的文本进行了编码,并在Keras预处理库的帮助下依次进行了转换。因此,在编码之后,我们的输出将是(1,15)的形状,这15从哪里来,我将所有编码的文本填充为15个长度。

如果批大小为32,则输入形状为(32,15,64,3),输出形状为(32,1,15)。

训练检测与识别模型

检测模型-

第一篇研究论文是https://arxiv.org/pdf/1801.01671.pdf,它解释了整个工作。在本文“FOTS”中,他们同时进行了检测和识别,这是端到端系统,意思是如果我们给出一个有文本的场景,那么它将返回检测到的文本区域,并对文本进行识别。首先,他们提取特征图,用一些CNN检测文本区域,然后,他们在检测区域的序列解码的帮助下进行识别部分。

首先,他们从图像中提取特征的帮助下共享层的卷积,然后这些特征在文本检测分支(这又是一堆褶积层)然后文本检测分支预测b框(边界框)和边界框的方向,本预测输出和ROI旋转使面向文本区域固定高度和长宽比不变,然后这个转到文本识别分支(也就是RNN)和CTC解码器,它给出预测的文本。

但我已经实现了两部分,首先我有一个训练过检测模型,然后我有一个训练过的识别模型。因为我们有这两个任务的数据。

所以我们的检测部分是受East 论文的启发,https://arxiv.org/abs/1704.03155。本文介绍了一种从不同背景的场景中检测文本的方法。该网络使用的架构由卷积层、池化层和规范化层组成。

这个网络的灵感来自于u形网络,正如你所看到的,从特征提取器的中层,我们将信息提取到特征合并分支。

这里我们使用了预先训练的resnet50模型,该模型在imagenet数据集上进行了训练,用于提取特征并将其用于特征合并分支。你可以看到前50个训练时代的检测模型-

640.png

640.png

640.png

识别模型

对于识别模型,我们使用了一些初始的Conv层、批处理归一化层和max-pooling层从图像中提取信息,之后我们必须使用一个双向LSTM层。

对于如何构建数据的识别模型,我已经在上面的准备数据一节中解释过了。

你可以在这里看到识别模型的训练时代

640.png

640.png

训练代码整合

现在我们需要创建一个管道或者说是python函数,它可以获取图像并返回带有高亮文本区域和文本的图像。

为了编写这个函数,我们将使用NMS(Non-Max suppression)技术和一个ROI-ROTATE方法。问题是什么是NMS, NMS是一种选择与文本区域相交较高的边框的技术。在预测之后我们将得到shape的输出(512,512,6)。geo-map,score-map和angle的帮助下,我们将首先制作很多边界框要。假设图像中已有文本,现在将该图像提供给检测模型,我们将获得6个通道的结果图,现在我们将只提取所有6个通道中的像素,这些像素在预测得分图中的值为1,这样我们就拥有了文本区域像素的位置及其与像素顶部,右侧,底部和左侧的预测距离矩形。每个像素都有它自己的边界框(我们知道区域的面积,像素和距离两边的像素),所以最后得分图和距离的帮助下,我们将得到一个为每个像素边界框。此后,NMS的工作就开始了,NMS选择其中包含大部分文本的最佳边界框。然后,我们用ROI旋转技术旋转这些边界框中的区域。现在我们在边界框的帮助下裁剪文本图像,并将其发送到识别模型,识别模型给出文本输出。现在我们将在TensorFlow ctc_decoder方法的帮助下解码这个输出。在这之后,我们可以很容易地得到我们的文本。

显示结果

我已将此图片提供给我的管道

640.png

得到如下结果:

640.png

正如我们在此处看到的那样,它正在检测“ fendi”和更多的单词,并且可以正确识别“ fendi”单词。

现在我们可以看到更多示例

640.png

我们可以在上图中看到该模型的检测和识别能力还是可以的

但是,有些图像在模型上表现不佳,例如,如果图像中的单词很大或单词的角度一定,则无法正确检测到它们,也无法正确识别它们。查看一些示例-

640.png

因此,要解决此问题,首先,我们可以使用更多数据,我们仅在1300张图像上训练了我的检测模型,并且您也可以在识别模型的训练中获取更多数据。因此,如果我们训练更多的数据,则该模型可能会为包含文本的每个像素预测更准确的标注。

完整代码:https://github.com/vishwas-upadhyaya/mercari_price_suggestion

目录
相关文章
|
6月前
|
算法
请教视觉智能平台:同图检测到底是同一张图不同内容做检测是否相同?
请教视觉智能平台:同图检测到底是同一张图不同内容做检测是否相同?
78 0
|
文字识别 算法 数据挖掘
文本检测 DBNet
文本检测 DBNet
339 0
|
11天前
|
机器学习/深度学习 算法 计算机视觉
人像检测的结果数据都有什么属性?
【10月更文挑战第26天】人像检测的结果数据都有什么属性?
22 1
|
5月前
|
机器学习/深度学习 文字识别 算法
视觉智能开放平台产品使用合集之文字敏感内容识别和文字违禁内容识别有什么区别
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
5月前
|
机器学习/深度学习 人工智能 监控
一文读懂计算机视觉4大任务:分类任务、检测任务、目标分割任务、关键点检测任务
一文读懂计算机视觉4大任务:分类任务、检测任务、目标分割任务、关键点检测任务
|
6月前
|
机器学习/深度学习 语音技术
Hotword模型在语音识别系统中定义为能够识别特定关键词或短语(也称为唤醒词)的模型
Hotword模型在语音识别系统中定义为能够识别特定关键词或短语(也称为唤醒词)的模型
305 9
|
机器学习/深度学习 自然语言处理 算法
解读未知:文本识别算法的突破与实际应用
解读未知:文本识别算法的突破与实际应用
解读未知:文本识别算法的突破与实际应用
|
算法 数据可视化
使用点要素匹配在杂乱场景中检测对象
使用点要素匹配在杂乱场景中检测对象。
112 0
|
6月前
|
机器学习/深度学习 自然语言处理
代码识别模型有哪些
代码识别模型有哪些
104 1
|
机器学习/深度学习 编解码 自然语言处理
文本检测之SegLink
翻译:《Detecting Oriented Text in Natural Images by Linking Segments》
129 1