目标追踪实验

  • 1 说明
  • 2 实验目的
  • 3 实验原理
  • 4 操作步骤
  • 5实际操作

1 说明

本实验所有代码均在ubuntu 18.04 + OpenVINO 2020R3.LTS installed 环境下验证通过,若需要代码移植,请务必检查环境配置是否与本实验环境相同。

2 实验目的

1、了解推理引擎计数器,了解如何获取网络各层的实时执行时间。
2、掌握添加时间计数器测量推理时间的方法。

任务内容
1、了解推理引擎计数器,了解如何获取网络各层的实时执行时间。
2、在配置文件中添加计数器,测量推理时间。
3、验证第三章节实验三生成的不同模型图像分类的性能。

3 实验原理

推理引擎是对模型针对特定设备的二级优化,其使用灵活的“插件”架构去执行环境配置,使其可以在具有完全不同的指令集、不同的内存布局的设备上实施推理,并且实现最佳性能。
推理引擎API是在所有英特尔架构的硬件中实施推理的一套简单而且统一的API,其特殊的插件架构支持优化推理性能和内存使用,同时具有足够的灵活性来支持各种灵活场景。推理引擎API有多个重要的类,包括IECore、InferRequest等,上一个实验我们重点介绍InferRequest类中的get_perf_counts()方法。该方法如下图所示,主要功能则是查询网络每层的性能,通过该方法可以获得最耗时的层信息。

然而很多时候处理视频图像每一帧都会有多于1次的推理(例如,当对视频图像中的两辆车进行分类),而每一个推理耗时则包含网络的每个层的耗时。那么如何获取每一帧推理的总耗时呢?

在Python中包含了若干个能够处理时间的库,而time库是最基本的一个,是Python中处理时间的标准库。time库能够表达计算机时间,提供获取系统时间并格式化输出的方法,提供系统级精确计时功能(可以用于程序性能分析)。time库包含三类函数,分别是时间获取函数、时间格式化函数、程序计时函数。下面我们就来看一下本实验所需的时间获取函数,如下表所示。

函数 描述
time() 获取当前时间戳,即当前系统内表示时间的一个浮点数。例如:

>>> import time>>> time.time()1584341528.5690455时间戳是从1970年1月1日0:00开始,到当前为止的一个以秒为单位的数值。ctime()   获取当前时间,并返回一个以人类可读方式的字符串。例如:
>>> import time>>> time.ctime()‘Mon Mar 16 14:59:35 2020’gmtime() 获取当前时间,并返回计算机可处理的时间格式。例如:
import timetime.gmtime()
time.struct_time(tm_year=2020, tm_mon=3, tm_mday=16, tm_hour=7, tm_min=6, tm_sec=2, tm_wday=0, tm_yday=76, tm_isdst=0)

4 操作步骤

步骤1
登录实验平台,进入实验环境并打开终端。

步骤2
执行命令su,输入root用户密码root@openlab,切换到root目录。

步骤3
执行命令cd ~/51openlab/05/exercise-1/,进入exercise-1目录。

步骤4
执行如下命令,初始化OpenVINO。

# source /opt/intel/openvino/bin/setupvars.sh

步骤5
执行如下命令,录入实验路径。

# export lab_dir=~/51openlab/05/exercise-1/

步骤6
执行命令gst-play-1.0 road.mp4,打开视频播放器,查看所要被检测的视频文件,如下图所示,可以看到视频中有很多行驶的汽车。

步骤7
执行如下命令,对上图所查看的视频中的对象进行目标检测追踪,并保存结果在output.avi文件中。

# python3 2.object-detection-save-video.py

步骤8
再次执行命令gst-play-1.0 output.avi播放视频,验证目标检测追踪结果。

步骤9
执行如下命令运行程序3.object-detection-show-progress.py,该程序会显示每帧视频的进度。同时也会显示帧编号,以及每帧视频所检测到的所有对象的分类。

# python3 3.object-detection-show-progress.py

由运行结果,可以看出视频中每帧检测到的对象大多数是类3,也就是汽车。

步骤10
执行命令vi add-perf-object-detection.py,编辑文件添加如下图红框中所示代码,在推理前后增加计时点,结束时间与开始时间相减以获得推理时间。然后使用sys.stdout.write函数将结果打印在屏幕上。编辑完成,执行wq保存修改。

步骤11
执行如下命令运行add-perf-object-detection.py程序,可以看到程序显示每帧检测追踪到的对象的同时,也会打印出其推理时间,如下图所示。

# python3 add-perf-object-detection.py

步骤12
验证ONNX模型在不同参数下的推理性能。执行命令cd ~/51openlab/05/exercise-3/,进入exercise-3目录。

步骤13
执行vi classification_sample.py命令,修改classification_sample.py文件,使用time函数获取推理时间。具体命令和添加代码如下所示。


步骤14
执行如下命令初始化OpenVINO。

# source /opt/intel/openvino/bin/setupvars.sh

步骤15
执行如下命令,录入实验路径。

# export lab_dir=~/51openlab/05/exercise-3/

步骤16
执行如下命令,运行精度为FP16的模型进行推理分类,得到推理时间如下截图。

# python3 classification_sample.py -m mobilenetv2-7-FP16.xml --labels labels.txt -i 1.JPEG

步骤17
执行如下命令,运行原始精度为32的模型进行推理分类,得到推理时间如下截图。

# python3 classification_sample.py -m mobilenetv2-7.xml --labels labels.txt -i 1.JPEG

