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

news2024/11/17 4:40:10

昇腾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.coloradmin.cn/o/1706959.html

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

相关文章

瓦罗兰特账号怎么注册 瓦罗兰特延迟高用什么加速器

《瓦罗兰特》(Valorant)是由拳头游戏(Riot Games)开发并发行的一款免费的多人在线第一人称射击游戏(FPS),它结合了传统的硬核射击机制与英雄角色的能力系统,为玩家提供了独特的竞技体…

【机器学习300问】103、简单的经典卷积神经网络结构设计成什么样?以LeNet-5为例说明。

一个简单的经典CNN网络结构由:输入层、卷积层、池化层、全连接层和输出层,这五种神经网络层结构组成。它最最经典的实例是LeNet-5,它最早被设计用于手写数字识别任务,包含两个卷积层、两个池化层、几个全连接层,以及最…

thingsboard接入臻识道闸

thingsboard 和tb-gateway 是通过源码idea启动测试开发 为了测试这里只是买了臻识道闸的摄像机模组方便调试,然后添加一个开关量开关模拟雷达 道闸品牌 臻识C3R3C5R5变焦500万车牌识别相机高速追逃费相机华厦V86像机 淘宝地址 https://item.taobao.com/item.htm?_us1thkikq4…

渗透攻击(思考题)

目录 1. windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文 2. 我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分…

什么是GPT-4o,推荐GPT-4o的获取使用方法,使用GPT4o模型的最新方法教程(2024年5月16更新)

2024年5月最新GPT-4o模型使用教程和简介 2024年5月最新GPT-4o模型使用教程和简介 2024 年 5 月 13 日,openai 发布了最新的模型 GPT4o。 很多同学还不知道如何访问GPT-4、GPT-4 Turbo和GPT-4o等模型,这篇文章介绍如何在ChatGPT中访问GPT-4o&#xff0…

大模型时代下,数字员工演进全景图:RPA/IPA/Agent

从蒸汽机到电力,再到计算机,每一次技术的飞跃都极大地提升了企业效率。 如今,随着数字化转型的浪潮席卷全球,企业开始寻求新的解决方案来优化业务流程、打破数据屏障,达到提效降本的目的。在这一背景下,数字…

Python考试复习--day4

1.三角函数计算 import math aeval(input()) beval(input()) x(-bpow(2*a*math.sin(math.pi/3)*math.cos(math.pi/3),0.5))/(2*a) print(x) math库 2.分段函数B import math xeval(input()) if -6<x<0:yabs(x)5 elif 0<x<3:ymath.factorial(x) elif 3<x<6:y…

智慧园区:打造未来城市的新模式

随着城市化进程的加速和科技创新的推动&#xff0c;城市面临着诸多挑战和机遇。如何提升城市的竞争力和可持续性&#xff0c;是一个亟待解决的问题。在这个背景下&#xff0c;智慧园区作为一种新型的城市发展模式&#xff0c;引起了越来越多的关注和探索。 什么是智慧园区&…

黑马聚合的分类及实现

1、什么是聚合? 聚合是对文档数据的统计、分析、计算 聚合的常见种类有哪些? 桶(Bucket)聚合:用来对文档做分组 TermAggregation:按照文档字段值分组 Date Histogram:按照日期阶梯分组&#xff0c;例如一周为一组&#xff0c;或者一月为一组 度量(…

Docker 入门版

目录 1. 关于Docker 2. Dockr run命令中常见参数解读 3. Docker常见命令 4. Docker 数据卷 5. Docker本地目录挂载 6. 自定义镜像 Dockerfile 语法 自定义镜像模板 Demo 7. Docker网络 1. 关于Docker 在docker里面下载东西&#xff0c;就是相当于绿色面安装板&#x…

弘君资本:沪指跌0.46%,电力板块逆市爆发,半导体板块强势

