rk3588模型转换&部署环境配置 - step by step

这里介绍了能够支持完整的rfs构建,rknn模型转换和yolo训练的完整的环境,最终会涉及到三个docker系统。注意,Docker运行时,创建了/app路径与宿主机做文件中转。这一个功能是在启动docker的脚本里做到的。

1.Docker环境准备

1.1 准备Dockerfile构建脚本

把下面的内容存放在项目路径根目录下,文件名Dockerfile,考虑了:

  • apt-get源指向国内镜像
  • 安装过程那个时区命令行输入问题

# Base Image 依赖的ubuntu镜像,
FROM ubuntu:20.04
 
# Author
LABEL maintainer="username <user@email.addr>" #可以修改这里

# Base Image

FROM ubuntu:20.04

# Author

LABEL maintainer="twicave <twicave@aliyun.com>"

# 提前设置时区

RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone

# 备份原有的 sources.list 文件

RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak

# 创建新的 sources.list 文件并写入阿里云源

RUN echo "deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" > /etc/apt/sources.list

RUN echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list

RUN echo "deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list

RUN echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list

RUN echo "deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list

RUN echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list

RUN echo "deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list

RUN echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list

# 更新软件包列表

RUN apt-get update

# expect

RUN apt-get update && apt-get install -y \

      build-essential \

      cmake \

      git \

      libcurl4-openssl-dev \

      libgtest-dev \

      libxml2-dev \

      pkg-config ssh make gcc libssl-dev liblz4-tool \

       g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \

      qemu-user-static live-build bison flex fakeroot gcc-multilib g++-multilib \

      unzip device-tree-compiler ncurses-dev p7zip bc tree

# workspace

WORKDIR /app

1.2.构建Docker容器

docker build -t <user-name>/rk3588_build:latest .

DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon   51.2kB
Step 1/x : from ubuntu:20.04

1.3 查看docker镜像

root@LAPTOP-0BJBKJGQ:~/git/rk3588_build# docker images
REPOSITORY             TAG       IMAGE ID       CREATED             SIZE
<user-name>/rk3588-build   latest    8f861e5dd21f   About an hour ago   1.06GB

1.4 启停docker

启动:

docker run --privileged --name rk3588-build -tid -v /dev/mem:/dev/mem -v /root/git/rk3588_build/:/app/rk3588_build --rm <user-name>/rk3588-build:latest

停止:

docker stop rk3588-build

注意这里对docker的全名重新命名了一下。

1.5 进入docker环境

 docker exec -ti rk3588-build /bin/bash

到这一步之后,可以自行在docker环境构建自己的rknn转换工具,以及开发板的文件系统构建工具。然后也可以直接将开发板厂商的文件系统SDK在docker中加载。

一般开发板厂商甚至给直接给你,预先处理过的rknn转换docker。

2.三个AI视频应用的Docker环境:

2.1Docker1:开发板厂商的文件系统SDK

2.1.1 下载厂商sdk, 解包

因为sdk非常大,不建议将其在docker环境中直接解包。下面是将其解包到了宿主机的/root/firefly_sdk目录。注意,如果在windows环境小,不可以将压缩包直接解压在windows目录结构:

root@LAPTOP-0BJBKJGQ:/mnt/d/BaiduNetdiskDownload/base-v1.1.1b# dir
md5sum.txt              rk3588_6.1.tgz.split01  rk3588_6.1.tgz.split03  rk3588_6.1.tgz.split05
rk3588_6.1.tgz.split00  rk3588_6.1.tgz.split02  rk3588_6.1.tgz.split04
root@LAPTOP-0BJBKJGQ:/mnt/d/BaiduNetdiskDownload/base-v1.1.1b# mkdir /root/firefly_sdk
root@LAPTOP-0BJBKJGQ:/mnt/d/BaiduNetdiskDownload/base-v1.1.1b# cat rk3588_6.1.tgz.split0* | tar -C /root/firefly_sdk -zx

将这个sdk整体搬运到docker可见目录:

2.1.2 下载对应的rootfs

相关的rootfs是在产品页面下载的:

 root@LAPTOP-0BJBKJGQ:~/git/rk3588_build/firefly_sdk/rootfs_ec_r3588rt# 7z x /mnt/d/BaiduNetdiskDownload/Ubuntu22.04-Xfce_COMMON_v3.11-53_20250113.7z

