很久以前就看了这么一篇文章 "使用英特尔®GPU的性能调优达到153帧MobileNet-SSD目标检测", 作者是在Intel CPU的集成显卡上实现的。一直想亲手实践一下,无奈这些年患了很严重的拖延症和懒癌。最近病情有所好转,索性努力研究一下。
首先安装VS2017, 接着从官网下载安装最新的openvino版本2019 R3. 按照官网的Install Intel® Distribution of OpenVINO™ toolkit for Windows* 10教程安装下载必须的依赖库和Model zoo的各种模型文件。
安装好之后就可以编译openvino自带的sample例程了。
OpenVINO很贴心的提供了一个batch文件(如下图所示),在文件管理器里双击运行该bat文件,可以根据当前系统安装的VS2015/VS2017/VS2019的版本自动生成对应的VC项目文件并且编译生成代码。
生成的项目文件Samples.sln在Documents\Intel\OpenVINO\inference_engine_samples_build目录下。
其中benchmark_app项目就是官方提供的测试OpenVINO推理性能的参考项目。可以通过学习官方代码了解如何最大程度的挖掘硬件性能,获得更高的推理能力
benchmark的用法可以参考官网 Benchmark C++ Tool的说明,如果要测CPU的性能,最简单的命令就是
./benchmark_app -m -i -d CPU
-m 后面带模型的文件名, -i 后面跟一个目录名,目录里放一些需要推理的图片
我这里用mobilenet-ssd来测试。
benchmark_app.exe -m c:\temp\cvt_model\mobilenet-ssd-fp32\mobilenet-ssd.xml -i c:\temp\ssd_img
测试程序会默认自动跑一分钟模型推理,统计1分钟里推理了多少图片,平均每张图片所需的时间。
这里重点看Latency和Throughput的值
Latency指平均推理一张图片所需的时间。Throughput指每秒钟可以同时推理多少张图片。
在实际场景中,如果我们想用最快的速度来推理一张图片得到推理结果的话,需要将Latency尽可能的变小;如果我们想充分挖掘硬件的潜力,在单位时间里尽可能多的处理数据的话,需要将Throughput尽可能的变大。这2个参数指标通常是互相对立的,如果要Lantency变小,就需要将所有的硬件资源集中起来做一件事;如果要Throughput变大,就需要将所有的硬件资源都最大限度的调动起来做事,不让每一块电路空闲下来,这也就意味着同时跑很多件事,但是每件事的处理时间会变长。