国产性能怪兽——香橙派AI Pro(8T)上手体验报告以及性能评测
目录
- 1、引言
- 2、性能参数
- 3、开箱体验
- 4、实际使用
- 5、性能比较
- 总结
- 参考文章
1、引言
第一次接触香橙派的开发板,之前使用过Arduino、树莓派3B、树莓派4B,STM32,51单片机,没有想到国产品牌性能一样强劲,使用起来也是很方便。香橙派是深圳市迅龙软件有限公司旗下开源产品品牌,经查资料了解2014年发布了第一款开源产品,主打的是超高性价比和优异的使用体验,到现在也迭代了30多代产品,在一众开发板厂商中是比较优质的存在。本文旨在从性能参数、使用体验上综合给出个人的看法和评价,希望能够给大家带来帮助。
2、性能参数
下面列举了部分比较重要的参数,具体配置需要去官网查看。香橙派官方页面
部件 | 详细参数 |
---|---|
昇腾AI处理器 | 4核64位Arm处理器+AI处理器 |
AI算力 | 半精度(FP16):4 TFLOPS、整数精度(INT8):8TOPS |
内存 | LPDDR4X 可选8GB或16GB |
Wi-Fi+蓝牙 | 支持2.4G和5G双频WIFI |
摄像头 | 2个MIPI CSI 2 Lane接口 |
显示 | 2个HDMI接口,1个MIPI DSI 2 Lane接口 |
40 pin扩展口 | 用于扩展UART、I2C、SPI、PWM和GPIO接口 |
电源 | 支持Type-C供电,20V PD-65W 适配器 |
风扇接口 | 4pin,0.8mm间距,用于接12V风扇,支持PWM控制 |
电池接口 | 2pin,2.54mm间距,用于接3串电池,支持快充 |
接口详情图:
可以看到是堆料满满的一款产品,昇腾AI处理器是为了满足飞速发展的深度神经网络对芯片算力的需求,由华为公司在2018年推出的AI处理器,对整型数(INT8、INT4)或浮点数(FP16)提供了强大高效的计算力,在硬件结构
上对深度神经网络做了优化,可以很高效率完成神经网络中的前向计算
因此在智能终端领域有很大的应用前景。
3、开箱体验
包装盒精致小巧,封装纸盒上是橙子的标志,下面用黄色加粗颜色文字强调该产品的特色功能是深度学习领域,开发板上下用了泡沫防护,总体是很精美的。
拆开包装盒后官方提供了开发板x1,Type-C接口的20V PD-65W适配器,充电器接头的折叠设计很有意思,这个设计便于携带也能够提升产品的使用寿命。
搭配的静音风扇效果很好,开机的时候会有较大噪音,大约持续几秒后没有任何声音。WIFI和蓝牙的天线扣设计位置也相对方便。
4、实际使用
初次使用最好还是采用HDMI接口
连接开发板显示,这种方式是最简单也最快捷的,官方文档中提供了三种登录系统的方式。
使用HDMI连接便携显示器:
一眼看过去很惊艳的Logo,输入官方提供的密码就可以进入系统了,烧录的系统是ubentu 22.04。
连接上WIFI后可以通过以下方式连接SSH进入系统:
ssh HwHiAiUser@IP地址
不过还是比较喜欢使用VNC多一些,下面提供一种连接上WIFL后配置VNC远程连接的方式。
步骤一:安装tightvncserver
sudo apt update
sudo apt install tightvncserver
步骤二:配置vncserver密码:
sudo vncserver
步骤三:修改.vnc/xstartup文件,设置vnc服务器启动xfce桌面环境。
sudo vim .vnc/xstartup
接下来就可以使用VNC远程连接开发板进入系统了。
32gb内存预装完系统后还有11gb的空闲内存,足够做很多东西。
5、性能比较
正好Windows上预装了jupyter notebook,因此这里选用了MNIST手写数据集来测试开发板和Windowsa在做导入数据和模型训练时的差异性,我的WINDOW使用的是英特尔的至强 E5-2666 v3,主频2.90GHz,未做任何相关优化处理。
接下来会从数据处理
、训练SGD模型
、训练BP神经网络模型
三个方面来比较运行速度的差异。
import sys
print("Current System:====",sys.platform,"====")
from sklearn.datasets import fetch_openml
import numpy as np
import os
#Rand num
np.random.seed(62)
%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
#setting plot
mpl.rc('axes', labelsize=14)
mpl.rc('xtick', labelsize=12)
mpl.rc('ytick', labelsize=12)
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False#import date
def sort_by_target(mnist):reorder_train=np.array(sorted([(target,i) for i, target in enumerate(mnist.target[:60000])]))[:,1]reorder_test=np.array(sorted([(target,i) for i, target in enumerate(mnist.target[60000:])]))[:,1]mnist.data[:60000]=mnist.data.loc[reorder_train]mnist.target[:60000]=mnist.target[reorder_train]mnist.data[60000:]=mnist.data.loc[reorder_test+60000]mnist.target[60000:]=mnist.target[reorder_test+60000]import time
a=time.time()
mnist=fetch_openml('mnist_784',version=1,cache=True)
mnist.target=mnist.target.astype(np.int8)
sort_by_target(mnist)
b=time.time()
print("Finish Time:",b-a)
运行同一段代码做数据的导入处理:
开发板完成时间:
Windows端完成时间:
可以看出处理同一段数据,windows没有做相关优化的速度会慢一些。
SGD模型训练代码:
import sys
print("Current System:====",sys.platform,"====")
X,y=mnist["data"],mnist["target"]
X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]
import numpy as np
shuffer_index=np.random.permutation(60000)
X_train,y_train=X_train.iloc[shuffer_index],y_train[shuffer_index]
from sklearn.linear_model import SGDClassifier
sgd_clf=SGDClassifier(max_iter=5,tol=None,random_state=42)
c=time.time()
sgd_clf.fit(X_train,y_train)
d = time.time()
print("SGD Model Train Time:",d-c)
SGDClassifier(alpha=0.0001, average=False, class_weight=None,early_stopping=False, epsilon=0.1, eta0=0.0, fit_intercept=True,l1_ratio=0.15, learning_rate='optimal', loss='hinge', max_iter=5,n_iter_no_change=5, n_jobs=None, penalty='l2', power_t=0.5,random_state=42, shuffle=True, tol=None, validation_fraction=0.1,verbose=0, warm_start=False)
SGD模型训练时间:
开发板:
WINDOWS训练时间:
BP神经网络训练代码:
import sys
print("Current System:====",sys.platform,"====")
X,y=mnist["data"],mnist["target"]
X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]
import numpy as np
shuffer_index=np.random.permutation(60000)
X_train,y_train=X_train.iloc[shuffer_index],y_train[shuffer_index]
from sklearn.neural_network import MLPClassifier
mlp = MLPClassifier(hidden_layer_sizes=(100,50), max_iter=10)
e = time.time()
mlp.fit(X_train, y_train)
f = time.time()
print("BP Net Train Time:",f-e)
BP神经网络训练时间:
开发板:
WINDOW:
最终结果:
设备/时间(秒) | 导入数据 | 训练SGD | 训练BP神经网络 |
---|---|---|---|
香橙派AI PRO | 12.11s | 7.65s | 43.45s |
E5-2666 v3 | 42.13s | 3.23s | 22.41s |
可以看出本次香橙派AI Pro的实力还是不错的,数据处理的速度会比E5-2666 v3快些,不过在模型训练方面可能会稍有逊色,大约需要花上两倍的时间进行处理,开发板达到这个效果已经很棒了。
总结
这款产品综合下来性价比很高,并不昂贵的价格采用昇腾AI技术路线,提供8TOPS AI算力,个人感觉已经满足诸如视频图像分析、自然语言处理、智能小车、人工智能、智能安防、智能家居等多个领域的使用要求,相信16GB版本更能让人眼前一亮。
参考文章
1、BP Network mnist手写数据集 基于sklearn
2、基于jupyter notebook的python编程-----MNIST数据集的的定义及相关处理学习
3、MNIST手写数字识别sklearn实践
4、机器学习第三章:MNIST手写数字预测
5、瑞芯微RK3399开发板香橙派4使用 VNC 远程登录的方法
相关文章:

