100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 英特尔OpenVINO工具套件高级课程实验操作记录与学习总结

英特尔OpenVINO工具套件高级课程实验操作记录与学习总结

时间:2019-10-29 02:12:44

相关推荐

英特尔OpenVINO工具套件高级课程实验操作记录与学习总结

英特尔OpenVINO工具套件高级课程&实验操作记录与学习总结

实验机器环境部分信息:

dc2-user@10-0-255-63:~$ lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 18.04.3 LTSRelease: 18.04Codename: bionicdc2-user@10-0-255-63:~$ dateWed Feb 23 19:10:31 CST dc2-user@10-0-255-63:~$ uname -aLinux 10-0-255-63 4.15.0-167-generic #175-Ubuntu SMP Wed Jan 5 01:56:07 UTC x86_64 x86_64 x86_64 GNU/Linuxdc2-user@10-0-255-63:~$

Intel® Distribution of OpenVINO™ Toolkit Download:

下载地址

文章目录

第一课动手实验:如何充分使用OpenVINO™工具套件?-在线测试1.人体动作姿势识别示例2.图像着色示例3.音频检测示例4.公式识别5.环境深度识别6.目标识别示例7.自然语言处理示例(NLP)——自动回答问题第二课动手实验:如何构建一个异构系统——动手实验-在线测试1.上传性能评估脚本到DevCloud2.利用多硬件协同推理第三课动手实验:AI应用中的视频处理-在线测试1.测试当前设备的解码密度第四课动手实验:如何进行AI推理的性能对比-在线测试1.数据精度对推理性能的影响第六课动手实验:AI应用中的音频处理-在线测试1.声音检测实验2.声音识别实验第七课动手实验:如何实现DL-streamer包含的高级功能?-在线测试1.使用DL-streamer进行表情识别第八课动手实验:整合实现AI应用中的音视频处理-在线测试1.视频+音频处理实验OpenVINO高级课程结业证书

第一课动手实验:如何充分使用OpenVINO™工具套件?-在线测试

1.人体动作姿势识别示例

设定实验路径

设定OpenVINO的路径:

export OV=/opt/intel/openvino_/

设定当前实验的路径:

export WD=~/OV-300/01/3D_Human_pose/

注:实验文件夹名为OV-300,位于主目录下。本环境下,文件的上传与下载方法,参考右上角帮助手册。

运行初始化OpenVINO的脚本

source $OV/bin/setupvars.sh

当你看到:[setupvars.sh] OpenVINO environment initialized 表示OpenVINO环境已经成功初始化。

运行OpenVINO依赖脚本的安装

进入脚本目录:

cd $OV/deployment_tools/model_optimizer/install_prerequisites/

安装OpenVINO需要的依赖:

sudo ./install_prerequisites.sh

PS:此步骤为模拟开发机本地进行OpenVINO使用的步骤,所以 之后你在本地使用OpenVINO之前需要遵循此步骤。

安装OpenVINO模型下载器的依赖文件

进入到模型下载器的文件夹:

cd $OV/deployment_tools/tools/model_downloader/

安装模型下载器的依赖:

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

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

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

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

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

PS:此步骤为模拟开发机本地进行OpenVINO使用的步骤,所以 之后你在本地使用OpenVINO之前需要遵循此步骤。

通过模型下载器下载人体姿势识别模型

正式进入实验目录:

cd $WD

查看human_pose_estimation_3d_demo需要的模型列表:

cat /opt/intel/openvino_//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

使用模型转换器把模型转换成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

PS:目前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

PS:请务必使用键盘逐字母进行输入

运行人体姿势识别Demo

运行人体姿势识别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!! 则表示推理完成,请输入“ls”罗列当前文件夹的所有文件

转换并播放识别结果视频

由于平台限制,我们必须先将输出结果视频转换为MP4格式,使用如下命令:

ffmpeg -i output.avi output.mp4

手动输入如下命令进行推理结果视频播放:

show output.mp4

2.图像着色示例

设置实验路径

export OV=/opt/intel/openvino_/

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

初始化OpenVINO

source $OV/bin/setupvars.sh

开始实验

正式进入工作目录:

cd $WD

查看该demo的所需模型:

cat $OV/deployment_tools/inference_engine/demos/colorization_demo/python/models.lst

由于该实验模型较大,模型已经提前下载好了,请继续下一步。

查看原始视频

所有show命令都请手动输入:

show butterfly.mp4

运行着色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

PS:细心的同学会发现,这个实验中可以直接使用onnx格式进行实验,这说明推理引擎是支持简单的onnx进行推理(当然你转换为IR也可以)。请耐心等待程序运行完成,你将会看到“Inference Completed”的字样。输出avi将保存于当前文件夹,使用小写“LL”命令查看当前文件夹。

查看着色实验的输出结果视频

请先使用ffmpeg将.avi转换为.mp4格式:

ffmpeg -i output.avi output.mp4

手动输入播放视频的指令:

show output.mp4

PS:若转换完成使用show命令无法显示,请稍后30s再试。

3.音频检测示例

初始化环境

#初始化工作目录

export OV=/opt/intel/openvino_/

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

4.公式识别

初始化环境

#初始化环境

export OV=/opt/intel/openvino_/

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

#初始化OpenVINO

source $OV/bin/setupvars.sh

查看可识别的字符

cd $WD

#手写字符:

vi hand.json

#打印字符:

vi latex.json

查看待识别的公式

#进入材料目录

cd $WD/…/Materials/

#查看打印公式

show Latex-formula.png

#查看手写公式

show Hand-formula.png

