面向 AI 而生的香橙派 AIpro 开发板开箱实测

前几天搞到一块很牛掰的开发板,是香橙派联合华为精心打造的高性能 AI 开发板 – OrangePi AIpro 开发板。

在这里插入图片描述

其搭载了昇腾 AI 处理器,可提供 8TOPS INT8 的计算能力,作为单板硬件设备来说,算力杠杠的了,至于跑 AI 模型性能如何?事不宜迟,现在让我们一起来开箱实测体验一番,开始吧!

在这里插入图片描述

硬件配置

先来看一下这板子都有哪些硬件配置

在这里插入图片描述
在这里插入图片描述

就这配置完全算得上一台小型电脑了,真棒!我手上拿到的板子是 8G 内存,还自带了一块 32G 的 TF 卡,看来是已经备好了启动镜像,贴心到让用户开机可用了。

不过这配置比较大众,对于笔者从事的机器人领域来说,陀螺仪这种必备的配置却是欠缺了,小遗憾。

看官方手册说,处理器方面是带了专用的 AI 处理器,开发板使用的处理器是昇腾 SOC,总共有 4 个 CPU 核,全部可分别设置为 control CPU,或者设置为 AI CPU,也就是可选择的双模处理器。在默认情况下,control CPU 和 AI CPU 的分配数量为 3:1。如果你的应用模型是没有使用到 AI CPU 算子的话,可以手动配置一下全部 CPU 改为 control 模式,这样就不会让任何 CPU 在闲置状态了。

如果你已经知道怎么进入系统,可以输入下面的查看 CPU 状态的指令看看,没有的话可以先跳过这里:

$ npu-smi info -t usages -i 0 -c 0
Memory Capacity(MB) : 7545
Memory Usage Rate(%) : 20
Hugepages Total(page) : 15
Hugepages Usage Rate(%) : 100
Aicore Usage Rate(%) : 0
Aicpu Usage Rate(%) : 0
Ctrlcpu Usage Rate(%) : 1
Memory Bandwidth Usage Rate(%) : 1

板子还没运行什么应用,Aicpu 利用率是 0,Ctrlcpu 也只是稍微动了一下。

再来看看板子的布局和各种接口的位置:

在这里插入图片描述

进入系统

想要灵活使用板子或者调试板子的大部分功能,进入系统无疑是第一步。由于我的本本是坑爹的 Mac M2 Pro,官方手册只介绍了 Windows 和 Ubuntu 下的调试环境搭建。所以,接下来,我就演示一下我这边是如何通过 mac 系统进入开发板的。

登录开发板有几种常见方式:

  1. 通过鼠标键盘和显示器直接登录系统操作界面
  2. ssh 透过网络登录系统
  3. USB 连接调试串口

其中最基础和可靠的方式就是串口连接系统,无论系统是否支持操作界面,或者系统是否已联网和 IP 可知,等都不影响串口的连接,默认第一次开机我们都可以使用这种方式来进入系统。

这块板子预留了 40 pin 的管脚外接,方便进入系统的串口也在里边可以找到,不过直接使用这个串口管脚真的挺费功夫的。幸好,厂家在板子里集成了 CH343P 的芯片,帮我们把这串口的 tx 和 rx 引到了 Micro USB 接口上。所以,我就直接用了这根 USB 也可以连上系统。

在这里插入图片描述

外部连接线这样就够了。

这里有个很重要的前提就是,这个板子是可以上电顺利启动的,能启动就说明板子顺利加载系统成功,如上图左下角所示的两个绿色 LED 灯都点亮就表明启动成功了。

不过,如果你的板子不幸无法顺利上电开机,就需要自己按照官方手册亲自刷一遍镜像了,而厂家提供的刷机工具还是很顺手的,后边有兴趣可以再折腾一下。

板子上电后的启动方式有好几种可选,都是通过板子背面的两个拨码开关设置:

在这里插入图片描述

设置的指引是:

在这里插入图片描述

我手里的这块板子自带的 TF 卡已经刷过功能完备的镜像了,而且是带操作界面的。板子默认都是设置为 TF 启动的,无须修改,直接上电即可启动系统。如果不行,可检查一下是否 TF 卡槽接触松动。

板子启动成功后,在工作电脑里按照下面图示的操作步骤,来确认串口是否被识别成功:

在这里插入图片描述

系统–>通用–>关于–>系统报告–>硬件–>USB,然后找到这个 USB 设备(也即是上面说的串口),Vendor ID 应该是 0x1a86 就对了。

