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

前言

最近入手了一块香橙派 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都值得每一位对技术充满热情的人深入了解。

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

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

相关文章

python中的类

类 类的创建 使用class关键字定义一个新的类 创建实例和使用 修改属性 类的访问权限(只有属性和方法有访问权限) 概念 种类 公有(Public):公有成员可以被类的外部访问。这是默认的权限级别,如果不特别指定…

I2C子系统-内核视角

I2C驱动层级 内核自带的通用I2C驱动程序i2c-dev 编写一个设备驱动程序 控制器驱动程序I2C Adapter框架 GPIO模拟I2C,实现I2C_Adapter驱动 具体芯片下I2C_Adapter驱动 I2C驱动层级 一张图整理,可以看完后面的具体内容再回来看这张图: 接…

Docker的虚拟化安装、常用命令和使用案例

文章目录 一、Docker的虚拟机安装1、完成虚拟机的更新2、完成Docker安装3、配置镜像加速器 二、Docker常用命令三、Docker的容器创建四、理解虚拟机中的Docker容器 一、Docker的虚拟机安装 1、完成虚拟机的更新 详见我的文章。 2、完成Docker安装 yum list installed|grep …

第二周周日学习总结

题目总结 1. 给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的 字典序最小的字符串 。 如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性…

2024年7月9日~2024年7月15日周报

目录 一、前言 二、完成情况 2.1 特征图保存方法 2.1.1 定义网络模型 2.1.2 定义保存特征图的钩子函数 2.1.3 为模型层注册钩子 2.1.4 运行模型并检查特征图 2.2 实验情况 三、下周计划 一、前言 本周的7月11日~7月14日参加了机器培训的学习讨论会,对很多概…

六、 SpringBoot 配置⽂件 ★ ✔【value的引号注意事项、@ConfigurationProperties 、】

六、 SpringBoot 配置⽂件 本节⽬标1. 配置⽂件作⽤2. 配置⽂件快速⼊⼿3. 配置⽂件的格式4. properties 配置⽂件说明4.1 properties 基本语法4.2 读取配置⽂件4.3 properties 缺点分析 5. yml 配置⽂件说明5.1 yml 基本语法5.2 yml 使⽤进阶5.2.1 yml 配置不同数据类型及 nul…

记录些MySQL题集(1)

Innodb 是如何实现事务的? InnoDB是MySQL数据库的一个存储引擎,它支持事务处理。事务处理是数据库管理系统执行过程中的一个逻辑单位,由一个或多个SQL语句组成,这些语句要么全部执行,要么全部不执行,是一个…

Poetry2Image:专为中文古诗词图像生成,忠于原诗意境和语义。

直接基于文本的图像生成通常会导致丢失图像中的关键元素。为了解决此问题,哈工大提出Poetry2Image,通过实施有针对性的图像校正解决这个问题,有效地捕捉这首诗所传达的语义和艺术精髓。 Poetry2Image流程分为如下几步: 搜索和翻译…

免费进销存软件哪个好用?首选象过河

在快节奏的商业环境中,进销存管理一直是不可忽视的重要环节,关乎着企业的运营成本控制和运营效率的高低。传统的纸质记录已难以满足企业发展需求,很多企业管理者为了节约成本,都想寻找一款免费进销存软件。那么,免费进…

(day18) leetcode 204.计数质数

描述 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 1: 输入:n 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2: 输入:n 0 输出:0示例 3…

计算机系统复习——文件系统和目录

文件系统 存储管理: 文件系统负责将文件存储在存储设备(如硬盘、固态硬盘)中,并记录文件的位置和大小。 文件访问控制: 文件系统管理文件的访问权限,确保只有授权用户可以读取、写入或执行文件。 数据…

PostgreSQL 中如何解决因长事务阻塞导致的其他事务等待问题?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何解决因长事务阻塞导致的其他事务等待问题?一、了解长事务阻塞的原因&…

Qt进阶版五子棋

五子棋是一种两人对弈的棋类游戏,目标是在横、竖、斜任意方向上连成五个子。在Qt中实现五子棋程序,你需要设计棋盘界面、处理下棋逻辑、判断胜负等。以下是实现一个基本五子棋程序的步骤: 创建项目和界面 使用Qt Creator创建一个新的Qt Widge…

人工智能大模型讲师培训老师叶梓介绍及多模态大模型原理与实践提纲

培训需要解决的问题 通过本次培训,拓展对多模态AI应用领域的视野,帮助团队聚焦AI赋能创新突破,提升对AI服务的技术认知与理解,更好地助力业务智能化业务建设。 培训时长 1天 培训老师介绍 叶梓,工学博士&#xff0…

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)

​​​​​​​ 目录 一、引言 二、自动语音识别(automatic-speech-recognition) 2.1 概述 2.2 技术原理 2.2.1 whisper模型 2.2.2 Wav2vec 2.0模型 2.3 pipeline参数 2.3.1 pipeline对象实例化参数​​​​​​​ 2.3.2 pipeline对象使用参数…

HiFi Asia 2024圆满落幕,琛蓝生物分享企业成果

一个时代,一个风口。其中有些风口切中时代脉搏,顺势而为的人因此成功登顶,有些风口则被证伪,热潮散去之后留下一地鸡毛。在当今时代,倘若要寻找下一个时代风口,那么“大健康”毫无疑问是确定性最强大那一个…

BernNet Learning Arbitrary Graph Spectral Filters via Bernstein Approximation

发表于:neurips21 推荐指数: #paper/⭐⭐ 设定:在本文中,h是过滤器. bernstein 多项式逼近(这个证明有点稀里糊涂的,反正我觉得一点点问题,可能因为我水平低) p K ( t ) : ∑ k 0 K θ k ⋅ b k K ( t ) ∑ k 0 K f ( k K ) ⋅ ( K k ) ( 1 − t ) K − k t k . p_K(t):…

下载利器:IDM绿色版/一款Windows平台多线程下载工具

大家好!我是闷声轻创!今天给你们分享一款神器Internet Download Manager(简称IDM)这款软件是需要激活需要付费的【免注册激活,无假冒序列号弹窗】适用于Windows 系统,对于经常需要下载大量数据的用户来说&a…

自定义方法耗时监控告警

自定义方法耗时监控告警 用于记录代码耗时,当代码耗时超过指定阈值时打印告警日志 自定义注解 通过自定义注解的方式可以更方便的使用,只需要在需要做耗时兼容的方法上增加上该注解即可 package com.huakai.springenv.aspect.profiler;import java.lan…

Python与自动化脚本编写

Python与自动化脚本编写 Python因其简洁的语法和强大的库支持,成为了自动化脚本编写的首选语言之一。在这篇文章中,我们将探索如何使用Python来编写自动化脚本,以简化日常任务。 一、Python自动化脚本的基础 1. Python在自动化中的优势 Pyth…