香橙派 AIpro的NPU随手记体验日记

昇腾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的版本,产品质量绝对过关。

📍关注与反馈

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++学习---string模拟实现(2)

1.随机插入一个字符串 (1)insert函数插入一个字符的方法我们在之前的模拟实现里面已经搞过了,那个里面要注意的是这个全体向后挪动的循环过程,这个里面我们要实现的是插入字符串的模拟实现; (2&#xff0…

网上3d全景虚拟交互展馆沉浸式体验让客户和使用者都满意

在数字化浪潮席卷而来的今天,3D场景网站已成为众多行业展现创意与实力的新舞台。然而,传统的3D建模软件往往因其复杂性和高门槛,让许多渴望创建逼真3D场景的用户望而却步。 幸运的是,华锐视点推出了搭建3D场景网站的编辑器——一款…

怎么做图片海报二维码?扫码查看图片内容

现在很多的宣传推广海报会放入二维码中,然后将二维码分享给用户后,通过扫码的方式来查看图片内容,从而获取自己需要的信息,经常在活动宣传、商品推广、旅游攻略等场景下使用。二维码可以提供更加便捷的内容获取方式,让…

[图解]企业应用架构模式2024新译本讲解02-表数据入口

1 00:00:00,420 --> 00:00:04,330 这个案例,我们就是用书上的案例了 2 00:00:06,080 --> 00:00:08,860 收入确认的一个案例 3 00:00:09,510 --> 00:00:11,100 书上讲了,收入确认 4 00:00:13,330 --> 00:00:15,270 就是说,你给…

一文搞透常见的Python编码陷阱(下)(分析+案例)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 一、当心多目标赋值中的可变变量 示例 扩展讲解 示例 增广赋值中的可变变量 示例 扩展讲解 示例 总…

Python魔法之旅-魔法方法(01)

目录 一、概述 1、定义 2、作用 二、主要应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类…

window安装ffmpeg播放本地摄像头视频

1、安装ffmpeg ffmpeg官方网站:FFmpeg 下载后解压文件夹名为ffmpeg 2、设置环境变量 目录 1、安装ffmpeg 设置环境变量 以F:\software\after\ffmpeg\bin为例 在命令行中输入ffmpeg出现下方代表安装成功 3、通过ffmpeg播放本地电脑摄像头 鼠标右击开始按钮&…

计算机设计大赛

目录 1.1需求分析 2.1概要设计 3.1软件界面设计: 4.1代码开源 1.1需求分析 1.1 产品开发本说明: 在如今每人都会扔出许多垃圾,在一些地方大部分垃圾能得到卫生填埋、焚烧等无害化处理,而更多的垃圾则是简单的掩埋&#xff…

范罗士、希喂、安德迈爆款宠物空气净化器哪款好?深度对比测评

作为一名深受养猫过敏困扰的铲屎官,我经常提醒新手铲屎官重视家里的空气环境。宠物的浮毛和皮屑不仅会引发过敏,还可能传播细菌和病毒。很多人以为普通空气净化器能解决问题,但这些产品并未针对宠物家庭的特殊需求。经过多次研究和测试&#…

一些Spring的理解

说说你对Spring的理解 首先Spring是一个生态:可以构建企业级应用程序所需的一切基础设施 但是,通常Spring指的就是Spring Framework,它有两大核心: IOC和DI 它的核心就是一个对象管理工厂容器,Spring工厂用于生产Bea…

定积分的应用

目录 前提知识 考题类型:平面图形面积、旋转体体积、旋转体侧面积、平面曲线弧长 两种坐标:极坐标和直角坐标系 求解思路: 注意: 1:平面图形的面积: 常见模型: 面积元素的两种表达:积分区…

Postman入门 - 环境变量和全局变量

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、发送请求 二、设置并引用环境变量 比如:我建的这个生产环境 使用环境有两个方式&…

弘君资本炒股技巧:股票定向增发是什么意思?是好是坏?

股票定向增发是指已上市的公司向指定的组织或者个人投资者额外发行股份募集资金的融资方法,发行价格为发行前某一阶段的平均价的必定比例,增发的价格不得低于前二十个买卖日股票均价的80%。 例如,个股定增前二十个买卖股票平均价为…

平方回文数-第13届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第73讲。 平方回文数&#…

电脑记事软件哪款安全?好用且安全的桌面记事工具

在快节奏的现代生活中,我们每天都要用电脑处理大量的工作。电脑不仅提升了工作效率,还成为了我们记录重要事项和灵感的得力助手。比如,在策划项目时,我会直接在电脑上列出要点和步骤;在开会时,我也会用电脑…

Python代码:二十一、增加派对名单(二)

1、题目 描述 为庆祝驼瑞驰在牛爱网找到合适的对象,驼瑞驰通过输入的多个连续字符串创建了一个列表作为派对邀请名单,在检查的时候发现少了他最好的朋友“Allen”的名字,因为是最好的朋友,他想让这个名字出现在邀请列表的最前面…

python打造自定义汽车模块:从设计到组装的全过程

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、定义汽车模块与核心类 三、模拟汽车组装过程 四、抽象与封装 五、完整汽车…

物联网应用系统与网关

一. 传感器底板相关设计 1. 传感器设计 立创EDA传感器设计举例。 2. 传感器实物图 3. 传感器测试举例 测试激光测距传感器 二. 网关相关设计 1. LORA,NBIOT等设计 2. LORA,NBIOT等实物图 3. ZigBee测试 ZigBee测试 4. NBIoT测试 NBIoT自制模块的测试…

vue3-api之provide与inject

传值&#xff1a; 父组件 > 子组件 > 孙组件 // 父组件 <template><div class"app"><h3>我是app组件(祖) --- {{ name }} {{ price }}</h3><child /></div> </template><script> import { reactive, toRefs,…

【LaTex】11 ACM参考文献顺序引用 - 解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题

【LaTex】11 ACM参考文献顺序引用 写在最前面解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题问题描述问题原因如何解决问题解决方案1&#xff08;更简单&#xff09;解决方案2&#xff08;更自由&#xff09; 小结 &#x1f308;你好呀&#xff01;我是 是Yu欸 …