【香橙派 AIpro测评:探索高效图片分类项目实战】

news2024/11/14 3:23:05

前言

最近入手了一块香橙派 AIpro开发板,在使用中被它的强大深深震撼,有感而发写下这篇文章。
本文旨在深入探讨OrangePi AIpro的各项性能,从硬件配置、软件兼容性到实际应用案例,全方位解析这款设备如何在开源社区中脱颖而出,以及它如何为AI爱好者和专业开发者开启一扇通往深度学习和边缘计算的大门。无论是对于初学者还是经验丰富的工程师,OrangePi AIpro都提供了一个理想的起点,去探索人工智能的广阔世界。
我们将从开箱体验开始,逐步深入至其核心特性,包括处理器性能、内存规格、I/O接口丰富度,以及集成的AI加速模块。此外,我们还会关注其生态系统,如操作系统支持、开发工具链、社区资源和第三方库的可用性。
在这里插入图片描述

认识香橙派 AIpro

一、硬件规格

处理器: 采用昇腾AI技术路线,配备4核64位处理器+AI处理器,集成图形处理器,支持高达8-12TOPS的AI算力。
内存: 提供8GB或16GB LPDDR4X内存选项,内存速率高达3200Mbps,确保数据的快速读写和处理能力。
存储: 支持外接32GB/64GB/128GB/256GB eMMC模块,同时提供SPI FLASH、SATA/NVME SSD(M.2接口2280)等多种存储选项,满足不同应用场景的需求。
供电: 采用Type-C PD 20V IN接口,标准65W的供电能力,确保设备的稳定运行。
在这里插入图片描述

二、接口与扩展性

视频输出: 支持双4K高清输出,包括两个HDMI接口和一个MIPI屏接口,满足高清晰度显示需求。
数据传输: 配备千兆网口、两个USB3.0接口、一个USB Type-C 3.0接口,以及TF插槽和M.2插槽(支持SATA/NVMe SSD 2280),提供丰富的数据传输和扩展能力。
其他接口: 还包括GPIO接口、Micro USB(串口打印调试功能)、两个MIPI摄像头接口等,预留电池接口,方便用户根据需求进行定制和扩展。
在这里插入图片描述

三、操作系统与应用

操作系统: 支持Ubuntu和openEuler两种流行的操作系统,为用户提供更多的选择和灵活性。
应用场景: 广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖AIoT各个行业。
开发支持: 提供丰富的开发资源和文档,包括详细的用户手册、硬件原理图、官方工具以及Linux开源代码等,方便用户进行开发和部署。在这里插入图片描述

体验香橙派 AIpro

在深入探索智能计算领域的征程中,我毅然决然地购置了一块香橙派 AIpro开发板,旨在通过亲手实践,更系统地掌握其卓越性能与广泛应用潜力。
在这里插入图片描述

初印象

板子到手拆箱之后,可以清楚的看到板子体积并不大,重量也很轻,这对于我们日常携带非常方便。
并且配有电源线、电源适配器、散热风扇和TF卡等,确保开发者能够快速上手并进行开发,不需为找各种配件而烦恼。另外还配有蓝牙、WIFI天线,更是为使用增加便利性。在这里插入图片描述

初体验

启动开发板

  1. 将烧录好镜像的 TF 卡或者 eMMC 模块或者 SSD 插入开发板对应的插槽中。
  2. 开发板有两个 HDMI接口,用HDMI连接一个显示器。
  3. 开发板有 USB 接口,可以接上 USB 鼠标和键盘,来控制操作开发板。
  4. 此开发板有WIFI天线,就不需要额外连接网线了。
  5. 连通电源之后就可以开始启动了。

在这里插入图片描述

注意:启动的时候,风扇声音稍微大一点,无需惊慌是正常现象,待启动之后,风扇就恢复到基本是静音状态了。

在这里插入图片描述

调试开发板

登录系统
系统默认的用户名为HwHiAiUser,默认登录密码为Mind@123
登录进入系统之后,可以通过nmcli命令为开发板连接WIFI。
扫描周围的WIFI热点:(扫描成功可以看到周围的热点名称)

(base) HwHiAiUser@orangepiaipro:~$ nmcli dev wifi      