28日&#xff0c;沪指早盘窄幅震动&#xff0c;午后回落走低&#xff1b;深证成指、创业板指大幅下探&#xff1b;两市成交额小幅萎缩。 截至收盘&#xff0c;沪指跌0.46%报3109.57点&#xff0c;深证成指跌1.23%报9391.05点&#xff0c;创业板指跌1.35%报1806.25点&#xff0c…

手搓顺序表(C语言)

目录 SeqList.h SeqList.c 头插尾插复用任意位置插入 头删尾删复用任意位置删除 SLtest.c 测试示例 顺序表优劣分析 SeqList.h //SeqList.h#pragma once#include <stdio.h> #include <assert.h> #include <stdlib.h> #define IN_CY 3typedef int S…

CyberDAO全国行第三站·西安圆满落幕

CyberDAO全国行第三站于2024年5月27日在西安顺利召开。以聚势启新&#xff0c;聚焦Web3新机遇&#xff0c;开启Web3财富密码为本次会议的思想路线&#xff0c;汇聚了大批Web3爱好者齐聚古城西安。CyberDAO致力于帮助更多Web3爱好者捕获行业价值。 以圆桌论坛《机遇拥抱Web3》拉…

matplotlib ---词云图

词云图是一种直观的方式来展示文本数据&#xff0c;可以体现出一个文本中词频的使用情况&#xff0c;有利于文本分析&#xff0c;通过词频可以抓住一篇文章的重点 本文通过处理一篇关于分析影响洋流流向的文章&#xff0c;分析影响洋流流向的主要因素都有哪些 文本在文末结尾 …

升级鸿蒙4.2新变化,新增 WLAN 网络自动连接开关!

手机已经成为现代人生活中不可或缺的一部分&#xff0c;手机里的功能可以满足大部分人的生活场景&#xff0c;但是最依赖的应该就是手机网络&#xff0c;手机网络突然变差怎么办——消息发不出去&#xff1f;刷新闻速度变慢&#xff1f;仔细检查后&#xff0c;发现其实不是手机…

Linux-CentOS7-解决vim修改不了主机名称(无法打开并写入文件)

Linux-CentOS7-修改主机名称 修改之后使用强制保存退出也不行。 解决办法&#xff1a; 使用hostnamectl命令进行修改 查看系统主机名和信息&#xff1a; hostnamectl这条命令会显示当前系统的主机名、操作系统信息、内核版本、架构信息等相关信息。 修改系统主机名&#xff1…

HQChart使用教程99-K线窗口设置上下间距

HQChart使用教程99-K线窗口设置上下预留间距 指标窗口布局说明设置预留间距数据结构通过Setoption设置通过ChangeIndex设置 HQChart代码地址 指标窗口布局说明 顶部预留间距(3)和底部预留间距(5) 这个部分是算在Y轴坐标上的 设置预留间距 数据结构 HorizontalReserved&#…

Hono 框架使用经验谈

Hono&#x1f525;是一个小型、快速并开源的 Serverless Web 框架&#xff0c;用 TypeScript 写就。它适用于任何JavaScript运行时&#xff1a;Cloudflare Workers&#xff0c;Fastly ComputeEdge&#xff0c;Deno&#xff0c;Bun&#xff0c;Vercel&#xff0c;Netlify&#x…

Linux:线程

文章目录 前言1. 线程概念1.1 什么是线程1.2 线程比进程更加轻量化1.3 虚拟地址到物理地址的转化物理内存的管理页表 1.4 线程的优点1.5 线程的缺点1.6 线程异常1.7 线程用途 2. 进程 vs 线程3. 线程控制3.1 线程创建3.2 线程退出3.3 线程等待3.4 分离线程3.5 线程取消 4. 线程…

开源大模型与闭源大模型:谁将引领AI的未来?

前言 在AI领域&#xff0c;开源大模型和闭源大模型一直并存&#xff0c;各自有其独特的优势和挑战。下面&#xff0c;我们将从数据隐私、商业应用和社区参与三个方向&#xff0c;对这两种模型进行深入探讨。 一、数据隐私 开源大模型&#xff1a; 1. 透明度高&#xff1a; …