树莓派4B部署YOLOv5目标检测模型部署

1.工作内容简介:

(1)训练鱼类目标识别模型。首先建立水下鱼类目标数据集,由于目前国内暂时并没有可用红鳍东方鲀标注数据集,本文利用Labelimage软件对所采集水下鱼类样本进行标注,得到目标数据集后,参照YOLOv5结构算法训练得到YOLOv5s.pt鱼类目标模型。
(2)利用OPENVION模型转换。训练得到YOLOv5s.pt模型后,通过树莓派平台适配的学习工具OPENVION进行模型转换,将.pt模型转换为需要的IR模型,在本地设备和树莓派平台中搭建相应的运行环境,对整个流程进行必要的解释说明,得到推理速度更快的模型,以便完成部署,与优化之前的模型形成对比的推理速度。
(3)利用树莓派平台部署。在部署前需要了解树莓派软硬件搭配条件,对部分重要环境的搭建过程进行介绍,选择对应模型的软件环境版本,配置成功后进行项目测试,最终在树莓派平台完成模型的推理,并且实现目标实时检测的效果。
**

2. 数据集准备

**
首先我们利用水下摄像机及辅助LED照明光源,于养殖池水下环环境对红鳍东方鲀对象进行侧拍,采集图像数据样本,共计采集红鳍东方鲀图像样本2552幅。本文基于YOLOv5框架进行红鳍东方鲀目标检测算法研究,该框架属于全监督深度学习方法。样本数据集标注信息的准确度会直接影响模型训练准确性。然而,目前并没有可用的水下鱼类标注数据集,利用Labellmg标注软件对采集的目标鱼类图片进行标注,共获得图像及其标注信息2552组,可满足模型训练需求,样本数据及其标注结果。

**

3.部署工作简介

**
模型转化的方法是我们主要研究对象,由于树莓派配套使用的OPENVION工具包不提供直接将训练所得的YOLOv5.pt模型转换为IR模型的接口,因此需借助YOLOv5模型框架中的export.py脚本文件,将原模型文件转换为.ONNX格式作为中间量。然后再将其转换成IR模型,主要工作分为本地设备和树莓派平台两个内容,在本地主机上下载OPENVION工具包需要很大的内存空间,因此选择在本地设备转换模型,而树莓派上下载的文件内存空间占用很小也很方便,我们只需在其进行模型的推理即可。在树莓派中下载OPENVION安装包以及配置NCS2环境,搭建可编译、执行YOLOv5模型的软件环境,安装文件互相之间的依赖包且严格对应好模型版本需求,最终在树莓派中完成其部署工作。树莓派的开发流程包括:选择预训练模型;使用模型优化器来转换模型;最后在树莓派平台完成推理模型。

**

3.1 软件环境搭建

**
为保证YOLOv5文件可以在树莓派中正常运行,需要在树莓派平台中安装如下几个重要的学习工具:Opencv,PyTorch,Torchvision,Cmake等,由于树莓派官方系统中包含的环境不足以支持我们完成YOLOv5的文件运行,因此我们需要主动选择各个库文件之间的安装版本以及安装依赖问题,安装过程中会遇到一些网络问题和设备硬件问题等,一些文件包不支持直接在树莓派中安装下载,需要在终端对其编译环境方可下载使用,以下是几个软件环境安装时的主要步骤介绍:
软件环境配置
软件工具 版本
Python 3.7
Cmake 3.18
Conda 4.3.16
Torch 1.6
Torchvision 0.7
OpenCV 4.4
Picamera 1.13
Numpy 1.19.4
OPENVION 2020

3.2 OPENVION安装准备工作
首先在树莓派平台下载安装2020版QPENVION工具包,解压安装后在其终端安装一些依赖环境,进行设置环境所需要的变量并对其测试,测试成功后添加USB原则,为了使加速棒成功插入进行测试,加入USB原则后对整个环境进行模拟测试,对YOLOv5的程序进行运行测试最终得到正确的运行结果即表示搭建安装的OPENVION环境成功。

**

3.3 运行环境测试

**
通过上一小节中配置运行模型所需的软件环境后,首先进行测试的是树莓派外接的CSI摄像头调用功能是否良好,摄像头功能能否正常使用决定了识别工作的成功与否,通过运行摄像头启动和调用的功能并用此来拍一张照片,成功得到目标图片后,即证明摄像头安装成功,接下来进行检测YOLOv5官网模型的源码程序并运行测试结果,得到图片和摄像头实时检测结果.

4.1 图片检测结果以及分析



结果分析:根据图片显示结果我们可以直观的看出,图片测试效果在树莓派中鱼类目标识别的精度较高,仅有一小部分识别框与鱼类本身位置有些出入,这与我们在使用本地设备中使用CPU识别效果基本保持一致,我们可以得到测试两张图片时间为6.9s,平均一张图片推理时间为3.45s,FPS大约为0.3帧/s左右,作为一款算力几乎为0的边缘设备没有通过任何加速模型方法,已经可以作为比较成功的效果了,我们可以通过使用转换模型后的推理速度形成对比。

4.2 视频检测结果以及分析

结果分析:水下鱼类视频目标识别在树莓派中检测结果如上,由于视频检测时间较长,相比于简单的图片会消耗树莓派运行的CPU占用时间和内存,所需等待时间也会比较久,在输出过程中需要保证树莓派本身的散热情况良好,使其在软硬件条件确保无误后输出视频结果,在运行结果中具体分析我们得到与图片近似的结论,在整个流程中随机截取两张图片所示,识别精度几乎与图片呈现的效果相同,视频整体视觉还是比较流畅,相比于启动摄像头实时识别的效果较好,识别精度较高可以证明训练所得模型数据真实可靠,可以完整流畅对视频进行识别,下面我们可以与实时识别的效果形成个对比。

4.3 实时摄像头识别效果


结果分析:从实时识别结果中我们可以发现,每一次识别时间大概为3.1秒左右,其速度是我们将图片输出的分辨率从原来的256640调整为256320得到的结果,推理速度与在本地设备中有些差异,可见树莓派中CPU实时检测的效果一般,这其中包括硬件设备算力不足等问题,但并非其模型本身识别效果问题,这就需要我们对YOLOv5模型通过一些方法优化再次部署到树莓派中检测其推理速度进行比较。

4.4 部署模型优化及分析

由于树莓派只有CPU这一限制条件,所以本文决定采用树莓派系统配备的OPENVION软件包经行模型转换处理。通过训练所得的YOLOv5s.pt模型是无法直接在树莓派平台转换为IR模型的,所以我们先在本地设备中选择处理,第一步将YOLOv5s.pt模型转为ONNX中间模型后再转为IR模型,最终我们在树莓派中可以实现完成推理速度的测试即可,与没有转换前的模型二者的推理速度形成一个对比,如果有速度提升则证明我们优化模型的方法是合理的,反之则方法不成立,最终通过转换后的模型得到如图显示的推理速度的结果:

通过模型转换后的YOLOv5s的FPS在0.89帧左右,相比高算力的本地设备来说速度并不算快,但是对比于树莓派本身,在没有通过模型转换前的FPS在0.35左右,通过NCS2加速后速度也算有所提升,其中主要耗时集中在神经棒的推理之中,需要耗费767ms,虽没有达到预期一样的本地设备推理效果,但相对其本身也有小幅提升,足以可见的此方法是成立的。

总结

本项目是在树莓派平台上面实现对鱼类目标模型识别与检测,硬件选择方面为树莓派4B与64gSD存储卡,由于需要进行实时视频的显示,我们在国内目前几个较为主流的摄像头中综合选出性价比较高的CSI摄像头进行实时视频的工作,并且根据本项目需要进行一些代码的操作以及编译工作选择鼠标,键盘,显示器来进行显示以及操作工作,考虑到树莓派的CPU需要长时间进行检测工作,为了保证CPU处在一个安全的温度区间需要在树莓派上面安装散热风扇。
软件环境首先需要进行的是树莓派操作系统的镜像烧录工作,在选择系统时我们更倾向于选择树莓派官网系统的32位操作系统,其中包括了很多我们搭建环境所需的文件包,在运行模型的时候相对其他非官网系统也要更为稳定一些,在烧录过程中主要需要注意SD卡的格式化操作,需要使用格式换软件进行格式化的操作,系统烧录结束之后我们就可以在树莓派终端搭建适合YOLOv5的环境以及各种文件之间的依赖包,由于网络问题常常会导致下载失败等问题,需要我们反复多次进行测试,搭建结束后我们通过测试YOLOv5官网模型识别到成功的结果说明软件环境已经搭建成功,接下来我们可以通过对自己的鱼类目标模型进行部署和模型优化处理,得到成功的部署结果。

最后的最后

想对新人刚开始学习树莓派并学习目标检测yolo系列的同学说一些,在学习过程中经常会遇到一些难以解决的问题,此时呢我们应该滤清思路,想一想我们到底应该去用什么方法解决什么问题,于此同时方可在学习的道路上越走越远,脚踏实地的向前迈进,由于树莓派这一设备的局限性不能发挥出yolo模型的全部优势 ,但是作为研究者的我们应该在各种平台设备中去进行测试推理得到结果,并最终根据结果验证方案是否可行,在学习这条路大家都是一致的,只不过每一个人的起点不同,只要肯坚持,都会有好的结果的。

