Orange Pi AIpro:高性能AI开发板开箱体验及样例测试

文章目录

  • 前言
  • 背景介绍
  • 产品介绍
  • 主要参数配置
  • AI处理器——昇腾310 NPU
  • 模型训练预测
  • 加载resnet50模型
  • 真实动物测试
  • 虚拟动物测试

前言

随着人工智能和物联网技术的迅速发展,单板计算机(Single Board Computer, SBC)在创客和开发者社区中越来越受欢迎。作为一名公司研发工程师,我最近入手了一款高性能的单板计算机——Orange Pi AIpro。

背景介绍

我们的团队一直致力于开发智能化解决方案,探索各种高效的硬件平台以推动项目进展。近日,我们有幸受邀评测香橙派推出的最新AI开发板——Orange Pi AIpro。这款开发板是香橙派与华为合作的成果,内置了华为自研的昇腾310 NPU(Neural Processing Unit),基于达芬奇架构,为AI开发提供了强大的支持。

Orange Pi AIpro的引入为我们的研发工作带来了新的契机。相较于以往使用的设备,昇腾310 NPU具备更高的计算能力和能效比,使我们能够更高效地进行深度学习和推理任务。此外,华为昇腾社区提供了丰富的资源和课程,大大降低了学习和开发的难度,助力我们更快地上手并开展项目。

本文将为零基础用户提供详细的开箱体验和Orange Pi AIpro的产品介绍,帮助大家快速掌握其基本使用方法,并了解昇腾生态的强大之处。我还会展示几个简单的AI样例,分享我们的探索过程和心得体会,希望能让大家更好地了解这款强大的AI开发板。

产品介绍

首先,让我们来看看Orange Pi AIpro的全貌。这款开发板设计精美,功能强大。

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

主要参数配置

处理器:搭载华为昇腾310 NPU,支持高效的人工智能计算,适用于深度学习和推理任务。
内存:8GB LPDDR4内存,确保多任务处理和数据密集型应用的流畅运行。
存储:提供eMMC存储接口和MicroSD卡插槽,方便用户扩展存储空间。
接口:丰富的接口配置,包括USB 3.0、USB 2.0、HDMI、以太网口、音频输出、GPIO等,满足多种外设连接需求。
网络:内置千兆以太网接口和Wi-Fi模块,支持高速网络连接和无线传输。
操作系统:兼容多种操作系统,包括Ubuntu、Debian和Android,提供广泛的软件支持和开发环境。

AI处理器——昇腾310 NPU

昇腾310 NPU简介
Orange Pi AIpro的核心是Atlas 200计算模块,该模块集成了华为昇腾310处理器,为端侧部署深度学习推理应用提供了高效的计算能力。昇腾310的主要特点如下:

高效能低功耗:昇腾310采用7nm工艺制造,拥有高效的能耗比,在提供强大计算能力的同时保持较低的功耗,非常适合嵌入式和边缘计算应用。
强大计算能力:昇腾310能够提供多达16 TOPS(Tera Operations Per Second)的整数计算能力和8 TFLOPS(Tera Floating Point Operations Per Second)的浮点计算能力,能够高效处理复杂的深度学习模型。
丰富的接口支持:昇腾310支持多种接口,包括PCIe、I2C、UART等,方便与各种外设进行连接,适用于广泛的应用场景。
全场景AI支持:昇腾310支持图像处理、语音识别、自然语言处理等多种AI任务,提供灵活的AI推理能力。
优秀的开发工具:昇腾310配备了丰富的开发工具和软件生态,包括华为的MindSpore、TensorFlow、PyTorch等主流深度学习框架的支持,使开发者能够快速上手并进行模型训练和部署。

模型训练预测

在本文中选取了常见的四种动物数据(猫、狗、马、鸡),文件夹结构如下图所示。
在这里插入图片描述
在这里插入图片描述

在完成数据集的收集准备后,打开jupyter notebook平台,导入数据集通过以下代码可以计算出数据集的总图片数量。本次使用的数据集总图片为4000张。