然后使用nmcli连接扫描到的WIFI热点:
wifi_name 需要换成想连接的 WIFI 热点的名字。
wifi_passwd 需要换成想连接的 WIFI

(base) HwHiAiUser@orangepiaipro:~$ sudo nmcli dev wifi connect wifi_name password wifi_passwd

除此之外还可以通过桌面版镜像连接,操作比较简单,这里就不过多介绍。
查看开发板ip
通过ifconfig命令查看到开发板的ip。
远程操作开发板
开发板支持SSH远程登录, 在 Windows 下可以使用 MobaXterm 远程登录开发板,首先新建一个 ssh 会话。要在Session中设置SSH连接以访问开发板,需打开Session设置,选择SSH模式,输入开发板的IP地址作为远程主机,并指定Linux系统的用户名(如root或HwHiAiUser),最后确认设置即可建立连接。
在这里插入图片描述
测试音频
官方在系统中提供了一段音频,可以进行测试。(开发板需要连接耳机)

(base) root@orangepiaipro:~# cd /opt/opi_test/audio
(base) root@orangepiaipro:/opt/opi_test/audio# ls
capture.sh play.sh qzgy_48k_16_mono_30s.pcm sample_audio

然后使用下的命令就可以播放测试音频到耳机了。

(base) root@orangepiaipro:/opt/opi_test/audio# ./sample_audio play 2 qzgy_48k_16_mono_30s.pcm

紧接着就会有一段美妙的音乐从耳机中传出,在音乐播放完毕之后,通过Ctrl+C中断。
文字识别样例
通过/home/HwHiAiUser/samples/目录下,ls查看当前目录下的文件,共有8个文件和1个shell文件。

(base) HwHiAiUser@orangepiaipro:~/samples$ ls
01-SSD 02-CNNCTC 03-ResNet50 04-HDR 05-CycleGAN 06-Shufflenet 07-FCN 0
8-Pix2Pix start_notebook.s

然后执行 start_notebook.sh 脚本启动 Jupyter Lab.

(base) HwHiAiUser@orangepiaipro:~/samples$ ./start_notebook.sh

在这里插入图片描述
通过浏览器进入这个网站就可以登录 Jupyter Lab 软件了。
在这里插入图片描述
运行一下02-CNNCTC下的文字识别样例,其中 main_cnnctc.ipynb 是在 Jupyter Lab 中运行该样例的文件,双击打开 main_cnnctc.ipynb,单击»按钮可以运行此样例,然后在弹出的对话框中再单击 Restart 按钮,等待执行结果即可。
在这里插入图片描述
整个执行过程只需要1秒多钟,速度还是非常快的,在整个操作流程中也是很顺畅,体验感非常好。

推理应用:图片分类

样例下载

# 登录开发板,HwHiAiUser用户命令行中执行以下命令下载源码仓。    
cd /home
git clone https://gitee.com/ascend/EdgeAndRobotics.git

在这里插入图片描述
下载完成之后可以看到home目录下,多了一个EdgeAndRobotics文件夹。
切换到样例目录下,查看有哪些内容。

cd EdgeAndRobotics/Samples/ResnetPicture

设备环境变量
设置DDK_PATH环境变量:

export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest 

将DDK_PATH环境变量设置为/usr/local/Ascend/ascend-toolkit/latest。这个路径通常指向昇腾AI处理器的开发工具包(DDK)的最新版本安装目录。DDK包含了编译和运行基于昇腾AI处理器的应用程序所需的编译器、库文件、头文件等。

设置NPU_HOST_LIB环境变量:

export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

使用DDK_PATH(即DDK的路径)来构造NPU_HOST_LIB环境变量的值,将其设置为$DDK_PATH/runtime/lib64/stub。这个路径通常指向DDK中用于NPU(神经网络处理器)的宿主端(Host)库文件的stub目录。Stub库文件通常用于模拟或代理NPU的某些功能,特别是在没有物理NPU设备的情况下进行开发和测试时。
获取PyTorch框架的ResNet50模型(.onnx),并转换为昇腾AI处理器能识别的模型(.om)。