国产性能怪兽——香橙派AI Pro(8T)上手体验报告以及性能评测
目录 1、引言2、性能参数3、开箱体验4、实际使用5、性能比较总结参考文章 1、引言 第一次接触香橙派的开发板,之前使用过Arduino、树莓派3B、树莓派4B,STM32,51单片机,没有想到国产品牌性能一样强劲,使用起来也是很方便…...

适用于 Windows 7/8/10/11 的 6 款最佳免费分区软件
分区软件程序旨在帮助您创建、缩小、删除、扩展、合并或拆分硬盘和其他存储设备的分区。虽然可以在 Windows 中对硬盘进行分区而无需使用其他软件,但您可以执行的活动范围有限。例如,如果没有外部工具,您无法调整分区大小或合并分区。在这篇文…...

蓝桥杯备赛——DP续【python】
一、小明的背包2 试题链接:https://www.lanqiao.cn/problems/1175/learning/ 输入示例 5 20 1 6 2 5 3 8 5 15 3 3 输出示例 120 问题分析 这题是完全背包,每个物品有无数个,所以对于任意dp[i][j](其表示的意思为选到第i个…...

区块链系统开发测试----链码部署开发、系统开发验证
一.检查配置环境 检查虚拟机环境,确保有正在运行的Hyperledger Fabric区块链,并且其中chaincode_basic、credit_chaincode链码可以正常调用 查看chaincode_basic、credit_chaincode链码调用 二.开发征信链码代码 基于现有征信链码,开发征信…...

