昇腾AI 技术路线
8TOPS INT8(FP16)AI算力
LPDDR4X 8GB/16GB
📅 20240525
开放了原理图和源码,功能接口就不描述了手册都有描述,新手好好学习可以从底层覆盖到应用一个载板拿下
-
完成香橙派AIpro上手体验
-
镜像安装:到手32G存储空间已经用完,显示器一个不够用,采用设备的debug串口登录到设备系统内部,使用华为制卡工具备份镜像,制作的镜像烧录到64G内存卡以后设备还是32G,只能设置TF开机自动挂载了,具体更改方法下方内容描述。很贴心的有贴片wifi命令行连接wifi后ssh远程访问。
-
ros2的安装使用以及conda的安装使用
-
实例程序的运行,用的都是npu应该可以跑3588的实例。
镜像安装
Windows版制卡工具下载地址:
https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Atlas%20200I%20DK%20A2/DevKit/tools/latest/Ascend-devkit-imager_latest_win-x86_64.exe
准备一张MicroSD卡,个人建议容量至少在64GB以上,载板自带的32不够
使用华为的一键制卡工具主界面:
备份完成,开始烧录到64G内部
烧录完成以后使用串口登录系统:
开机发现空间已经用完使用默认的sudo blkid /dev/mmcblk1p4生成uuid值进行挂着只能进入到root模式,后采用如下方式进行挂载可以进入到HwHiAiUser用户。
lsblk -o +UUID
sudo vgcreate vg01 /dev/mmcblk1p4
sudo lvcreate -l 100%FREE -n lv01 vg01
sudo mkfs.xfs /dev/vg01/lv01
lsblk -o +UUID
sudo vi /etc/fstab
tmpfs /var/log tmpfs rw,mode=0755,size=128M 0 0
UUID=0377-7A9F /exchange vfat defaults 0 0
UUID=e36c190d-446b-4ce7-83e4-087a7978f0de /data xfs defaults,_netdev,nofail 0 2
"/etc/fstab" 4L, 191B written
(base) root@orangepiaipro:~# sudo mount -a
mount: /data: mount point does not exist.
(base) root@orangepiaipro:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 29G 0 100% /
tmpfs 3.7G 4.0K 3.7G 1% /dev/shm
tmpfs 1.5G 14M 1.5G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
tmpfs 128M 224K 128M 1% /var/log
/dev/mmcblk1p3 50M 8.0K 50M 1% /exchange
(base) root@orangepiaipro:~# cd /
(base) root@orangepiaipro:/# ls
SoftwareLicenseAgreement.txt home proc srv
bin lib restoresymtable swapfile
boot lib64 root sys
dev lost+found run tmp
etc media sbin usr
exchange mnt service_config.sh var
fw opt snap
(base) root@orangepiaipro:/# sudo mkdir data
(base) root@orangepiaipro:/# cd
(base) root@orangepiaipro:~# sudo mount -a
(base) root@orangepiaipro:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 29G 0 100% /
tmpfs 3.7G 4.0K 3.7G 1% /dev/shm
tmpfs 1.5G 14M 1.5G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
tmpfs 128M 224K 128M 1% /var/log
/dev/mmcblk1p3 50M 8.0K 50M 1% /exchange
/dev/mapper/vg01-lv01 30G 245M 30G 1% /data
到这里我们的64g内存卡就一分为二使用了,/data部分开始存放数据
想起来自己干的蠢事,添加交换空间导致的。
顺便附上设置 Swap 内存的方法 虽然开发板有 8GB 或 16GB 的大内存,但有些应用需要的内存大于 8GB 或 16GB,此时我们可以通过 Swap 内存来扩展系统能使用的最大内存容量。方法如 下所示和用户手册一样为了方便记录一下也:
1) 首先创建一个 swap 文件,下面的命令会创建一个 16GB 大小的 swap 文件, 容量大小请根据自己的需求进行修改。 (base) HwHiAiUser@orangepiaipro:~$ sudo fallocate -l 16G /swapfile
(base) HwHiAiUser@orangepiaipro:~$ sudo chmod 600 /swapfile
3) 然后把这个文件设置成 swap 空间。 (base) HwHiAiUser@orangepiaipro:~$ sudo mkswap /swapfile
4) 然后启用 swap。 (base) HwHiAiUser@orangepiaipro:~$ sudo swapon /swapfile
5) 完成以上步骤后,可以通过下面的命令可以检查 swap 内存是否已经添加成 功。
(base) HwHiAiUser@orangepiaipro:~$ free -h total used free shared buff/cache available Mem: 7.4Gi 1.1Gi 5.5Gi 27Mi 835Mi 6.1Gi Swap: 15Gi 0B 15Gi
6) 如果需要 swap 设置在重启之后依然有效,请运行下面命令将对应的配置添 加到/etc/fstab 文件中
(base) HwHiAiUser@orangepiaipro:~$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
下图根据实际情况设置:
ROS2安装
wget http://fishros.com/install -O fishros && . fishros
conda deactivate
roscore
sudo apt install python3-roslaunch
roscore
wget http://fishros.com/install -O fishros && . fishros
sudo aptitude install ros-iron-desktop
sudo apt-get install ros-iron-pcl-conversions
sudo apt-get install libicu-dev
sudo apt-get install libicu70=70.1-2
conda deactivate
sudo apt-get install ros-iron-pcl-conversions
history
wget http://fishros.com/install -O fishros && . fishros
sudo nmcli dev wifi connect 热点名称 password 密码
roscore
source /opt/ros/melodic/setup.bash
source /opt/ros/iron/setup.bash
roscore
ros2 run turtlesim turtlesim_node
Conda的安装以及onnx转rknn模型测试
其实就是为了验证一下自带的conda删除以后有什么问题
chmod 777 Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
conda config --show-sources
conda config --set show_channel_urls yes
conda config --show-sources
sudo vi /home/ljx/.condarc
conda upgrade conda
conda create -n yolopi5 python==3.10.12
git clone -b v6.0 https://github.com/ultralytics/yolov5
然后,在yolov5目录下,打开终端输入命令
export https_proxy=http://192.168.31.101:7890根据实际网络设置
export http_proxy=http://192.168.31.101:7890
curl -i google.com
python3 export.py --weights yolov5m.pt --data data/coco128.yaml --include onnx --opset 12 --batch-size 1
进入/rknn-toolkit2/rknn-toolkit2/packages目录,使用 pip 安装依赖:
pip install -r requirements_cp310-1.6.0.txt
pip install rknn_toolkit2-1.6.0+81f21f4d-cp310-cp310-linux_x86_64.whl
把onnx模型拷贝到/home/ljx/rknn-toolkit2/rknn-toolkit2/examples/onnx/yolov5
vi test.py
更改模型名称和设备结构部分
转换失败如下:
最高版本只到2.30,由于使用的系统为ubuntu20.04,已经升级到了系统版本的最高版本了。
解决方案
添加一个高级版本系统的源,直接升级libc6. Ubuntu 20.04 - added this repo as described in the link
查看结果如下:
重新转换试试:
行不通,使用cond install g++12
转换成功
看起来怪怪的
部署rknn模型推理检测:
-
下载
rknn-toolkit-lite2
到香橙派 AIpro,也就是下载rknn-toolkit2
,不再赘述。 -
安装
rknn-toolkit-lite2
-
进入
rknn-toolkit2/rknn-toolkit-lite2
目录:
-
等待安装完毕
测试是否安装成功:
python
from rknnlite.api import RKNNLite
不报错则成功
在example文件夹下新建一个test文件夹
在其中放入你转换成功的best.rknn模型以及文章开头github仓库下的detect.py文件
detect.py文件中需要修改的地方:
定义
RKNN_MODEL = 'yolov5m.rknn' #你的模型名称
IMG_PATH = './1.jpg' #测试图片名
CLASSES = ("cap") #标签名
if name == '__main__'::
capture = cv2.VideoCapture(0)
报错如下内容:全是坑哈哈新手
fatal: repositorpython detect.py
--> Load RKNN model
done
E Catch exception when init runtime!
E Traceback (most recent call last):
File "/home/HwHiAiUser/miniconda3/envs/yolov5test/lib/python3.10/site-packages/rknnlite/api/rknn_lite.py", line 139, in init_runtime
self.rknn_runtime = RKNNRuntime(root_dir=self.root_dir, target=target, device_id=device_id,
File "rknnlite/api/rknn_runtime.py", line 349, in rknnlite.api.rknn_runtime.RKNNRuntime.__init__
File "rknnlite/api/rknn_runtime.py", line 461, in rknnlite.api.rknn_runtime.RKNNRuntime._get_target_soc
Exception: Please specify the target in init_runtime!
Init runtime environment failed!
https://github.com/rockchip-linux/rknn-toolkit2/issues/244借鉴加sudo以后正常。
设备总体来说上手程度不算复杂,没找到如何在边缘端侧模型转换的方法,如果后续能和Nvidia的Jetson系列一样实现端侧模型转换那这个设备的受欢迎程度会更强。小模型的推理完全够用。希望国产越来越好,树莓派的产品我其实很早就用过了,下图还是只有cpu的版本,产品质量绝对过关。
📍关注与反馈