如果这一步,你的工作电脑识别不了对应的设备,大概率是未安装驱动的原因,到网上搜索一下 CH343P 的 mac 驱动,由于 Mac M2 是 arm64 的架构,所以下载驱动时也要对应版本下载。

驱动安装过程从略。。。

接着就是怎么操作通信了,一般在 Windows 端有各种串口调试助手或者强大的远程连接终端界面可用,这里我要介绍一下 Mac 系统下非常好用的免费多功能远程终端 Termius。

Termius 除了强大的 ssh 集成功能,还可以用于串口连接,简单易用,界面直观。双击打开软件界面:

在这里插入图片描述

点击 SERIAL 选择串口连接,进入配置页面:

在这里插入图片描述

在 Serial Port 一栏选择 /dev/tty.wchusbserial 开头的设备。

在这里插入图片描述

在 Baud rate 一栏选择串口的通信波特率 115200,其它默认即可,最后点击 Connect 连接板子系统。

在这里插入图片描述

进入时,终端会提示输入帐号密码,参照官方手册即可。

从上面的图可看到,其实我这里已经对系统配过网络,所以也能看到板子设备的 IP 地址,也就能通过 ssh 安全连接进入系统。虽然通过串口可以很稳定地连接系统,但是有时需要往板子中传送大文件时,切换到 ssh 连接方式,传送文件会更快。

板子配网过程和一般 linux 系统配网一样。

性能测试

为了实测一下这板子运行 AI 算法的性能,下面就在板子里边安装部署一个 AI 算法模型用于图像处理。基于目前非常流行的 YOLO 图像算法模型,它的部署和应用都比较简便快速,所以选择了它。

YOLO 设计目标是提供一个快速、准确且易于使用的 AI 图像处理算法。YOLOv8 基于深度学习和计算机视觉领域的尖端技术,在速度和准确性方面具有无与伦比的性能,从边缘设备到云 API 等不同平台,它都能胜任目标检测和跟踪、实例分割、图像分类和姿态估计等任务。

虽然 YOLO 已经推出了 v8 版本,但是为了安装部署更快捷一些我这里选择 v5 版本,你要是想折腾也可以自行选择。

YOLO 的 github 仓库地址:

https://github.com/ultralytics/yolov5

这个工程要求 Python 版本 >= 3.8.0,所以开始之前,我们检查一下板子系统自带的 python 版本是多少

$ python --version
Python 3.9.9

目前板子的自带工具足够了,无须继续更新。

YOLO 安装过程:

git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt

应用推理

YOLO 提供了两种应用推理的方式,使用 PyTorch Hub 或者 直接执行脚本 detect.py。

启动配置当然越简单越好,毕竟时间是宝贵的。调用脚本就比较简单直接,选它,调用 detect.py 的命令格式是:

python detect.py --weights yolov5s.pt --source 0                               # webcamimg.jpg                         # imagevid.mp4                         # videoscreen                          # screenshotpath/                           # directorylist.txt                        # list of imageslist.streams                    # list of streams'path/*.jpg'                    # glob'https://youtu.be/LNwODJXcvt4'  # YouTube'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream

执行这个脚本过程中,会触发下载依赖文件 yolov5s.pt。如果网络受限,可以考虑换个环境再手动下载,然后复制过来放到工程的根目录(与 detect.py 文件同一目录)即可:

curl --output yolov5s.pt https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt

好了,东风已就绪,下面往模型中输入几张测试图片:

准备第一张:

我就比较懒,不想再安装什么工具了,直接使用 scp 指令传送源图片进板子

在这里插入图片描述
开始执行:

在这里插入图片描述

从指令输出可以看到,这张图推理过程速度非常可观,1.9ms pre-process, 646.4ms inference, 27.4ms NMS per image at shape (1, 3, 640, 640)。

在这里插入图片描述

从推理后的处理结果来看,图片中的物体基本识别出来了,但是右边的几颗果子被遗漏了,不知为何识别不了,总体结果还行。

准备第二张,这是一本书的封面,封面中有几个老朋友在上面:

在这里插入图片描述
开始执行:

在这里插入图片描述

从指令输出可以看到,这张图推理过程速度同样可观,6.5ms pre-process, 694.5ms inference, 4.0ms NMS per image at shape (1, 3, 640, 640)。

在这里插入图片描述

