RK3588 rknn宿主机端配置之docker开发环境部署
文章目录
开发环境介绍
宿主机 HostPC: 装有ubuntu22.04(其它亦可参考)
开发板:rock 5a with rk3588s 芯片
宿主机安装Docker
Docker具有隔离开发环境的作用,为了方便开发环境的切换,避免环境配置时破坏主机稳定的环境,我们选择使用docker来进行开发工作,这样避免了同时开发两个或者多个项目时环境的混乱。
关于Docker的具体原理及用法本文不做具体介绍,可以想象成windows上安装的VMware等虚拟机软件,上面运行对应系统的镜像。只不过操作更加便捷,更轻量化,更加适合命令行操作。具体可以参考:Docker.
需要注意的是关于容器的概念,即系统运行的基本单位。
安装Docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
状态查看
使用以下命令来查看Docker的状态,如果执行结果如下,则证明Docker服务正常运行:
dengml@dengml-SER:/data/ubuntu/rockpi$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-07-27 21:26:09 CST; 1 week 6 days ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 43420 (dockerd)
Tasks: 23
Memory: 93.6M
CPU: 3min 27.381s
CGroup: /system.slice/docker.service
└─43420 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
开机自启设置
如果未成功运行,可以执行以下命令打开,和设置开机自动运行
sudo systemctl start docker
或
sudo systemctl restart docker #打开docker
sudo systemctl enable docker #设置开机自动启动Docker
运行docker子系统
1.拉取系统镜像(此处我们拉取的是ubuntu20.04版本镜像)
sudo docker pull ubuntu:20.04
# 查看本地镜像
$ sudo docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 20.04 14be0685b768 7 weeks ago 72.8MB
hello-world latest 9c7a54a9a43c 3 months ago 13.3kB
2. 以ubuntu20.04镜像启动一个容器,可以想象成创建一个虚拟机:
sudo docker run -it --name rknn -v /data:/data ubuntu:20.04 /bin/bash
其中”–name rknn“表示该容器命名为rknn,”-v /data:/data“的作用是将物理机的/data目录挂载到docker虚拟容器的/data目录上,实现两机器文件系统的共享(正在运行的docker添加共享目录可以参考: docker对已经启动的容器添加目录映射(挂载目录))。”-it“参数表示分配并驻留在容器终端。 ”ubuntu:20.04“为该容器用到的系统镜像,”/bin/bash“为系统用到的shell解释器。
3.docker容器的退出与进入
执行成功后将进入该docker容器的终端。可执行exit命令退出容器,回到物理机系统。
在物理机中执行 sudo docker ps
命令查看正在运行的容器。
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
612c918d5027 ubuntu:20.04 "/bin/bash" 3 weeks ago Up 3 weeks rknn
如果有在未运行状态的容器,可以通过sudo docker ps -a
命令查看。
再次进入该docker容器的时候不需要重新执行docker run 命令,而可以采用 docker exec 命令进入
sudo docker exec -it 612c918d5027 /bin/bash
其中”612c918d5027 “为已存在的容器的id。(如果有在未运行状态的容器,需要先执行”docker start <容器的id>“)
当然可以指定用户及对应的工作目录,因为我们还没创建用户及对应家目录,放在后面介绍。
配置docker
- 安装权限管理工具
apt install sudo
- 添加普通用户并指定其家目录及对应的默认解释器
adduser --home /home/dengml --shell /bin/bash dengml
- 修改用户密码
passwd dengml
- 安装文本编辑工具vim
apt install vim
- 编辑/etc/sudoers文件
chmod 777 /etc/sudoers #添加编辑权限
vim /etc/sudoers #在”root ALL=(ALL:ALL) ALL“下添加”dengml ALL=(ALL:ALL) ALL“
chmod u-w /etc/sudoers // 去除可写权限
- 登陆到dengml用户
su dengml
- 安装自动补全工具
apt-get install -y bash-completion
apt update
source /usr/share/bash-completion/completions/*
- 安装网络工具
apt install iputils-ping
此时我们从物理机进入docker容器的方法可以指定用户名及对应的家目录,如下
dengml@dengml-SER:~$ sudo docker exec -it -u dengml -w /home/dengml 612c918d5027 /bin/bash
[sudo] dengml 的密码:
dengml@612c918d5027:~$
搭建rknn开发环境
配置github
github上拉代码(在docker上进行)
首先我们使用ssh的方式在GitHub获取代码(也可使用http方式,不过更慢?),第一步需要配置ssh-key。
- 配置ssh-key
本机执行以下命令生成并获取ssh key。
dengml@612c918d5027:~$ ssh-keygen -t rsa -C "dengml1996@163.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dengml/.ssh/id_rsa):
Created directory '/home/dengml/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/dengml/.ssh/id_rsa
Your public key has been saved in /home/dengml/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:OW6GGqaLjp+zD+R4hq2tKXnocEJIktnk/tNEXgNdLFg dengml1996@163.com
The key's randomart image is:
+---[RSA 3072]----+
| . .+Eo. |
| * ..o . |
|+.o . o. |
|+. o . o |
|..o o S |
|.* . o o . |
|=oB = o + |
|*Xo= + o |
|X*B=o |
+----[SHA256]-----+
dengml@612c918d5027:~$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAA***************xP0YX0= dengml1996@163.com
- 将以上最终得到的key粘贴到github:
打开并登录”github.com“ 网站,点击右上角自己的头像。点击setting按钮如下
之后点击”SSH and GPG keys” 和 ”New SSH Key“ 按钮。
在弹出的框里填入标题及刚才得到的key,最后点击”Add New Key“按钮
最终添加成功如下
rknn开发环境配置
1.rknn仓库代码获取
配置完成ssh-key后就可以拉代码,通过以下命令获取瑞芯微rknn的开发仓库
dengml@612c918d5027:/data/ubuntu/rockpi$ git clone git@github.com:rockchip-linux/rknn-toolkit2.git
Cloning into 'rknn-toolkit2'...
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 475, done.
remote: Counting objects: 100% (67/67), done.
remote: Compressing objects: 100% (57/57), done.
remote: Total 475 (delta 6), reused 66 (delta 6), pack-reused 408
Receiving objects: 100% (475/475), 630.23 MiB | 4.97 MiB/s, done.
Resolving deltas: 100% (132/132), done.
Updating files: 100% (140/140), done.
dengml@612c918d5027:/data/ubuntu/rockpi$ ls
rknn-toolkit2
2. docker容器安装基本的开发所需要的包
sudo apt install virtualenv
sudo apt-get install python3 python3-dev python3-pip
sudo apt-get install libxslt1-dev zlib1g zlib1g-de
sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0
sudo apt-get install libsm6 libgl1-mesa-glx libprotobuf-dev gcc
其中virtualenv是用来隔绝python环境,使一个系统内可以安装多个python环境,切换时候也仅仅需要执行 source <对应python环境名称>/bin/activate
命令即可,非常方便,可以仅作了解,边用边学。
3.安装所需的python环境
因为官方文档在ubuntu20.04系统上推荐使用python3.8的开发环境,为提高开发效率,避免重复造轮子,我们安装python3.8的开发环境。
创建python3的环境名字为”venv“的python环境
dengml@612c918d5027:/data/ubuntu/rockpi/rknn-toolkit2$ virtualenv -p /usr/bin/python3 venv
created virtual environment CPython3.8.10.final.0-64 in 68ms
creator CPython3Posix(dest=/data/ubuntu/rockpi/rknn-toolkit2/dengml, clear=False, global=False)
seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, pkg_resources=latest, via=copy, app_data_dir=/home/dengml/.local/share/virtualenv/seed-app-data/v1.0.1.debian.1)
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
创建完成后会在目录下形成一个名字为”venv“的目录
切换到刚创建的python环境
dengml@612c918d5027:/data/ubuntu/rockpi/rknn-toolkit2$ source venv/bin/activate
(venv) dengml@612c918d5027:/data/ubuntu/rockpi/rknn-toolkit2$
此时前面会有(venv)的前缀,表示当前所处的python环境。
根据官方介绍,安装python3.8 所需要的依赖。
(venv) dengml@612c918d5027:/data/ubuntu/rockpi/rknn-toolkit2$ pip3 install -r doc/requirements_cp38-1.5.0.txt
安装过程可能会有报错,如下:
ERROR: tensorflow 2.6.2 has requirement six~=1.15.0, but you'll have six 1.16.0 which is incompatible.
ERROR: tensorflow 2.6.2 has requirement typing-extensions~=3.7.4, but you'll have typing-extensions 4.7.1 which is incompatible.
大概原因是因为版本部匹配,当前环境里面的版本过高,不满足官方文档中对于该软件包版本的要求。解决方法可以先卸载掉对应的pip包,并安装满足版本要求的对应的包如下
pip3 uninstall typing-extensions
pip3 install -v typing-extensions==3.7.4
如果遇到pip因网络连接安装失败或者比较慢的情况,大概因为pip源不在国内,在pip安装后面添加 -i 参数即可即:
pip3 install -v typing-extensions==3.7.4 -i https://pypi.tuna.tsinghua.edu.cn/simple
最终安装好rockchip提供的对应python3.8的瑞芯微的rknn官方开发包
pip3 install ../../../packages/rknn_toolkit2-1.5.0+1fa95b5c-cp38-cp38-linux_x86_64.whl
环境测试
(venv) dengml@612c918d5027:/data/ubuntu/rockpi/rknn-toolkit2/examples/onnx/yolov5$ ls
bus.jpg dataset.txt test.py yolov5s.onnx
(venv) dengml@612c918d5027:/data/ubuntu/rockpi/rknn-toolkit2$ cd examples/onnx/yolov5/
(venv) dengml@612c918d5027:/data/ubuntu/rockpi/rknn-toolkit2/examples/onnx/yolov5$ python3 test.py
......
......
......
(venv) dengml@612c918d5027:/data/ubuntu/rockpi/rknn-toolkit2/examples/onnx/yolov5$ ls
bus.jpg check3_fuse_ops.onnx onnx_yolov5_0.npy onnx_yolov5_2.npy test.py yolov5s.rknn
check0_base_optimize.onnx dataset.txt onnx_yolov5_1.npy result.jpg yolov5s.onnx
打开最终生成的result.jpg
接下来,将模型移植到开发板上运行。
- 分享
- 举报
-
浏览量:1022次2024-02-18 16:38:33
-
浏览量:2365次2023-11-01 20:42:22
-
浏览量:2657次2024-02-26 14:13:38
-
浏览量:1482次2024-02-05 10:41:25
-
浏览量:1747次2024-01-22 17:46:51
-
2022-05-17 09:00:32
-
浏览量:1441次2023-11-14 13:55:50
-
浏览量:972次2023-11-30 11:48:53
-
浏览量:3956次2021-04-02 09:47:41
-
浏览量:553次2023-11-17 18:14:30
-
浏览量:905次2023-12-22 14:13:56
-
浏览量:1281次2024-03-19 11:42:03
-
浏览量:3948次2022-05-11 09:11:45
-
浏览量:3010次2023-12-28 17:46:27
-
浏览量:1629次2024-02-04 17:13:47
-
浏览量:2396次2023-12-21 11:18:25
-
浏览量:1782次2024-01-02 22:42:19
-
浏览量:1224次2024-02-26 13:58:45
-
浏览量:11021次2020-11-23 10:25:22
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
Winki
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明