提交 6d3d1a85 编写于 作者: P peterzhang2029

fix typo in README

上级 820a3dd3
...@@ -5,13 +5,7 @@ ...@@ -5,13 +5,7 @@
在现实生活中,包括路牌、菜单、大厦标语在内的很多场景均会有文字出现,这些场景的照片中的文字为图片场景的理解提供了更多信息,\[[1](#参考文献)\]使用深度学习模型自动识别路牌中的文字,帮助街景应用获取更加准确的地址信息。 在现实生活中,包括路牌、菜单、大厦标语在内的很多场景均会有文字出现,这些场景的照片中的文字为图片场景的理解提供了更多信息,\[[1](#参考文献)\]使用深度学习模型自动识别路牌中的文字,帮助街景应用获取更加准确的地址信息。
本文将针对 **场景文字识别 (STR, Scene Text Recognition)** 任务,演示如何用 PaddlePaddle 实现 一个端对端 CTC 的模型 **CRNN(Convolutional Recurrent Neural Network)** 本文将针对 **场景文字识别 (STR, Scene Text Recognition)** 任务,演示如何用 PaddlePaddle 实现 一个端对端 CTC 的模型 **CRNN(Convolutional Recurrent Neural Network)**
\[[2](#参考文献)\],该模型有如下比较显著的特点: \[[2](#参考文献)\],具体的,本文使用如下图片进行训练,需要识别文字对应的文字 "keep"。
1. 端对端训练,直接从原始数据到目标标签序列学习。
2. 输入的图片数据集不要求有统一的尺寸。
3. 模型更小,性能也更好,容易支持工业级应用。
具体的,本文使用如下图片进行训练,需要识别文字对应的文字 "keep"。
<p align="center"> <p align="center">
<img src="./images/503.jpg"/><br/> <img src="./images/503.jpg"/><br/>
...@@ -20,31 +14,31 @@ ...@@ -20,31 +14,31 @@
## 模型介绍 ## 模型介绍
论文\[[2](#参考文献)\] 中描述的模型的特点是,使用神经网络实现了一个端对端训练的模型,直接从图像输入数据预测出对应的文字标签。模型的整体结构如下图: 论文\[[2](#参考文献)\] 使用神经网络实现了一个端对端训练的模型,直接从图像输入数据预测出对应的文字标签。模型的整体结构如下图:
<p align="center"> <p align="center">
<img src="./images/ctc.png" width="350"/> <br/> <img src="./images/ctc.png" width="350"/> <br/>
图 2. 模型结构 图 2. 模型结构
</p> </p>
从下往上的模块分别为 图2中 从下往上的模块分别为
- Convolutional Layers, 自动提取图像特征;最终会产生一个三维的图像特征映射,可以拆分成图像特征序列。 - Convolutional Layers自动提取图像特征;最终会产生一个三维的图像特征映射,可以拆分成图像特征序列。
- Recurrent Layers, 接受图像特征序列,并且在每个时间步上预测出对应标签(字符),所有时间步的字符组成字符串。 - Recurrent Layers 接受图像特征序列,并且在每个时间步上预测出对应标签(字符),所有时间步的字符组成字符串。
- Transaction Layer, 将预测出的字符串加工成符合语法的单词,比如 **-s-t-aatte** 转化为 **state** - Transaction Layer 将预测出的字符串加工成符合语法的单词,比如 **-s-t-aatte** 转化为 **state**
### 利用CNN进行图像特征序列提取 ### 利用CNN从图像序列中提取特征
模型的第一步是特征的提取,对于图像任务,一般使用CNN来作为特征提取的基本模块 模型的第一步是特征的提取,图像任务通常使用CNN从原始输入中提取特征
为了能够兼容对不同尺寸的图片,如下图中的两张图片,将其高度固定,就变成了宽度不相同的图片。 为了能够兼容对不同尺寸的图片,如下图中的两张图片,将其高度固定,就变成了宽度不相同的图片。
<p align="center"> <p align="center">
<img src="./images/504.jpg" height="100"/><br/> <img src="./images/504.jpg" height="100"/><br/>
<img src="./images/505.jpg" height="100"/><br/> <img src="./images/505.jpg" height="100"/><br/>
图 3. 不同尺寸的图片 图 3. 固定高度的两副图片
</p> </p>
直接使用CNN应用到图片上,最后在pooling层会得到高度一致,但宽度不同的图像特征(矩阵),由于CNN中的卷积(convolution)和池化(pooling)两种操作均会在高层特征上综合每个局部区域像素级的特征, 将CNN应用于原始输入图片,最后在pooling层会得到高度一致,但宽度不同的图像特征(矩阵),由于CNN中的卷积(convolution)和池化(pooling)两种操作均会在高层特征上综合每个局部区域像素级的特征,
因此在CNN最上层输出的特征表示中,每个像素均包含了原始图片中一个小的局部区域的信息。 因此在CNN最上层输出的特征表示中,每个像素均包含了原始图片中一个小的局部区域的信息。
CRNN将CNN输出特征表示(矩阵)按列切割成一个特征向量(可以称为Frame,帧)的序列,作为模型更上层结构的输入,如下图展示,这里的每个特征向量均表示了原始图像中一个窄的矩形的信息。 CRNN将CNN输出特征表示(矩阵)按列切割成一个特征向量(可以称为Frame,帧)的序列,作为模型更上层结构的输入,如下图展示,这里的每个特征向量均表示了原始图像中一个窄的矩形的信息。
...@@ -104,7 +98,7 @@ $$p(l|y) = \sum_{\pi:B(\pi)=l} p(\pi | y)$$ ...@@ -104,7 +98,7 @@ $$p(l|y) = \sum_{\pi:B(\pi)=l} p(\pi | y)$$
### 模型训练 ### 模型训练
输入原始的图片数据,CRNN会利用CNN来学习提取图像特征,转化为特征向量的序列,交由RNN学习 输入原始的图片数据,CRNN会利用CNN来学习提取图像特征,转化为特征向量的序列;
RNN为每个时间步建模特征序列中的全局信息,并由 CTC 生成目标序列所有映射的概率求和,得到标签的分布,作为模型生成目标序列的预测概率(学习损失)。 RNN为每个时间步建模特征序列中的全局信息,并由 CTC 生成目标序列所有映射的概率求和,得到标签的分布,作为模型生成目标序列的预测概率(学习损失)。
## 使用 PaddlePaddle 训练与预测 ## 使用 PaddlePaddle 训练与预测
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册