YOLOv8部署全流程

注意,本教程使用的是现成的已经转化好的rknn格式模型,后续会写pt—onnx—rknn的教程

1. 硬件购买

1.1 开发板

本教程使用RV1126开发板进行部署,某鱼200不到的价格,这个板子是我找到带NPU比较便宜的板子了,适合入门尝试。

注意购买的时候看准是开发板,不是核心板,核心板只有一个接口,开发板有很多接口。

板卡自行搜索购买,我不做推销。

这里二手的板卡可能需要自己买个12v 1A左右的电源(或者家里路由器的电源就可以)

1.2 摄像头

普通USB摄像头即可

2. 软件准备

本教程提供所有需要的软件包,不需要再费时到处寻找下载了

2.1 板卡烧录系统

(1)自己电脑(Windows)安装驱动DriverAssitant_v5.0

运行文件:yolov8部署全过程用到的包\1.1win 驱动DriverAssitant_v5.0\DriverInstall.exe

部分系统需要重启电脑才能生效

(2)首先要确认看门狗被关闭(出厂默认关闭,用户会按需自行开启),否则会一进入Loader模式就会马上重启。

(3)给板卡烧录系统

Android-USB线,连接板卡和电脑

运行文件:yolov8部署全过程用到的包\1.2win 固件(板卡系统)EASY-EAI-Nano-Ubuntu-20.04-firmware_20240227\tools\windows\RKDevTool\RKDevTool_Release\RKDevTool.exe

如果烧录工具启动正常,则会看到以下界面:

点击【切换】按钮,等待10秒左右,切换到Loader模式(此方法切换失败的话,则可以采用手动方式进入Loader模式)。

然后点击【执行】按钮,烧录成功如下所示

到此就完成了板卡的系统烧录。

后续所有步骤都在虚拟机进行

2.2 安装虚拟机

运行文件:yolov8部署全过程用到的包\1.3win 虚拟机\VMware-workstation-full-16.2.2-19200509.exe

安装虚拟机,并选择 yolov8部署全过程用到的包\1.3win 虚拟机\ubuntu-20.04.6-desktop-amd64.iso 作为虚拟机系统,其他的选项默认,内存大一点60G差不多

安装过程时间较长,耐心等待。

2.3 安装docker

更新 apt 包索引

sudo apt-get update
sudo apt upgrade

安装 apt 依赖包,用于通过HTTPS来获取仓库

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    gnupg-agent \
    software-properties-common \
    lsb-release

添加 Docker 的官方 GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

设置仓库

sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
  $(lsb_release -cs) \
  stable"

更新 apt 包索引

sudo apt-get update
sudo apt upgrade

安装 Docker Engine-Community 和 containerd

sudo apt-get install docker-ce docker-ce-cli containerd.io

docker更换镜像源

sudo vi /etc/docker/daemon.json

填入以下内容并保存(按 'i' 进入输入模式,按 'Esc' 退出输入模式,输入 ':wq!' 保存):