运行公式识别

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

挑战任务

#可上传自己的手写公式,保存为PNG格式来示例进行识别

#上传文件的方法位于网页右上角帮助手册中

#若想跳过该任务直接点击确认即可

5.环境深度识别

初始化环境

#环境目录

export OV=/opt/intel/openvino_/

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

6.目标识别示例

初始化环境

#定义OpenVINO 目录

export OV=/opt/intel/openvino_/

#定义工作目录

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

注:关于SSD, Yolo, centernet, faceboxes or Retina拓扑网络的区别,本课程不会继续深入,有兴趣的同学可以自行上网了解。在OpenVINO中的deployment_tools/inference_engine/demos/的各个demo文件夹中都有model.lst列出了该demo支持的可直接通过downloader下载使用的模型

转换模型至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/Road.mp4

#播放视频:

show Road.mp4

使用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

show output_ssd.mp4

运行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

!请对比两个模型在相同代码下的检测性能

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

初始化环境

#定义工作目录

export OV=/opt/intel/openvino_/

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

注:在OpenVINO中的deployment_tools/inference_engine/demos/的各个demo文件夹中都有model.lst列出了该demo支持的可直接通过downloader下载使用的模型,且我们已经事先下载好全部模型为IR格式。

打开待识别的网址

#使用浏览器打开一个英文网址进行浏览,例如Intel官网:/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=/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 。当然你也可以输入别的问题。对比网站上的相关描述

注:–input=/content/www/us/en/homepage.html 为我们需要访问的英文网站

挑战任务

#在上一个步骤的实验基础上,尝试使用不同的网址作为–input 的输入,并尝试提出一些别的关键词问题。并思考如何能够提升这个示例的准确性。

#在上一个步骤的实验基础上,尝试使用不同的模型作为-m/-v 的输入(模型位于$WD/INTEL/目录下),并尝试提出一些别的关键词问题。并思考如何能够提升这个示例的准确性。

注:该示例只支持英文网站,且该网站可正常访问。

第二课动手实验:如何构建一个异构系统——动手实验-在线测试

1.上传性能评估脚本到DevCloud

初始实验路径

#定义OpenVINO 文件夹

export OV=/opt/intel/openvino_/

#定义工作目录

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

#初始化OpenVINO

source $OV/bin/setupvars.sh

#进入实验目录

cd $WD

查看当前设备信息

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

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

DevCloud 介绍

英特尔® DevCloud 提供对各种英特尔® 架构CPU/GPU/NCS2/智能硬件等设备的免费访问,帮助您获得英特尔® 软件的即时动手体验,并执行您的边缘、人工智能、高性能计算 (HPC) 和渲染工作负载。借助预装的英特尔® 优化框架、工具(OpenVINO Toolkit, OneAPI)和库,您拥有快速跟踪学习和项目原型制作所需的一切。

本次实验提供了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

注:NCS2中文名为第二代神经计算棒,是英特尔公司推出的边缘计算设备,体积和U盘相似,接口为USB3.0,内置Myriad X计算芯片,功耗仅为2W,理论算力可达1TOPS。OpenVINO可以通过“MYRIAD”的插件将深度学习模型部署在上面。

上传Benchmark_App.py至DevCloud中运行

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

python3 submit_job_to_DevCloud.pyc idc004nc2

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

请耐心等待实验状态成为“C”,脚本执行完成,上传的脚本位于当前文件目录下,名为userscript.py, 其功能是将OpenVINO的人脸识别模型运行在NCS2上以得到性能参数。

比较不同CPU下NCS2的性能

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

上传指令为:

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

PS:该指令默认上传当前目录下的userscript.py脚本。

请对比不同CPU(Atom和 Core)的条件下,NCS2的性能是否有差异?

比较结果如下:

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

执行命令:python3 submit_job_to_DevCloud.pyc idc004nc2

[Step 11/11] Dumping statistics report

Count: 260 iterations

Duration: 10297.15 ms

Latency: 158.08 ms

Throughput: 25.25 FPS

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

执行命令:python3 submit_job_to_DevCloud.pyc idc008u2g

[Step 11/11] Dumping statistics report

Count: 260 iterations

Duration: 10294.75 ms

Latency: 157.99 ms

Throughput: 25.26 FPS

挑战任务1:将推理任务部署在节点的不同推理设备上

修改userscript.py:

vi userscript.py

在第43行: target_device= “MYRIAD”

注:可使用“:wq”指令保存更改并退出该界面。

你可以在这里选择你想要运行的设备:"CPU/GPU/MYRIAD”

CPU:对应 英特尔中央处理器

GPU:对应 英特尔集成显卡

MYRIAD:这个名称对应的设备是刚才提到的NCS2

这里你可以自行发挥,尝试使用不同的设备 或者Devcloud节点运行这个性能测试脚本

尝试使用不同的设备 或者Devcloud节点运行这个性能测试执行结果如下:

设备:GPU

Devcloud节点:idc007xv5: Intel - core i5-6500te, intel-hd-530,myriad-1-VPU

执行命令:python3 submit_job_to_DevCloud.pyc idc007xv5

[Step 11/11] Dumping statistics report

Count: 724 iterations

Duration: 10031.90 ms

Latency: 27.45 ms

Throughput: 72.17 FPS

设备:CPU

Devcloud节点:idc007xv5: Intel - core i5-6500te, intel-hd-530,myriad-1-VPU

执行命令:python3 submit_job_to_DevCloud.pyc idc007xv5

[Step 11/11] Dumping statistics report

Count: 920 iterations

Duration: 10015.39 ms

Latency: 10.82 ms

Throughput: 91.86 FPS

target_device= “MYRIAD”

设备:MYRIAD

Devcloud节点:idc007xv5: Intel - core i5-6500te, intel-hd-530,myriad-1-VPU

执行命令:python3 submit_job_to_DevCloud.pyc idc007xv5

02月 21日 星期一 06:17:38 CST,设备:MYRIAD,运行脚本报错 RuntimeError: Can not init Myriad device: NC_ERROR。

02月 21日 星期一 03:56:50 CST,网页shell卡死失效,无法保存退出(:wq),无执行结果。 02月 21日 星期一 05:55:18 CST,ok处理好了,不是卡死是命令在web shell上无效,改用 ctrl+[ 退出INSERT模式就ok了。

挑战任务2:打印出NCS2的工作温度

请根据:hello_query_device.py 代码中的关于温度显示的片段,更改userscript.py,使之可以显示当前NCS2的工作温度。

请在userscript.py的 line:136 后 添加适当的代码,来显示当前NCS2的温度。

提示:请在确保target_device为“MYRIAD”的前提下,使用函数:self.ie.get_metric(metric_name=“DEVICE_THERMAL”,device_name=‘MYRIAD’ ) 获取温度。

答案userscript…py 位于上一级目录的Solution文件夹中,你可以复制到当前文件夹进行使用。

02月 21日 星期一 04:03:53 CST,这个有难度,先跳过。

2.利用多硬件协同推理

初始化实验目录

#定义OV目录

export OV=/opt/intel/openvino_/

#定义工作目录

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 进行替换,即可测试不同的模型

不同模型的性能测试执行结果如下:

设备:CPU

Devcloud节点:idc007xv5: Intel - core i5-6500te, intel-hd-530,myriad-1-VPU

模型:head-pose-estimation-adas-0001.xml

执行命令:python3 submit_job_to_DevCloud.pyc idc007xv5

[Step 11/11] Dumping statistics report

Count: 720 iterations

Duration: 10055.01 ms

Latency: 27.66 ms

Throughput: 71.61 FPS

设备:CPU

Devcloud节点:idc007xv5: Intel - core i5-6500te, intel-hd-530,myriad-1-VPU

模型:face-detection-adas-0001.xml

执行命令:python3 submit_job_to_DevCloud.pyc idc007xv5

[Step 11/11] Dumping statistics report

Count: 923 iterations

Duration: 10018.43 ms

Latency: 10.79 ms

Throughput: 92.13 FPS

02月 21日 星期一 05:27:26 CST,vi编辑userscript.py文件的时候,发现文件中的内容少了(可能是前面的实验操作,操作失误错删除了?),少了line 44: path_to_model="/app/face-detection-adas-0001.xml"配置这段,这咋整…。

02月 21日 星期一 05:50:11 CST,系统又默认恢复了???。

使用多硬件协同推理

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

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

注:本实验所有的GPU均为英特尔集成显卡,在进行实验之前,请务必确认运行的节点包含GPU设备(某些型号的至强处理器不包含GPU设备)。MYRIAD也是同理,请在实验前确保实验节点拥有该硬件!

使用多硬件协同推理测试执行结果如下:

target_device=“MULTI:CPU,GPU”

设备:MULTI:CPU,GPU

Devcloud节点:idc007xv5: Intel - core i5-6500te, intel-hd-530,myriad-1-VPU

执行命令:python3 submit_job_to_DevCloud.pyc idc007xv5

[Step 11/11] Dumping statistics report

Count: 1065 iterations

Duration: 10037.20 ms

Throughput: 106.11 FPS

进行性能对比实验

请在idc004nc2节点下,完成如下表格并分析性能数据:

逐个参数修:vi userscript.py

target_device=“MULTI:CPU,GPU” //设备,line43

path_to_model="/app/head-pose-estimation-adas-0001.xml" //模型,line44

运行任务:python3 submit_job_to_DevCloud.pyc idc004nc2

02月 21日 星期一 06:33:15 CST,该睡觉了,睡醒再整了。

Intel DevCloud引导

由于实验内容有限,暂时不列举其他DevCloud平台上有趣的动手实验,以及超过30种边缘设备,Atom,Xeon,Core应有尽有,更有11代TigerLake CPU设备等你来试,感兴趣的同学请自行移至英特尔DevCloud官网进行体验。

02月 21日 星期一 21:14:54 CST,更多设备的性能测试,自己到DevCloud官网体验了。

第三课动手实验:AI应用中的视频处理-在线测试

1.测试当前设备的解码密度

初始化环境

#定义OV目录

export OV=/opt/intel/openvino_/

#定义工作目录

export WD=~/OV-300/03/

#初始化OpenVINO

source $OV/bin/setupvars.sh

进行解码密度测试

进入工作目录

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

你也可以自行调整通道数,使之最后接近per-stream= 25FPS/channel。

请记录下你的答案!

bash decode.sh video1.mp4 CPU CPU 1

Redistribute latency…

FpsCounter(1sec): total=740.71 fps, number-streams=1, per-stream=740.71 fps

FpsCounter(1sec): total=742.76 fps, number-streams=1, per-stream=742.76 fps

FpsCounter(1sec): total=732.41 fps, number-streams=1, per-stream=732.41 fps

FpsCounter(1sec): total=722.62 fps, number-streams=1, per-stream=722.62 fps

FPSCounter(average): total=732.91 fps, number-streams=1, per-stream=732.91 fps

bash decode.sh video1.mp4 CPU CPU 10

Redistribute latency…

FpsCounter(1sec): total=621.85 fps, number-streams=10, per-stream=62.19 fps (56.99, 63.98, 59.99, 57.99, 65.98, 61.99, 64.98, 61.99, 63.98, 63.98)

FpsCounter(1sec): total=621.26 fps, number-streams=10, per-stream=62.13 fps (68.59, 59.64, 59.64, 59.64, 59.64, 59.64, 64.61, 62.62, 63.62, 63.62)

FpsCounter(1sec): total=699.73 fps, number-streams=10, per-stream=69.97 fps (69.77, 69.77, 69.77, 67.78, 70.77, 69.77, 69.77, 68.78, 71.77, 71.77)

FpsCounter(1sec): total=713.92 fps, number-streams=10, per-stream=71.39 fps (71.99, 70.99, 71.99, 69.99, 70.99, 69.99, 71.99, 71.99, 71.99, 71.99)

FpsCounter(1sec): total=651.90 fps, number-streams=10, per-stream=65.19 fps (61.99, 62.99, 67.99, 64.99, 61.99, 63.99, 65.99, 65.99, 67.99, 67.99)

bash decode.sh video1.mp4 CPU CPU 100

Redistribute latency…

New clock: GstSystemClock0 %)

