OpenVINO工具套件课程笔记

1.充分使用OpenVINO™ 工具套件

第一课.人体动作姿势识别示例(3D Human Pose Demo)

设定实验路径
  • 设定OpenVINO的路径

  • 设定当前实验的路径

    OpenVINO工具套件课程笔记_第1张图片

​ 从上图中看出,实验文件夹的名称为OV-300。

运行初始化OpenVINO的脚本

输入指令source $OV/bin/setupvars.sh

当我们看到如下字样便表示OpenVINO的环境已经成功得到初始化。

image-20220319122506326

运行OpenVINO依赖脚本的安装
  • 进入脚本目录:cd $OV/deployment_tools/model_optimizer/install_prerequisites/
  • 安装OpenVINO需要的依赖:sudo ./install_prerequisites.sh

OpenVINO工具套件课程笔记_第2张图片

OpenVINO工具套件课程笔记_第3张图片

此处略去无数行……总之就是进行了一个OpenVINO依赖脚本的安装进程

安装OpenVINO模型下载器的依赖文件
  • 进入到模型下载器的文件夹 cd $OV/deployment_tools/tools/model_downloader/

  • 安装模型下载器的依赖: python3 -mpip install --user -r ./requirements.in

OpenVINO工具套件课程笔记_第4张图片

  • 安装下载转换pytorch模型的依赖:

    sudo python3 -mpip install --user -r ./requirements-pytorch.in

OpenVINO工具套件课程笔记_第5张图片

  • 安装下载转换caffe2模型的依赖:

    sudo python3 -mpip install --user -r ./requirements-caffe2.in

OpenVINO工具套件课程笔记_第6张图片

通过模拟器下载人体姿势识别模型
  • **正式进入实验目录:**cd $WD

  • 查看human_pose_estimation_3d_demo需要的模型列表:cat /opt/intel/openvino_2021//deployment_tools/inference_engine/demos/human_pose_estimation_3d_demo/python/models.lst

  • 通过模型下载器下载模型:python3 $OV/deployment_tools/tools/model_downloader/downloader.py --list $OV/deployment_tools/inference_engine/demos/human_pose_estimation_3d_demo/python/models.lst -o $WD

OpenVINO工具套件课程笔记_第7张图片

利用模型转换器把模型转换成IR格式
  • OpenVINO支持把市面上主流的框架比如TensorFlow/Pytorch->ONNX/CAFFE等框架构建好的模型转换为IR格式: python3 $OV/deployment_tools/tools/model_downloader/converter.py --list $OV/deployment_tools/inference_engine/demos/human_pose_estimation_3d_demo/python/models.lst

目前OpenVINO的推理引擎只能推理转换过后的IR文件,类似于.pb/.caffemode/.pt等文件是不支持转换的。

编译OpenVINO的Python API
  • 只需要编译一次:source $OV/inference_engine/demos/build_demos.sh -DENABLE_PYTHON=ON

  • 若你需要使用OpenVINO的PythonAPI,请加入如下编译出来的库地址(否则会找不到库):export PYTHONPATH="$PYTHONPATH:/home/dc2-user/omz_demos_build/intel64/Release/lib/"

播放待识别的实验视频
  • 手动输入如下命令来播放视频:show 3d_dancing.mp4
运行人体姿势识别Demo

python3 $OV/inference_engine/demos/human_pose_estimation_3d_demo/python/human_pose_estimation_3d_demo.py -m $WD/public/human-pose-estimation-3d-0001/FP16/human-pose-estimation-3d-0001.xml -i 3d_dancing.mp4 --no_show -o output.avi

耐心等待程序的运行,直到屏幕上出现“Inference Completed!! ”则表示推理完成。

OpenVINO工具套件课程笔记_第8张图片

输入“ls”指令查看当前文件夹内的所有文件。

image-20220319130808839

转换并播放识别结果视频

终于到了本实验的最后一步!!

因为平台的现实,所以我们必须先将此视频转换为MP4格式,指令为:ffmpeg -i output.avi output.mp4

经过一番等待后,手动输入 show output.mp4

将推理结果视频进行播放

第二课.图像着色示例

设置实验路径

export OV=/opt/intel/openvino_2021/

export WD=~/OV-300/01/Colorization/

初始化OpenVINO
  • **正式进入工作目录:**cd $WD

  • 查看该demo的所需模型:cat $OV/deployment_tools/inference_engine/demos/colorization_demo/python/models.lst