步骤18
执行如下命令,运行batch为4的模型进行推理分类,得到推理时间如下截图。

# python3 classification_sample.py -m mobilenetv2-7-batch-4.xml --labels labels.txt -i 1.JPEG

步骤19
执行如下命令,运行输入大小为[1,3,100,100]的smaller模型进行推理分类,得到推理时间如下截图。

# python3 classification_sample.py -m mobilenetv2-7-smaller.xml --labels labels.txt -i 1.JPEG

由以上运行结果可知,精度为FP16的模型在分类正确的前提下,其推理所花费的时间比精度为FP32的模型更少,性能更好。batch为4的模型比batch为1的模型,其推理所花费的时间更少,性能更好一点。而输入大小为越小,其推理所花费的时间越小,但是其推理分类的准确度降低。

5实际操作


20 OPENVINO intermediate course 12相关推荐

  1. Linux 第20天: (09月12日) Linux启动和内核管理

    Linux 第20天: (09月12日) Linux启动和内核管理 本章内容 CentOS 5和6的启动流程 服务管理 Grub管理 自制Linux 启动排错 编译安装内核 Linux组成 Linux ...

  2. 25 OPENVINO intermediate course 17 运行车辆追踪处理流水线

    运行车辆追踪处理流水线 1 说明 2 实验目的 3 任务内容 4 实验原理 5 操作步骤 6 实际操作 1 说明 本实验所有代码均在ubuntu 18.04 + OpenVINO 2020R3.LTS ...

  3. Android OpenGL ES(十一)绘制一个20面体 .

    前面介绍了OpenGL ES所有能够绘制的基本图形,点,线段和三角形.其它所有复杂的2D或3D图形都是由这些基本图形构成. 本例介绍如何使用三角形构造一个正20面体.一个正20面体,有12个顶点,20 ...

  4. 时间为什么用 12 进制?

    首先我们都知道,东西方的基础计数基本都是以十进制为主的,这是因为正常人类都是五指,双手加起来十指,十进制可以让人类不借助其他工具就能计数,非常方便. 但是时间好像不一样,东西方都把一年分为12个月,一 ...

  5. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #20 使用fio进行I/O的基准测试...

    HACK #20 使用fio进行I/O的基准测试 本节介绍使用fio进行模拟各种情况的I/O基准测试的操作方法. I/O的基准测试中有无数需要考虑的因素.是I/O依次访问还是随机访问?是通过read/ ...

  6. 2018年12月份学习总结,PMP学习总结

    本文摘录2018年12月份学习总结,创建日期:2019-04-15 17:09:30,有修改. 这是一个在2018年报考.学习PMP的总结,小小的在内网的分享.2021-01-21 22:11:20 ...

  7. 公安部:明年起闯红灯扣6分 挡车牌扣12分

    新修订的<机动车驾驶证申领和使用规定>出台明年起驾龄1年内者不得独自上高速 据新华社北京电(记者邹伟.史竞男)为严格大中型客货车驾驶人管理,改进驾驶人考试制度,公安部日前发布修订后的< ...

  8. 数学之美系列12(转帖)

    数学之美 系列 12 - 余弦定理和新闻的分类2006年7月20日 上午 10:12:00 发表者:吴军,Google 研究员 余弦定理和新闻的分类似乎是两件八杆子打不着的事,但是它们确有紧密的联系. ...

  9. 2020倩女幽魂服务器正在维修,倩女幽魂手游2020年12月3日维护公告

    在倩女幽魂手游中2020年12月3日更新了哪些有趣的内容呢?想了解本次更新情况的话,下面就来看一下吧~! 倩女幽魂手游2020年12月3日维护公告 <倩女幽魂>手游将于本周四上午进行在线更 ...

最新文章

  1. Nature子刊:Salmon不比对快速宏基因组基因定量
  2. zeroc-ice的全双工通信策略
  3. cannot import name 'ImageRecordInt8Iter'
  4. linux apache 文件服务器,Linux下搭建Apache服务器全过程详解
  5. 用C语言打开文件的几种方式及区别
  6. python快速编程入门课本中的名片管理器_python实现名片管理器的示例代码
  7. Hive多字符列分割
  8. Java中throws和throw的区别讲解
  9. java访问其它服务器_java – 多个客户端同时访问服务器
  10. 关于YUV格式的一些总结
  11. CF 4B. Before an Exam
  12. JMX实现远程服务器Tomcat系统监控之三
  13. 关于NTRIP、RTCM、NMEA的学习
  14. 闪光css,css实现图片闪光效果
  15. HttpClient下载图片不完整的解决办法
  16. 教程:客制化您的输入法
  17. c语言产生式系统动物识别系统,简单动物识别系统的知识表示实验报告
  18. 【大数据AI人工智能】创造意义的是人类,不是机器
  19. 美团人的写作基本功是如何练成的
  20. docker部署html页面,在Docker容器中部署静态网页的方法教程

热门文章

  1. 2019年压力焊作业安全生产模拟考试题库及答案
  2. OSChina 周日乱弹 —— 让人热血沸腾的女人
  3. Jpg、png怎样变成gif?一键快速合成gif的方法?
  4. 一文详解 | 低代码发展的 “背后推手”
  5. 原生js颜色选择器取色器组件
  6. vim-plug 安装失败
  7. 算法笔记方法论3 递推法与递归法
  8. base64加密原理详解及C语言源码
  9. Jmeter性能监控(一)
  10. 计算机ping使用的端口,如何用ping来测试端口(port)?