FpsCounter(1sec): total=134.83 fps, number-streams=100, per-stream=1.35 fps (1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 2.00, 1.00, 1.00, 2.00, 2.00, 1.00, 2.00, 2.00, 1.00, 1.00, 1.00, 1.00, 2.00, 1.00, 1.00, 1.00, 2.00, 1.00, 1.00, 2.00, 1.00, 2.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 2.00, 2.00, 2.00, 2.00, 2.00, 1.00, 1.00, 1.00, 2.00, 1.00, 2.00, 3.00, 2.00, 1.00, 2.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 2.00, 1.00, 2.00, 1.00, 1.00, 2.00, 2.00, 1.00, 1.00, 2.00, 1.00, 2.00, 1.00, 2.00, 1.00, 1.00, 1.00, 1.00, 1.00, 2.00, 1.00, 1.00, 1.00, 2.00, 2.00, 2.00, 2.00, 1.00, 1.00, 1.00, 2.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 2.00, 1.00, 2.00, 1.00, 1.00)

FpsCounter(1sec): total=367.22 fps, number-streams=100, per-stream=3.67 fps (2.00, 2.99, 2.99, 2.99, 5.99, 2.99, 1.00, 2.00, 2.00, 2.99, 2.00, 2.99, 1.00, 2.00, 8.98, 2.99, 1.00, 2.00, 2.00, 2.99, 1.00, 2.99, 5.99, 2.00, 1.00, 3.99, 5.99, 1.00, 8.98, 2.99, 2.99, 2.00, 2.99, 2.00, 2.00, 2.00, 14.97, 2.00, 4.99, 1.00, 2.99, 2.00, 2.99, 10.98, 2.00, 8.98, 7.98, 2.00, 2.99, 2.00, 2.99, 2.99, 2.00, 2.99, 1.00, 2.00, 2.99, 1.00, 2.99, 2.99, 2.99, 10.98, 2.99, 2.00, 9.98, 2.00, 2.99, 2.99, 1.00, 2.99, 2.00, 2.00, 7.98, 10.98, 2.99, 2.99, 3.99, 2.99, 2.99, 5.99, 16.96, 6.99, 2.99, 1.00, 2.99, 2.99, 2.00, 14.97, 2.99, 2.00, 1.00, 4.99, 2.99, 2.99, 2.99, 2.00, 2.99, 2.99, 2.99, 2.00)

FpsCounter(1sec): total=659.83 fps, number-streams=100, per-stream=6.60 fps (5.00, 6.00, 6.00, 6.00, 7.00, 4.00, 7.00, 8.00, 9.00, 8.00, 5.00, 9.00, 7.00, 4.00, 7.00, 6.00, 6.00, 3.00, 7.00, 6.00, 6.00, 7.00, 7.00, 8.00, 7.00, 9.00, 6.00, 7.00, 6.00, 9.00, 8.00, 5.00, 5.00, 6.00, 7.00, 6.00, 4.00, 6.00, 9.00, 6.00, 5.00, 8.00, 8.00, 9.00, 8.00, 4.00, 6.00, 9.00, 5.00, 7.00, 9.00, 8.00, 6.00, 6.00, 6.00, 9.00, 9.00, 5.00, 8.00, 7.00, 6.00, 5.00, 10.00, 7.00, 2.00, 6.00, 4.00, 6.00, 5.00, 8.00, 7.00, 9.00, 4.00, 5.00, 6.00, 5.00, 8.00, 7.00, 5.00, 7.00, 3.00, 9.00, 9.00, 5.00, 7.00, 7.00, 10.00, 3.00, 9.00, 7.00, 7.00, 8.00, 6.00, 7.00, 6.00, 6.00, 9.00, 7.00, 6.00, 5.00)

