Intel Openvino 应用之YOLOv3模型的转换和使用

YOLOv3是市面上非常流行的进行目标检测的深度学习模型,本篇文章介绍怎么样把TensorFlow实现的YOLOv3模型转换为Openvino的格式,转换完成后,使用Openvino进行实际推论。

准备:
1. 装好Openvino 2019 R3版本(我这里使用的是openvino_2019.3.376)
2. 准备一个USBCam或者一个视频文件(视频的内容李最好有不同的物体,作为目标检测推论时的输入,这里使用USBCam作为输入)

安装TensorFlow:
1. 查看TensorFlow的版本,
pip3 list | grep tensorflow
2. 如果不是1.12版本,安装一下
pip3 install tensorflow==1.12

下载YOLOv3模型:
1. YOLOv3的公开模型,我们可以在Github上找到,然后我们可以下载到合适的文件夹中,下载命令:
2. 切换到经过验证的版本
git checkout ed60b90
3. 下载coco.name作为标签文件,检测时可以把识别到的物体实际名称显示在屏幕上
wget https://raw.githubusercontent.com/pjreddie/darknet/master/data/coco.names
4. 下载YOLOv3权重文件
wget https://pjreddie.com/media/files/yolov3.weights
5. 把权重模型冻结,生成.tf文件:
6. 最后结果如下图所示:
YOLOv3模型转换为OpenVINO的IR格式:
1. 创建一个文件夹用来存放IR文件
cd tensorflow-yolo-v3
mkdir -p FP32
mkdir -p FP16
2. 使用OpenVINO自带的模型优化器(MO),进行模型的转换:(xxx换为你的目录地址)
//转换为32位,供CPU使用
python3 /opt/intel/openvino/deployment_tools/model_optimizer/mo_tf.py --input_model frozen_darknet_yolov3_model.pb --batch 1 --tensorflow_use_custom_operations_config /opt/intel/openvino/deployment_tools/model_optimizer/extensions/front/tf/yolo_v3.json -o xxx/tensorflow-yolo-v3/FP32

//转换位16位,供GPU/VPU使用
python3 /opt/intel/openvino/deployment_tools/model_optimizer/mo_tf.py --input_model frozen_darknet_yolov3_model.pb --batch 1 --tensorflow_use_custom_operations_config /opt/intel/openvino/deployment_tools/model_optimizer/extensions/front/tf/yolo_v3.json -o xxx/tensorflow-yolo-v3/FP16 --data_type FP16
3. 转换完成的IR格式如下图所示:


使用OpenVINO+YOLOv3进行推论:
OpenVINO中自带有YOLOv3目标检测的Python sample,可以在OpenVINO安装文件中找到,名为object_detection_demo_yolov3_async.py
1. 使用CPU进行推论:
python3 /opt/intel/openvino/deployment_tools/open_model_zoo/demos/python_demos/object_detection_demo_yolov3_async/object_detection_demo_yolov3_async.py -i /dev/video0 -m xxxx/tensorflow-yolo-v3/FP32/frozen_darknet_yolov3_model.xml -l $HOME/inference_engine_samples_build/intel64/Release/lib/libcpu_extension.so --lables xxxx/tensorflow-yolo-v3/coco.names

2. 使用GPU进行推论:
python3 /opt/intel/openvino/deployment_tools/open_model_zoo/demos/python_demos/object_detection_demo_yolov3_async/object_detection_demo_yolov3_async.py -i /dev/video0 -m xxxx/tensorflow-yolo-v3/FP32/frozen_darknet_yolov3_model.xml -d GPU --lables xxxx/tensorflow-yolo-v3/coco.names
3. 推论结果如下图:



相关视频

Intel Openvino 应用之YOLOv3模型的转换和使用

YOLOv3是市面上非常流行的进行目标检测的深度学习模型,本篇文章介绍怎么样把TensorFlow实现的YOLOv3模型转换为Openvino的格式,转换完成后,使用Openvino进行实际推论。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

张燕鹏

张燕鹏

2020年7月29日
Update: 现在Openvino 2020.4已经官方支持Yolo v3可以直接使用model downloader进行下载使用。 ./downloader.py --name yolo-v3-tf --output_dir my/download --cache_dir my/cache --num_attempts 5 ./converter.py --name yolo-v3-tf -d my/download/ -o my/convertor/ ./object_detection_demo_yolov3_async -i /dev/video0 -m $models/yolo-v3-tf/FP16/yolo-v3-tf.xml -d GPU --labels ~/work/openvino_r/yolov3/tensorflow-yolo-v3/coco.names