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

📍关注与反馈

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

科技查新是什么?一文了解!

本文主要解答 1、什么是科技查新? 2、科技查新有哪些作用? 3、科技查新一般应用于什么地方? 4、在哪能出具正规查新报告? 5、科技查新流程是怎样的? 带着这些问题阅读这篇文章相信一定会有收获!干活内…

大模型备案VS算法备案:差异、要求与合规快照

​下图为最新的直至第五批深度合成服务算法备案信息的公告 根据目前公开的国内大模型算法备案统计来看,首批境内深度合成服务算法备案清单,总共通过了五批。 以第二批举例,境内深度合成服务算法备案清单,总共通过110家&#xff0…

Nginx企业级负载均衡:技术详解系列(13)—— 四层访问控制

你好,我是赵兴晨,97年文科程序员。 今天,咱们聊聊Nginx的一个核心功能——四层访问控制。 废话不多说,让我们直接进入正题,一探究竟! 四层访问控制 Nginx的四层访问控制指的是在传输层(TCP层…

【C++】vector常见的使用方式

前言:在上一篇中我们讲到了string类的模拟实现,今天我们将进一步的去学习vector的一些常用的使用方法。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:高质量C学习 👈 💯代码仓…

简单的利用有限脉冲响应(FIR)滤波器对心电信号进行降噪(Python)

代码很简单。 import numpy as np import matplotlib.pyplot as plt#------------------------Bandstop Filter Function------------------------ def bandstop(M,low,high,Fs):#50Hz removalk1 int( (low/Fs)*M) # index 22k2 int( (high/Fs)*M) # index 27#DC removalk0 …

【头歌】计算机网络DHCP服务器配置第四关配置路由器子接口答案

头歌计算机网络DHCP服务器配置第四关配置路由器子接口操作步骤 任务描述 本关任务:配置路由器的子接口。 操作要求 在第一关的拓扑图的基础上,配置路由器及 PC 机,具体要求如下: 1、打开路由器物理接口 F0/0 ; 2、配置…

安全攻防三

一、IDS: 当黑客绕过了防火墙,你该如何发现? IDS (Intrusion Detection System,入侵检测系统) NIDS 内网中检测网络流量攻击 黑客如果已经进去内网,防火墙就没办法保护了 NIDS部署在交换机和路由器这些路…

基于Vue的自定义服务说明弹窗组件的设计与实现

基于Vue的自定义服务说明弹窗组件的设计与实现 摘要 随着技术的不断发展,前端开发面临着越来越高的复杂性和不断变化的需求。传统开发方式往往将整个系统构建为整块应用,这导致对系统的任何微小改动都可能触发整体的逻辑变更,从而增加了开发…

软件测试/测试开发丨学习笔记之Allure2测试报告

Allure2测试报告 1、使用 Allure2 运行方式-Python 1)–alluredir 参数生成测试报告。 在测试执行期间收集结果 pytest [测试用例/模块/包] --alluredir./result/ (—alluredir这个选项 用于指定存储测试结果的路径)#生成在线的测试报告 allure serve ./result2…

第一个Flutter3项目

配置flutter国内源 首先,配置flutter的国内源: env:PUB_HOSTED_URL"https://pub.flutter-io.cn"; env:FLUTTER_STORAGE_BASE_URL"https://storage.flutter-io.cn"配置gradle国内源 修改gradle\wrapper\gradle-wrapper.properties…

埃隆·马斯克的 xAI 募集 60 亿美元,瞄准 AI 超级计算机|TodayAI

埃隆马斯克(Elon Musk)创立的人工智能公司 xAI 宣布成功募集了 60 亿美元的资金,用于推动其“首批产品推向市场,建立先进的基础设施,并加速未来技术的研发”。马斯克透露,xAI 目前的估值已达到 180 亿美元&…

kafka-消费者组-点对点测试

文章目录 1、点对点测试1.1、获取 kafka-consumer-groups.sh 的帮助信息1.2、列出所有的消费者组1.3、创建消费者1并指定组 my_group11.4、创建消费者2并指定组 my_group11.5、创建消费者3并指定组 my_group11.6、创建生产者发送消息到 my_topic1 主题 1、点对点测试 1.1、获取…

记.netcore部署到银河麒麟linux服务器过程详解

一.服务器配置 操作系统:银河麒麟桌面操作系统V10 CPU:intel i5 内存:16G 内核:5.10.0.8-generic 未激活 二.运行环境安装 .netcore 6.0 runtime时安装下载离线包 Download .NET 6.0 (Linux, macOS, and Windows) -下载完后进行解压 sudo su #提权 mkdir -p $HOME/…

LeetCode1161最大内层元素和

题目描述 给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。 解析 在上一题&…

如何在线转换图片的格式?一键修改图片格式的方法

图片是日常生活和工作中的一种常用的内容展示类型,在使用图片的时候不同用途需要使用的图片格式也是不同的,比如我们手中有一张jpg格式图片,但是平台上传要求格式是png,那么怎样才能将jpg转png格式呢?下面将教大家图片…

乡村振兴的实践与探索:以生态优先、绿色发展为导向,推动农村人居环境整治,建设美丽宜居乡村

一、引言 随着我国经济社会的快速发展,乡村振兴成为了新时代的重要战略。在这一背景下,以生态优先、绿色发展为导向的乡村振兴模式成为了重要的实践方向。本文旨在探讨如何通过生态优先、绿色发展的理念,推动农村人居环境整治,建…

洁净环境测试标准、监测计划要点及风险评估注意事项

洁净区日常环境监测 洁净区环境监测作为污染控制策略(CCS)的重要组成部分,用于监测旨在将粒子和微生物污染风险降至最低的控制措施。下面内容,中邦兴业小编将与大家做个详细的分享。 环境监测计划 评估和定义粒子、微生物监测所…

智慧城市运维可视化:透视未来城市高效管理的新视窗

行业痛点 现代城市运维是一个复杂而庞大的系统,涉及到诸多方面,包括交通、环境、能源等等。然而,在城市运维中,存在着一些现实的痛点,给城市管理者带来了不小的压力和困扰: 1、交通拥堵 随着城市化进程的…

一文搞定jdk8升级到jdk11

一、背景 为什么要升级JDK11 性能 JDK11的G1的GC性能高很多,对比JDK8无论是性能还是内存占比都有很大的提升,业内各项数据指标也都表明JDK11的G1在应对突发流量的下的效果惊人; 版本兼容 Spring Boot 2.7.x及以后的版本将不再支持Java 8作为…

【分支控制(if-else判断)】单分支-双分支-多分支-嵌套分支

程序流程控制 在程序中, 程序运行的流程控制决定程序是如何执行的, 是我们必须掌握的, 主要有三大流程控制语句. 顺序控制 (简单)分支控制 (判断)循环控制 (循环) 一. 顺序控制 顺序控制介绍 程序从上到下逐行地执行, 中间没有任何判断和跳转. 顺序控制举例和注意事项 Java中…