国产性能怪兽——香橙派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…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...