从上图中看出,实验文件夹的名称为OV-300。
输入指令source $OV/bin/setupvars.sh
当我们看到如下字样便表示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
**正式进入实验目录:**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的推理引擎只能推理转换过后的IR文件,类似于.pb/.caffemode/.pt等文件是不支持转换的。
只需要编译一次: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/"
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
将推理结果视频进行播放
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/01/Colorization/
**正式进入工作目录:**cd $WD
查看该demo的所需模型:cat $OV/deployment_tools/inference_engine/demos/colorization_demo/python/models.lst
手动输入:show butterfly.mp4
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 ”命令查看当前文件夹。
先使用ffmpeg将.avi转换为.mp4格式:ffmpeg -i output.avi output.mp4
手动输入播放视频的指令:show output.mp4
export WD=~/OV-300/01/Audio-Detection/
进入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/
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
以上命令用来对比原始图片,检查识别是否正确。
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/01/MonoDepth_Python/
source $OV/bin/setupvars.sh
进入工作目录
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
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/01/Object_Detection/
source $OV/bin/setupvars.sh
cd $WD
可以在不同拓扑网络下选择适合模型:
vi $OV/inference_engine/demos/object_detection_demo/python/models.lst
本实验已经事先下完成: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
确认完成
cd $WD
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
ffmpeg -i output_ssd.avi output_ssd.mp4
(转换中……)
show output_ssd.mp4
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
ffmpeg -i output_yolo.avi output_yolo.mp4
show output_yolo.mp4
可以对比一下两个模型在相同代码下的检测性能
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/01/NLP-Bert/
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
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
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/02/LAB1/
source $OV/bin/setupvars.sh
cd $WD
通过OpenVINO自带脚本可以查询当前环境的设备信息:
python3 $OV/inference_engine/samples/python/hello_query_device/hello_query_device.py
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
我们将需要运行的代码提交至idc004nc2节点中执行:
python3 submit_job_to_DevCloud.pyc idc004nc2
因为有一定的网络延迟,若命令无反应,可重复尝试几次该命令。
根据刚才上传的指令,将同样的代码上传至idc008u2g节点。
上传指令为:
python3 submit_job_to_DevCloud.pyc “目标节点名称”
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/02/LAB2/
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)。
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/03/
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
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/04/
source $OV/bin/setupvars.sh
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
比较不同精度的模型性能,以及模型的推理延迟或者是读取网络的时间…看看有什么不一样。
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/06/Lab1/
export MODELS_PATH=~/OV-300/06/Lab1/
source $OV/bin/setupvars.sh
cd $WD
bash download_audio_models.sh
vi $MODELS_PATH/audio_models/aclnet/FP32/aclnet.xml
注:可以看到该xml的版本以及 数据精度为:FP32,input shape=“1, 1, 1, 16000”。使用“:q”指令退出该界面。
show how_are_you_doing.mp3
bash audio_event_detection.sh
注:屏幕上将会打印DL-Streamer的pipeline指令和该指令的全部输出结果
bash audio_event_detection.sh | grep “label”:" | sed ‘s/label_id.*//’ |sed ‘s/.*label"/==>/’
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/06/Lab2/
export PYTHONPATH="$PYTHONPATH:/home/dc2-user/omz_demos_build/intel64/Release/lib/"
source $OV/bin/setupvars.sh
cd $WD
使用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
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
export OV=/opt/intel/openvino_2021/
export WD=~/OV-300/07/
source $OV/bin/setupvars.sh
cd $WD
show video1.mp4
bash face_detection_and_classification.sh video1.mp4
ffmpeg -i output.mp4 output_1.mp4
show output_1.mp4
构建一个包含视频处理与音频处理的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