FpsCounter(1sec): total=702.32 fps, number-streams=100, per-stream=7.02 fps (5.99, 8.98, 5.99, 6.98, 6.98, 5.99, 5.99, 7.98, 7.98, 7.98, 8.98, 4.99, 8.98, 7.98, 6.98, 8.98, 5.99, 7.98, 7.98, 5.99, 5.99, 4.99, 7.98, 8.98, 6.98, 6.98, 6.98, 5.99, 6.98, 5.99, 5.99, 5.99, 6.98, 8.98, 6.98, 7.98, 7.98, 5.99, 6.98, 7.98, 6.98, 7.98, 6.98, 6.98, 5.99, 7.98, 7.98, 6.98, 6.98, 3.99, 4.99, 7.98, 6.98, 5.99, 6.98, 7.98, 7.98, 7.98, 5.99, 6.98, 5.99, 6.98, 5.99, 5.99, 8.98, 6.98, 5.99, 8.98, 5.99, 7.98, 4.99, 7.98, 6.98, 7.98, 6.98, 6.98, 6.98, 6.98, 6.98, 6.98, 6.98, 5.99, 6.98, 5.99, 7.98, 6.98, 6.98, 7.98, 7.98, 6.98, 4.99, 7.98, 5.99, 7.98, 5.99, 7.98, 7.98, 6.98, 5.99, 5.99)

bash decode.sh video1.mp4 CPU CPU 50(通道数接近per-stream= 25FPS/channel)

Redistribute latency…

New clock: GstSystemClock

FpsCounter(1sec): total=531.74 fps, number-streams=25, per-stream=21.27 fps (24.94, 23.94, 20.95, 19.95, 20.95, 21.95, 18.95, 20.95, 19.95, 23.94, 20.95, 12.97, 23.94, 20.95, 17.96, 23.94, 13.97, 19.95, 23.94, 26.94, 24.94, 22.95, 20.95, 19.95, 20.95)

FpsCounter(1sec): total=750.60 fps, number-streams=25, per-stream=30.02 fps (31.94, 30.94, 29.94, 27.95, 28.95, 31.94, 31.94, 28.95, 29.94, 30.94, 30.94, 28.95, 30.94, 30.94, 30.94, 29.94, 27.95, 30.94, 29.94, 28.95, 31.94, 29.94, 27.95, 27.95, 28.95)

FpsCounter(1sec): total=683.31 fps, number-streams=25, per-stream=27.33 fps (26.97, 26.97, 28.97, 25.97, 29.97, 27.97, 26.97, 29.97, 27.97, 24.97, 25.97, 25.97, 26.97, 30.97, 26.97, 29.97, 25.97, 28.97, 27.97, 25.97, 24.97, 28.97, 26.97, 25.97, 23.98)

FpsCounter(1sec): total=732.91 fps, number-streams=25, per-stream=29.32 fps (27.96, 29.96, 27.96, 29.96, 25.96, 30.95, 27.96, 27.96, 27.96, 31.95, 29.96, 29.96, 31.95, 29.96, 29.96, 27.96, 31.95, 28.96, 27.96, 29.96, 29.96, 27.96, 27.96, 29.96, 29.96)

FpsCounter(1sec): total=734.54 fps, number-streams=25, per-stream=29.38 fps (27.98, 30.98, 25.98, 29.98, 27.98, 32.98, 27.98, 27.98, 28.98, 29.98, 29.98, 31.98, 29.98, 28.98, 27.98, 27.98, 29.98, 24.98, 29.98, 29.98, 31.98, 27.98, 27.98, 31.98, 31.98)

第四课动手实验:如何进行AI推理的性能对比-在线测试

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

初始化环境

#定义OV目录

export OV=/opt/intel/openvino_/

#定义工作目录

export WD=~/OV-300/04/

#初始化OpenVINO

source $OV/bin/setupvars.sh

编译示例

#一键编译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

获取模型

下载模型:

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

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

./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

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

不同精度的模型性能如下:

挑战任务

请输入:

./benchmark_app -help

以获得更多benchmark_app 的可评估参数。

请尝试设置不同的参数:

number of streams (-nstreams)

batch size (-b)

number of inderence request (-nireq)

number of threads (-nthreads)

例如:./benchmark_app -m intel/face-detection-adas-0001/FP32/face-detection-adas-0001.xml -b 2 -nireq 2 -nthreads 4

来获取当前设备的最佳性能

第六课动手实验:AI应用中的音频处理-在线测试

1.声音检测实验

初始化环境

#定义工作目录

export OV=/opt/intel/openvino_/

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

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

#初始化OpenVINO

source $OV/bin/setupvars.sh

开始实验

#进入实验目录

cd $WD

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

bash download_audio_models.sh

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

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

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

播放需要检测的声音文件

#使用show命令,播放mp3

show how_are_you_doing.mp3

注:由于功能限制,必须手动逐字输入该命令。并且由于限制,平台只能够播放MP3格式文件,实验运行的声音材料为WAV格式,本平台事先已经将WAV转换成MP3格式可供使用。

运行Demo

#运行指令:

bash audio_event_detection.sh

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

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

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

探测到的声音种类:

挑战任务:提高程序的识别准确度

#你可以从音频文件听到没有昆虫的声音,但是程序检测到了昆虫的声音。请你思考一下,如何改善这个问题?

注:检测每个种类的声音是否村子都会存在一个临界值,也就是检测阈值

#修改aclnet.json 脚本来实现你的猜想:

vi $WD/model_proc/aclnet.json

解决方案:尝试 “Insects (flying)” 在 0.5 至0.9 之间更改,更改后保存完再次运行audio_event_detection.sh进行测试,直至检测不到昆虫噪音。

{

“index”: 7,

“label”: “Insects (flying)”,

“threshold”: 0.5 //修改为上临界值0.9

},

检测结果(无昆虫噪音了):

==>:“Rain”,"

==>:“Speech”,"

==>:“Speech”,"

==>:“Speech”,"

==>:“Speech”,"

==>:“Speech”,"

==>:“Speech”,"

==>:“Speech”,"

==>:“Speech”,"

==>:“Speech”,"

==>:“Speech”,"

思考任务