cd model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50_DVPP/aipp.cfg
atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224"  --soc_version=Ascend310B4 --insert_op_conf=aipp.cfg

下载 ONNX 模型文件:使用 wget 命令从华为云对象存储(OBS)下载 ResNet50 的 ONNX 模型文件。

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx

下载 AIPP 配置文件:这个文件包含了模型输入数据的预处理参数。

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50_DVPP/aipp.cfg

使用 ATC 工具转换模型:将 ONNX 模型转换为 Ascend 310 AI 处理器可以运行的格式。

atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224" --soc_version=Ascend310B4 --insert_op_conf=aipp.cfg

这里有几个关键参数需要注意:

–model:ResNet-50网络的模型文件的路径。
–framework:原始框架类型。5表示ONNX。
–output:resnet50.om模型文件的路径。请注意,记录保存该om模型文件的路径,后续开发应用时需要使用。
–input_shape:模型输入数据的shape。
–soc_version:昇腾AI处理器的版本。
在这里插入图片描述

在转换模型中可能遇到的问题:
1.PermissionError: [Errno 13] Permission denied: ‘/home/EdgeAndRobotics/Samples/ResnetPicture/model/kernel_meta_temp_6486615612126595467’
在这里插入图片描述
解决方式:这个问题是权限不足导致的,切换到root账户就可以了。 su root然后输入密码切换账户
2./usr/local/Ascend/ascend-toolkit/latest/bin/atc: line 17: 3583 Killed P K G P A T H / b i n / a t c . b i n " {PKG_PATH}/bin/atc.bin " PKGPATH/bin/atc.bin"@"
sh-5.1# Process ForkServerPoolWorker-7:
Traceback (most recent call last):
BrokenPipeError: [Errno 32] Broken pipe
在这里插入图片描述
解决方式:这个问题可能是内存不足导致的。当设备内存小于8G时,可设置如下两个环境变量减少atc模型转换过程中使用的进程数,减小内存占用。

export TE_PARALLEL_COMPILER=1
export MAX_COMPILE_CORE_NUMBER=1

然后再重新转换即可。在这里插入图片描述

下载测试图片
从以下链接获取该样例的测试图片dog1_1024_683.jpg,放在data目录下。

cd ../data 
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg

在这里插入图片描述

编译样例源码

cd ../scripts 
bash sample_build.sh

在这里插入图片描述
执行样例
执行以下脚本运行样例:

bash sample_run.sh

执行成功后,在屏幕上的关键提示信息示例如下,提示信息中的top1-5表示图片置信度的前5种类别、index表示类别标识、value表示该分类的最大置信度,class表示所属类别。

[INFO] top 1: index[162] value[0.905034] class[beagle]
[INFO] top 2: index[161] value[0.092053] class[bassetbasset hound]
[INFO] top 3: index[166] value[0.000738] class[Walker houndWalker foxhound]
[INFO] top 4: index[167] value[0.000509] class[English foxhound]
[INFO] top 5: index[163] value[0.000076] class[bloodhound sleuthhound]

在运行整个模型的过程中,香橙派展现出了出色的稳定性和性能表现。尽管模型运行可能涉及复杂的数据处理和计算任务,但香橙派的内存使用情况却表现出令人满意的稳定性,变化相对较小。这充分证明了香橙派在处理此类任务时具备高效的内存管理机制和充足的资源调配能力,使得系统能够平稳运行而不会出现因内存不足导致的性能瓶颈或崩溃现象。这种优秀的表现不仅体现了香橙派硬件设计的合理性,也彰显了其在嵌入式系统、边缘计算等领域中的强大潜力。
在这里插入图片描述

总结