import pathlibdata_dir = "./dataset/"
data_dir = pathlib.Path(data_dir)
image_count = len(list(data_dir.glob('*/*')))
print("图片总数为:",image_count)

然后划分TensorFlow的image_dataset_from_directory方法划分测试集和训练集。再构建模型。在本文中如下图所示

加载resnet50模型

model = keras.applications.ResNet50(weights='imagenet', include_top=True)

这段代码的目的是使用Keras库加载预训练的ResNet50模型,并将其应用于图像分类任务。

具体解释如下:

  • keras.applications.ResNet50: 这是Keras库中的一个函数,用于加载ResNet50模型。ResNet50是一个已经定义好的模型架构,包含了数十个卷积层、池化层和全连接层,用于图像分类任务。

  • weights=‘imagenet’: 这个参数指定了模型所使用的权重。'imagenet’是一个大规模的图像数据集,ResNet50在该数据集上进行了预训练,因此通过设置这个参数,我们可以加载已经在该数据集上训练好的权重。这样的预训练权重可以提供较好的特征表示能力,有助于提升模型在图像分类任务上的性能。

  • include_top=True: 这个参数指定是否包含模型的顶层(即全连接层)。当设置为True时,加载的模型将包含原始ResNet50模型的所有层,包括最后的全连接层,用于输出分类结果。如果我们只需要使用ResNet50的特征提取能力而不需要分类层,则可以将该参数设置为False。

然后开始训练,其训练过程如下图所示

image-20230716185849191

通过上图可知,通过20轮迭代训练,在最后一轮迭代完成后,模型在测试集上面的精度为0.9875,精度还是非常高的。接下来就是打印下ACC曲线图和LOSS曲线图以及混淆矩阵图等。通过图片可知,算法的拟合度还是比较理想的。

image-20230716190205600 image-20230716190227657 image-20230716190238279

真实动物测试

在完成模型训练后,通过model.save方法保存模型为本地文件,然后就可以基于改模型开发出非常多的应用了,比如开发出API接口给别人调用等。

在本项目中基于Django框架开发了一个网页版的动物识别界面,在该网页界面系统中,用户可以点击鼠标上传一张动物图片,然后点击按钮进行检测。同时可以将相关识别的相关信息保存在数据库中,管理员通过登录后台可以查看所有的识别信息,为模型优化提供数据支持。

  • 效果图片
    在这里插入图片描述

虚拟动物测试

虽然流程通了,但是识别一张图片要耗时 10 分钟!这推理速度,我觉得还能优化。

接着我从百度图片中下载了 12 张动物图片 — 组成十二生肖。

输入给了我手写的神经网络,希望它能正确的识别出来,顺便也测试一下开发板网络的鲁棒性。

下面是十二生肖图片的识别结果
在这里插入图片描述

子鼠,识别结果为 mink — 水貂,识别错误,扣一分。

不过这个老鼠是不是有那么点像水貂?

在这里插入图片描述

丑牛,识别为 ox - 公牛,识别正确!加一分。
而且还是公牛,是根据上翘的尾巴做的区分吗?

在这里插入图片描述

寅虎,识别为 tiger - 老虎,识别正确!加一分。

这萌萌的老虎特征这么明显,要是识别错,那可以下班了。
在这里插入图片描述

卯兔,识别为 hare - 野兔,识别正确!加一分。

这站立的姿势,警觉地竖起的耳朵,野兔无疑了。

在这里插入图片描述

在这里插入图片描述

辰龙,识别成 harp - 竖琴,识别错误,不减分。

神经网络识别不出来龙,真的不怪神经网络,因为它的类比分类里就没有中国龙这一类。

不过识别成竖琴的话,看这弯曲的身形,还确实是有点神似。

在这里插入图片描述

巳蛇,识别为 garter snake - 袜带蛇,识别正确!加一分。
虽然我不知道什么事袜带蛇,但它说是,就是了。

在这里插入图片描述

午马,识别成 Mexican hairless - 墨西哥无毛犬,识别错误,减一分。
这个不应该的。

是不是因为这匹马身上太光滑,没有马儿们标志性的鬃毛么? 但是那飘逸的尾巴,也能说明问题啊。
在这里插入图片描述

