OpenCV调用OpenVINO模型vehicle-license-plate-detection-barrier检测车牌

OpenVINO+Win10安装及环境配置攻略中,我们通过调用相关模型检测并识别车牌及检测车身颜色。本文将分享如何在python+OpenCV的环境下调用OpenVINO的车牌检测模型vehicle-license-plate-detection-barrier-0106检测车牌并分析该模型的检测输出数据。

vehicle-license-plate-detection-barrier

1. 运行环境

python3.6
opencv-contrib-python 4.4.0.44
openvino_2021.1.110

2. 参考资料

感谢原作者的分享!

3. vehicle-license-plate-detection-barrier-0106

vehicle-license-plate-detection-barrier-0106是基于MobileNetV2 + SSD的车辆和“中文”车牌检测器,具体说明参考vehicle-license-plate-detection-barrier-0106

这里我们重点关注其对检测对象的要求:

要求输入图像的高度与宽度均为300,颜色顺序为BGR,OpenCV的imread读取图像的顺序为BGR。

除上述要求外,该模型可检测车辆的姿态为“Front facing cars”,车牌最小宽度为“96 pixels”。本文也做了一些简单的测试,车头或车尾的车牌均可以检测,但图片像素过低时无法检测。大家根据自己的需求进行选用。 在OpenVINO+Win10安装及环境配置攻略一文中运行图像检测脚本demo_security_barrier_camera.bat时,会下载名为:

vehicle-license-plate-detection-barrier-0106
license-plate-recognition-barrier-0001
vehicle-attributes-recognition-barrier-0039
的模型(.bin和.xml文件),上述文件的存储路径为:C:\Users\UserName\Documents\Intel\OpenVINO\openvino_models\ir\intel\

不同的电脑可能会有些许差异,可参考上述路径进行查找。本文为测试便捷,将vehicle-license-plate-detection-barrier-0106文件夹及其内容拷贝至测试路径下。

大家也根据需求到Overview of OpenVINO™ Toolkit Intel’s Pre-Trained Models下载相应的模型。

3. 在OpenCV调用模型vehicle-license-plate-detection-barrier-0106

在vehicle-license-plate-detection-barrier-0106文件夹相同路径下新建testOpenVINO.py文件,代码如下:

第1~2行导入必要库;

第4行读取测试图像。本文范例中测试图像在testOpenVINO.py相同路径,如需要更改测试图像,修改此行代码即可。
第6行用OpenCV读取OpenVINO的检测模型。这里用cv2.dnn.Net_readFromModelOptimizer或者cv2.dnn.readNet都可以成功读取OpenVINO的检测模型。
第8行设置推理引擎后端;
第9行设置运算设备,推理引擎后端支持多种类型的运算设备,这里指定使用CPU作为运算设备。
第12行将读取到的图像转换成网络输入;
第13~14行设置网络输入和运行网络推理;
第16~17行输出推理结果的数据类型以及数据,下一小节我们会详细解析其推理结果;
第20~27行解析推理结果并将检测结果绘制的图像中。第23行用到了reshape(-1,7),表示要将数组out_pb重组为一个N行7列的数组,行数由out_pb的元素数量决定。例如本文中的out_pb.shape=(1,1,200,7),重组之后的out_pb.reshape(-1,7)=(200,7)。重组之后的数据取数据将更加便捷;
第29~30行以图像方式显示推理结果。

运行testOpenVINO.py的步骤:

3.1 打开command.exe,切换至OpenVINO安装目录下的setupvars.bat文件所在路径,运行setupvars.bat

3.2 在当前command.exe窗口中切换至testOpenVINO.py所在路径运行。上述两步的运行结果如下:

4. vehicle-license-plate-detection-barrier检测结果解析

vehicle-license-plate-detection-barrier

接下来我们以上图为例来说明vehicle-license-plate-detection-barrier-0106的检测结果。

vehicle-license-plate-detection-barrier-0106中可以看到其对输出的描述如下:

对于每一个检测到目标的外接矩形,其属性包含当前图片的ID,检测到目标的类别,该目标检测结果的置信度,目标外接矩形的左上角和右下角坐标。

检测目标的类别:label=1,表示当前目标是车身;label=2,表示当前目标是车牌。

例图的检测结果输出为:

 本文到此结束,感谢支持,欢迎关注。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Fork me on GitHub