解压缩后:

# ls -l
total 2714496
-rw-r--r-- 1 root root 2779631616 Jan 13 12:39 Ubuntu22.04-Xfce_COMMON_v3.11-53_20250113.img
drwxr-xr-x 2 root root       4096 Jan 13 12:30 mnt
-rw-r--r-- 1 root root        376 Jan 13 12:39 readme 

2.1.3  创建符号链接

# mv Ubuntu22.04-Xfce_COMMON_v3.11-53_20250113.img /root/git/rk3588_build/firefly_sdk/rk3588_6.1/prebuilt_rootfs/

#cd /root/git/rk3588_build/firefly_sdk/rk3588_6.1/prebuilt_rootfs/

#ln -sf Ubuntu22.04-Xfce_COMMON_v3.11-53_20250113.img rk3588_ubuntu_rootfs.img

之后,还有一些升级的工作,然后这个环境可以用于创建开发板的待烧写固件包。 

2.2.Docker2:rknn模型转换与测试环境准备

2.2.1 下载

里面有docker:

2.2.2 docker导入

#docker load -i /mnt/d/BaiduNetdiskDownload/rknn-toolkit2-v2.3.0-cp38-docker.tar.gz

2.2.3 加载&进入

#docker run --privileged --name rknn-toolkit2 -tid -v /dev/mem:/dev/mem -v /root/git/rk3588_build/:/app/rk3588_build --rm rknn-toolkit2:2.3.0-cp38

#docker exec -ti rknn-toolkit2 /bin/bash

2.3 Docker3: yolo模型训练、测试&转换的docker环境

之前介绍了yolo11的一个极简训练环境:

yolo11自训练极简教程 - 训练&侦测-CSDN博客

但是为了把模型从宿主机迁移至开发板,还有一些其他的事项要做,最好的方法还是利用yolo原始发布目录的docker,创建一个完整版本的执行环境。

首先还是克隆yolo环境,然后利用docker构建脚本,来手工生成docker:

docker build -t twicave/yolo:latest -f ./docker/Dockerfile-python .

注意,原始的yolo Dockerfile-python是指向国外的,需要将其指向国内镜像。1.1节中包含apt-get的国内镜像处理;另外,pip的镜像处理可以这样做:

# 设置 pip 镜像源
ENV PIP_INDEX_URL https://mirrors.aliyun.com/pypi/simple/

注意:yolov11的Dockerfile使用 uv 来替代pip install来安装python包。它的国内镜像我不确定怎么处理,导致那个docker build的过程极慢。稍后我在增补这部分内容。现在,只有等。

附录A 有关uv python包安装工具的信息

uv我没有找到使用国内pip镜像站的方法。它并不快。

uv-速度飞快的pip替代 - 知乎https://zhuanlan.zhihu.com/p/689976933

附录B 版本兼容性问题

注意把各个docker中的onnx pytorch随着下表对齐到特定的版本范围,版本不匹配会造成不可预知的后果。我这边刚刚发现训练出的模型转换后无法识别。还在排查原因。

下面的文件是rknn-toolkit2.3的doc文档:03_Rockchip_RKNPU_API_Reference_RKNN_Toolkit2_V2.3.0_CN.pdf page5.

 这个时候,最大的问题,你会遇到在缺省pip源无法安装特定的pytorch版本的问题,解决办法,暂时的处理我只能想到这个:

pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cpu --default-timeout=10800

我加大了超时时间。仍然从原始pip源安装。上面这个依从于rknn-toolkit2.3的自定义pytorch版本安装命令行来自这里:
Previous PyTorch Versions | PyTorchhttps://pytorch.org/get-started/previous-versions/

我现在确认,在torch==2.4.0,对于rknn-toolkit2.3可以正常使用。(Feb17,2025) 

附录C 修改apt-get 源的另一个版本

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

#一组指向aliyun的apt install镜像

root@BF-202502171133:~# cat /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

附录D 删除docker images里的一些不再使用的映像

附录E  常用的docker指令与脚本

docker commit -a "Your Name" -m "Updated some configurations" abc123 my-custom-image:v1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

子正

thanks, bro...

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

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

打赏作者

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

抵扣说明:

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

余额充值