未羊,识别成 ram - 公羊,算是识别正确吧。

我感觉识别出是绵羊更好一些。

在这里插入图片描述

申猴,识别出 macaque - 猕猴,识别正确,加一分。

看这身形和毛发,这么像猕猴桃,是猕猴了!
在这里插入图片描述

酉鸡,识别出 cock - 公鸡,识别正确,加一分。这个是送分题。

在这里插入图片描述

戌狗,识别出 Samoyed - 萨摩耶,识别正确,加一分。

这一身雪白的气质,小萨独有。

在这里插入图片描述

亥猪,识别出 hog - 猪,识别正确,加一分。

二师兄小时候,还是很可爱的。

优化完神经网络之后,识别这 12 张图片,总共花了十来分钟。

十二生肖,共 12 种动物类别,剔除“龙”这一项,因为模型分类中没有,其他11个分类,有两个识别错误,分别是老鼠识别成了水貂,骏马识别成了墨西哥无毛犬。

整体识别成功率 81%,还算不错,如果硬件的推理速度再快一些,OrangePi AIpro开发板将无敌

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

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

相关文章

电脑意外出现user32.dll丢失的八种修复方法,有效解决user32.dll文件丢失

遇到与 user32.dll 相关的错误通常是因为该文件已损坏、丢失、或者与某些软件冲突。今天这篇文章寄给大家介绍八种修复user32.dll丢失的方法,下面是一步步的详细教程来解决这个问题。 1. 重新启动电脑 第一步总是最简单的:重新启动你的电脑。许多小问题…

springboot依赖管理和自动配置

依赖管理和自动配置 依赖管理和自动配置依赖管理什么是依赖管理修改自动仲裁/默认版本号 starter场景启动器starter场景启动器基本介绍官方提供的starter第三方starter 自动配置自动配置基本介绍SpringBoot自动配置了哪些?如何修改默认配置如何修改默认扫描包结构resources\ap…

Vue路由守卫的使用

示例如下:(第一张图)当你点击车1的时候你写了路由守卫就点不开出现无权访问 (第二张图,就是可以访问后的图)有路由守卫点不开的情况下当你在本地存储中写了你在路由守卫中写的东西就可以进入了 你需要在r…

飞书API 2-1:如何通过 API 创建文件夹?

本文探讨如何通过飞书的 API 来创建文件夹。通过 API 创建的文件夹,一般是放在共享空间,如果要放在个人空间,建议手动创建。 查看 API 文档 API 路径,可在飞书开放平台的服务端 API,依次查找云文档>云空间>文件…

Iptables深入浅出

1、iptables的基本概念 众所周知iptables是Linux系统下自带免费的包过滤防火墙。其实不然,iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”…

05-5.3.1_1 二叉树的先中后序遍历

👋 Hi, I’m Beast Cheng👀 I’m interested in photography, hiking, landscape…🌱 I’m currently learning python, javascript, kotlin…📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

大家来决定:python-office运行时的提示信息,要不要删除?

​ 大家好,这里是程序员晚枫,今天想请大家投票决定一下:运行python-office时的下面这种中文提示信息,要不要全部都取消了?👇 为什么加这个提示? 我是在2022年发布的这个开源项目,并…

算法排序之冒泡排序及优化