你可以上传你的WAV文件进行测试,不过若是想使用平台进行播放mp3,记得使用:

ffmpeg -i xxx.wav output.mp3

转换成MP3进行播放哦,并且需要修改audio_event_detection.sh里面的输入wav名称。

注:上传与下载文件的教程在页面上角帮助手册中可以得到。该实验可按确认键跳过。

02月 21日 星期一 22:47:34 CST,后面还有任务,先跳过。

2.声音识别实验

初始化环境

#定义工作目录

export OV=/opt/intel/openvino_/

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

#运行声音识别示例:

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

注:音频输入为wav格式, 你可以在屏幕上看到刚才的音频的识别结果。

思考任务

#使用你自带的wav文件进行声音识别示例,看看能否正确识别到文件中的声音。

#可以尝试使用中文或者英文作为声音输入,并且实验探究一下它们识别的准确性。

02月 21日 星期一 22:59:47 CST,后面还有任务,先跳过。

第七课动手实验:如何实现DL-streamer包含的高级功能?-在线测试

1.使用DL-streamer进行表情识别

初始化环境

#定义工作目录

export OV=/opt/intel/openvino_/

export WD=~/OV-300/07/

#初始化OpenVINO

source $OV/bin/setupvars.sh

开始实验

#进入实验目录

cd $WD

#播放原始视频示例:

show video1.mp4

运行识别示例

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

bash face_detection_and_classification.sh video1.mp4

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

ffmpeg -i output.mp4 output_1.mp4

#播放结果视频:

show output_1.mp4

挑战任务:增加情绪识别功能

#请你思考如何在年龄/性别识别的基础上,怎么情绪识别的功能:

修改 postproc_callbacks/age_gender_classification.py 脚本,我们往里添加的代码是:

if 'prob_emotion' == layer_name:emotions = ["neutral", "happy", "sad", "surprise", "anger"]tensor.set_label(emotions[numpy.argmax(data)])continue

修改 face_detection_and_classification.sh 脚本。需要和 age-gender-recognition模型一样,同理增加emotion-recognition的部分,所用 模型为emotions-recognition-retail-003.xml

注:答案可以在Solution中获取

cd Solution

#查看age_gender_classification.py/face_detection_and_classification.sh脚本的改动

bash face_detection_and_classification.sh video1.mp4

ffmpeg -i output.mp4 output_1.mp4

#播放结果视频:

show output_1.mp4

实验工作目录文件列表如下:

dc2-user@10-0-13-46:~/OV-300/07$ lltotal 36760drwxrwxr-x 4 dc2-user dc2-user4096 Feb 22 00:08 ./drwxrwxr-x 9 dc2-user dc2-user4096 Nov 29 22:04 ../-rw-rw-r-- 1 dc2-user dc2-user1926 Nov 30 16:10 face_detection_and_classification.sh-rw-rw-r-- 1 dc2-user dc2-user 5760389 Feb 21 23:25 output_1.mp4-rw-rw-r-- 1 dc2-user dc2-user 15066315 Feb 22 00:17 output.mp4drwxrwxr-x 3 dc2-user dc2-user4096 Feb 22 00:05 postproc_callbacks/drwxrwxr-x 3 dc2-user dc2-user4096 Feb 22 00:16 Solution/-rw-rw-r-- 1 dc2-user dc2-user 16788193 Oct 25 03:22 video1.mp4dc2-user@10-0-13-46:~/OV-300/07$

postproc_callbacks/目录:

dc2-user@10-0-13-46:~/OV-300/07/postproc_callbacks$ lltotal 20drwxrwxr-x 3 dc2-user dc2-user 4096 Feb 22 00:05 ./drwxrwxr-x 4 dc2-user dc2-user 4096 Feb 22 00:08 ../-rw-rw-r-- 1 dc2-user dc2-user 1067 Feb 22 00:05 age_gender_classification.pydrwxrwxr-x 2 dc2-user dc2-user 4096 Feb 22 00:16 __pycache__/-rw-rw-r-- 1 dc2-user dc2-user 1382 Oct 25 03:22 ssd_object_detection.pydc2-user@10-0-13-46:~/OV-300/07/postproc_callbacks$

Solution目录:

dc2-user@10-0-13-46:~/OV-300/07/Solution$ lltotal 24drwxrwxr-x 3 dc2-user dc2-user 4096 Feb 22 00:16 ./drwxrwxr-x 4 dc2-user dc2-user 4096 Feb 22 00:08 ../-rw-rw-r-- 1 dc2-user dc2-user 1087 Oct 25 03:22 age_gender_classification.py-rw-rw-r-- 1 dc2-user dc2-user 2103 Nov 30 16:44 face_detection_and_classification.shdrwxrwxr-x 2 dc2-user dc2-user 4096 Nov 30 16:45 __pycache__/-rw-rw-r-- 1 dc2-user dc2-user 1397 Oct 25 03:22 ssd_object_detection.pydc2-user@10-0-13-46:~/OV-300/07/Solution$

~/OV-300/07/Solution/age_gender_classification.py

# ==============================================================================# Copyright (C) - Intel Corporation## SPDX-License-Identifier: MIT# ==============================================================================from gstgva import VideoFrameimport numpydef process_frame(frame: VideoFrame) -> bool:for roi in frame.regions():for tensor in roi.tensors():if tensor.name() == 'detection':continuelayer_name = tensor.layer_name()data = tensor.data()if 'age_conv3' == layer_name:tensor.set_label(str(int(data[0] * 100)))continueif 'prob' == layer_name:tensor.set_label(" M " if data[1] > 0.5 else " F ")continueif 'prob_emotion' == layer_name:emotions = ["neutral", "happy", "sad", "surprise", "anger"]#print(data, emotions[numpy.argmax(data)])tensor.set_label(emotions[numpy.argmax(data)])continuereturn True

