Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
models
提交
6d3d1a85
M
models
项目概览
PaddlePaddle
/
models
大约 1 年 前同步成功
通知
222
Star
6828
Fork
2962
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
602
列表
看板
标记
里程碑
合并请求
255
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
models
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
602
Issue
602
列表
看板
标记
里程碑
合并请求
255
合并请求
255
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
6d3d1a85
编写于
9月 27, 2017
作者:
P
peterzhang2029
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix typo in README
上级
820a3dd3
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
12 addition
and
18 deletion
+12
-18
scene_text_recognition/README.md
scene_text_recognition/README.md
+12
-18
未找到文件。
scene_text_recognition/README.md
浏览文件 @
6d3d1a85
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录