车牌识别模型
中国国内车牌识别模型,适用于kendryte系列K230/K230D芯片
- 适用芯片:k230
- 任务类型:shibie、ocr
- 浏览次数:362
- 下载次数:105
- 适配 SDK:MicroPython/Rt-Smart/Linux
# 车牌识别模型
## 概述
本模型是基于MobileNet为backbone的RLNet模型构建的一个车牌识别模型,用于识别图像中的中国国内车牌。
车牌识别模型输入形状为[1,1,32,220],输出形状为[55,1,74]。输出基于OCR,每四个像素作为一个识别点,因此输入为220,输出长度为220/4=55,每个识别点输出74个字符的概率分布,74为国内车牌字符集。
> 注:国内车牌字符集为{"挂", "使", "领", "澳", "港", "皖", "沪", "津", "渝", "冀", "晋", "蒙", "辽", "吉", "黑", "苏", "浙", "京", "闽", "赣", "鲁", "豫", "鄂", "湘", "粤", "桂", "琼", "川", "贵", "云", "藏", "陕", "甘", "青", "宁", "新", "警", "学","0", "1", "2", "3", "4", "5", "6", "7", "8", "9","A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z","_", "-"}
## 转换脚本说明
本模型的转换脚本为`convert_kmodel.py`,使用方法如下:
```bash
python convert_kmodel.py --target k230 --model plate_reco.onnx --ptq_option 0 --calib_dir ./calibration_data --sample_count 30
```
参数说明:
| 参数 | 说明 |
| --- | --- |
| `--target` | 目标芯片,默认值为`k230`,可选`k230`和`cpu`,选择`cpu`时不存在量化过程 |
| `--model` | 输入的onnx模型路径 |
| `--ptq_option` | 量化过程的校准方式和精度,默认值为0,表示默认校准方式为 `Noclip`,精度为权重`uint8`,数据`uint8` |
| `--calib_dir` | 校准数据集目录,默认值为`./calibration_data` |
| `--sample_count` | 校准数据集样本数量,默认值为20 |
## 参数说明
在使用nncase转换kmodel的过程中,最重要的两部分参数为编译选项部分和量化选项部分,当前模型这两部分参数设置如下表所示:
- **编译选项参数说明**
| 参数 | 设置值|说明|
| --- | --- | --- |
|`compile_options.target`|`k230`|编译目标硬件,这里选择k230|
|`compile_options.preprocess`|`True`|是否将部分预处理封装进模型内部,这里设置为True|
|`compile_options.swapRB`|`False`|当开启预处理时,是否交换输入的RB通道,这里设置为False,不交换RB通道,这里的设置看模型需要什么顺序和数据源是什么顺序|
|`compile_options.input_shape`|`[1,3,32,220]`|当开启预处理时,设置模型输入形状为[1,3,32,220]|
|`compile_options.input_type`|`uint8`|当开启预处理时,指定输入数据类型为`uint8`|
|`compile_options.input_range`|`[0,1]`|当开启预处理时,指定反量化后输入数据范围,这里设置为[0,1]|
|`compile_options.mean`|`[0.5]`|当开启预处理时,指定输入数据前处理标准化的均值,这里设置为[0.5],单通道|
|`compile_options.std`|`[0.5]`|当开启预处理时,指定输入数据前处理标准化的标准差,这里设置为[0.5],单通道|
|`compile_options.input_layout`|`NCHW`|指定输入数据布局为`NCHW`|
|`compile_options.output_layout`|``|不指定输出数据布局|
- **量化选项参数说明**
| 参数 | 设置值|说明|
| --- | --- | --- |
|`ptq_options.samples_count`|`20`|量化时使用校准数据的数量|
|`ptq_options.calibrate_method`|`Noclip`|指定量化校准方法为`Noclip`|
|`ptq_options.w_quant_type`|`uint8`|指定权重量化精度为`uint8`|
|`ptq_options.quant_type`|`uint8`|指定数据量化精度为`uint8`|
## 输出结果
模型转换完成后,将在当前目录生成同名的 `plate_reco.kmodel` 文件。
查看完整页面