性能强劲,满足多种AI需求
香橙派AI Pro搭载的处理器和GPU组合令人印象深刻。其强大的计算能力让我能够轻松运行复杂的深度学习模型和图像识别任务,即使在处理高清视频流时也能保持流畅无卡顿。这种性能上的优势,使得香橙派AI Pro成为了我进行AI项目开发和原型制作的理想选择。
易于上手,开发环境友好
对于初学者来说,香橙派AI Pro的易用性是一大亮点。官方提供了详尽的入门指南和开发文档,帮助我快速上手并熟悉开发环境。同时,社区的支持也非常活跃,遇到问题时总能迅速找到解决方案或得到热心人的帮助。此外,香橙派AI Pro还支持多种操作系统和开发工具链,使得我可以根据自己的需求选择合适的开发环境。
推荐学习资源:
香橙派AIpro学习资源一站式导航
扩展性强,适应多种应用场景
香橙派AI Pro的扩展性同样令人称赞。它提供了丰富的接口和扩展槽位,可以轻松连接各种传感器、摄像头和执行器等外设。这种设计不仅提高了开发板的灵活性,还让我能够轻松地将AI技术应用到不同的场景中,如智能家居、安防监控、智能机器人等领域。

在这个科技日新月异的时代,开源硬件平台正逐渐成为创新与学习的热土。在众多开源硬件中,OrangePi AIpro以其独特的定位和强大的功能,吸引着无数开发者的目光。它不仅是一个功能全面的单板计算机,更是一个集成了人工智能加速能力的创新平台,为开发者提供了无限可能。
让我们一起踏上这段学习之旅,揭开OrangePi AIpro更多的神秘面纱,探索它如何在开源硬件的海洋中引领潮流,成为连接创意与技术的桥梁。无论是对于教育、科研还是商业应用,OrangePi AIpro都值得每一位对技术充满热情的人深入了解。

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

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

相关文章

C#与PLC通信——如何设置电脑IP地址

前言: 我们与PLC通过以太网通信时,首先要做的就是先设置好电脑的IP,这样才能实现上位机电脑与PLC之间的通信,并且电脑的ip地址和PLC的Ip地址要同处于一个网段,比如电脑的Ip地址为192.168.1.1,那么PLC的Ip地…

水质监测系统—保障居民饮用水安全

TH-LSZ05自来水水质监测系统是一种用于实时监测自来水质量的技术设备,它对于保障居民饮用水安全具有重要意义。以下是对自来水水质监测系统的详细介绍: 自来水水质监测系统主要由以下几个部分组成: 用于实时监测水质的各种参数,如…

easyExcel 不规则模板导入数据

文章目录 前言一、需求和效果二、难点和思路三、全部代码踩坑 前言 之前分享的 EasyExcel 批量导入并校验数据,仅支持规则excel,即首行表头,下面对应数据,无合并单元格情况。 本篇主要解决问题: 模板excel 表头不在首…

springcolud学习01

创建项目 修改pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.o…

React_自定义组件_下拉框

目录 一、效果图 二、代码 1.直接使用_不和父组件传参 2.作为通用组件使用_和父组件传参 一、效果图 1.未选择任何选项时 2.悬浮效果 3.点击效果 4.选中选项的样式 5.选项太多时效果&#xff0c;&#xff08;设置最大高度200&#xff0c;根据需要自行更改.popover-box样式…

807.力扣每日一题7/14 Java(执行用时分布击败100%)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 解题思路 解题过程 时间复杂度 空间复杂度 Code 解题思路 首先…

188家国产大模型:挑战与机遇,未来杀手级AI应用究竟该长什么样子?

未来的杀手级AI应用究竟该长什么样子&#xff1f;这篇文章里&#xff0c;作者梳理了国内外LLMs基础大模型的特征&#xff0c;并于最后发表了自己关于杀手级AI应用的看法和见解&#xff0c;一起来看一下。 摘要&#xff1a; 本文详细列表展示国外18家&#xff0c;国内188家大模…

<数据集>UA-DETRAC车辆识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;20500张 标注数量(xml文件个数)&#xff1a;20500 标注数量(txt文件个数)&#xff1a;20500 标注类别数&#xff1a;4 标注类别名称&#xff1a;[car, van, others, bus] 序号类别名称图片数框数1car201871259342…

深度学习基础:Numpy 数组包

数组基础 在使用导入 Numpy 时&#xff0c;通常给其一个别名 “np”&#xff0c;即 import numpy as np 。 数据类型 整数类型数组与浮点类型数组 为了克服列表的缺点&#xff0c;一个 Numpy 数组只容纳一种数据类型&#xff0c;以节约内存。为方便起见&#xff0c;可将 Nu…

Jira学习

