Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ModelZoo
crnn_migraphx
Commits
84c7a8c8
Commit
84c7a8c8
authored
Oct 16, 2023
by
liucong
Browse files
修改crnn工程格式
parent
f1b9035f
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
107 additions
and
54 deletions
+107
-54
Doc/Images/CRNN_01.jpg
Doc/Images/CRNN_01.jpg
+0
-0
Doc/Tutorial_Cpp.md
Doc/Tutorial_Cpp.md
+5
-2
Doc/Tutorial_Python.md
Doc/Tutorial_Python.md
+13
-2
README.md
README.md
+84
-47
model.properties
model.properties
+5
-3
No files found.
Doc/CRNN_01.jpg
→
Doc/
Images/
CRNN_01.jpg
View file @
84c7a8c8
File moved
Doc/Tutorial_Cpp.md
View file @
84c7a8c8
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
CRNN是文本识别领域的一种经典算法。该算法的主要思想是认为文本识别需要对序列进行预测,所以采用了预测序列常用的RNN网络。算法通过CNN提取图片特征,然后采用RNN对序列进行预测,最终使用CTC方法得到最终结果。模型的主要结构包括基于CNN的图像特征提取模块以及基于双向LSTM的文字序列特征提取模块,网络结构如下图所示。
CRNN是文本识别领域的一种经典算法。该算法的主要思想是认为文本识别需要对序列进行预测,所以采用了预测序列常用的RNN网络。算法通过CNN提取图片特征,然后采用RNN对序列进行预测,最终使用CTC方法得到最终结果。模型的主要结构包括基于CNN的图像特征提取模块以及基于双向LSTM的文字序列特征提取模块,网络结构如下图所示。
<img
src=
"./CRNN_01.jpg"
alt=
"CRNN_01"
/>
<img
src=
"./
Images/
CRNN_01.jpg"
alt=
"CRNN_01"
/>
本示例采用了如下的开源实现:https://github.com/meijieru/crnn.pytorch, 作者提供了CRNN的预训练模型。
本示例采用了如下的开源实现:https://github.com/meijieru/crnn.pytorch, 作者提供了CRNN的预训练模型。
...
@@ -123,7 +123,10 @@ CRNN是文本识别领域的一种经典算法。该算法的主要思想是认
...
@@ -123,7 +123,10 @@ CRNN是文本识别领域的一种经典算法。该算法的主要思想是认
// 推理
// 推理
std::vector<migraphx::argument> inferenceResults = net.eval(inputData);
std::vector<migraphx::argument> inferenceResults = net.eval(inputData);
// 如果想要指定输出节点,可以给eval()函数中提供outputNames参数来实现
//std::vector<std::string> outputNames = {"output"};
//std::vector<migraphx::argument> inferenceResults = net.eval(inputData, outputNames);
// 获取推理结果
// 获取推理结果
std::vector<cv::Mat> outs;
std::vector<cv::Mat> outs;
migraphx::argument result = inferenceResults[0];
migraphx::argument result = inferenceResults[0];
...
...
Doc/Tutorial_Python.md
View file @
84c7a8c8
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
CRNN是文本识别领域的一种经典算法。该算法的主要思想是认为文本识别需要对序列进行预测,所以采用了预测序列常用的RNN网络。算法通过CNN提取图片特征,然后采用RNN对序列进行预测,最终使用CTC方法得到最终结果。模型的主要结构包括基于CNN的图像特征提取模块以及基于双向LSTM的文字序列特征提取模块,网络结构如下图所示。
CRNN是文本识别领域的一种经典算法。该算法的主要思想是认为文本识别需要对序列进行预测,所以采用了预测序列常用的RNN网络。算法通过CNN提取图片特征,然后采用RNN对序列进行预测,最终使用CTC方法得到最终结果。模型的主要结构包括基于CNN的图像特征提取模块以及基于双向LSTM的文字序列特征提取模块,网络结构如下图所示。
<img
src=
"./CRNN_01.jpg"
alt=
"CRNN_01"
/>
<img
src=
"./
Images/
CRNN_01.jpg"
alt=
"CRNN_01"
/>
本示例采用了如下的开源实现:https://github.com/meijieru/crnn.pytorch, 作者提供了CRNN的预训练模型。
本示例采用了如下的开源实现:https://github.com/meijieru/crnn.pytorch, 作者提供了CRNN的预训练模型。
...
@@ -35,12 +35,23 @@ class Crnn:
...
@@ -35,12 +35,23 @@ class Crnn:
def __init__(self, path):
def __init__(self, path):
# 解析推理模型
# 解析推理模型
self.model = migraphx.parse_onnx(path)
self.model = migraphx.parse_onnx(path)
# 获取模型输入/输出节点信息
print("inputs:")
inputs = self.model.get_inputs()
for key,value in inputs.items():
print("{}:{}".format(key,value))
print("outputs:")
outputs = self.model.get_outputs()
for key,value in outputs.items():
print("{}:{}".format(key,value))
# 获取模型的输入name
# 获取模型的输入name
self.inputName = self.model.get_parameter_names()[0]
self.inputName = self.model.get_parameter_names()[0]
# 获取模型的输入尺寸
# 获取模型的输入尺寸
self.inputShape =
self.model.get_parameter_shapes()
[self.inputName].lens()
self.inputShape =
inputs
[self.inputName].lens()
...
...
```
```
...
...
README.md
View file @
84c7a8c8
#
Convolutional Recurrent Neural Network(
CRNN
)
# CRNN
##
模型介绍
##
论文
CRNN是文本识别领域的一种经典算法,该算法的主要思想是认为文本识别需要对序列进行预测,所以采用了预测序列常用的RNN网络。算法通过CNN提取图片特征,然后采用RNN对序列进行预测,最终使用CTC方法得到最终结果。
An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
-
https://arxiv.org/abs/1507.05717
## 模型结构
## 模型结构
CRNN模型的主要结构包括基于CNN的图像特征提取模块以及基于双向LSTM的文字序列特征提取模块。
CRNN模型的主要结构包括基于CNN的图像特征提取模块以及基于双向LSTM的文字序列特征提取模块。
## Python版本推理
<img
src=
"./Doc/Images/CRNN_01.jpg"
style=
"zoom:100%;"
align=
middle
>
下面介绍如何运行Python代码示例,Python示例的详细说明见Doc目录下的Tutorial_Python.md。
## 算法原理
CRNN是文本识别领域的一种经典算法,该算法的主要思想是认为文本识别需要对序列进行预测,所以采用了预测序列常用的RNN网络。该算法首先通过CNN提取图片特征,然后采用RNN对序列进行预测,最终使用CTC方法得到最终结果。
## 环境配置
###
下载镜像
###
Docker
下载MIGraphX
镜像:
拉取
镜像:
```
p
ython
```
p
laintext
docker pull sugonhub/migraphx:3.2.1-centos7.6-dtk-23.04.1-py38
docker pull sugonhub/migraphx:3.2.1-centos7.6-dtk-23.04.1-py38
```
```
### 设置Python环境变量
创建并启动容器,安装相关依赖:
```
plaintext
docker run --shm-size 16g --network=host --name=crnn_migraphx --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/crnn_migraphx:/home/crnn_migraphx -it <Your Image ID> /bin/bash
# 激活dtk
source /opt/dtk/env.sh
```
## 数据集
根据提供的样本数据,进行文本识别。
## 推理
### Python版本推理
下面介绍如何运行Python代码示例,Python示例的详细说明见Doc目录下的Tutorial_Python.md。
#### 设置环境变量
```
```
export PYTHONPATH=/opt/dtk/lib:$PYTHONPATH
export PYTHONPATH=/opt/dtk/lib:$PYTHONPATH
```
```
###
安装依赖
###
# 运行示例
CRNN工程的Python推理示例仅提供静态推理,可使用如下命令运行:
CRNN工程的Python推理示例仅提供静态推理,可使用如下命令运行:
...
@@ -35,43 +60,24 @@ CRNN工程的Python推理示例仅提供静态推理,可使用如下命令运
...
@@ -35,43 +60,24 @@ CRNN工程的Python推理示例仅提供静态推理,可使用如下命令运
cd <path_to_crnn_migraphx>/Python
cd <path_to_crnn_migraphx>/Python
# 安装依赖
# 安装依赖
pip install -r requirements.txt
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```
### 运行示例
在Python目录下执行如下命令运行该示例程序:
# 运行示例
```
python Crnn_infer_migraphx.py
python Crnn_infer_migraphx.py
```
```
文本识别结果为:
### C++版本推理
```
a-----v--a-i-l-a-bb-l-e--- => available
```
## C++版本推理
下面介绍如何运行C++代码示例,C++示例的详细说明见Doc目录下的Tutorial_Cpp.md。
下面介绍如何运行C++代码示例,C++示例的详细说明见Doc目录下的Tutorial_Cpp.md。
### 下载镜像
下载MIGraphX镜像:
#### 构建工程
```
docker pull sugonhub/migraphx:3.2.1-centos7.6-dtk-23.04.1-py38
```
### 构建工程
```
```
rbuild build -d depend
rbuild build -d depend
```
```
### 设置环境变量
###
#
设置环境变量
将依赖库依赖加入环境变量LD_LIBRARY_PATH,在~/.bashrc中添加如下语句:
将依赖库依赖加入环境变量LD_LIBRARY_PATH,在~/.bashrc中添加如下语句:
...
@@ -85,7 +91,7 @@ export LD_LIBRARY_PATH=<path_to_crnn_migraphx>/depend/lib64/:$LD_LIBRARY_PATH
...
@@ -85,7 +91,7 @@ export LD_LIBRARY_PATH=<path_to_crnn_migraphx>/depend/lib64/:$LD_LIBRARY_PATH
source ~/.bashrc
source ~/.bashrc
```
```
### 运行示例
###
#
运行示例
成功编译CRNN工程后,执行如下命令运行该示例:
成功编译CRNN工程后,执行如下命令运行该示例:
...
@@ -103,27 +109,48 @@ cd build/
...
@@ -103,27 +109,48 @@ cd build/
./CRNN 0
./CRNN 0
```
```
静态推理示例输入样本图像为:
2.
动态shape推理
```
# 执行动态推理示例程序
./CRNN 1
```
## result
### Python版本

