README.md 4.45 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.3.0-ubuntu20.04-dtk24.04.1-py3.10
Your Name's avatar
Your Name committed
29
30
```

liucong's avatar
liucong committed
31
32
33
创建并启动容器,安装相关依赖:

```plaintext
liucong's avatar
liucong committed
34
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 -v /opt/hyhal:/opt/hyhal:ro -it <Your Image ID> /bin/bash
liucong's avatar
liucong committed
35
36
37
38
39

# 激活dtk
source /opt/dtk/env.sh
```

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

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

liucong's avatar
liucong committed
46
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 -v /opt/hyhal:/opt/hyhal:ro -it <Your Image ID> /bin/bash
liucong's avatar
liucong committed
47
48
49

# 激活dtk
source /opt/dtk/env.sh
liucong's avatar
liucong committed
50
51
```

liucong's avatar
liucong committed
52
53
54
55
56
57
58
59
60
61
62
## 数据集

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

## 推理

### Python版本推理

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

#### 设置环境变量
shizhm's avatar
shizhm committed
63
64
65
66
67

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

liucong's avatar
liucong committed
68
#### 运行示例
liucong's avatar
liucong committed
69

liucong's avatar
liucong committed
70
71
72
73
74
75
76
77
78
79
注意:当使用操作系统不一样时,CMakeList需要作相应的修改:

```
# ubuntu操作系统
${CMAKE_CURRENT_SOURCE_DIR}/depend/lib64/ 修改为 ${CMAKE_CURRENT_SOURCE_DIR}/depend/lib/

# centos操作系统
${CMAKE_CURRENT_SOURCE_DIR}/depend/lib/ 修改为 ${CMAKE_CURRENT_SOURCE_DIR}/depend/lib64/
```

liucong's avatar
liucong committed
80
81
82
83
CRNN工程的Python推理示例仅提供静态推理,可使用如下命令运行:

```
# 进入python示例目录
shizhm's avatar
shizhm committed
84
cd <path_to_crnn_migraphx>/Python
liucong's avatar
liucong committed
85
86

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

liucong's avatar
liucong committed
89
# 运行示例
liucong's avatar
liucong committed
90
91
92
python Crnn_infer_migraphx.py 
```

liucong's avatar
liucong committed
93
### C++版本推理
liucong's avatar
liucong committed
94

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


liucong's avatar
liucong committed
98
#### 构建工程
Your Name's avatar
Your Name committed
99
100

```
Your Name's avatar
Your Name committed
101
rbuild build -d depend
Your Name's avatar
Your Name committed
102
103
```

liucong's avatar
liucong committed
104
#### 设置环境变量
Your Name's avatar
Your Name committed
105
106
107

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

Your Name's avatar
Your Name committed
108
```
liucong's avatar
liucong committed
109
export LD_LIBRARY_PATH=<path_to_crnn_migraphx>/depend/lib/:$LD_LIBRARY_PATH
Your Name's avatar
Your Name committed
110
111
```

Your Name's avatar
Your Name committed
112
然后执行:
Your Name's avatar
Your Name committed
113
114

```
Your Name's avatar
Your Name committed
115
116
117
source ~/.bashrc
```

liucong's avatar
liucong committed
118
#### 运行示例
Your Name's avatar
Your Name committed
119

shizhm's avatar
shizhm committed
120
121
122
123
124
125
126
127
128
成功编译CRNN工程后,执行如下命令运行该示例:

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

# 进入build目录
cd build/
```
Your Name's avatar
Your Name committed
129
130
131
132

1. 静态推理

```
liucong's avatar
liucong committed
133
./CRNN 0
Your Name's avatar
Your Name committed
134
135
```

liucong's avatar
liucong committed
136
137
138
139
140
141
142
143
144
145
2. 动态shape推理

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

## result

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

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

liucong's avatar
liucong committed
149
<img src="./Resource/Images/text.jpg" style="zoom:100%;" align=middle>
Your Name's avatar
Your Name committed
150
151
152
153
154

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

liucong's avatar
liucong committed
155
### C++版本
Your Name's avatar
Your Name committed
156

liucong's avatar
liucong committed
157
静态推理:
Your Name's avatar
Your Name committed
158

liucong's avatar
liucong committed
159
160
161
162
163
164
输入样本图像得到文本识别的结果

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

liucong's avatar
liucong committed
167
168
169
170
171
172
173
174
175
176
177
动态推理:

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

<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
178
179
180
181
182
183
184
185

```
available
migraphx
waiting
recognition
```

liucong's avatar
liucong committed
186
187
188
189
### 精度



liucong's avatar
liucong committed
190
191
192
193
194
195
196
197
## 应用场景

### 算法类别

`ocr`

### 热点应用行业

liucong's avatar
liucong committed
198
`金融`,`交通`,`教育`,`医疗`
liucong's avatar
liucong committed
199

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

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

liucong's avatar
liucong committed
204
## 参考资料
Your Name's avatar
Your Name committed
205

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