查看原始视频

手动输入:show butterfly.mp4

OpenVINO工具套件课程笔记_第9张图片

运行着色Demo

python3 $OV/inference_engine/demos/colorization_demo/python/colorization_demo.py -m $WD/public/colorization-siggraph/colorization-siggraph.onnx -i butterfly.mp4 --no_show -o output.avi

等待程序运行完成,看到“Inference Completed”的字样。输出avi将保存于当前文件夹,使用 “ ll ”命令查看当前文件夹。

OpenVINO工具套件课程笔记_第10张图片

查看输出结果视频
  • 先使用ffmpeg将.avi转换为.mp4格式:ffmpeg -i output.avi output.mp4

  • 手动输入播放视频的指令:show output.mp4

第三课.音频检测示例

初始化环境
  • 初始化工作目录 export OV=/opt/intel/openvino_2021/

export WD=~/OV-300/01/Audio-Detection/

  • 初始OpenVINO source $OV/bin/setupvars.sh
进入音频监测目录
  • 进入OpenVINO中自带的音频检测示例:cd $OV/data_processing/dl_streamer/samples/gst_launch/audio_detect

  • 可以查看检测的标签文件:vi ./model_proc/aclnet.json

  • 也可以播放待会待检测的音频文件show how_are_you_doing.mp3

运行音频检测

输入命令:bash audio_event_detection.sh

分析音频检测结果

我们发现这样的结果并不适合我们进行分析观察,所以我们可以运行如下命令:

bash audio_event_detection.sh | grep “label”:" |sed ‘s/.*label"//’ | sed ‘s/“label_id.*start_timestamp”/’ | sed ‘s/}].*//’

在时间戳600000000的时候,我们检测到语音了,但并不知道内容是什么,因为它知识一个检测示例,并不是一个识别示例:“Speech”,600000000

第四课.公式识别

初始化环境
  • 初始化环境

export OV=/opt/intel/openvino_2021/

export WD=~/OV-300/01/Formula_recognition/

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

image-20220319134124495

查看可识别的字符

cd $WD

  • 手写字符:

vi hand.json

OpenVINO工具套件课程笔记_第11张图片

  • 打印字符:

vi latex.json

OpenVINO工具套件课程笔记_第12张图片

查看待识别的公式

  • 进入材料目录

cd $WD/…/Materials/

  • 查看打印公式

show Latex-formula.png

OpenVINO工具套件课程笔记_第13张图片

  • 查看手写公式

show Hand-formula.png

OpenVINO工具套件课程笔记_第14张图片

运行公式识别

cd $WD

  • 识别打印公式

python3 $OV/inference_engine/demos/formula_recognition_demo/python/formula_recognition_demo.py -m_encoder $WD/intel/formula-recognition-medium-scan-0001/formula-recognition-medium-scan-0001-im2latex-encoder/FP16/formula-recognition-medium-scan-0001-im2latex-encoder.xml -m_decoder $WD/intel/formula-recognition-medium-scan-0001/formula-recognition-medium-scan-0001-im2latex-decoder/FP16/formula-recognition-medium-scan-0001-im2latex-decoder.xml --vocab_path latex.json -i $WD/…/Materials/Latex-formula.png -no_show

识别手写公式

python3 $OV/inference_engine/demos/formula_recognition_demo/python/formula_recognition_demo.py -m_encoder $WD/intel/formula-recognition-polynomials-handwritten-0001/formula-recognition-polynomials-handwritten-0001-encoder/FP16/formula-recognition-polynomials-handwritten-0001-encoder.xml -m_decoder $WD/intel/formula-recognition-polynomials-handwritten-0001/formula-recognition-polynomials-handwritten-0001-decoder/FP16/formula-recognition-polynomials-handwritten-0001-decoder.xml --vocab_path hand.json -i $WD/…/Materials/Hand-formula.png -no_show

以上命令用来对比原始图片,检查识别是否正确。

第五课.环境深度识别

初始化环境
  • 环境目录

export OV=/opt/intel/openvino_2021/

export WD=~/OV-300/01/MonoDepth_Python/

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

转换原始模型文件为IR文件

进入工作目录

cd $WD

下载好的模型为TensorFlow格式,使用converter准换为IR格式:

python3 $OV/deployment_tools/tools/model_downloader/converter.py --list $OV/deployment_tools/inference_engine/demos/monodepth_demo/python/models.lst

查看原始图片

show tree.jpeg

运行深度识别示例