{
    "registry-mirrors": [
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}

重新加载配置文件、重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

2.4 环境配置

(1)将 yolov8部署全过程用到的包\1.5ubuntu 编译环境部署包\rv1126-develop-20240713.tar.gz 放到虚拟机的 home 文件夹下,不用解压

(2)打开命令行终端,加载镜像:

docker load --input rv1126-develop-20240713.tar.gz

上面这个命令只有第一次配置需要,可以用命令 doker images 查看是否已经存在镜像,已存在则直接跳下一步

 (3)编译环境配置

yolov8部署全过程用到的包\3 部署包\develop_environment_20240123.tar.gz 放到虚拟机 home 文件夹下,需要解压

手动解压或者用命令:

tar -xvf develop_environment.tar.gz

到此所有软件环境都准备就绪,虚拟机中所放置的文件如下:

3. 开始编译代码

(第一次配置好环境后,以后都从这一步开始即可,不用重新走1.和2.)

3.1 连接板卡

先将板卡连接到电脑,弹出提示选择连接到虚拟机

连接板卡前:

连接板卡后:

3.2 启动交叉编译环境

cd develop_environment
./run.sh -v /home:/opt

成功如下图:

3.2 编译代码

cd /opt/yolov8_detect_C_demo
./build.sh

成功如下图,中间如果有乱七八糟的不用管,只要不是红色报错就没问题:

3.3 将编译好的程序移植到板卡上

cp /opt/yolov8_detect_C_demo/yolov8_detect_demo_release/ /mnt/userdata/ -rf

耐心等待复制,光标会卡住不动,跳到下一行就是复制完成:

完成后即可关闭终端

4. 运行代码

4.1 进入板卡

打开终端,输入:

adb shell

成功如图:

4.2 开始运行程序

进入板卡后,定位到程序上传的位置,如下所示:  

cd /userdata/yolov8_detect_demo_release

运行程序命令如下所示,以下示例是摄像头推理:  

./yolov8_detect_demo yolov8m_rv1126.rknn /dev/video45

【资源说明】 YOLOv8部署瑞芯微RK3588板端c++源码(含使用说明).zipYOLOv8部署瑞芯微RK3588板端c++源码(含使用说明).zip ## 编译和运行 1)编译 ``` cd examples/rknn_yolov8_demo_open bash build-linux_RK3588.sh ``` 2)运行 ``` cd install/rknn_yolov8_demo_Linux ./rknn_yolov8_demo ``` 注意:修改模型、测试图像、保存图像的路径,修改文件为src下的main.cc ``` 测试效果 冒号“:”前的数子是coco的80类对应的类别,后面的浮点数是目标得分。(类别:得分) ![images](test_result.jpg) (注:图片来源coco128) 说明:推理测试预处理没有考虑等比率缩放,激活函数 SiLU 用 Relu 进行了替换。由于使用的是coco128的128张图片数据进行训练的,且迭代的次数不多,效果并不是很好,仅供测试流程用。换其他图片测试检测不到属于正常现象,最好选择coco128中的图像进行测试。 把板端模型推理和后处理时耗也附上,供参考,使用的芯片rk3588。 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
YOLOv8是一种先进的目标检测模型,它可以在实时视频流中快速定位并分类物体。对于摄像头的实时监测和识别分类,通常涉及硬件(如单片机)和软件(如深度学习模型运行在嵌入式设备或服务器上)的协同工作。 当你想让YOLOv8通过单片机与摄像头进行串口通讯,并实现实时监控和分类,你需要做以下几步: 1. **安装依赖**:首先,你需要在支持的嵌入式系统(比如树莓派或Arduino)上安装YoloV8的相关库,例如TensorFlow Lite(轻量级版本的TensorFlow)和用于串口通信的库。 2. **模型压缩与优化**:由于YOLOv8模型比较大,为了能在资源受限的单片机上运行,需要将模型转换成更小、更高效的格式,如TFLite。 3. **代码编写**: - **主程序**:负责读取摄像头数据,然后发送给单片机。这可能涉及到摄像头驱动和图像预处理。 - **单片机端**:接收到图像数据后,通过串口解析并传递给YoloV8模型进行推理。这里需要一个简单的命令解析系统来接收图像并调用模型。 4. **模型推理**:单片机上执行推理任务,利用TFLite或类似框架计算出物体的位置和类别信息。 5. **结果反馈**:将识别的结果返回给主程序,或者直接通过串口显示在特定的控制设备上。 ```python # 主程序示例(假设在Python中) import cv2 import serial from yolov8_python import YOLO ser = serial.Serial('COM1', 9600) # 连接到单片机串口 def send_image(img): ser.write(img.tobytes()) # 发送图像到单片机 yolov8 = YOLO() while True: frame = cap.read() # 从摄像头获取帧 results = yolov8.detect(frame) # 运行YOLOv8 send_image(results) # 将识别结果发往单片机 ``` ```c++ (单片机端示例,仅作为参考) #include <Wire.h> #include "tensorflow/lite/c/c_api.h" void processImage(const char* imgData) { // 解析并调用模型... } int main() { Serial.begin(9600); // 初始化串口通信 while (Serial.available()) { char data = Serial.read(); if (isImageData(data)) { // 判断是否为图像数据 processImage(data); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dneccc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值