1. 磐创AI首页
  2. Medium

基于OpenVINO的目标检测

引言

在本文中,我将向您展示如何使用OpenVINO进行对象检测。我将使用带有Python API的英特尔OpenVINO发行版和PIP来安装所需的Python软件包。

如果您想自己尝试一下,可以在GitHub上找到本文中的所有代码。GitHub

要求

如果您还没有安装OpenVINO,您可以前往官方文档站点获取安装指南。installation guide

NumPy是使用阵列所必需的,可以使用以下命令进行安装:

pip install numpy

图像处理需要OpenCV,可以使用以下命令进行安装:

pip install opencv-python

型号

用于目标检测的模型是OpenVINO Model Zoo提供的SSD MobileNet V2,它已经在Coco数据集上进行了培训。SSD MobileNet V2 COCO dataset

可以使用OpenVINO下载器工具通过以下命令下载该模型:

python3 /tools/downloader/downloader.py --name  ssd_mobilenet_v2_coco

其中是open_model_zoo的目录,在我的示例中是:

/opt/intel/openvino_2021/deployment_tools/open_model_zoo

下载模型后,需要将其转换为中间表示。这可以使用OpenVINO转换器工具来完成:

python3 /tools/downloader/converter.py --name ssd_mobilenet_v2_coco --mo= --output_dir=

其中是OpenVINO模型优化器的路径,在My中为:

/opt/intel/openvino_2021/deployment_tools/model_optimizer/mo.py

是您想要放置转换后模型的文件的目录。文件将放在/public/中。

除了模型本身,您还需要类id和类名之间的映射。您可以在此处下载包含类ID和名称的键值对的.json文件。here

实施

首先,使用模型.xml和.bin读取网络:

在读取网络之后,提取关于输入的形状、布局和大小的信息:

包含此步骤很好,因为信息是动态提取的,稍后将使用它。

读取网络并提取信息后,可以将网络加载到设备上:

其中DEVICE是一个字符串,指定应该加载到的型号的设备的名称。“CPU”指定模型应该加载到CPU上,而“myriad”指定设备应该加载到神经计算棒上。为简单起见,参数num_request设置为1,这意味着一次只处理一个推理请求。

接下来,类id和类名之间的映射作为字典从.json文件加载:

在将数据传输到网络之前,需要对其进行准备,使其具有正确的形状和布局。这可以使用函数PREPARE_IMAGE()来完成:

在准备好数据后,可以将其传递给网络进行推断:

网络的输出是形状为[1,1,N,7]的斑点,其中N是检测到的边界框数。每个检测的格式为:[image_id,label,conf,x_min,y_min,x_max,y_max]

其中,label是预测类的id,conf是预测类的置信度,(x_min,y_min)是左上角边界框角的坐标,(x_max,y_max)是右下角边界框角的坐标。请注意,坐标以归一化格式存储在0-1范围内。

要使检测可视化,可以使用函数Draw_Bound_Box()将每个检测的边框和类名绘制到图像上:

该参数阈值用于基于检测置信度的过滤检测。

结果

下面是几个检测示例。这些图像是从COCO数据集中选择的。

消息来源

  • [1]:https://github.com/openvinotoolkit

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/09/30/%e5%9f%ba%e4%ba%8eopenvino%e7%9a%84%e7%9b%ae%e6%a0%87%e6%a3%80%e6%b5%8b-2/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息