README.md 3.58 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
19
## 算法原理

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

## 环境配置
liucong's avatar
liucong committed
20

liucong's avatar
liucong committed
21
### Docker
Your Name's avatar
Your Name committed
22

liucong's avatar
liucong committed
23
拉取镜像:
Your Name's avatar
Your Name committed
24

liucong's avatar
liucong committed
25
```plaintext
liucong's avatar
liucong committed
26
docker pull sugonhub/migraphx:3.2.1-centos7.6-dtk-23.04.1-py38
Your Name's avatar
Your Name committed
27
28
```

liucong's avatar
liucong committed
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
创建并启动容器,安装相关依赖:

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

#### 设置环境变量
shizhm's avatar
shizhm committed
49
50
51
52
53

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

liucong's avatar
liucong committed
54
#### 运行示例
liucong's avatar
liucong committed
55
56
57
58
59

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

```
# 进入python示例目录
shizhm's avatar
shizhm committed
60
cd <path_to_crnn_migraphx>/Python
liucong's avatar
liucong committed
61
62

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

liucong's avatar
liucong committed
65
# 运行示例
liucong's avatar
liucong committed
66
67
68
python Crnn_infer_migraphx.py 
```

liucong's avatar
liucong committed
69
### C++版本推理
liucong's avatar
liucong committed
70

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


liucong's avatar
liucong committed
74
#### 构建工程
Your Name's avatar
Your Name committed
75
76

```
Your Name's avatar
Your Name committed
77
rbuild build -d depend
Your Name's avatar
Your Name committed
78
79
```

liucong's avatar
liucong committed
80
#### 设置环境变量
Your Name's avatar
Your Name committed
81
82
83

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

Your Name's avatar
Your Name committed
84
```
shizhm's avatar
shizhm committed
85
export LD_LIBRARY_PATH=<path_to_crnn_migraphx>/depend/lib64/:$LD_LIBRARY_PATH
Your Name's avatar
Your Name committed
86
87
```

Your Name's avatar
Your Name committed
88
然后执行:
Your Name's avatar
Your Name committed
89
90

```
Your Name's avatar
Your Name committed
91
92
93
source ~/.bashrc
```

liucong's avatar
liucong committed
94
#### 运行示例
Your Name's avatar
Your Name committed
95

shizhm's avatar
shizhm committed
96
97
98
99
100
101
102
103
104
成功编译CRNN工程后,执行如下命令运行该示例:

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

# 进入build目录
cd build/
```
Your Name's avatar
Your Name committed
105
106
107
108

1. 静态推理

```
liucong's avatar
liucong committed
109
./CRNN 0
Your Name's avatar
Your Name committed
110
111
```

liucong's avatar
liucong committed
112
113
114
115
116
117
118
119
120
121
2. 动态shape推理

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

## result

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

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

liucong's avatar
liucong committed
125
<img src="./Resource/Images/text.jpg" style="zoom:100%;" align=middle>
Your Name's avatar
Your Name committed
126
127
128
129
130

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

liucong's avatar
liucong committed
131
### C++版本
Your Name's avatar
Your Name committed
132

liucong's avatar
liucong committed
133
静态推理:
Your Name's avatar
Your Name committed
134

liucong's avatar
liucong committed
135
136
137
138
139
140
输入样本图像得到文本识别的结果

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

liucong's avatar
liucong committed
143
144
145
146
147
148
149
150
151
152
153
动态推理:

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

<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
154
155
156
157
158
159
160
161

```
available
migraphx
waiting
recognition
```

liucong's avatar
liucong committed
162
163
164
165
166
167
168
169
170
171
## 应用场景

### 算法类别

`ocr`

### 热点应用行业

`工业制造``金融``交通``教育``医疗`

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

liucong's avatar
liucong committed
174
https://developer.hpccube.com/codes/modelzoo/crnn_migraphx
Your Name's avatar
Your Name committed
175
176
177

## 参考

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