无人机上仅使用CPU实时运行Yolov5(OpenVINO实现)(上篇)

这篇具有很好参考价值的文章主要介绍了无人机上仅使用CPU实时运行Yolov5(OpenVINO实现)(上篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

openvino yolov5,人工智能

Intel CPU在运行视觉导航等算法时实时性要优于Nvidia等平台,如Jetson Tx2,NX。而Nvidia平台在运行深度学习算法方面具有很大优势,两种平台各有利弊。但是,Intel OpenVINO的推出允许NUC平台实时运行深度学习模型,如目前最流行的目标检测程序Yolov5,这样就太好了,仅使用Intel无人机平台就可以完成各种任务。本教程将教你用Prometheus在Intel无人机平台部署Yolov5目标检测。

先来个速度测试,仅使用Intel CPU,没有模型压缩与剪枝等算法,也不依赖其他任何加速硬件。

openvino yolov5,人工智能

一、安装OpenVINO

官网教程:

https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_linux.html

1. 下载安装包

地址:

https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit/download.html?operatingsystem=linux&distributions=webdownload&version=2021%203%20(latest)&options=offline

openvino yolov5,人工智能

2. 如果之前安装过openvino,重命名或删除以下文件:

~/inference_engine_samples_build
~/openvino_models

3. 打开终端,解压安装包并进入解压路径

cd ~/Downloads/
tar -xvzf l_openvino_toolkit_p_<version>.tgz
cd l_openvino_toolkit_p_<version>

4. 安装OpenVINO

sudo ./install_GUI.sh

5. 安装软件依赖

cd /opt/intel/openvino_2021/install_dependencies
sudo -E ./install_openvino_dependencies.sh

6. 配置模型优化器

cd /opt/intel/openvino_2021/deployment_tools/model_optimizer/install_prerequisites
sudo ./install_prerequisites.sh

如果下载很慢,可以修改~/.pip/pip.conf,转到国内源

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com

二、配置Yolov5,运行演示程序

1. 下载Prometheus子模块Yolov5,并配置

sudo apt install python3-pip
cd <path-to-Prometheus>/
./Scripts/install_detection_yolov5openvino.sh

2. 下载模型权重或训练自己的模型

以官方权重为例

cd <path-to-Prometheus>/Modules/object_detection_yolov5openvino/weights
wget https://github.com/ultralytics/yolov5/releases/download/v3.0/yolov5s.pt

3. 将.pt权重文件转换为.onnx文件

运行命令:

cd <path-to-Prometheus>/Modules/object_detection_yolov5openvino
python3 models/export.py --weights weights/yolov5s.pt --img 384 --batch 1

4. 将.onnx文件转换为IR文件

cd <path-to-Prometheus>/Modules/object_detection_yolov5openvino
python3 /opt/intel/openvino_2021/deployment_tools/model_optimizer/mo.py  --input_model weights/yolov5s.onnx --model_name weights/yolov5s -s 255 --reverse_input_channels --output Conv_487,Conv_471,Conv_455

5. 运行演示程序

cd <path-to-Prometheus>/
./Scripts/start_yolov5openvino_server.sh
# Ctrl+t 打开一个新的命令行页面,并运行:
roslaunch prometheus_detection yolov5_intel_openvino.launch

运行结果如下:

openvino yolov5,人工智能

6. 输入ROS-Launch参数

<path-to-Prometheus>/Modules/object_detection/launch/yolov5_intel_openvino.launch为例:

<launch>
    <node pkg="prometheus_detection" type="yolov5_openvino_client.py" name="yolov5_openvino_client" output="screen">
        <param name="output_topic" value="/prometheus/object_detection/yolov5_openvino_det"/>
        <param name="camera_parameters" type="string" value="$(find prometheus_detection)/shell/calib_webcam_640x480.yaml" />
        <param name="object_names_txt" value="coco"/>
    </node>
</launch>

其中:

  • output_topic:检测结果输出话题(消息类型:

  • MultiDetectionInfo.msg

  • camera_parameters:相机参数文件(为了估计视线角误差、目标位置)

  • object_names_txt:目标类别描述txt问题(具体见:<path-to-Prometheus>/Modules/object_detection/py_nodes/yolov5_openvion_client/class_desc/coco.txt

7. 输出ROS话题解析

默认输出话题,消息类型:

##`MultiDetectionInfo.msg`
Header header
## 检测到的目标数量
int32 num_objs
## 每个目标的检测结果
DetectionInfo[] detection_infos
##`DetectionInfo.msg`
## 是否检测到目标
bool detected
## 目标类别名称
string object_name
## 类别ID
int32 category
## 0表示相机坐标系, 1表示机体坐标系, 2表示惯性坐标系
int32 frame
## 目标位置[相机系下:右方x为正,下方y为正,前方z为正]
float32[3] position
## 目标姿态-欧拉角-(z,y,x)
float32[3] attitude
## 目标姿态-四元数-(qx,qy,qz,qw)
float32[4] attitude_q
## 视线角度[相机系下:右方x角度为正,下方y角度为正]
float32[2] sight_angle
## 偏航角误差
float32 yaw_error

注意:

默认情况下每个目标仅有detectedobject_namecategoryframe,sight_angle的输出。

如果想输出position,需要在类别描述文件如

<path-to-Prometheus>/Modules/object_detection/py_nodes/yolov5_openvion_client/class_desc/coco.txt中填写目标的高度与宽度(单位:m)。

openvino yolov5,人工智能

如上图,以人(person)为例,设置宽度0.5m,高度1.8m

然后,需要修改源代码,这里以高度估计人距离摄像机的距离,并以此估计position

源代码位置:

<path-to-Prometheus>/Modules/object_detection/py_nodes/yolov5_openvion_client/yolov5_openvion_client.py,(112-114行)

openvino yolov5,人工智能

cls==0用来判断是否为类别—person,cls_hs[cls]用来读取目标高度(读到的数就是我们写在coco.txt里的1.8m),camera_matrix[1][1]为垂直方向像素焦距(由相机标定参数文件决定),h物体的像素高度(为实时检测结果,并被归一化到0-1)

附:目标位置测量原理

openvino yolov5,人工智能

到此,各位看官们,上篇

Yolov5-OpenVINO(X86)

上面的环境部署到此结束,也欢迎关注开源自主无人机项目“Prometheus”,在此附上链接 “https://github.com/amov-lab/Prometheus.git” 。

阅读 1651文章来源地址https://www.toymoban.com/news/detail-690122.html

到了这里,关于无人机上仅使用CPU实时运行Yolov5(OpenVINO实现)(上篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用 YOLOv5 进行实时口罩检测

    在本文中,我将解释关于使用名为 Yolo 和 Opencv 的深度学习算法进行实时口罩检测。Yolo 代表 You Only Look Once,是一种利用卷积神经网络 (CNN) 来检测对象的深度学习算法。 “YOLOv5是YOLO系列的最新产品。YOLOv5在YOLOv4的基础上进行了改进,其运行速度大幅提升,最快速度达到140帧

    2024年02月13日
    浏览(27)
  • c++windows+yolov5-6.2+openvino模型部署超详细

    自我记录:代码是根据自己的项目需求,进行了修改,主要是需要检测的图片非常大,目标小,所以对图片进行了分割再检测。下载完配置好环境之后可以直接跑。 我的环境是:windows+vs2019+openvino2022.2+opencv4.5.5+cmake3.14.0 步骤: 1、下载openvino,我用的版本是2022.2 官网网址:

    2024年02月11日
    浏览(29)
  • 使用YOLOv5实现实时目标检测结果保存

           本文将分享保存实时目标检测结果的方法,包括将目标信息逐帧保存到.txt文件中、逐帧输出检测结果图片、以及如何保存所有检测图片(包括视野中无目标的帧)。 目录 0.准备 1.目标信息保存 2.检测图片保存 3.保存所有帧        本文以单摄像头实时目标检测进行演

    2024年02月03日
    浏览(35)
  • OpenVINO 2022.3实战六:NNCF 实现 YOLOv5 模型 INT8 量化

    使用OpenVINO模型优化器将YOLOv5模型转换为OpenVINO IR格式,以便在Intel硬件上进行推理。 下载yolov5代码 ultralytics/yolov5 导出模型为onnx模型,接着使用mo导出openvino fp32和fp16模型 将训练数据集准备成可用于量化的格式。 配置量化管道,例如选择适当的量化算法和设置目标精度。 在

    2024年02月08日
    浏览(32)
  • 使用YOLOv5实现单摄像头实时目标检测

    我将在上一节的基础上,一步一步展示如何实现单摄像头实时目标检测,其中包括我在配置过程中遇到的报错和解决方法。 将\\\'--source\\\'的默认值改为0 这里的\\\'0\\\'是指系统默认的第一个摄像头,通常是电脑自带的摄像头,所以一定要记得把摄像头打开再运行代码(有些电脑会有摄

    2024年02月03日
    浏览(51)
  • 使用YOLOv5实现多摄像头实时目标检测

    这篇博客将在单摄像头目标检测的基础上,实现单网络多线程的实时目标检测。 在detect.py同级目录下新建streams.txt文件,每个视频流源单独成行: 本地摄像头填0 USB摄像头填1,2,3… IP摄像头要根据摄像头类型,按下面格式填写(我将在之后的博客中讲解实现) 0是电脑自带摄像

    2024年02月05日
    浏览(42)
  • 使用图传设备实现yolov5的远程监控与控制(YOLOv5检测+jetson nano+无人机+无线图传+vnc)

    目前想把模型加速部署好的jetson nano,放在自制无人机上,飞至高空用于检测,而且地面可以监控检测效果。 我想的检测方案: 1、使用socket,手动建立一个发射端,一个接收端,这个配置只需要导入socket库,写好ip和端口号就可以了,再打开多线程,速度也应该挺快,但是需

    2024年01月19日
    浏览(31)
  • 香橙派5使用NPU加速yolov5的实时视频推理(一)

            寒假里,博主完成了树莓派4B搭载yolofastest-V2的ncnn加速,效果挺不错的,但总感觉还是稍微差点意思,于是就购买了一块香橙派5,想要用RK3588芯片自带的NPU来加速深度学习的部署,在2023年3月4日也是完成了香橙派5的NPU加速深度学习部分,其效果也确实非常可观,在画

    2024年02月02日
    浏览(51)
  • 香橙派5使用NPU加速yolov5的实时视频推理(二)

            这一步就需要我们进入到Ubuntu20.04系统中了,我的Ubuntu系统中已经下载好了anaconda,使用anaconda的好处就是可以方便的安装一些库,而且还可以利用conda来配置虚拟环境,做到环境与环境之间相互独立。         对于我来说,使用了以下命令创建了一个名为rknn_cesh

    2024年02月02日
    浏览(43)
  • 吸烟检测从零开始使用YOLOv5+PyQt5+OpenCV实现(支持图片、视频、摄像头实时检测)

    全流程 教程,从数据采集到模型使用到最终展示。若有任何疑问和建议欢迎评论区讨论。 先放上最终实现效果 检测效果 由上图我们可以看到,使用YOLOV5完成了吸烟的目标识别检测,可以达到mAP可达85.38%。通过对吸烟的自动检测可以方便商场、医院、疗养院等公共场合进行禁

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包