"examples/multimodal/evaluation/evaluate_coco.py" did not exist on "3aca141586a4b8cdc983c3ecf5f7baf60506c7f8"
README.md 4.26 KB
Newer Older
刘明贵's avatar
刘明贵 committed
1
2
3
4
<!--
 * @Author: liuhy
 * @email: liuhy6@sugon.com
 * @Date: 2023-03-03 10:17:07
刘明贵's avatar
刘明贵 committed
5
 * @LastEditTime: 2023-03-03 11:24:36
刘明贵's avatar
刘明贵 committed
6
7
 * @FilePath: \lpr\README.md
-->
liuhy's avatar
liuhy committed
8
# License-Plate-Recoginition(LPR)
liuhy's avatar
liuhy committed
9
## 模型介绍
liuhy's avatar
liuhy committed
10
11
LPR是一个基于深度学习技术的车牌识别模型,主要识别目标是自然场景的车牌图像。
## 模型结构
刘明贵's avatar
刘明贵 committed
12
模型采用LPRNet,模型结构主要包含三部分:一个轻量级CNN主干网络、基于预定位置的字符分类头部、基于贪婪算法的序列解码。此外模型使用CTC Loss和RMSprop优化器。参考论文[LPRNet: License Plate Recognition via Deep Neural Networks](https://arxiv.org/pdf/1806.10447v1.pdf)
liuhy's avatar
liuhy committed
13
## 数据集
刘明贵's avatar
刘明贵 committed
14
推荐使用一个车牌数据集[CCPD](https://github.com/detectRecog/CCPD "CCPD官网GitHub"),该数据集由中科大收集,可用于车牌的检测与识别。
刘明贵's avatar
刘明贵 committed
15

刘明贵's avatar
刘明贵 committed
16
我们提供了一个脚本cut_ccpd.py用于剪裁出CCPD数据集中的车牌位置,以便用于LPR模型的训练,在cut_ccpd.py中修改img_path和save_path即可,分别是CCPD数据集中ccpd_base文件夹的路径和剪裁出的图像保存路径。LPR用于训练的数据文件名就是图像的标签。**数据集使用固定的大小94x24。**使用方法:
刘明贵's avatar
刘明贵 committed
17

刘明贵's avatar
刘明贵 committed
18
19
20
    python cut_ccpd.py \
        --ccpdpath CCPD数据集下ccpd_base文件夹路径 \
        --savepath 保存切割图像的路径 
liuhy's avatar
liuhy committed
21
## 训练及推理
liuhy's avatar
liuhy committed
22
23
24
25
26
### 环境配置
[光源](https://www.sourcefind.cn/#/service-details)可拉取docker镜像,在[光合开发者社区](https://cancon.hpccube.com:65024/4/main/)可下载Migraphx和ONNXruntime安装包。LPR推荐的镜像、Migraphx以及ONNXruntime版本如下:
* 镜像:docker pull image.sourcefind.cn:5000/dcu/admin/base/vscode-pytorch:1.10.0-centos7.6-dtk-22.10-py37-patch4
* Migraphx-2.5.0-dtk-22.10
* ORT-1.14.0-dtk-22.10
liuhy's avatar
liuhy committed
27
28
### 训练与Fine-tunning
LPR模型的训练程序是train.py,初次训练模型使用以下命令:
liuhy's avatar
liuhy committed
29

刘明贵's avatar
刘明贵 committed
30
31
32
    python train.py \
        --train_img_dirs 训练集文件夹路径 \
        --test_img_dirs 验证集文件夹路径
刘明贵's avatar
刘明贵 committed
33

liuhy's avatar
liuhy committed
34
Fine-tunning使用以下命令:
liuhy's avatar
liuhy committed
35

刘明贵's avatar
刘明贵 committed
36
37
38
39
40
    python train.py \
        --train_img_dirs 训练集文件夹路径 \
        --test_img_dirs 验证集文件夹路径 \
        --pretrained_model 预训练模型路径 \
        --resume_epoch Fine-tuning训练的起始epoch \  
liuhy's avatar
liuhy committed
41
        --max_epoch 训练的最大epoch
刘明贵's avatar
刘明贵 committed
42
43

Fine-tuning时只训练从起始epoch到最大epoch。
liuhy's avatar
liuhy committed
44
45
### 测试
LPR模型用test.py对训练出的模型进行测试,使用方法如下:
liuhy's avatar
liuhy committed
46

刘明贵's avatar
刘明贵 committed
47
48
49
50
51
52
    python test.py \
        --model 需要测试的pth模型路径 \
        --imgpath 测试集路径(文件夹或图像皆可)  \
        --export_onnx True/False(该参数用于选择是否需要将pth模型转为onnx模型) \
        --dynamic True/False(该参数用于选择onnx模型是否使用动态的batch size)

liuhy's avatar
liuhy committed
53
### 推理
liuhy's avatar
liuhy committed
54
55
56
我们分别提供了基于OnnxRuntime(ORT)和Migraphx的推理脚本,版本依赖:
* ONNXRuntime(DCU版本) >= 1.14.0
* Migraphx(DCU版本) >= 2.5.0
liuhy's avatar
liuhy committed
57
58
#### ORT
LPRNet_ORT_infer.py是基于ORT的的推理脚本,使用方法:
liuhy's avatar
liuhy committed
59

刘明贵's avatar
刘明贵 committed
60
61
62
    python LPRNet_ORT_infer.py \
        --model onnx模型路径 \
        --imgpath 数据路径(文件夹或图像皆可)
liuhy's avatar
liuhy committed
63
64
#### Migraphx
LPRNet_migraphx_infer.py是基于Migraphx的推理脚本,使用需安装好Migraphx,支持onnx模型和mxr模型推理,mxr模型是migraphx将onnx模型保存成的离线推理引擎,初次使用onnx模型会保存对应的mxr模型。使用方法:
liuhy's avatar
liuhy committed
65

刘明贵's avatar
刘明贵 committed
66
67
68
69
70
    python LPRNet_migraphx_infer.py \
        --model mxr/onnx模型路径 \
        --imgpath 数据路径(文件夹或图像皆可) \
        --savepath mxr模型的保存路径以及模型名称

liuhy's avatar
liuhy committed
71
## 性能和准确率数据
liuhy's avatar
liuhy committed
72
测试数据使用的是[LPRNet_Pytorch](https://github.com/sirius-ai/LPRNet_Pytorch/tree/master/data/test),使用的加速卡是DCU Z100。**mxr格式的模型是migraphx创建的onnx模型的离线引擎。**
liuhy's avatar
liuhy committed
73

刘明贵's avatar
刘明贵 committed
74
| Engine | Model Path| Model Format | Accuracy(%) | Speed(ms) |
刘明贵's avatar
刘明贵 committed
75
76
77
78
| :------: | :------: | :------: | :------: |:------: |
| ONNXRuntime | model/LPRNet.onnx | onnx | 91.0 | 37.62  |
| Migraphx | model/LPRNet.onnx |onnx | 91.0 | 3.70 |
| Migraphx | model/LPRNet.mxr |mxr | 91.0 | 3.27 |
liuhy's avatar
liuhy committed
79
## 参考
liuhy's avatar
liuhy committed
80
81
* [LPRNet_Pytorch](https://github.com/sirius-ai/LPRNet_Pytorch)
* [license-plate-detect-recoginition](https://github.com/qzpzd/license-plate-detect-recoginition)