进入工作目录

cd $WD

  • 运行示例,该示例的作用是自动分离图片中景深不同的地方:

python3 $OV/inference_engine/demos/monodepth_demo/python/monodepth_demo.py -m $WD/public/midasnet/FP32/midasnet.xml -i tree.jpeg

  • 查看显示结果

show disp.png

OpenVINO工具套件课程笔记_第15张图片

第六课.目标识别示例

初始化环境
  • 定义OpenVINO 目录

export OV=/opt/intel/openvino_2021/

  • 定义工作目录

export WD=~/OV-300/01/Object_Detection/

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

  • 进入工作目录

cd $WD

选择适合的模型

可以在不同拓扑网络下选择适合模型:

vi $OV/inference_engine/demos/object_detection_demo/python/models.lst

转换模型为IR格式
  • 本实验已经事先下完成:pedestrian-and-vehicle-detector-adas 与 yolo-v3-tf

  • 使用Converter进行IR转换,由于pedestrian-and-vehicle-detector-adas 为英特尔预训练模型,已经转换IR完成,只需要对yolo-v3进行转换:

python3 $OV/deployment_tools/tools/model_downloader/converter.py --name yolo-v3-tf

查看待检测视频

cd $WD/…/Materials/

播放视频:

show Road.mp4

确认完成

OpenVINO工具套件课程笔记_第16张图片

使用SSD模型运行目标检测示例

cd $WD

  • 运行 OMZ (ssd) model

python3 $OV/inference_engine/demos/object_detection_demo/python/object_detection_demo.py -m $WD/intel/pedestrian-and-vehicle-detector-adas-0001/FP16/pedestrian-and-vehicle-detector-adas-0001.xml --architecture_type ssd -i $WD/…/Materials/Road.mp4 --no_show -o $WD/output_ssd.avi

  • 转换为mp4格式进行播放

ffmpeg -i output_ssd.avi output_ssd.mp4

OpenVINO工具套件课程笔记_第17张图片

(转换中……)

show output_ssd.mp4

OpenVINO工具套件课程笔记_第18张图片

运行Yolo-V3的目标检测示例
  • 运行 the Yolo V3 model

python3 $OV/inference_engine/demos/object_detection_demo/python/object_detection_demo.py -m $WD/public/yolo-v3-tf/FP16/yolo-v3-tf.xml -i $WD/…/Materials/Road.mp4 --architecture_type yolo --no_show -o $WD/output_yolo.avi

  • 转换为mp4格式进行播放

ffmpeg -i output_yolo.avi output_yolo.mp4

show output_yolo.mp4

OpenVINO工具套件课程笔记_第19张图片

可以对比一下两个模型在相同代码下的检测性能

第七课.自然语言处理示例(NLP)——自动回答问题

初始化环境
  • 定义工作目录

export OV=/opt/intel/openvino_2021/

export WD=~/OV-300/01/NLP-Bert/

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

  • 进入目录

cd $WD

查看支持的模型列表

可用列表: cat $OV/deployment_tools/inference_engine/demos/bert_question_answering_demo/python/models.lst

打开待识别的网址

使用浏览器打开一个英文网址进行浏览,例如Intel官网:https://www.intel.com/content/www/us/en/homepage.html

运行NLP示例

python3 $OV/inference_engine/demos/bert_question_answering_demo/python/bert_question_answering_demo.py -m $WD/intel/bert-small-uncased-whole-word-masking-squad-0001/FP16/bert-small-uncased-whole-word-masking-squad-0001.xml -v $OV/deployment_tools/open_model_zoo/models/intel/bert-small-uncased-whole-word-masking-squad-0001/vocab.txt --input=https://www.intel.com/content/www/us/en/homepage.html --input_names=input_ids,attention_mask,token_type_ids --output_names=output_s,output_e

  • 在Type question (empty string to exit): 输入core。即可查看当前对于core(酷睿)的可知信息,例如: Intel® Core™ processors provide a range of performance from entry-level to the highest level 。当然你也可以输入别的问题。对比网站上的相关描述

2.构建一个异构系统

①上传性能评估脚本到DevCloud

初始化实验路径
  • 定义OpenVINO 文件夹

export OV=/opt/intel/openvino_2021/

  • 定义工作目录

export WD=~/OV-300/02/LAB1/

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

  • 进入实验目录

cd $WD

OpenVINO工具套件课程笔记_第20张图片

查看当前设备信息

