深度学习之openvino预训练模型测试(车牌识别)

0 背景

在上一篇文章《深度学习之openvino预训练模型测试》,我们介绍了如何使用 intel 提供的预训练模型完成语义分割任务。但在用 public 预训练模型时,发现我的 openvino 版本较低不支持,因此,对我的 sdk 进行了升级,继续介绍如何使用预训练模型的方法。

升级安装方法参考《深度学习之win10安装配置openvino》 ,升级后的版本为 Version 2021.3。

1 模型介绍

这篇文章我们以  Optical Character Recognition Models / OCR 字符识别模型(车牌识别)模型为例,首先看看模型介绍

license-plate-recognition-barrier-0007 模型是一个较小规模的端到端的中文车牌识别模型,来识别道路中的中国车牌,示例如下(出于隐私保护目的,对车牌进行了裁剪处理

深度学习之openvino预训练模型测试(车牌识别)_第1张图片

模型参数如下

指标
平面内旋转(Rotation in-plane) ±10˚
平面外旋转(Rotation out-of-plane) Yaw: ±45˚ / Pitch: ±45˚
最小宽度(Min plate width) 94 pixels
识别准确率(Ratio of correct reads) 98%
计算量(GFlops) 0.347
参数量(MParams) 1.435
训练框架(Source framework) TensorFlow

注意,上述准确率指标只针对蓝牌,其它类型的车牌性能可能会差一些。

输入信息:

Image, name: data , shape: 1,3,24,94, format is 1,C,H,W where:

  • C - channel
  • H - height
  • W - width

Channel order is BGR.

输出信息:

Encoded vector of floats, name: decode, shape: 1,88,1,1. Each float is an integer number encoding a character according to this dictionary:

    0 0
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6
    7 7
    8 8
    9 9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44 A
    45 B
    46 C
    47 D
    48 E
    49 F
    50 G
    51 H
    52 I
    53 J
    54 K
    55 L
    56 M
    57 N
    58 O
    59 P
    60 Q
    61 R
    62 S
    63 T
    64 U
    65 V
    66 W
    67 X
    68 Y
    69 Z

2 模型转换

接下来我们下载该模型,方法和上一篇文章中提到的一样,这里不赘述,直接贴出下载过程

下载的模型是 tensorflow 格式的 ckpt 文件,我们需要做一个转换,满足 openvino 框架调用

转化方法是使用 downloader 路径下的 converter.py 文件,需要指定模型名称

深度学习之openvino预训练模型测试(车牌识别)_第2张图片

运行指令 python .\converter.py --name license-plate-recognition-barrier-0007,转换成功显示如下,在对应的路径下生成 IR 模型,包含 xml 和 bin 文件

深度学习之openvino预训练模型测试(车牌识别)_第3张图片

3 模型调用

同样的,在 sdk 里提供了模型调用的 demo,我们直接运行 build_demo_msvc.bat,可以一次性把所有的 demo 进行编译 

深度学习之openvino预训练模型测试(车牌识别)_第4张图片

方法如下

深度学习之openvino预训练模型测试(车牌识别)_第5张图片

对于车牌识别功能来说,用到的项目是 security_barrier_camera_demo,生成的可执行文件为  C:\Users\ZONGXP\Documents\Intel\OpenVINO\omz_demos_build\intel64\Release\security_barrier_camera_demo.exe

查看使用说明,需要指定输入文件、车辆和车牌检测模型(-m)、车牌识别模型(-m_lpr)

深度学习之openvino预训练模型测试(车牌识别)_第6张图片

其中,车牌和车辆检测模型属于 Object Detection Models / 目标检测模型 中的 vehicle-license-plate-detection-barrier-0123,下载和转化方法同上边识别模型的方法类似,这里贴一下运行指令

深度学习之openvino预训练模型测试(车牌识别)_第7张图片

下载转换好之后,运行执行脚本

深度学习之openvino预训练模型测试(车牌识别)_第8张图片

结果如下,车牌识别结果有问题,还需要进一步排查

4 总结

本文对 openvino 调用 public 预训练模型的方法进行了介绍,与 intel 预训练模型相比,主要区别在于需要一次格式转换,目前支持的转化类型包括以下几种:

  • Caffe,
  • TensorFlow,
  • MXNet,
  • ONNX,
  • Kaldi.

后续会进行更加深入的研究

你可能感兴趣的:(#,深度学习)