02月 22日 星期二 00:40:30 CST,添加line23-27行代码。

if 'prob_emotion' == layer_name:emotions = ["neutral", "happy", "sad", "surprise", "anger"]#print(data, emotions[numpy.argmax(data)])tensor.set_label(emotions[numpy.argmax(data)])continue

~/OV-300/07/Solution/face_detection_and_classification.sh

#!/bin/bash# ==============================================================================# Copyright (C) - Intel Corporation## SPDX-License-Identifier: MIT# ==============================================================================set -eINPUT=${1:-/intel-iot-devkit/sample-videos/raw/master/head-pose-face-detection-female-and-male.mp4}DEVICE=${2:-CPU}if [[ $3 == "display" ]] || [[ -z $3 ]]; thenSINK_ELEMENT="gvawatermark ! videoconvert !avenc_mpeg4 ! mp4mux! filesink location=output.mp4"elif [[ $3 == "fps" ]]; thenSINK_ELEMENT="gvafpscounter ! fakesink async=false "elseecho Error wrong value for SINK_ELEMENT parameterecho Possible values: display - render, fps - show FPS onlyexitfiMODEL1=face-detection-adas-0001MODEL2=age-gender-recognition-retail-0013SCRIPTDIR="$(dirname "$(realpath "$0")")"PYTHON_SCRIPT1=$SCRIPTDIR/postproc_callbacks/ssd_object_detection.pyPYTHON_SCRIPT2=$SCRIPTDIR/postproc_callbacks/age_gender_classification.pyif [[ $INPUT == "/dev/video"* ]]; thenSOURCE_ELEMENT="v4l2src device=${INPUT}"elif [[ $INPUT == *"://"* ]]; thenSOURCE_ELEMENT="urisourcebin buffer-size=4096 uri=${INPUT}"elseSOURCE_ELEMENT="filesrc location=${INPUT}"fiDETECT_MODEL_PATH=${MODELS_PATH}/intel/face-detection-adas-0001/FP32/face-detection-adas-0001.xmlCLASS_MODEL_PATH=${MODELS_PATH}/intel/age-gender-recognition-retail-0013/FP32/age-gender-recognition-retail-0013.xmlEMOTION_MODEL_PATH=${MODELS_PATH}/intel/emotions-recognition-retail-0003/FP32/emotions-recognition-retail-0003.xmlecho Running sample with the following parameters:echo GST_PLUGIN_PATH=${GST_PLUGIN_PATH}PIPELINE="gst-launch-1.0 \$SOURCE_ELEMENT ! decodebin ! \gvainference model=$DETECT_MODEL_PATH device=$DEVICE ! queue ! \gvapython module=$PYTHON_SCRIPT1 ! \gvaclassify model=$CLASS_MODEL_PATH device=$DEVICE ! queue ! \gvaclassify model=$EMOTION_MODEL_PATH device=$DEVICE ! queue ! \gvapython module=$PYTHON_SCRIPT2 ! \$SINK_ELEMENT"echo ${PIPELINE}PYTHONPATH=$PYTHONPATH:$(dirname "$0")/../../../../python \${PIPELINE}

02月 22日 星期二 00:40:30 CST,添加line41行代码。

EMOTION_MODEL_PATH=${MODELS_PATH}/intel/emotions-recognition-retail-0003/FP32/emotions-recognition-retail-0003.xml

02月 22日 星期二 00:56:06 CST,这相应配置都修改了,运行怎么无效果呀???没有情绪识别信息输出。

第八课动手实验:整合实现AI应用中的音视频处理-在线测试

1.视频+音频处理实验

实验目标

你的任务:

构建一个包含视频处理与音频处理的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 OV=/opt/intel/openvino_/

export WD=(填写你的答案)

export WD=/home/dc2-user/OV-300/08

#初始化 OpenVINO

(填写你的答案)

source $OV/bin/setupvars.sh

进行实验

#进入实验目录

(填写你的答案)cd $WD

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

(填写你的答案)show road.mp4

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

(填写你的答案)vi run.sh

注:audio pipeline参考 /opt/intel/openvino_/data_processing/dl_streamer/samples/gst_launch/audio_detect/audio_event_detection.sh中截取你需要的音频处理command line部分(注意模型和Json的名称相对应),来添加aclnet.xml的音频检测功能,粘贴至run.sh中。

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

/home/dc2-user/OV-300/08 tree罗列一下所有目录、文件:

dc2-user@10-0-255-63:~/OV-300/08$ pwd/home/dc2-user/OV-300/08dc2-user@10-0-255-63:~/OV-300/08$ lltotal 48780drwxrwxr-x 5 dc2-user dc2-user4096 Feb 22 02:08 ./drwxrwxr-x 9 dc2-user dc2-user4096 Nov 29 22:04 ../-rw-rw-r-- 1 dc2-user dc2-user3146 Nov 30 19:39 audio_video_detect.pydrwxrwxr-x 4 dc2-user dc2-user4096 Oct 25 11:32 Models/-rw-rw-r-- 1 dc2-user dc2-user 64 Nov 30 18:41 object.list.yml-rw-rw-r-- 1 dc2-user dc2-user1340 Oct 25 03:22 OV-300.08.Howdrwxrwxr-x 2 dc2-user dc2-user4096 Feb 22 02:05 __pycache__/-rw-rw-r-- 1 dc2-user dc2-user 49906354 Oct 25 03:22 road.mp4-rw-rw-r-- 1 dc2-user dc2-user1822 Feb 22 02:05 run.shdrwxrwxr-x 3 dc2-user dc2-user4096 Nov 30 19:39 Solution/-rw-rw-r-- 1 dc2-user dc2-user 72 Nov 30 18:40 sound.list.ymldc2-user@10-0-255-63:~/OV-300/08$

