README.md 4.05 KB
Newer Older
liucong's avatar
liucong committed
1
# CRNN
shizhm's avatar
shizhm committed
2

liucong's avatar
liucong committed
3
## 论文
Your Name's avatar
Your Name committed
4

liucong's avatar
liucong committed
5
6
7
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
Your Name's avatar
Your Name committed
8
9
10
11
12

## 模型结构

CRNN模型的主要结构包括基于CNN的图像特征提取模块以及基于双向LSTM的文字序列特征提取模块。

liucong's avatar
liucong committed
13
<img src="./Doc/Images/CRNN_01.jpg" style="zoom:100%;" align=middle>
liucong's avatar
liucong committed
14

liucong's avatar
liucong committed
15
16
17
18
## 算法原理

CRNN是文本识别领域的一种经典算法,该算法的主要思想是认为文本识别需要对序列进行预测,所以采用了预测序列常用的RNN网络。该算法首先通过CNN提取图片特征,然后采用RNN对序列进行预测,最终使用CTC方法得到最终结果。

liucong's avatar
liucong committed
19
20
<img src="./Doc/Images/CRNN_02.png" style="zoom:100%;" align=middle>

liucong's avatar
liucong committed
21
## 环境配置
liucong's avatar
liucong committed
22

liucong's avatar
liucong committed
23
### Docker(方法一)
Your Name's avatar
Your Name committed
24

liucong's avatar
liucong committed
25
拉取镜像:
Your Name's avatar
Your Name committed
26

liucong's avatar
liucong committed
27
```plaintext
liucong's avatar
liucong committed
28
docker pull image.sourcefind.cn:5000/dcu/admin/base/migraphx:4.0.0-centos7.6-dtk23.04.1-py38-latest
Your Name's avatar
Your Name committed
29
30
```

liucong's avatar
liucong committed
31
32
33
34
35
36
37
38
39
创建并启动容器,安装相关依赖:

```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
```

liucong's avatar
liucong committed
40
41
42
43
44
45
46
47
48
### Dockerfile(方法二)

```
cd ./docker
docker build --no-cache -t crnn_migraphx:2.0 .

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
```

liucong's avatar
liucong committed
49
50
51
52
53
54
55
56
57
58
59
## 数据集

根据提供的样本数据,进行文本识别。

## 推理

### Python版本推理

下面介绍如何运行Python代码示例,Python示例的详细说明见Doc目录下的Tutorial_Python.md。

#### 设置环境变量
shizhm's avatar
shizhm committed
60
61
62
63
64

```
export PYTHONPATH=/opt/dtk/lib:$PYTHONPATH
```

liucong's avatar
liucong committed
65
#### 运行示例
liucong's avatar
liucong committed
66
67
68
69
70

CRNN工程的Python推理示例仅提供静态推理,可使用如下命令运行:

```
# 进入python示例目录
shizhm's avatar
shizhm committed
71
cd <path_to_crnn_migraphx>/Python
liucong's avatar
liucong committed
72
73

# 安装依赖
liucong's avatar
liucong committed
74
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
shizhm's avatar
shizhm committed
75

liucong's avatar
liucong committed
76
# 运行示例
liucong's avatar
liucong committed
77
78
79
python Crnn_infer_migraphx.py 
```

liucong's avatar
liucong committed
80
### C++版本推理
liucong's avatar
liucong committed
81

shizhm's avatar
shizhm committed
82
83
84
下面介绍如何运行C++代码示例,C++示例的详细说明见Doc目录下的Tutorial_Cpp.md。


liucong's avatar
liucong committed
85
#### 构建工程
Your Name's avatar
Your Name committed
86
87

```
Your Name's avatar
Your Name committed
88
rbuild build -d depend
Your Name's avatar
Your Name committed
89
90
```

liucong's avatar
liucong committed
91
#### 设置环境变量
Your Name's avatar
Your Name committed
92
93
94

将依赖库依赖加入环境变量LD_LIBRARY_PATH,在~/.bashrc中添加如下语句:

Your Name's avatar
Your Name committed
95
```
shizhm's avatar
shizhm committed
96
export LD_LIBRARY_PATH=<path_to_crnn_migraphx>/depend/lib64/:$LD_LIBRARY_PATH
Your Name's avatar
Your Name committed
97
98
```

Your Name's avatar
Your Name committed
99
然后执行:
Your Name's avatar
Your Name committed
100
101

```
Your Name's avatar
Your Name committed
102
103
104
source ~/.bashrc
```

liucong's avatar
liucong committed
105
#### 运行示例
Your Name's avatar
Your Name committed
106

shizhm's avatar
shizhm committed
107
108
109
110
111
112
113
114
115
成功编译CRNN工程后,执行如下命令运行该示例:

```
# 进入crnn migraphx工程根目录
cd <path_to_crnn_migraphx> 

# 进入build目录
cd build/
```
Your Name's avatar
Your Name committed
116
117
118
119

1. 静态推理

```
liucong's avatar
liucong committed
120
./CRNN 0
Your Name's avatar
Your Name committed
121
122
```

liucong's avatar
liucong committed
123
124
125
126
127
128
129
130
131
132
2. 动态shape推理

```
# 执行动态推理示例程序
./CRNN 1
```

## result

### Python版本
Your Name's avatar
Your Name committed
133

liucong's avatar
liucong committed
134
输入样本图像得到文本识别的结果
Your Name's avatar
Your Name committed
135

liucong's avatar
liucong committed
136
<img src="./Resource/Images/text.jpg" style="zoom:100%;" align=middle>
Your Name's avatar
Your Name committed
137
138
139
140
141

```
a-----v--a-i-l-a-bb-l-e--- => available
```

liucong's avatar
liucong committed
142
### C++版本
Your Name's avatar
Your Name committed
143

liucong's avatar
liucong committed
144
静态推理:
Your Name's avatar
Your Name committed
145

liucong's avatar
liucong committed
146
147
148
149
150
151
输入样本图像得到文本识别的结果

<img src="./Resource/Images/CrnnDynamicPic/text0.jpg" style="zoom:100%;" align=middle>

```
a-----v--a-i-l-a-bb-l-e--- => available
Your Name's avatar
Your Name committed
152
153
```

liucong's avatar
liucong committed
154
155
156
157
158
159
160
161
162
163
164
动态推理:

可以连续对多张样本图像进行文本识别

<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>
Your Name's avatar
Your Name committed
165
166
167
168
169
170
171
172

```
available
migraphx
waiting
recognition
```

liucong's avatar
liucong committed
173
174
175
176
### 精度



liucong's avatar
liucong committed
177
178
179
180
181
182
183
184
## 应用场景

### 算法类别

`ocr`

### 热点应用行业

liucong's avatar
liucong committed
185
`金融`,`交通`,`教育`,`医疗`
liucong's avatar
liucong committed
186

shizhm's avatar
shizhm committed
187
## 源码仓库及问题反馈
Your Name's avatar
Your Name committed
188

liucong's avatar
liucong committed
189
https://developer.hpccube.com/codes/modelzoo/crnn_migraphx
Your Name's avatar
Your Name committed
190

liucong's avatar
liucong committed
191
## 参考资料
Your Name's avatar
Your Name committed
192

liucong's avatar
liucong committed
193
https://github.com/meijieru/crnn.pytorch