输入样本图像得到文本识别的结果
文本识别结果为:
<img
src=
"./Resource/Images/text.jpg"
style=
"zoom:100%;"
align=
middle
>
```
```
a-----v--a-i-l-a-bb-l-e--- => available
a-----v--a-i-l-a-bb-l-e--- => available
```
```
2.
动态shape推理
### C++版本
```
静态推理:
# 开启环境变量
export MIGRAPHX_DYNAMIC_SHAPE=1
# 执行动态推理示例程序
输入样本图像得到文本识别的结果
./CRNN 1
<img
src=
"./Resource/Images/CrnnDynamicPic/text0.jpg"
style=
"zoom:100%;"
align=
middle
>
```
a-----v--a-i-l-a-bb-l-e--- => available
```
```
文本识别结果:
动态推理:
可以连续对多张样本图像进行文本识别
<img
src=
"./Resource/Images/CrnnDynamicPic/text0.jpg"
style=
"zoom:100%;"
align=
middle
>
<img
src=
"./Resource/Images/CrnnDynamicPic/text1.jpg"
style=
"zoom:80%;"
align=
middle
>
<img
src=
"./Resource/Images/CrnnDynamicPic/text2.jpg"
style=
"zoom:60%;"
align=
middle
>
<img
src=
"./Resource/Images/CrnnDynamicPic/text3.jpg"
style=
"zoom:80%;"
align=
middle
>
```
```
available
available
...
@@ -132,10 +159,20 @@ waiting
...
@@ -132,10 +159,20 @@ waiting
recognition
recognition
```
```
## 应用场景
### 算法类别
`ocr`
### 热点应用行业
`工业制造`
、
`金融`
、
`交通`
、
`教育`
、
`医疗`
## 源码仓库及问题反馈
## 源码仓库及问题反馈
https://developer.hpccube.com/codes/modelzoo/crnn_migraphx
https://developer.hpccube.com/codes/modelzoo/crnn_migraphx
## 参考
## 参考
https://github.com/meijieru/crnn.pytorch
https://github.com/meijieru/crnn.pytorch
model.properties
View file @
84c7a8c8
# 模型唯一标识
modelCode
=
219
#模型名称
#模型名称
modelName
=
CRNN_MIG
raph
X
modelName
=
crnn_mig
raph
x
#模型描述
#模型描述
modelDescription
=
CRNN模型是图像文本识别领域的经典算法,主要用于端到端地对不定长的文本序列进行识别。
modelDescription
=
CRNN模型是图像文本识别领域的经典算法,主要用于端到端地对不定长的文本序列进行识别。
#应用场景
#应用场景
appScenario
=
推理,0CR
appScenario
=
推理,0CR
,文本识别
#框架类型
#框架类型
frameType
=
MIGraphX
frameType
=
migraphx
\ No newline at end of file
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment