file-type

C++实现在RK3588/RK3588S上的YOLOv5s高效推理Demo

版权申诉
5星 · 超过95%的资源 | 8.14MB | 更新于2024-10-22 | 153 浏览量 | 2 下载量 举报 5 收藏
download 限时特惠:#49.90
该资源为一个压缩包文件,文件名为"使用c++在rk3588-3588s上运行的yolov5s简单demo(142帧-s).zip",包含了一系列文件和代码,用于在rk3588和rk3588s硬件平台上使用C++运行YOLOv5s模型的简单演示。YOLOv5s是一个流行的实时对象检测系统,它体积小速度快,适用于边缘设备如rk3588和rk3588s处理器,这两者是基于RK3588系统级芯片(SoC)。 YOLOv5s使用了轻量级的设计,使得在NPU(神经网络处理单元)上运行时,可以通过使用激活函数如ReLU(Rectified Linear Unit)来进一步优化性能,增加推理帧率。ReLU函数是一种激活函数,它在正数区间内保持信号不变,在负数区间内将信号置零,对于提升网络性能具有显著效果。 该演示使用了线程池来异步操作RKNN(Rockchip Neural Network)模型,这样可以提高NPU的利用率,从而提升整体的推理帧数。线程池是一种多线程技术,其中一组已创建的线程可以被重复使用来执行多个任务。在这个案例中,使用线程池可以有效地在rk3588/rk3588s平台上处理模型计算,以达到更高的性能和效率。 为了使用该演示,系统需要安装OpenCV库,它是用于计算机视觉的开源库,包含了广泛的图像处理和分析工具。用户需要下载提供的测试视频文件,并将其存放在项目根目录下。之后通过运行build-linux_RK3588.sh脚本来编译项目。为了获得最佳性能和稳定性,推荐以root用户权限运行performance.sh脚本。 编译完成后,进入install目录并运行命令 "./rknn_yolov5_demo 模型所在路径 视频所在路径/摄像头序号",来启动YOLOv5s模型的推理过程。演示程序会显示视频内容,并在视频帧中识别出检测到的对象。 在部署应用方面,用户可以参考include/rkYolov5s.hpp文件中的rkYolov5s类来构建自己的RKNN模型类。rkYolov5s.hpp文件中定义了一个C++类,这个类封装了YOLOv5s模型的运行,用户可以通过这个类的接口与模型交互。 该资源的标签包括"c++"、"rk3588"、"yolov5"和"rk3588s",说明这是一个针对C++语言和特定硬件平台(rk3588和rk3588s)的项目,主要目的是在这些平台上运行YOLOv5s模型,进行实时视频分析和对象检测。 文件名称列表中出现的"rknn-cpp-Multithreading-main"暗示了主要代码和演示是围绕C++和多线程技术构建的,特别是针对RKNN模型和使用多线程以提升性能。此外,该文件结构可能还包括了关于RK3588/RK3588s处理器平台的特定部署指南和配置文件,确保模型能够在该硬件上成功运行。

相关推荐

filetype
基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明,适用车辆行人跟踪,个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort算法部署于rk3588和rk3399pro开发板的C++源码+文档说明+模型基于yolov5+Deepsort
filetype
一、基本概念 1. 什么是目标检测 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。 计算机视觉中关于图像识别有四大类任务: (1)分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。 (2)定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。 (3)检测-Detection:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。 (4)分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。 所以,目标检测是一个分类、回归问题的叠加。 2. 目标检测的核心问题 (1)分类问题:即图片(或某个区域)中的图像属于哪个类别。 (2)定位问题:目标可能出现在图像的任何位置。 (3)大小问题:目标有各种不同的大小。 (4)形状问题:目标可能有各种不同的形状。 3. 目标检测算法分类 基于深度学习的目标检测算法主要分为两类:Two stage和One stage。 1)Tow Stage 先进行区域生成,该区域称之为region proposal(简称RP,一个有可能包含待检物体的预选框),再通过卷积神经网络进行样本分类。 任务流程:特征提取 --> 生成RP --> 分类/定位回归。 常见tow stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。 2)One Stage 不用RP,直接在网络中提取特征来预测物体分类和位置。 任务流程:特征提取–> 分类/定位回归。 常见的one stage目标检测算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等。 4. 目标检测应用 1)人脸检测 智能门控 员工考勤签到 智慧超市 人脸支付 车站、机场实名认证 公共安全:逃犯抓捕、走失人员检测 2)行人检测 智能辅助驾驶 智能监控 暴恐检测(根据面相识别暴恐倾向) 移动侦测、区域入侵检测、安全帽/安全带检测 3)车辆检测 自动驾驶 违章查询、关键通道检测 广告检测(检测广告中的车辆类型,弹出链接) 4)遥感检测 大地遥感,如土地使用、公路、水渠、河流监控 农作物监控 军事检测 二、目标检测原理 目标检测分为两大系列——RCNN系列和YOLO系列,RCNN系列是基于区域检测的代表性算法,YOLO是基于区域提取的代表性算法,另外还有著名的SSD是基于前两个系列的改进。 1. 候选区域产生 很多目标检测技术都会涉及候选框(bounding boxes)的生成,物体候选框获取当前主要使用图像分割与区域生长技术。区域生长(合并)主要由于检测图像中存在的物体具有局部区域相似性(颜色、纹理等)。目标识别与图像分割技术的发展进一步推动有效提取图像中信息。 1)滑动窗口 通过滑窗法流程图可以很清晰理解其主要思路:首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动。每次滑动时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率,则认为检测到了物体。对每个不同窗口大小的滑窗都进行检测后,会得到不同窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。最终,经过NMS筛选后获得检测到的物体。 滑窗法简单易于理解,但是不同窗口大小进行图像全局搜索导致效率低下,而且设计窗口大小时候还需要考虑物体的长宽比。所以,对于实时性要求