ResNet 学习
一. 残差块与残差层 简单来说,残差块是构成残差层的基本单元,而残差层则是由多个残差块组成的。在ResNet中,通常会堆叠多个残差层来构建深度模型。 (一).残差块(Residual Block) 这是ResNet的基本构建单元。一个残差块…...

前端React老项目打包caniuse-lite报错解决思路
1、下载项目,先更新.npmrc文件: registryhttp://registry.npmmirror.com 2、安装依赖,本地启动,运行正常,但直接提交代码线上打包时会报错: “ 未找到相关的合并请求。” 打开日志页面,报错信息…...

【全开源】优校管理系统支持微信小程序+微信公众号+H5
概述 优校管理系统(简称优校管)是基于FastAdmin和ThinkPHP进行开发的中小学信息化管理系统,拥有PC版、UniAPP版(高级授权)。支持微信小程序、H5等多平台,主要用于信息管理、教学管理、素养评价,支持多个学校(标准授权限5个,高级授…...

Python条件分支与循环
大家好,当涉及到编写高效和灵活的程序时,条件分支和循环是 Python 中至关重要的概念。它们允许我们根据不同的条件执行不同的代码块,或者重复执行一组语句。条件分支和循环是测试开发工程师在日常工作中经常使用的工具,无论是编写…...

AI手语研究数据集;视频转视频翻译和风格化功能如黏土动画;AI检测猫咪行为;开放源码的AI驱动搜索引擎Perplexica
✨ 1: Prompt2Sign 多语言手语数据集,便捷高效用于手语研究。 Prompt2Sign 是一个全面的多语言手语数据集,旨在通过工具自动获取和处理网络上的手语视频。该数据集具有高效、轻量的特点,旨在减少先前手语数据集的不足之处。该数据集目前包含…...

四川景源畅信:新人做抖店的成本很高吗?
随着社交媒体的兴起,抖音成为了一个新兴的电商平台——抖店。不少创业者和商家看中了其庞大的用户基础,想要通过开设抖店来拓展销路。然而,对于刚入行的新手来说,成本问题总是让人犹豫不决。究竟新人做抖店的成本高不高?本文将围…...

ChatGPT原创指令大全(持续更新)
随着ChatGPT在互联网上的使用越来越多,但很多人在使用ChatGPT的过程中会觉得得到的答案并不是很精准。究其原因其实是你给它的命令不够准确、不够到位。实际现在网上已经很多关于ChatGPT的网站,可以快速生成带有快捷键的ChatGPT指令。但是对于不熟悉Chat…...

Java实现对PDF、纵向、横向页面添加自定义水印功能
Java实现对PDF、纵向、横向页面添加自定义水印 效果图 -- 纵向 页面PDF使用到JAR Maven依赖版本效果图 -- 横向页面PDF 效果图 – 纵向 页面PDF 代码如下: 使用到JAR Maven依赖版本 <dependency><groupId>org.apache.pdfbox</groupId><artifa…...

设计模式15——享元模式
写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 享元模式(Flyweigh…...

多模态中的模态有哪些
“多模态”这个名字中的“模态”(modality),指的是不同的数据类型或信息源。在多模态大模型中,常见的模态包括: 文本模态: 包括自然语言文本、语音识别文本等。 图像模态: 指图像数据ÿ…...

Java练习题(八)
36.关于抽象类叙述正确的是? (B ) A.抽象类不能实现接口 B.抽象类必须有“abstract class”修饰 C.抽象类必须包含抽象方法 D.抽象类也有类的特性,可以被实例化 37.以下说法错误的是(C) A.数组是一个对象 B.数组不是一种原…...

Linux文本文件管理003
★排序、去重、统计★ 1)排序 sort -n按照数值排序 -r降序排列 2)去重 uniq 过滤相邻、重复的行 -c 对重复行计数 3)统计 wc 统计文件中的字节数、单词数、行数 -l 显示行数 今天通过使用grep、awk、cut指令和上面几个选项提取文本文件…...

uniapp Androud 离线打包升级APK,覆盖安装不更新问题
Android 打包时在assets/data/dcloud_control.xml文件中,如果配置debug"true" syncDebug"true",则consle打印有效,不然没有打印数据 <hbuilder debug"true" syncDebug"true"> <apps> …...

