模型 | 骨干网络 | 语言 | 数据集 | F-score(%) | FPS | data shape (NCHW) | 配置文件 | 下载 |
---|---|---|---|---|---|---|---|---|
DBNet | MobileNetV3 | en | IC15 | 76.96 | 26.19 | (1,3,736,1280) | yaml | ckpt | mindir |
ResNet-18 | en | IC15 | 81.73 | 24.04 | (1,3,736,1280) | yaml | ckpt | mindir | |
ResNet-50 | en | IC15 | 85.00 | 21.69 | (1,3,736,1280) | yaml | ckpt | mindir | |
ResNet-50 | ch + en | 12个数据集 | 83.41 | 21.69 | (1,3,736,1280) | yaml | ckpt | mindir | |
DBNet++ | ResNet-50 | en | IC15 | 86.79 | 8.46 | (1,3,1152,2048) | yaml | ckpt | mindir |
ResNet-50 | ch + en | 12个数据集 | 84.30 | 8.46 | (1,3,1152,2048) | yaml | ckpt | mindir | |
EAST | ResNet-50 | en | IC15 | 86.86 | 6.72 | (1,3,720,1280) | yaml | ckpt | mindir |
MobileNetV3 | en | IC15 | 75.32 | 26.77 | (1,3,720,1280) | yaml | ckpt | mindir | |
PSENet | ResNet-152 | en | IC15 | 82.50 | 2.52 | (1,3,1472,2624) | yaml | ckpt | mindir |
ResNet-50 | en | IC15 | 81.37 | 10.16 | (1,3,736,1312) | yaml | ckpt | mindir | |
MobileNetV3 | en | IC15 | 70.56 | 10.38 | (1,3,736,1312) | yaml | ckpt | mindir | |
FCENet | ResNet50 | en | IC15 | 78.94 | 14.59 | (1,3,736,1280) | yaml | ckpt | mindir |
模型 | 骨干网络 | 字典文件 | 数据集 | Acc(%) | FPS | data shape (NCHW) | 配置文件 | 下载 |
---|---|---|---|---|---|---|---|---|
CRNN | VGG7 | Default | IC15 | 66.01 | 465.64 | (1,3,32,100) | yaml | ckpt | mindir |
ResNet34_vd | Default | IC15 | 69.67 | 397.29 | (1,3,32,100) | yaml | ckpt | mindir | |
ResNet34_vd | ch_dict.txt | / | / | / | (1,3,32,320) | yaml | ckpt | mindir | |
SVTR | Tiny | Default | IC15 | 79.92 | 338.04 | (1,3,64,256) | yaml | ckpt | mindir |
Rare | ResNet34_vd | Default | IC15 | 69.47 | 273.23 | (1,3,32,100) | yaml | ckpt | mindir |
ResNet34_vd | ch_dict.txt | / | / | / | (1,3,32,320) | yaml | ckpt | mindir | |
RobustScanner | ResNet-31 | en_dict90.txt | IC15 | 73.71 | 22.30 | (1,3,48,160) | yaml | ckpt | mindir |
VisionLAN | ResNet-45 | Default | IC15 | 80.07 | 321.37 | (1,3,64,256) | yaml(LA) | ckpt(LA) | mindir(LA) |
模型 | 骨干网络 | 数据集 | Acc(%) | FPS | data shape (NCHW) | 配置文件 | 下载 |
---|---|---|---|---|---|---|---|
MobileNetV3 | MobileNetV3 | / | / | / | (1,3,48,192) | yaml | ckpt |
graph LR;
subgraph Step 1
A[ckpt] -- export.py --> B[MindIR]
end
subgraph Step 2
B -- converter_lite --> C[MindSpore Lite MindIR];
end
subgraph Step 3
C -- input --> D[infer.py];
end
subgraph Step 4
D -- outputs --> E[eval_rec.py/eval_det.py];
end
F[images] -- input --> D;
如上图所示,推理流程分为以下几步:
- 将MindOCR训练完成后的ckpt模型,使用
tools/export.py
导出成MindIR模型; - 下载并配置模型转换工具(即converter_lite),使用converter_lite工具将MindIR模型导出成MindSpore Lite MindIR模型;
- 准备好MindSpore Lite MindIR模型和输入图片后,使用
deploy/py_infer/infer.py
进行推理; - 根据模型种类不同,使用
deploy/eval_utils/eval_det.py
对文本检测类模型的推理结果进行评估,或者使用deploy/eval_utils/eval_rec.py
对文本识别类模型的推理结果进行评估。
注意:Step 1在Ascend910、GPU或CPU上执行。Step 2,3,4在Ascend310或310P上执行。
下面以模型表格中的DBNet ResNet-50 en
为例介绍推理方法:
-
下载模型表格中的ckpt文件并使用以下命令导出为MindIR,或者直接从模型表格下载已经导出完成的MindIR文件:
# 使用本地ckpt文件,导出`DBNet ResNet-50 en` 模型的MindIR # 更多参数使用详情,请执行 `python tools/export.py -h` python tools/export.py --model_name_or_config dbnet_resnet50 --data_shape 736 1280 --local_ckpt_path /path/to/dbnet.ckpt
上述命令中
--model_name_or_config
为MindOCR中的模型名称或传入yaml目录(例如--model_name_or_config configs/rec/crnn/crnn_resnet34.yaml
);--data_shape 736 1280
参数表明模型输入图片的大小为[736, 1280],每个MindOCR模型都对应着一个固定导出data shape,详细请见模型支持列表中的data shape列;--local_ckpt_path /path/to/dbnet.ckpt
参数表明需要导出的模型文件为/path/to/dbnet.ckpt
-
在Ascend310或310P上使用converter_lite工具将MindIR转换为MindSpore Lite MindIR:
执行以下命令:
converter_lite \ --saveType=MINDIR \ --fmk=MINDIR \ --optimize=ascend_oriented \ --modelFile=dbnet_resnet50-c3a4aa24-fbf95c82.mindir \ --outputFile=dbnet_resnet50_lite
上述命令中:
--fmk=MINDIR
表明输入模型的原始格式为MindIR,同时—fmk
参数还支持ONNX等;--saveType=MINDIR
表明输出模型格式为MindIR格式;--optimize=ascend_oriented
表明针对Ascend设备做优化;--modelFile=dbnet_resnet50-c3a4aa24-fbf95c82.mindir
表明当前需要转换的模型路径为dbnet_resnet50-c3a4aa24-fbf95c82.mindir
;--outputFile=dbnet_resnet50_lite
表明输出模型的路径为dbnet_resnet50_lite
,不需要加.mindir后缀,可自动生成;上述命令执行完成后会生成
dbnet_resnet50_lite.mindir
模型文件;了解更多converter_lite
了解更多模型转换教程
-
使用
deploy/py_infer/infer.py
脚本和dbnet_resnet50_lite.mindir
文件执行推理:python deploy/py_infer/infer.py \ --input_images_dir=/path/to/ic15/ch4_test_images \ --det_model_path=/path/to/mindir/dbnet_resnet50_lite.mindir \ --det_model_name_or_config=en_ms_det_dbnet_resnet50 \ --res_save_dir=/path/to/dbnet_resnet50_results
执行完成后,在参数
--res_save_dir
所指目录下生成预测文件det_results.txt
;在进行推理时,可使用
--vis_det_save_dir
参数进行结果可视化。了解更多infer.py推理参数
-
使用以下命令评估结果:
python deploy/eval_utils/eval_det.py \ --gt_path=/path/to/ic15/test_det_gt.txt \ --pred_path=/path/to/dbnet_resnet50_results/det_results.txt
下面以模型表格中的CRNN ResNet34_vd en
为例介绍推理方法:
-
下载模型表格中的MindIR文件;
-
在Ascend310或310P上使用converter_lite工具将MindIR转换为MindSpore Lite MindIR:
执行以下命令:
converter_lite \ --saveType=MINDIR \ --fmk=MINDIR \ --optimize=ascend_oriented \ --modelFile=crnn_resnet34-83f37f07-eb10a0c9.mindir \ --outputFile=crnn_resnet34vd_lite
上述命令执行完成后会生成
crnn_resnet34vd_lite.mindir
模型文件;converter_lite参数简要说明请见上述文本检测样例。
了解更多converter_lite
了解更多模型转换教程
-
使用
deploy/py_infer/infer.py
脚本和crnn_resnet34vd_lite.mindir
文件执行推理:python deploy/py_infer/infer.py \ --input_images_dir=/path/to/ic15/ch4_test_word_images \ --rec_model_path=/path/to/mindir/crnn_resnet34vd_lite.mindir \ --rec_model_name_or_config=configs/rec/crnn/crnn_resnet34.yaml \ --res_save_dir=/path/to/rec_infer_results
执行完成后,在参数
--res_save_dir
所指目录下生成预测文件rec_results.txt
。了解更多infer.py推理参数
-
使用以下命令评估结果:
python deploy/eval_utils/eval_rec.py \ --gt_path=/path/to/ic15/rec_gt.txt \ --pred_path=/path/to/rec_infer_results/rec_results.txt
下面以模型表格中的MobileNet
为例介绍推理方法:
- 下载模型表格中的ckpt文件;
- 使用
export.py
工具将ckpt转换为mindIR- 转换为动态mindIR
python tools/export.py \ --model_name_or_config configs/cls/mobilenetv3/cls_mv3.yaml \ --save_dir /path/to/save/cls_mv3 \ --is_dynamic_shape True \ --model_type cls
- 转换为静态mindIR
python tools/export.py \ --model_name_or_config configs/cls/mobilenetv3/cls_mv3.yaml \ --save_dir /path/to/save/cls_mv3 \ --is_dynamic_shape False \ --data_shape 48 192
- 转换为动态mindIR
- 在Ascend310或310P上使用converter_lite工具将MindIR转换为MindSpore Lite MindIR:
执行以下命令:
converter_lite \
--saveType=MINDIR \
--fmk=MINDIR \
--optimize=ascend_oriented \
--modelFile=/path/to/save/cls_mv3.mindir \
--outputFile=cls_mv3_lite
上述命令执行完成后会生成cls_mv3_lite.mindir
模型文件;
了解更多converter_lite
了解更多模型转换教程
根据文本检测, 文本识别, 文字方向识别, 准备好用于推理的mindIR文件。执行下列命令进行端到端推理
python deploy/py_infer/infer.py \
--input_images_dir=/path/to/ic15/ch4_test_images \
--det_model_path=/path/to/mindir/dbnet_resnet50_lite.mindir \
--det_model_name_or_config=en_ms_det_dbnet_resnet50 \
--cls_model_path=/path/to/mindir/cls_mv3_lite.mindir \
--cls_model_name_or_config=configs/cls/mobilenetv3/cls_mv3.yaml \
--rec_model_path=/path/to/mindir/crnn_resnet34vd_lite.mindir \
--rec_model_name_or_config=configs/rec/crnn/crnn_resnet34.yaml \
--res_save_dir=/path/to/infer_results
转换与推理相关问题可参考FAQ。