1.Dev OPS DevOps简介 DEV OPS 流程 DEV OPS流程对应工具 最重要的就是持续集成–Jenkins 2.Jira 新建项目

嵌入式系统中的GPIO控制与应用

GPIO是嵌入式系统中最常见且功能最强大的接口之一。它允许硬件工程师通过编程来配置和控制芯片上的数字引脚&#xff0c;实现输入和输出的功能。在本文中&#xff0c;我们将从理论和实践两个方面探讨GPIO的工作原理&#xff0c;并通过一个简单的示例项目来演示如何利用GPIO控制…

whereis命令是 Linux 和类 Unix 系统中的一个命令行工具,用于定位二进制程序、源代码和手册页(man pages)的位置

文章目录 1、whereis2、实例 1、whereis whereis 命令是 Linux 和类 Unix 系统中的一个命令行工具&#xff0c;用于定位二进制程序、源代码和手册页&#xff08;man pages&#xff09;的位置。当你想要快速找到某个程序或命令的安装位置时&#xff0c;whereis 命令会非常有用。…

三相PWM整流器PI双闭环控制Simulink

1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Rb&#xff09;软件。建议采用matlab2017 Rb及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 2.拓扑结构&#xff1a; 3.模型算法架构&#xff1a; 4.仿真算法&#xff1a; &am…

[misc]-流量包-wireshark-icmp

wireshark打开&#xff0c;大部分都是icmp,查看data部分 提取data长度&#xff1a; tshark.exe -r 1.pcapng -T fields -e data.len > length.txt 使用python解析这个文件&#xff0c;剔除异常值&#xff0c;每8个取一个值&#xff0c;得到flag ds [] with open(length.tx…

JVM和类加载机制-01[JVM底层]

JVM底层 Java虚拟机内存模型JVM组成部分五大内存区域各自的作用虚拟机栈(线程栈)本地方法栈程序计数器为什么jvm要设计程序计数器&#xff1f; 堆方法区 Java虚拟机内存模型 JVM跨平台原因 就是在JVM层面对各个操作系统的指令做了不同处理 JVM组成部分 五大内存区域各自的作用…

STM32第十九课:FreeRTOS移植和使用

目录 需求一、FreeRtos概要二、移植FreeRtos1.复制源码2.内存空间分配和内核相关接口3.FreeRTOSConfig.h4.在工程中添加.c.h 三、任务块操作1.创建任务2.任务挂起&#xff0c;恢复&#xff0c;删除 四、需求实现代码 需求 1.将FreeRtos&#xff08;嵌入式实时操作系统&#xf…

Visual Studio 2022 + Qt 编写 VTK 程序

Visual Studio 2022 Qt 编写 VTK 程序 Visual Studio 2022 Qt 编写 VTK 程序前期准备创建一个 Qt 程序引入 VTK 库运行项目 Visual Studio 2022 Qt 编写 VTK 程序 前期准备 你需要一个编译好的 VTK 库&#xff1a;使用 Cmake 对 VTK-9.3.0 进行编译 你需要安装 Qt&#x…

<数据集>光伏板缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2400张 标注数量(xml文件个数)&#xff1a;2400 标注数量(txt文件个数)&#xff1a;2400 标注类别数&#xff1a;4 标注类别名称&#xff1a;[Crack,Grid,Spot] 序号类别名称图片数框数1Crack8688922Grid8248843S…

CTF之easyupload

拿到题目发现是文件上传的漏洞&#xff0c;但是这个黑名单过滤的有点严格&#xff0c;无论是文件里还是文件后缀都不能出现php 那我们就用<?eval($_POST[a]);?>来进行绕过&#xff08;注意这里要加个GIF89a或者GIP87a进行欺骗&#xff09; 但是后缀依然不能绕过怎么办&…

我的六天C++外出学习记

第一天 7月7日 星期日 早晨&#xff0c;我早早起来了&#xff0c;穿好衣服吃完饭就出发了。 我从家到学校用了1H&#xff0c;迟到了&#xff01;我急急忙忙去报到。 我们中午和晚上的饭菜虽说有点贵&#xff0c;但实在太美味了&#xff0c;和我们原本初中的饭菜相比&#…