(1)训练鱼类目标识别模型。首先建立水下鱼类目标数据集,由于目前国内暂时并没有可用红鳍东方鲀标注数据集,本文利用Labelimage软件对所采集水下鱼类样本进行标注,得到目标数据集后,参照YOLOv5结构算法训练得到YOLOv5s.pt鱼类目标模型。
(2)利用OPENVION模型转换。训练得到YOLOv5s.pt模型后,通过树莓派平台适配的学习工具OPENVION进行模型转换,将.pt模型转换为需要的IR模型,在本地设备和树莓派平台中搭建相应的运行环境,对整个流程进行必要的解释说明,得到推理速度更快的模型,以便完成部署,与优化之前的模型形成对比的推理速度。
(3)利用树莓派平台部署。在部署前需要了解树莓派软硬件搭配条件,对部分重要环境的搭建过程进行介绍,选择对应模型的软件环境版本,配置成功后进行项目测试,最终在树莓派平台完成模型的推理,并且实现目标实时检测的效果。
**
**
首先我们利用水下摄像机及辅助LED照明光源,于养殖池水下环环境对红鳍东方鲀对象进行侧拍,采集图像数据样本,共计采集红鳍东方鲀图像样本2552幅。本文基于YOLOv5框架进行红鳍东方鲀目标检测算法研究,该框架属于全监督深度学习方法。样本数据集标注信息的准确度会直接影响模型训练准确性。然而,目前并没有可用的水下鱼类标注数据集,利用Labellmg标注软件对采集的目标鱼类图片进行标注,共获得图像及其标注信息2552组,可满足模型训练需求,样本数据及其标注结果。
**
**
模型转化的方法是我们主要研究对象,由于树莓派配套使用的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官网模型的源码程序并运行测试结果,得到图片和摄像头实时检测结果.
结果分析:根据图片显示结果我们可以直观的看出,图片测试效果在树莓派中鱼类目标识别的精度较高,仅有一小部分识别框与鱼类本身位置有些出入,这与我们在使用本地设备中使用CPU识别效果基本保持一致,我们可以得到测试两张图片时间为6.9s,平均一张图片推理时间为3.45s,FPS大约为0.3帧/s左右,作为一款算力几乎为0的边缘设备没有通过任何加速模型方法,已经可以作为比较成功的效果了,我们可以通过使用转换模型后的推理速度形成对比。
结果分析:水下鱼类视频目标识别在树莓派中检测结果如上,由于视频检测时间较长,相比于简单的图片会消耗树莓派运行的CPU占用时间和内存,所需等待时间也会比较久,在输出过程中需要保证树莓派本身的散热情况良好,使其在软硬件条件确保无误后输出视频结果,在运行结果中具体分析我们得到与图片近似的结论,在整个流程中随机截取两张图片所示,识别精度几乎与图片呈现的效果相同,视频整体视觉还是比较流畅,相比于启动摄像头实时识别的效果较好,识别精度较高可以证明训练所得模型数据真实可靠,可以完整流畅对视频进行识别,下面我们可以与实时识别的效果形成个对比。
结果分析:从实时识别结果中我们可以发现,每一次识别时间大概为3.1秒左右,其速度是我们将图片输出的分辨率从原来的256640调整为256320得到的结果,推理速度与在本地设备中有些差异,可见树莓派中CPU实时检测的效果一般,这其中包括硬件设备算力不足等问题,但并非其模型本身识别效果问题,这就需要我们对YOLOv5模型通过一些方法优化再次部署到树莓派中检测其推理速度进行比较。
由于树莓派只有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模型的全部优势 ,但是作为研究者的我们应该在各种平台设备中去进行测试推理得到结果,并最终根据结果验证方案是否可行,在学习这条路大家都是一致的,只不过每一个人的起点不同,只要肯坚持,都会有好的结果的。