林宇祥的技术博客

  • 首页
  • RZ/V2H 开发指南
  • 关于作者
  1. Main page
  2. MYZR RZ/V2H EK320开发指南
  3. Main content

基于瑞萨ai_sdk的yolov8模型部署(一):环境搭建

163hotness 0likes 2comments

ai_sdk版本:v6.00
translator版本:v1.04
WSL2版本:Ubuntu20.04
使用vscode开发 下载的插件包括但不限于:cmake、WSL、docker、c++等

从瑞萨官网下载ai_sdk: https://www.renesas.cn/zh/document/sws/rzv2h-ai-sdk-v600?r=25470141

解压zip于在WSL中得到RTK0EF0180F06000SJ文件夹
文件目录如下:

├── RTK0EF0180F06000SJ
│ ├── ai_sdk_setup
│ │ ├── DRP-AI_Translator_i8-v1.04-Linux-x86_64-Install
│ │ ├── DRP-AI_Translator_i8-v1.04-Linux-x86_64-Install:Zone.Identifier
│ │ ├── Dockerfile
│ │ ├── Dockerfile:Zone.Identifier
│ │ ├── rz-vlp-glibc-x86_64-core-image-weston-cortexa55-rzv2h-evk-toolchain-5.0.11.sh
│ │ └── rz-vlp-glibc-x86_64-core-image-weston-cortexa55-rzv2h-evk-toolchain-5.0.11.sh:Zone.Identifier
│ ├── board_setup
│ │ ├── eSD.zip
│ │ ├── eSD.zip:Zone.Identifier
│ │ ├── xSPI.zip
│ │ └── xSPI.zip:Zone.Identifier
│ ├── documents
│ │ ├── r11an0841ej0600-rzv2h-ai-sdk(Linux License List).pdf
│ │ ├── r11an0841ej0600-rzv2h-ai-sdk(Linux License List).pdf:Zone.Identifier
│ │ ├── r20ut5184ej0104-drp-ai.pdf
│ │ ├── r20ut5184ej0104-drp-ai.pdf:Zone.Identifier
│ │ ├── r20ut5336ej0104-drp-ai-translator-i8.pdf
│ │ └── r20ut5336ej0104-drp-ai-translator-i8.pdf:Zone.Identifier
│ ├── r11an0840ej0600-rzv2h-ai-sdk.pdf
│ ├── r11an0840ej0600-rzv2h-ai-sdk.pdf:Zone.Identifier
│ └── references
│ ├── core-image-weston-rzv2h-evk.rootfs.manifest
│ ├── core-image-weston-rzv2h-evk.rootfs.manifest:Zone.Identifier
│ ├── linux_licenses.zip
│ └── linux_licenses.zip:Zone.Identifier
└── RTK0EF0180F06000SJ.zip:Zone.Identifier

这里的documents实际上是数据手册 里面有DRP-AI进行量化与编译的说明
ai_sdk_setup里面包含了我们需要的工具(docker、交叉编译链、translator)
其余内容可以暂时不管


(一)加载docker
首先确保你的Ubuntu环境中有docker软件:
如果没有docker,请按照以下命令下载docker:

sudo apt update
sudo apt install docker

如果有docker软件:
首先需要找到你RTK0EF0180F06000SJ安装的路径,我这里的路径为~/new_sdk/RTK0EF0180F06000SJ:

执行以下命令启动docker环境,其中rzv2h_drp为该容器名称:

~/new_sdk/RTK0EF0180F06000SJ/ai_sdk_setup$ docker build -t rzv2h_drp .


等待漫长时间后,由于是首次运行该容器,请按照以下命令运行:

docker run -it \
--name rzv2h_compiler \
-v $(pwd):/drp-ai_tvm/data/ \
rzv2h_drp /bin/bash


--name rzv2h_compiler 这里可以理解为别名 实际上不影响docker的功能
-v $(pwd):/drp-ai_tvm/data/ 这里是挂载的目录
rzv2h_drp /bin/bash 挂载到命令行以输入命令

如何理解docker:
厂家为了让你跑通它的代码,会贴心的给你写好跑通代码需要的所有环境,通常以“dockerfile”的形式呈现,如果你感兴趣打开它(用记事本打开即可)就会发现里面大多是各种版本的各种软件,只需要用docker就可以一键下载环境,十分的方便。

同时docker可以隔离彼此的环境,比如你要跑3个项目,每个项目需要的软件版本不一样,但是docker的存在就不需要你跑一个项目就要从头配置环境了,只需要挂载docker后即可跑通代码。