public class Bubbling {public static void main(String[] args) {// 定义需要排序的数组int[] arr {0,1,21,2,31,12,5,8};// 冒泡排序方法bubbleSort(arr);bubbleOptSort(arr);}/*** 冒泡排序* param arr 数组*/public static void bubbleSort(int[] arr){// i0,…

Python编程环境搭建

简介: Python环境安装比较简单,无需安装其它依赖环境,主要步骤为: 1. 下载并安装Python对应版本解释器 2. 下载并安装一个ide编码工具 一、下载并安装Python解释器 1.1 下载 官网地址:Welcome to Python.org 选择…

Java云HIS医院管理系统源码 B/S架构 一体化电子病历系统源码 基于云端SaaS平台源码,采用B/S(Browser/Server)架构

“云”指系统采用云计算的技术和建设模式,具有可扩展、易共享、区域化、易协同、低成本、易维护、体验好的优势。“H”是医疗卫生,由原来医院 (Hospital)到现在的医疗卫生 (Healthcare),拓展了 H的内涵与外延。云 HIS 重新定义了医院信息系统…

【笔记】为什么不同硬件的1T实际硬盘容量硬盘是954GB或者931GB?

问题描述 不管是电脑还是移动硬盘,厂家描述的1T硬盘容量都不是计算机知识领域内真正的1T大小,硬盘容量实际是小于1TB的。 另外还发现对于1TB的不同厂家设备有着实际不同的磁盘容量,比如为什么有的1T电脑硬盘是954GB,而移动硬盘是…

用Python分析《三国演义》中的人物关系网

用Python分析《三国演义》中的人物关系网 三国演义获取文本文本预处理分词与词频统计引入停用词后进行词频统计构建人物关系网完整代码 三国演义 《三国演义》是中国古代四大名著之一,它以东汉末年到晋朝统一之间的历史为背景,讲述了魏、蜀、吴三国之间…

zabbix自定义监控mysql状态和延迟

zabbix自定义监控mysql状态和延迟 文章目录 zabbix自定义监控mysql状态和延迟zabbix自定义监控mysql状态配置主从配置自定义监控添加监控项添加触发器模拟测试异常 zabbix自定义监控mysql延迟配置自定义监控添加监控项添加触发器测试 zabbix自定义监控mysql状态 配置主从 1.安…

FreeRTOS简单内核实现5 阻塞延时

文章目录 0、思考与回答0.1、思考一0.2、思考二0.3、思考三 1、创建空闲任务2、实现阻塞延时3、修改任务调度策略4、提供延时时基4.1、SysTick4.2、xPortSysTickHandler( )4.3、xTaskIncrementTick( ) 5、实验5.1、测试5.2、待改进 0、思考与回答 0.1、思考一 为什么 FreeRTO…

hbuilderx如何创建html模板

需求:想要将34.html文件的内容作为一个模板,以便后续直接能创建类似内容的html文件 1 首先ctrlc复制模板文件 2 在顶部菜单栏点击 文件 -> 新建 或者使用快捷键 CtrlN 3 在弹出的对话框中选择【自定义模板】 4 将第一步复制的模板文件复制到弹出的文件…

Android Studio项目升级报错:Namespace not specified

原项目升级AGP到8.0时报错: Namespace not specified. Specify a namespace in the modules build file: C:\Users\Administrator\Desktop\MyJetpack\app\build.gradle. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about…

IT人的拖延——这个任务太复杂,太难了怎么办?

随着科技的发展,IT人需要不断地运用新技术来解决更多传统方式难以解决的问题,有些问题真的不是不想解决,而是真的太复杂,太难了,根本不知道从何开始,也没有什么前辈的经验可以借鉴。我们这些对事情难度的认…

软链接和硬链接的详解 (Linux系统下)

文章目录 硬链接的引入软链接和硬链接的形成软链接硬链接 软硬链接区别的探究硬链接数结语 硬链接的引入 当我们在命令行中输入ll时会出现很多行信息,详情请看下面的图 ~~~~εεε( ̄▽ ̄) 我在之前的几篇Linux的文章也讲过哦 (o゚v…

ARM32开发--电源管理单元

知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 PMU 电源域 VDD/VDDA域 备份域 1.2V域 省电模式 睡眠模式 深度睡眠模式 待机模式 几种模式总结 WFI和WFE指令 案例需求 模式初始化 源码 总结 前言 在嵌入式系统中,有效的电池管…

buuctf-findKey

exe文件 运行发现这个窗口,没有任何消息 32位 进入字符串就发现了flag{ 左边红色代表没有F5成功 我们再编译一下(选中红色的全部按p) LRESULT __stdcall sub_401640(HWND hWndParent, UINT Msg, WPARAM wParam, LPARAM lParam) {int v5; // eaxsize_t v6; // eaxDWORD v7; /…