树莓派4B部署YOLOv5目标检测模型部署(包含加速方法以及模型训练方法总结)相关推荐

  1. 使用ONNXRuntime部署阿里达摩院开源DAMO-YOLO目标检测,一共包含27个onnx模型(代码开源)...

    2022 点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 学习群|扫码在主页获取加入方式 获取代码|关注并回复"onnx部署" 01 概述 ONNXRuntime是微 ...

  2. Ubuntu20.04部署yolov5目标检测算法,无人车/无人机应用

    在FireFly RK3588开发板上烧录了Ubuntu20.04系统,在此基础上线部署下简单的Python版本yolov5代码,目前博主已全部转为C++版本了,并且转化了pt模型为rknn模型,调用 ...

  3. Jetson nano部署Yolov5目标检测 + Tensor RT加速(超级详细版)

            一.准备工具   二.烧录         三.搭配环境         四.试跑Yolov5         五.tensorRT部署yolov5 前言: 在工作或学习中我们需要进行 ...

  4. 用opencv的dnn模块做yolov5目标检测

    最近在微信公众号里看到多篇讲解yolov5在openvino部署做目标检测文章,但是没看到过用opencv的dnn模块做yolov5目标检测的.于是,我就想着编写一套用opencv的dnn模块做yol ...

  5. 目标检测推理部署:优化和部署

    目标检测推理部署:优化和部署 本文简要介绍了端对端推理管道的优化技术和部署. 将在以下三个方面研究推理优化过程:硬件优化,软件优化和模型优化.推理优化的关键指标如下: • 吞吐量(未推理图像/秒) • ...

  6. 如何利用深度学习知识--快速部署高速目标检测智能小车?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 3月26日,英伟达图像处理系列公开课第三期线上开播,来自NVIDI ...

  7. 睿智的目标检测——YoloV7-Tiny-OBB旋转目标检测算法部署

    YoloV7-OBB旋转目标检测算法部署 学习前言 源码下载 安装TensorRT 1.TensorRT简介 2.下载TensorRT 3.TensorRT安装 安装torch2trt 1.torch ...

  8. 简单快速建立pytorch环境YOLOv5目标检测 模型跑起来(超简单)

    简单快速建立pytorch环境+实现YOLOv5目标检测 模型跑起来(超简单) 一.下载yolov5模型代码: yolo代码 提取码:2022 下载后解压 二.简单快速创建pytorch环境: 1.条 ...

  9. 基于高通SNPE推理引擎的yolov5目标检测算法

    上图源自Snapdragon Neural Processing Engine SDK Reference Guide,它展示了一个Deep Learning Neural Network在SNPE环 ...

最新文章

  1. (5.2) Tomcat 8 源码, 初始化组件
  2. 找出MySQL瓶颈的基准测试和剖析
  3. java中字节码_Java字节码浅析(三)
  4. 三菱plc编程实例3000_三菱PLC十字路口的红绿灯编程实例
  5. 关于C语言中的结构体内存对齐与位段问题
  6. android activity使用,android,NativeActivity使用
  7. 怎么绕过论坛回复_铝散热片铆钉怎么压得快,有没有自动化设备
  8. Android 第二十课 广播机制(大喇叭)----发送自定义广播(包括发送标准广播和发送有序广播)
  9. 【HDU - 1852】 Beijing 2008()
  10. 专有网络 VPC > VPC与外部网络连接 > 连接VPC
  11. 手把手教你从0-1做一张酷炫驾驶舱,让老板对你赞不绝口
  12. 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
  13. 如何在云服务器上装系统吗,如何在云服务器上装系统吗
  14. Linux FTP文件服务器共享/匿名访问。别名访问。用户访问
  15. qcc300x笔记之固件升级(六)
  16. Python使用Reportlab处理PDF数据 - 创建pdf库文件
  17. HTML静态网页作业——动漫火影忍者 (HTML+CSS)制作个人主页课程设计
  18. 进阶之路 | 奇妙的Activity之旅
  19. 小白入门之HTML--第三章 CSS样式基础
  20. office服务器草稿位置,精确定位图片在Word文档中的位置的操作方法

热门文章

  1. 桥水基金的经济分析模式 (1)
  2. Autocad2013中文破解版(64位)安装图文教程
  3. 钛备份 - Titanium Backup Pro v6.2.0-Test4 直装破解版
  4. Palisade Decision Tools(Risk) 7.0 1CD风险与决策分析工具套件
  5. 01- ElasticSearch(简称ES)- 简介
  6. 2017-2020我的电脑不断蓝屏重启问题最终解决篇
  7. 完整 MAXWELL 核心登場,NVIDIA GEFORCE GTX TITAN X 顯示卡實測
  8. 安卓学习日记——Vitamio框架
  9. 实例讲解,51单片机常用延时控制子程序
  10. Flutter - 一个fultter练习项目(仿写微信UI、实现一些常用效果、封装通用组件和工具类)