还有就是宿主机(这里可以理解为WSL2里的Ubuntu)与docker之间的联系:
-v $(pwd):/drp-ai_tvm/data/ docker与Ubuntu会共享这个文件夹:
你在Ubuntu里添加一个文件,docker里会同步出现该文件

为了更方便的开发,我们在vscode中下载docker插件,在顶端的工具栏上找到“查看(View)”选项后点击子选项的第一个“命令面板(ctrl+shift+P)”,在新出现的选项中选择:“开发容器:附加到正在运行的容器”

选择你正在运行的docker 这里应该是rzv2h_compiler
(由于我之前运行了其它容器,所以会显示其它选项)
之后我们会进入到一个全新的容器内:

看左下角的蓝色图标即可知道已经进入了docker环境内

本次只是为了熟悉开发环境,接下来我们会在docker内进行yolo模型的下载、裁剪、量化、编译。

另外,上述docker方法只适用于第一次启动,如果你之前已经使用了docker run这个命令,那么下一次挂载docker时,不需要运行 docker run命令:
先用docker ps -as 命令查看当前docker ID:


找到你的docker对应的ID后(这里是898e1da632d3),输入以下命令:

docker start 898e1da632d3



之后docker容器就会启动,如果成功启动会反馈给你已经启动的docker ID

之后就可以用插件进行挂载了。

另外,还有一些Linux常用命令仅供参考:


把当前文件复制到docker里:(反过来就是把顺序换一下)

docker cp calib_data 9e1bc4e07212:/drp-ai_tvm/data
docker cp my_yolo_container:/drp-ai_tvm/data/yolo11_object/src/build/object_detection .

查找特定文件:

find / -name "nchw_datareader.py"

cp命令复制文件夹:

cp -r /home/user/documents /backup/

文件夹重命名:

mv old_folder new_folder

查找特定文件就:

find / -type d -name "data"

1. 挂载 U 盘 (假设设备是 sda1,如果之前挂载过忽略此步)

su - # 先切换到 root 挂载
mount /dev/sda1 /mnt/udisk
exit # 挂载完退回到 rzv2h 用户!(一定要退回)

查看软件版本

pip show onnx (pip下载)
python3 -c "import onnx; print(onnx.version)"
gcc --version

压缩WSL节省空间
用WizTree软件找到了WSL的磁盘所在位置 D:\WSL\ext4.vhdx
在Powershell中运行 :

wsl --shutdown
diskpart


在弹出的窗口中:

select vdisk file="D:\WSL\ext4.vhdx"
(如果出错了 就再次运行一下 wsl --shutdown)
compact vdisk
detach vdisk
exit

显示文件修改时间

stat filename.txt

删除某个docker

docker rm 41cbfd165765

查看wic镜像里的文件:

sudo losetup -Pf /home/home/new_ai_sdk_work/ai_sdk_setup/data/rzv2h_ai_performance_demo_usb_camera_sd_image.wic
ls /dev/loop*


你会看到类似 /dev/loop0p1, /dev/loop0p2 的节点,p2 就代表第二个分区。

mkdir ./mnt_point
sudo mount /dev/loop0p2 ./mnt_point


卸载与清理(重要):

sudo umount ./mnt_point
sudo losetup -d /dev/loop0


第一篇章先告一段落,Linux初学者也不要着急,先慢慢地敲一敲命令以逐步上手Linux。

PS:本人初学Linux,水平有限,如有错误,请以斧正。

Tag: Nothing
Last updated:

林宇祥

电子科技大学 · 信息与通信工程学院 · 电子信息工程。专注于嵌入式Linux、多核异构协同系统(ARM Cortex-A55 + Cortex-M33)与边缘视觉AI开发。

Like
< Last article
Next article >

Comments

  • Avatar photo
    xcc

    你好,我们按照这样的环境配置最后在板子上部署yolov8时出现了问题,无法检测物品,同时框的位置固定在画面某些位置出现,请问这种问题您遇到过吗,有什么解决方法吗

    Reply
    • Avatar photo
      SevenFriends

      @xcc 你好!这种情况可能是预处理的问题,请检查模型量化编译的时候有没有归一化处理,也有可能是后处理的问题,请检查NCHW格式和编译时候的yaml配置是不是一样。

      Reply
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    Cancel

    专栏近期博文

    • 我把论文阅读器做进了 VS Code:中英对照、公式原图、AI 答疑
    • 多传感器相对定位的观测建模与优化方法
    • 基于 Yocto 与瑞萨 RZ/V2H 多核异构的跨海大桥智能巡检 ROV 全景结项总结
    • 关于MIPI摄像头的问题
    • 关于CA55与CM33总线访问冲突的问题

    COPYRIGHT © 2026 林宇祥的技术博客 · 电子科技大学. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang