赞
踩
前言
上一篇我们在树莓派上安装了OpenVINO的环境,并跑了几个官方demo,作为关键点的模型转换工作,以各个版本的yolo实现为例,在这篇做一下实现。
目标检测是人工智能应用比较成熟的领域,不仅要能够识别出图片的目标,还要定位其位置,在自动驾驶方面会是一个基础的场景。一般分为两大类别,一类是two-stage的,基于R-CNN,Fast R-CNN, Faster R-CNN等等,先生成待选框(Region Proposal),再进行分类获取类别,回归获取位置;另一类就是Yolo,SSD这种one-stage算法,直接用CNN网络获取目标和位置。
相对来说,R-CNN系的精度更高,但速度慢,Yolo系的则速度快,准确率低些。在很多CV领域里,只要保证分类的准确率,检测速度比定位精度重要的多,而one-stage的模型部署有着天然的优势,极大的减轻算力有限的边缘设备的计算压力。
Yolo则是目标检测类优化速度的代表,而转换为Openvino后,速度还能更进一步。这篇主要介绍两种主流框架 Tensorflow 和 Pytorch 的模型转换到 Openvino的方法。
首先,Tensorflow 模型的转化流程是,先换将权重文件.weight 转换成静态图 .pb文件,再转化成 IR 模型的 .bin 和 .xml,最后部署到神经棒运行。我们先来跑一个yolov4-tiny的应用来体验一下。
Yolov4 应用
1 下载源码
- git clone https://github.com/TNTWEN/OpenVINO-YOLOV4.git
- cd OpenVINO-YOLOV4
2 将 weight --> pb
下载 yolov4.weight 和 yolov4-tiny.weight 放入该目录下
python convert_weights_pb.py --class_names cfg/coco.names --weights_file yolov4-tiny.weights --data_format NHWC --tiny
目录下有输出 frozen_darknet_yolov4_model.pb 就转化成功了。
✎ Tip
其中必须指定数据格式为NHWC,以匹配 intel NCS2 上对应的格式。
✎ Tip
如遇到有 ‘cloud’ 导入错误的信息,那是由于编译 TF 时开启了 --nogcp 标志,导致 tensorflow/contrib/cloud 没有被加入 pip 的安装包。这里只要将 __init__ 里的两行代码注释掉即可修复这个bug了。其中必须指定数据格式为NHWC,所以这里需要 reverse_input_channels 翻转一下对应的输入通道。
/home/pi/my_envs/tensorflow/lib/python3.7/site-packages/tensorflow/contrib/__init__.py
3 初始化openvino环境
要在Windows 或
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。