通过OpenVINO自带脚本可以查询当前环境的设备信息:

python3 $OV/inference_engine/samples/python/hello_query_device/hello_query_device.py

OpenVINO工具套件课程笔记_第21张图片

DevCloud介绍

DevCloud是一个软件开发平台,它是华为用近三十年研发实践出的一种面向开发者的一站式云端DevOps平台,随时随地可以在云端进行项目的管理、托管、流水线、代码检查、部署、测试发布等。

本次提供了4个可用节点:

idc004nc2: Intel - core i5-6500te, intel-hd-530,myriad-1-VPU

idc007xv5: Intel - xeon e3-1268l-v5, intel-hd-p530

idc008u2g: Intel - atom e3950, intel-hd-505,myriad-1-VPU

idc014:Intel - i7 8665ue, intel-uhd-620

上传Benchmark_App.py至DevCloud中运行

我们将需要运行的代码提交至idc004nc2节点中执行:

python3 submit_job_to_DevCloud.pyc idc004nc2

因为有一定的网络延迟,若命令无反应,可重复尝试几次该命令。

比较不同CPU下NCS2的性能

根据刚才上传的指令,将同样的代码上传至idc008u2g节点。

上传指令为:

python3 submit_job_to_DevCloud.pyc “目标节点名称”

②利用多硬件协同管理

初始化实验目录
  • 定义OV目录

export OV=/opt/intel/openvino_2021/

  • 定义工作目录

export WD=~/OV-300/02/LAB2/

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

  • 进入工作目录

cd $WD

不同模型的性能测试

三个模型:

face-detection-adas-0001.xml

head-pose-estimation-adas-0001.xml

text-spotting-0003-recognizer-encoder.xml

请对userscript.py进行编辑:

在line 44: path_to_model="/app/face-detection-adas-0001.xml" 中对 face-detection-adas-0001.xml 进行替换,即可测试不同的模型

使用多硬件协同推理

OpenVINO提供了多硬件协同推理的“MULTI”插件,你只需要编译Target_device的对象,不需要改动原先代码,便可以实现协同推理。

例如:target_device=“MULTI:CPU,GPU” , 即可使用CPU+GPU协同推理 ,其中CPU(1st priority) and GPU (2nd priority)。

3.AI应用中的视频处理

测试当前的设备解码密度

初始化环境
  • 定义OV目录

export OV=/opt/intel/openvino_2021/

  • 定义工作目录

export WD=~/OV-300/03/

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

image-20220319164752829

进行解码密度测试

进入工作目录

cd $WD

由于当前环境只有 CPU,且DevCloud只接受.py脚本。

所以需要你通过如下指令获取及结果为25 FPS per channel的通道数:

bash decode.sh video1.mp4 CPU CPU 1

bash decode.sh video1.mp4 CPU CPU 10

bash decode.sh video1.mp4 CPU CPU 100

4.进行AI推理的性能对比

数据精度对推理性能的影响

初始化环境
  • 定义OV目录

export OV=/opt/intel/openvino_2021/

  • 定义工作目录

export WD=~/OV-300/04/

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

image-20220320091117709

编译示例
  • 一键编译OpenVINO中的C++ sample

source $OV/inference_engine/samples/cpp/build_samples.sh

开始实验

cd $WD

将刚才编译完成的benchmark_app 复制到当前文件夹:

cp /home/dc2-user/inference_engine_04_samples_build/intel64/Release/benchmark_app $WD

image-20220320091423329

下载模型

python3 $OV/deployment_tools/tools/model_downloader/downloader.py --name face-detection-adas-0001 -o $WD

OpenVINO工具套件课程笔记_第22张图片

进行不同精度的模型性能测试

./benchmark_app -m intel/face-detection-adas-0001/FP32/face-detection-adas-0001.xml

./benchmark_app -m intel/face-detection-adas-0001/FP16/face-detection-adas-0001.xml

./benchmark_app -m intel/face-detection-adas-0001/FP16-INT8/face-detection-adas-0001.xml

比较不同精度的模型性能,以及模型的推理延迟或者是读取网络的时间…看看有什么不一样。

5.AI应用的音频处理

1.声音检测实验

初始化环境
  • 定义工作目录

export OV=/opt/intel/openvino_2021/

export WD=~/OV-300/06/Lab1/

export MODELS_PATH=~/OV-300/06/Lab1/

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

OpenVINO工具套件课程笔记_第23张图片

开始实验
  • 进入实验目录

cd $WD

  • 下载并使用MO转换声音识别模型

bash download_audio_models.sh

  • 通过vi查看模型拓扑结构

vi $MODELS_PATH/audio_models/aclnet/FP32/aclnet.xml

OpenVINO工具套件课程笔记_第24张图片

注:可以看到该xml的版本以及 数据精度为:FP32,input shape=“1, 1, 1, 16000”。使用“:q”指令退出该界面。

播放需要检测的声音文件
  • 使用show命令,播放mp3

show how_are_you_doing.mp3

运行Demo
  • 运行指令:

bash audio_event_detection.sh

注:屏幕上将会打印DL-Streamer的pipeline指令和该指令的全部输出结果

  • 运行筛选结果的指令,来查看探测到的声音种类:

bash audio_event_detection.sh | grep “label”:" | sed ‘s/label_id.*//’ |sed ‘s/.*label"/==>/’

OpenVINO工具套件课程笔记_第25张图片

2.声音识别实验

初始化环境
  • 定义工作目录

export OV=/opt/intel/openvino_2021/

export WD=~/OV-300/06/Lab2/

  • 添加OpenVINO Python API路径

export PYTHONPATH="$PYTHONPATH:/home/dc2-user/omz_demos_build/intel64/Release/lib/"

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

  • 进入工作目录

cd $WD

将原生模型转换为IR格式

使用converter.py将事先准备好的mozilla-deepspeech-0.6.1进行IR转换 :

python3 $OV/deployment_tools/tools/model_downloader/converter.py --name mozilla-deepspeech-0.6.1 -o $WD

运行声音识别Demo
  • 播放待识别的声音文件:

show how_are_you_doing.mp3

OpenVINO工具套件课程笔记_第26张图片

  • 运行声音识别示例:

python3 $OV/deployment_tools/inference_engine/demos/speech_recognition_deepspeech_demo/python/speech_recognition_deepspeech_demo.py -m ./public/mozilla-deepspeech-0.6.1/FP32/mozilla-deepspeech-0.6.1.xml -i how_are_you_doing.wav -p mds06x_en

OpenVINO工具套件课程笔记_第27张图片

6.实现DL-streamer包含的高级功能

使用DL-streamer进行表情识别

初始化环境
  • 定义工作目录

export OV=/opt/intel/openvino_2021/

export WD=~/OV-300/07/

  • 初始化OpenVINO

source $OV/bin/setupvars.sh

开始实验
  • 进入实验目录

cd $WD

  • 播放原始视频示例:

show video1.mp4

OpenVINO工具套件课程笔记_第28张图片

运行识别示例
  • 运行人脸识别和分类示例:

bash face_detection_and_classification.sh video1.mp4

  • 获得output.mp4,获得可播放的标准MP4格式,使用:

ffmpeg -i output.mp4 output_1.mp4

  • 播放结果视频:

show output_1.mp4

OpenVINO工具套件课程笔记_第29张图片

7.整合实现AI应用中的音视频处理

视频+音频处理实验

实验目标

构建一个包含视频处理与音频处理的pipeline流水线程序

在OV-300/08/目录下,以下是拥有的资源:

在/Models/目录下

音频检测模型

/Models/audio_detection/FP16/aclnet.xml

目标检测模型

/Models/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xml

object.list.yml

A list of objects to detect:目标列表

sound.list.yml

A list of sounds to detect:声音种类列表

Road.mp4

输入MP4(包含了音频+视频)

audio_video_detect.py

用于音频检测的可用代码

进行实验准备

#初始化环境

export OV=

export WD=

#初始化 OpenVINO

进行实验

#进入实验目录

#播放待检测的视频road.mp4

#编辑run.sh 来完成实验目标

video-decode-pipelide参考/opt/intel/openvino_2021/data_processing/dl_streamer/samples/gst_launch/vehicle_pedestrian_tracking/vehicle_pedestrian_tracking.sh来添加 person-vehicle-bike-detection-crossroad-0078模型的车辆行人识别功能。

完成实验
  • 在完成run.sh后运行脚本,把输出结果保存到本地,名称为“road.watermarked.mp4”:

  • 通过ffmpeg转换成可播放的格式:

ffmpeg -i road.watermarked.mp4 output.mp4

  • 查看结果 你能看到视频左上角会显示侦测到声音类型:

show output.mp4

你可能感兴趣的:(零散的学习日常,openvino,opencv,ubuntu,学习,深度学习)