从推理后的处理结果来看,图片中的人物和物体都识别出来了,除了右边反光的人物头像,这个对人眼识别来说也有难度,结果很满意。

准备第三张,照片里有两个长得比较抽象的副旺萌神艺术雕像,和一杯新鲜龙眼:

在这里插入图片描述
开始执行:

在这里插入图片描述

从指令输出可以看到,这张图推理过程速度非常快,1.7ms pre-process, 605.5ms inference, 2.8ms NMS per image at shape (1, 3, 640, 640)。

在这里插入图片描述

从推理后的处理结果来看,只识别到杯子,而图片中最吸引人的艺术雕像却被忽略了,结果差强人意,看来算法模型在艺术品这一块还需要调整一下。

虽然 YOLO 模型还支持自定义数据集的训练,但是本次测试的板子并不是为了替代显卡而设计的,故折腾用于训练数据实在有点过分了,无限扩张算力对于嵌入式或者边缘计算领域是没有必要的。

从上面的实际模型推理结果来看,香橙派的 AIpro 开发板作为边缘计算领域是非常优秀的选择,值得开发人员试一试,应用在自己的想法实践中。

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

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

相关文章

django实现用户的注册、登录、注销功能

创建django项目的步骤:Django项目的创建步骤-CSDN博客 一、前置工作 配置数据库,设置数据库引擎为mysql 1、在settings文件中找到DATABASES, 配置以下内容 DATABASES {"default": {ENGINE: django.db.backends.mysql, # 数据库引擎NAME: dja…

params和data的差别,doc下载

params和data的差别 export function downFile(url, parameter, method) {return axios({url: url,params: parameter,method: method ? method : "get",responseType: "blob",}); }// params: parameter,请求的参数,会作为查询字符串附加到…

实习随笔【前端技术实现全局添加水印】

有一些数据比较重要的项目&#xff0c;往往需要对数据进行保护措施&#xff0c;本文介绍常见策略——全局添加水印。 1、创建水印组件 <template><div class"water-mark"><div class"water-mark-content"><span class"phone&qu…

打破平台限制,使智能手机和平板电脑上无缝运行Windows x86/x64架构的软件和游戏的一款安卓应用

大家好&#xff0c;今天给大家分享一款专为Android设备设计的模拟器应用Winlator。其核心功能是能够在基于ARM架构的智能手机和平板电脑上无缝运行Windows x86/x64架构的软件和游戏。 Winlator是一款Android应用程序&#xff0c;它允许用户使用Wine和Box86/Box64在Android设备上…

docker-compose部署redis-exporter

一、安装prometheus 1、安装 version: 3.1services:redis-exporter:image: bitnami/redis-exporter:latestcontainer_name: redis-exporterports:- 9121:9121environment:TZ: Asia/Shanghaicommand:- --redis.addrredis://127.0.0.1:6379# - --redis.passwordlabels:org.labe…

C#学习3-微软C#官方文档Microsoft-dotnet-csharp.pdf

文章目录 1.内插表达式的字段宽度和对齐方式 1.内插表达式的字段宽度和对齐方式 static void Main(string[] args) {var titles new Dictionary<string, string>() {["Doyle ,Arthur"] "Hound of the Basker,The",["Lodon ,Jack"] &quo…

PHP恋爱话术微信小程序系统源码

&#x1f496;恋爱高手的秘密武器&#xff01;恋爱话术微信小程序&#xff0c;让情话信手拈来✨ &#x1f4ad;【开场白&#xff1a;恋爱路上的甜蜜助手】&#x1f4ad; 还在为跟心仪的TA聊天时找不到话题而尴尬&#xff1f;或是担心自己说的每句话都显得那么“直男/女”&…

Linux上启动和停止jar

linux 后台运行jar 在Linux系统中&#xff0c;要想让jar包在后台运行&#xff0c;可以使用nohup命令和&符号。nohup命令可以使进程在后台不受挂起信号影响的执行&#xff0c;而&符号则是将任务放入后台执行。 以下是一个简单的命令示例&#xff0c;它将启动一个jar包…

记一次使用vue连接rabbitMq

连接rabbitMq需要使用stompjsnpm i stompjs 下下面是连接代码 import Stomp from stompjsonConnected(frame) {// 绑定交换机exchange_pushmsg是交换机的名字rk_pushmsg是绑定的路由keyvar exchange this.rabbitMqexchange || queue.device.zzzz// 创建随机队列用上面的路由k…

安全编织:Eureka驱动的分布式服务网格安全策略

安全编织&#xff1a;Eureka驱动的分布式服务网格安全策略 在微服务架构的复杂网络中&#xff0c;服务的安全性是维护系统稳定运行的基石。服务网格&#xff08;Service Mesh&#xff09;作为微服务间通信的代理层&#xff0c;承担着保障服务间通信安全的重要职责。Eureka&…

vi 编辑器快捷生成 main 函数和基本框架

step1: 执行 sudo vi /etc/vim/vimrc &#xff08;修改vimrc需要管理员权限&#xff1a;sudo&#xff09; step2:输入用户密码&#xff0c;回车, 编辑vimrc文件 step3:在尾行输入以下代码&#xff08;可复制&#xff09; map mf i#include<stdio.h><ESC>o#includ…

Web3发展的基本要素

区块链&#xff1a;分布式数据库 1 区块链是一种新型的分布式数据库协议&#xff0c;是实现Web3的最核心技术。 2 区块链的技术特性使其能够&#xff1a; 1&#xff09;安全地存储数据&#xff0c;得益于现代计算机密码学&#xff0c;用户可以获得自己独特、安全的账户&…

java itextPdf根据pdf模板,编辑保存pdf后可二次编辑处理

java 支持pdf 多次编辑的重点只有两个 1&#xff1a;flat属性 2&#xff1a;设置文本域只读属性 看似简单的两个问题&#xff0c;却耗费了一天的时间。pdf没有官方文档太难受了&#xff0c;只能在网上查找相关的案 例。但是很多文章都是copy别人的。没有实际效果。皇天不负有…

uniapp 微信小程序根据后端返回的文件链接打开并保存到手机文件夹中【支持doc、docx、txt、xlsx等类型的文件】

项目场景&#xff1a; 我们在使用uniapp官方提供的uni.downloadFile以及uni.saveFile时&#xff0c;会发现这个文件下载的默认保存位置和我们预想的不太一样&#xff0c;容易找不到&#xff0c;而且没有提示&#xff0c;那么我们就需要把文件打开自己保存并且有提示保存到哪个…

探索前沿科技:从迁移学习看人工智能的无限可能性

从迁移学习看人工智能的无限可能性 1 引言1.1 什么是迁移学习1.1.1 迁移学习的定义1.1.2 迁移学习的起源和背景 1.2 迁移学习的重要性1.2.1 解决小数据集问题1.2.2 提高模型训练效率1.2.3 应用于不同领域的广泛性 1.3 迁移学习的前景 2 迁移学习的基本概念2.1 源域和目标域2.1.…

【区块链 + 智慧政务】涉税行政事业性收费“e 链通”项目 | FISCO BCOS应用案例

国内很多城市目前划转至税务部门征收的非税收入项目已达 17 项&#xff0c;其征管方式为行政主管部门核定后交由税务 部门征收。涉税行政事业性收费受限于传统的管理模式&#xff0c;缴费人、业务主管部门、税务部门、财政部门四方处于 相对孤立的状态&#xff0c;信息的传递靠…

模板方法原理与C++实现

定义 定义一个操作中的算法骨架&#xff08;稳定的&#xff09;&#xff0c;而将一些步骤的实现延迟到子类中&#xff08;变化的&#xff09;。模板方法使得子类可以复用一个算法的结构&#xff0c;而只改变&#xff08;重写&#xff09;这个算法的特定步骤。 C实现 class L…

ns3-gym入门(二):linear-mesh例子详解

一、问题背景&#xff1a;Random Access Controlling the random access in an IEEE 802.11 mesh network is challenging as the network nodes compete for the shared radio resources. It is known that assigning the same channel access probability to each node is no…

无人机之机架类型篇

碳纤维机架 具有低密度、高强度和高刚度的特点&#xff0c;非常适合商业或工业级无人机的设计。碳纤维机架在飞行过程中具有良好的减振效果&#xff0c;使飞行更加稳定&#xff0c;但制作工艺复杂&#xff0c;成本较高。 工程塑料机架 以其轻便、耐冲击和易加工等特点受到一…

Vue 3 组件通信与状态管理:从基础到Pinia的全面解析

引言 Vue 3引入了Composition API&#xff0c;这为组件通信提供了更多的灵活性和强大的功能。例如&#xff0c;使用provide和inject可以轻松实现跨层级组件的数据传递&#xff0c;而setup函数则为组件提供了更早的生命周期钩子&#xff0c;使得在组件初始化阶段就能进行通信设…