dc2-user@10-0-255-63:~/OV-300/08$ pwd/home/dc2-user/OV-300/08dc2-user@10-0-255-63:~/OV-300/08$ tree -L 5.├── audio_video_detect.py├── Models│ ├── audio_detection│ │ ├── aclnet.json│ │ └── FP16│ │ ├── aclnet.bin│ │ ├── aclnet.mapping│ │ └── aclnet.xml│ └── person-vehicle-bike-detection-crossroad-0078│ ├── FP16│ │ ├── person-vehicle-bike-detection-crossroad-0078.bin│ │ └── person-vehicle-bike-detection-crossroad-0078.xml│ └── person-vehicle-bike-detection-crossroad-0078.json├── object.list.yml├── OV-300.08.How├── __pycache__│ └── audio_video_detect.cpython-36.pyc├── road.mp4├── run.sh├── Solution│ ├── audio_event_detection.sh│ ├── audio_video_detect.py│ ├── object.list.yml│ ├── __pycache__│ │ └── audio_video_detect.cpython-36.pyc│ ├── run.sh│ ├── sound.list.yml│ └── starting-point-run.sh└── sound.list.yml8 directories, 21 filesdc2-user@10-0-255-63:~/OV-300/08$

完成实验

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

(填写你的答案)

bash run.sh road.mp4

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

ffmpeg -i road.watermarked.mp4 output.mp4

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

show output.mp4

注:请将output.mp4生成在~/OV-300/08/目录下,以免影响实验结果判定。实验操作手册的答案位于当前文件夹下,名为OV-300.08.How文件。run.sh的代码参考答案位于$WD/Solution/run.sh

/home/dc2-user/OV-300/08/OV-300.08.How

OpenVINO 300Lesson 08Lab 1=============================================================================Your task:Build a pipeline that will process both video and audioIn the directory you can find:under /Models/The audio detection model/Models/audio_detection/FP16/aclnet.xmlThe object detection model/Models/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xmlobject.list.ymlA list of objects to detectsound.list.ymlA list of sounds to detectRoad.mp4Input (audio + Video)audio_video_detect.pypython script to add the audio detection to the GST-buffer =============================================================================1) Get startedexport OV=/opt/intel/openvino_/export WD=~/OV-300/08/Initialize OpenVINOsource $OV/bin/setupvars.shThis is the file to edit ---->>>your baseline is run.sh2) Copy the audio detection pipeline from the DL-streamer samples..vi /opt/intel/openvino_/data_processing/dl_streamer/samples/gst_launch/audio_detect/audio_event_detection.sh 3) Results could be found under Solutions directory./Solution/run.shJust copy to your directory and run You can see the result video in Road.watermarked.mp4 or displayed to screen(need to edit run.sh to change that selection)

/home/dc2-user/OV-300/08/Solution/run.sh

#Copyright (C) - Intel Corporation#Licensed under the Apache License, Version 2.0 (the "License");INPUT=${WD}/road.mp4AUDIO_MODEL=${WD}/Models/audio_detection/FP16/aclnet.xmlAUDIO_MODEL_PROC=${WD}/Models/audio_detection/aclnet.jsonDETECTION_MODEL=${WD}/Models/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xmlDETECTION_MODEL_PROC=${WD}/Models/person-vehicle-bike-detection-crossroad-0078/person-vehicle-bike-detection-crossroad-0078.jsongst-launch-1.0 uridecodebin uri=file:${INPUT} name=front_end \front_end. ! queue ! \audioresample ! audioconvert ! audio/x-raw, channels=1,format=S16LE,rate=16000 ! audiomixer output-buffer-duration=100000000 ! \gvaaudiodetect model=$AUDIO_MODEL model-proc=$AUDIO_MODEL_PROC sliding-window=0.2 !\gvametaconvert ! gvametapublish file-format=json-lines file-path=/tmp/audio_event_stream ! audioconvert !\fakesink \front_end. ! queue ! \gvadetect model=$DETECTION_MODEL model-proc=$DETECTION_MODEL_PROC ! \gvapython module=${WD}/audio_video_detect.py class=AudioEventWatermark ! \videoconvert ! gvawatermark ! videoconvert ! avenc_mpeg4!\mpegtsmux ! filesink location=road.watermarked.mp4#===> for saving the output to a file#gvawatermark ! videoconvert ! x264enc key-int-max=30 speed-preset=fast tune=zerolatency !\#mpegtsmux ! filesink location=Road.watermarked.mp4#Replace the last 2 lines with this line to present the video to screen.#videoconvert ! gvawatermark ! ximagesink

02月 22日 星期二 02:31:27 CST,OK,实验完成!全部实验完成!

BEGIN:-02-20 23:53:49

END: 02月 22日 星期二 02:31:27 CST

OpenVINO高级课程结业证书

您已完成 “英特尔® OpenVINO™工具套件高级课程” 学习

恭喜您获得“英特尔® OpenVINO™工具套件高级课程 ”专属证书!证书编号:L01002241003,您可以在CSDN官网查询,查询地址:/cert?username=u014132947 。

Ok完成

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。