【算法实战】每日一题:设计一个算法,用最少数量的矩形覆盖一系列宽度为d、高度为w的矩形,且使用矩形不能超出边界
题目 设计一个算法,用最少数量的矩形覆盖一系列宽度为d、高度为w的矩形建筑物侧墙,且矩形不能超出边界。 核心思路 考虑这种结构 前面递增后面一个与前面的某个高度一致,这时候考虑最下面的覆盖(即都是从最下面向上覆盖&#…...

外贸仓库管理软件:海外仓效率大幅度提升、避免劳动力积压
随着外贸业务的不断发展,如何高效管理外贸仓库,确保货物顺利流转,订单顺利处理,就变得非常重要。 现在通常的解决方案都是通过引入外贸仓库管理软件,也就是我们常说的海外仓WMS系统来解决。 今天我们就系统的探讨一下…...

6.8 LIBBPF API(七,bpf_core_read.h 函数,定义,枚举)
一,函数 void * bpf_rdonly_cast (const void *obj, __u32 btf_id) __ksym __weak 二,定义 __CORE_RELO(src, field, info) __builtin_preserve_field_info((src)->field,BPF_FIELD_##info) __CORE_BITFIELD_PROBE_READ(dst, src, fld) bpf_probe_read_kernel( \ (v…...

电脑卸载linux安装windows后每次开机都出现grub
原因分析 这是因为电脑硬盘中还存在linux系统的引导程序,并且启动顺序还在windows之前,有时候通过bios根本找不到它的存在,以至于每次windows开机出现grub之后都要输入exit退出linux的引导之后才能使得电脑进入windows,这个有时会…...

总结 HTTPS 的加密流程
一、前言 http是为了解决http存在的问题而在http基础上加入了SSL/TSL,在HTTP/2中TCP三次握手后会进入SSL/TSL握手,当SSL/TSL建立链接后,才会进行报文的传输。 二、HTTPS的混合加密 我们先来认识密钥: 密钥是用于加密和解密数据…...

Spring的FactoryBean多例问题
关于spring bean,我们了解的最多的还是单例,而多例bean,除了平时我们自己new的那些多实例外(但不属于IOC管理了),几乎很少能用到,而在spring 层面,FactoryBean刚好是多例的一个体现,…...

[nextjs]推荐几个很好看的模板网站
最近在做网站,折腾了 vue 框架,然后发现了 nextjs 框架,感觉这个做出来的网站配色很好看,然后又开始研究这个 网站配色好看是因为用的 tailwindcss,找网站过程中,发现了几个很好看的模板网站,在这里推荐下,或许你也能用得上 推荐第一个网站是: https://tailspark.co/ 有组件,也…...

《当微服务遇上Ribbon:一场负载均衡的华丽舞会》
在微服务的厨房里,如何确保每一道服务都恰到好处?揭秘Spring Cloud Ribbon如何像大厨一样精心调配资源,让负载均衡变得像烹饪艺术一样简单! 文章目录 Spring Cloud Ribbon 详解1. 引言微服务架构中的负载均衡需求Spring Cloud Rib…...

简单随机数据算法
文章目录 一,需求概述二,实现代码三、测试代码四、测试结果五、源码传送六、效果演示 一,需求概述 系统启动时,读取一组图片数据,通过接口返回给前台,要求: 图片随机相邻图片不重复 二&#…...

js画思维导图代码2
这段代码是一个使用Vue.js和D3.js构建的树形图组件。它是一个Vue组件,用于创建和显示一个交互式的树形结构图。下面是对这段代码的简要分析: 模板部分 (<template>): 定义了组件的HTML结构,包括一个隐藏的提示框(#tooltip)和一个用于显…...

使用 Flask 实现异步请求处理
文章目录 为什么需要异步请求处理?在 Flask 中实现异步请求处理使用 Flask-Cors 扩展 总结 在开发 Web 应用程序时,异步请求处理是提高性能和并发能力的重要方法之一。Flask 是一个轻量级的 Web 框架,它提供了易于使用的工具来实现异步请求处…...

关于c++的通过cin.get()维持黑框的思考
1.前言 由于本科没有学过c语言,研究生阶段接触c上手有点困难,今天遇到关于通过cin.get()来让黑框维持的原因。 2.思考 cin.get()维持黑框不消失的原因一言蔽之就是等待输入。等待键盘的输入内容并回车(一般是回车)后cin.get()才…...

fastadmin接口输出图片 自动拼接网站URL
先自定义常量 1.文件接口路径 修改核心文件 application\common\controller\Api.php/*** 构造方法* access public* param Request $request Request 对象*/public function __construct(Request $request null){$this->request is_null($request) ? Request::instance…...