AI开发初体验:昇腾加持,OrangePi AIpro 开发板
文章目录
- 一、前言
- 二、板子介绍
- 2.1 拆箱
- 2.2 板子规格
- 2.2.1 常规项目
- 2.2.2 扩展项目
- 2.2.3 操作系统
- 2.3 点板画面
- 三、AI程序初体验
- 3.1 新奇的地方
- 3.2 运行第一个AI程序
- 3.2.1 硬件连接
- 3.2.2 串口连接
- 3.2.3 开启外部IP端口
- 3.2.4 查询板子IP地址
- 3.2.5 了解 juypter lab 启动脚本
- (1)samples 目录
- (2)查看 start\_notebook.sh 脚本
- 3.2.6 启动 juypter lab
- 3.2.7 登入 juypter lab 开发环境
- 3.2.8 编译、运行AI程序:01-yolov5
- 3.3 其他例子
- 3.3.1 文字识别:02-ocr
- 3.3.2 图像分类:03-resnet
- 3.3.3 制作卡通图片:05-cartoonGAN\_picture
- 四、篇尾
一、前言
因为工作需要,以及个人兴趣,本人经常购买开发板进行调试、学习,但具备AI计算的开发板,本人尚未体验过,究其原因,是因为自觉知识储备可能无法胜任AI的开发工作。然而,在体验了OrangePi AIpro 开发板之后,却大大改变了我的看法——AI时代,真的已经来临!
二、板子介绍
OrangePi AIpro 开发板是香橙派联合华为精心打造的高性能 AI 开发板,其内置华为昇腾 AI 处理器,作为国产AI 芯片翘楚,实乃开发板的一大亮点!
2.1 拆箱
- 拆开包装,可见板子设计的相当精巧,裸板尺寸仅107*68mm,重量仅82克,搭配小巧的收纳盒,非常方便携带。而板子的小巧体积,也方便用做产品的原型开发,或直接用作二次开发。
2.2 板子规格
个人看法,从下列规格参数,从其接口数量和种类之多,可体会到 OrangePi AIpro 是一片相当不错的开发板,可应付日常开发中遇到的各种IO场景,举几个例子:
- 例如存储接口,32M的spi flash,足以存储并运行linux 小系统;而SD卡槽和eMMc卡槽,则可应付日常电子产品的存储需求,例如8G到64GB的eMMc,被广泛应用于TV、投影、平板、机顶盒、行车记录等等。而M.2接口,则可以用于大容量的数据储存,例如个人云存储、安防摄像头、小型电脑。
- 又如 HDMI TX接口,对于开发非常方便,只需接上家里任一显示器,就可见到板子操作画面;而 MIPI CSI/DSI 接口,则可用于适配许多主流摄像头、显示屏。
- 再如,所具备的40 pin 扩展口,均有多种功能复用,除默认的GPIO外,还可可配置成UART、I2C、SPI、PWM 等接口。
2.2.1 常规项目
- 型号:OrangePi AIpro
- CPU:昇腾 4 核 64 位 Arm 处理器 + AI 处理器 (310B4)
- 算力:半精度 4 TFLOPS、整数精度:8 TOPS
- 内存 :8GB (另有16GB版本)
- 存储:板载 32MB 的 SPI Flash、具备SD卡槽、eMMc卡槽、 M.2接口( NVMe SSD 或 SATA SSD)
- 网络:千兆有线网口、支持2.4G 和 5G 双频 WIFI • BT4.2
- USB:2 个 USB3.0 Host 接口 、1 个 Type-C 接口
- 音频:1 个 3.5mm 耳机孔,支持音频输入输出、2 个 HDMI 音频输出
- 视频输入:2 个 MIPI CSI 2 Lane 接口
- 视频输出:2 个 HDMI 接口 、1 个 MIPI DSI 2 Lane 接口
- 电源输入:Type-C 供电(20V PD-65W 适配器,非常好用)
2.2.2 扩展项目
- 40 pin 扩展口:用于扩展 UART、I2C、SPI、PWM 和 GPIO 等接口
- 按键:1 个复位键,1 个关机键,1 个升级按键
- 拨码开关:2 个,可控制从 SD 卡、eMMC 或SSD 启动系统
- 风扇接口:支持 4 Pin 0.8mm 间距,12V PWM 散热风扇
- 电池接口:2 pin,2.54mm 间距,用于接 3 串电池,支持快充
- 串口:Micro USB 接口的调试串口(调试很方便)
2.2.3 操作系统
ubuntu系统相信大部分人都已经使用过,也是本人最熟悉的系统,而 openEuler 则是华为正式发布操作系统,绝对是花粉的不二之选!
- 支持 Ubuntu 22.04
- 支持 openEuler 22.03
2.3 点板画面
因为出厂已经刷好了Ubuntu 22.04的系统,所以,收到后,整个点板的过程,就非常简单了:
- 首先,接入20V的Type C接口电源线;
- 其次,连接上HDMI线到显示器,上电即可看到下图画面。
- 备注:下图中,本人还连接上了网线、以及无线键盘鼠标,如此就可以如同使用x86 Ubuntu系统一样,使用开发板了!
三、AI程序初体验
作为一名熟悉Linux驱动开发的博主,本想写一些驱动的章节,但想一想,这不是暴殄天物吗?如此一片国产AI开发板,自然要以推广AI的学习、体验、应用为主!
3.1 新奇的地方
如本文开头所述,本人之前从未接触过AI开发,而本人也是香橙派的老用户了,手上已有其他3片香橙派不同Soc的开发板。
以前的这些开发板,都是使用交叉编译,从未想过在开发板上编译、运行、调试应用程序。
而 OrangePi AIpro 开发板,就是这么做的(虽然它也支持交叉编译),究其原因,如下:
- 因存在昇腾AI处理器,不仅可以支持代码开发和编译,同时还可以运行AI应用程序、进行训练脚本的迁移、开发、调试。
- 而在交叉编译服务器上,因不具备昇腾AI处理器,仅能用于代码开发、编译等不依赖于昇腾AI处理器的开发活动(例如ATC模型转换、算子、离线或在线的推理和训练、应用程序的纯代码开发)。
3.2 运行第一个AI程序
在运行AI程序前,我们需要先准备开发和运行环境,参照着 OrangePi AIpro 开发板的用户手册,可以很方便的完成平台搭建。因本人库存的屏幕太小,仅有7寸,不太方便直接在7寸屏上操作,所以,下面的实验,本人稍作了一些改动,省去了让开发板连接HDMI显示器的步骤,供大家参考。
3.2.1 硬件连接
- 串口:使用对应接口USB线(需购买),连接开发板MicroUSB 接口和 PC 的USB口,可看到设备管理器中多出了一个CH343的USB转串口设备。
- 电源:使用开发板套件的20V PD-65W 适配器即可,用TypeC口连接到开板,给板子供电。
- 网口:连接到自己的路由器上,需要能上网,因为后面需要安装许多软件工具,以及开启Samba、Web端口。
3.2.2 串口连接
因板子直接提供了MicroUSB串口,使得连线非常简单,连上MicroUSB线之后,按下图设置好串口,即可登录。
- 默认用户名: HwHiAiUswer
- 默认密码:Mind@123
- root密码:Mind@123
3.2.3 开启外部IP端口
- 开启端口,需要首先安装 ufw 防火墙,并设置相关规则
- 关于端口,因AI应用程序的编译、运行依赖于 juypter lab(一个基于web浏览器的程序),而默认程序的运行地址端口为 127.0.0.1:8888,所以,如果不是在本机运行浏览器,而是想通过局域网访问的话,就需要开启对外的8888端口。
(1)获取root权限
(base) HwHiAiUser@orangepiaipro:~$ sudo su
[sudo] password for HwHiAiUser: (2)安装防火墙
(base) root@orangepiaipro:/home/HwHiAiUser# apt install ufw(3)设置防火墙端口策略,开启对外8888端口
(base) root@orangepiaipro:/home/HwHiAiUser# ufw allow 8888
3.2.4 查询板子IP地址
- 如下图,使用ifconfig命令,查询到 eth0 的IP地址为:192.168.5.21
3.2.5 了解 juypter lab 启动脚本
juypter lab 可以简单把它看做是一个基于web的IDE,可以编辑、运行、调试本文所涉及的AI程序。
(1)samples 目录
- 进入如下samples目录,除了看到有9个AI Sample 程序外,还有一个 start_notebook.sh 脚本
(base) HwHiAiUser@orangepiaipro:~$ cd samples/notebooks/
(base) HwHiAiUser@orangepiaipro:~/samples/notebooks$ ls
01-yolov5 06-human_protein_map_classification
02-ocr 07-Unet++
03-resnet 08-portrait_pictures
04-image-HDR-enhance 09-speech-recognition
05-cartoonGAN_picture start_notebook.sh
(2)查看 start_notebook.sh 脚本
- 从下面启动脚本,可以获知 juypter lab的启动方式,我们需要以 --ip $1 的形式来启动,这样就不用外接一个显示器了,直接在PC上就可以通过 web浏览器来操作实验。
(base) HwHiAiUser@orangepiaipro:~/samples/notebooks$ more start_notebook.sh
. /usr/local/Ascend/ascend-toolkit/set_env.sh
export PYTHONPATH=/usr/local/Ascend/thirdpart/aarch64/acllite:$PYTHONPATHif [ $# -eq 1 ];thenjupyter lab --ip $1 --allow-root --no-browser
elsejupyter lab --ip 127.0.0.1 --allow-root --no-browser
fi(base) HwHiAiUser@orangepiaipro:~/samples/notebooks$
3.2.6 启动 juypter lab
- 如下图,执行 $ start_notebook.sh 192.168.5.21
- 启动完成后,复制如图所示的 http地址字符串,填入到浏览器地址栏中,即可打开 jupyter lab
3.2.7 登入 juypter lab 开发环境
- 如下图所示,将楼上复制的http地址字符串,填入到PC浏览器中,回车,即可登入 juypter lab 开发环境。
- 此IDE环境的各个功能区布局,一目了然,非常简单。
3.2.8 编译、运行AI程序:01-yolov5
YOLOv5 是系列中较为轻量的AI算法模型,适合在边缘设备部署,进行实时目标检测。这个程序,就如同一个 Helloworld,对于AI小白来说,很快便能联想到 AI应用程序的开发流程和应用场景。简单的说,这些开源的模型,或者算法,让AI应用开发工程师,可以跳过晦涩难懂的AI算法,直接进入AI模型的训练和AI应用开发阶段,如此,一扇大门,已为我们打开!
如下图所示:
- 先点击,进入到 01-yolov5 项目目录,这是一个基于目标检测的AI程序。
- 双击 main.lpynb 文件,此文件是在 Jupyter Lab 中运行 该样例的文件,双击打开,在右侧窗口中会显示 main.ipynb 文件的内容,同时在编译运行后,还能显示运行结果。
- 点击貌似快进播放的按键,让项目restart编译运行。
- 若干秒后,即显示运行结果。
动态画面显示:
3.3 其他例子
篇幅有限,不能将所有例子一一展示。最后,本人再抽出其中几个,分别是文字识别、图像分类和图像转化(卡通化),大家看看,它们是不是也非常有趣、非常实用呢?
3.3.1 文字识别:02-ocr
- 该AI程序可以解析出图片中的文字
3.3.2 图像分类:03-resnet
- 如下演示,输入图片,以94%的可能性,识别为一只标准贵宾犬
3.3.3 制作卡通图片:05-cartoonGAN_picture
- 功能:使用cartoonGAN模型对输入图片进行卡通化处理。
- 转化前,如下图,是一张自然的风景照
- 转化后,如下图,已具备卡通图的风格
四、篇尾
首先,总体来说,这次 OrangePi AIpro 开发板的体验是非常棒的。所提供的样例程序,都是日常中使用非常多的,例如图像分类,文字识别,语音识别等。同时也还有许多 AI 模型,通过昇腾ATC工具转换后,即可在开发板上使用,样例是非常的丰富。
其次,基于本次体验,本人也能很快想到一些应用场景,可以作为后续的开发尝试,举个例子,如今我们拍照已经非常方便,但也导致了一个结果,相机里的照片实在太多,比如幼儿园的老师,小学的老师,都会拍摄很多学生日常的校园照片,但苦于分类,也不知道哪个学生拍的多,哪个学生拍得少(那可得留意下哦,否则家长很生气哦)。就此,就可以利用本平台,开发一个照片的AI分类程序,对照片人物进行识别,经过模型训练后,即可将输入的照片分类到各个学生名字的目录下,还能统计各学生的照片数量,可以提醒老师给那些缺乏关注的孩子多拍些照片,而经过云存储对接后,还可方便的分享给家长,这样的AI程序,是不是很棒呢?
最后,作为一名程序员,虽然生活中,AI虽然已被广泛应用,但亲身体验一番AI应用程序的开发后,那感觉还是大不一样!AI 的时代,真的到来了,开始步入了寻常百姓家!
相关文章:

AI开发初体验:昇腾加持,OrangePi AIpro 开发板
文章目录 一、前言二、板子介绍2.1 拆箱2.2 板子规格2.2.1 常规项目2.2.2 扩展项目2.2.3 操作系统 2.3 点板画面 三、AI程序初体验3.1 新奇的地方3.2 运行第一个AI程序3.2.1 硬件连接3.2.2 串口连接3.2.3 开启外部IP端口3.2.4 查询板子IP地址3.2.5 了解 juypter lab 启动脚本&a…...

微服务架构下Docker容器技术与Kubernetes(K8S)
Kubernetes、微服务和Docker容器技术的结合提供了一个强大、灵活且高效的平台,能够应对现代应用程序的复杂性和动态性。Kubernetes的自动化管理、服务发现、负载均衡和配置管理,与Docker的标准化打包和运行环境相结合,最大化地发挥了微服务架…...
风萧萧兮易水寒,壮士一去兮不复还 的 rm 命令
风萧萧兮易水寒,壮士一去兮不复还 的 rm 命令 风萧萧兮易水寒,壮士一去兮不复还 的 rm语法几个示例/bin/rm Argument list too long – Linux”配合find与xargs完成删除海量文件使用find的delete选项 快速删除大文件 风萧萧兮易水寒,壮士一去…...

How Diffusion Models Work
introduction intuition goal 让神经网络学到图像是什么样的,一种方式是对数据添加不同级别的噪音,让神经网络能够区分细节/总体轮廓 训练一个神经网络去产生精灵 sampling nn 图像恢复 论文 https://zhuanlan.zhihu.com/p/686235079...

antd table列选中效果实现
前言 开发中有一个需要呈现不同时间点各个气象要素的值需求,我觉得一个table可以实现这类数据的展示,只是因为时间点时关注的重点,所以需要列选中效果,清晰的展示时间点下的要素数据。我选择的是antd的table组件,这个…...

Golang实现文件复制
方法:三种 package zdpgo_fileimport ("errors""io""os" )// CopyFile 使用io.Copy进行文件的复制,同时也会复制文件的所有权限 // param src 复制文件 // param des 目标文件 // return error 错误信息 func CopyFile(s…...

探秘SpringBoot默认线程池:了解其运行原理与工作方式(@Async和ThreadPoolTaskExecutor)
文章目录 文章导图Spring封装的几种线程池SpringBoot默认线程池TaskExecutionAutoConfiguration(SpringBoot 2.1后)主要作用优势使用场景如果没有它 2.1版本以后如何查看参数方式一:通过Async注解--采用ThreadPoolTaskExecutordetermineAsync…...

kubernetes(Jenkins、kubernetes核心、K8s实战-KubeSphere、)
文章目录 1. Jenkins1.1. 概述1.1.1. 简单部署1.1.2. 自动化部署1.1.3. DevOps概述1.1.4. CI/CD概述 1.2. jenkins介绍及安装1.2.1. 安装1.2.2. 解锁jenkins1.2.3. 安装推荐插件1.2.4. 创建管理员用户1.2.5. 升级jenkins版本1.2.6. 安装额外插件blue ocean1.2.7. jenkins界面说…...

国际数字影像产业园|科技与文创产品创意集市,共筑创新文化新高地
5月29日,为进一步增强园区与企业之间粘性,不断激发企业的创新活力,园区举办了“数媒大厦科技与文创产品创意集市活动”。本次活动由成都树莓信息技术有限公司主办,成都目莓商业管理有限公司、树莓科技(成都)…...

leetcode-55 跳跃游戏
leetcode Problem: 55. 跳跃游戏 思路 假设我们是一个小人,从第一个下标开始,每次经过一个位置,我们就可以根据当前位置的数值nums[i]和位置下标i计算出该位置所能到达的后续位置的最大值rnums[i]i。而这个r之前的区域一定都是可以经过的。…...

Vue——计算属性 computed 与方法 methods 区别探究
文章目录 前言计算属性的由来方法实现 计算属性 同样的效果计算属性缓存 vs 方法 前言 在官方文档中,给出了计算属性的说明与用途,也讲述了计算属性与方法的区别点。本篇博客只做自己的探究记录,以官方文档为准。 vue 计算属性 官方文档 …...

Java中的ORM框架——myBatis
一、什么是ORM ORM 的全称是 Object Relational Mapping。Object代表应用程序中的对象,Relational表示的是关系型数据库,Mapping即是映射。结合起来就是在程序中的对象和关系型数据库之间建立映射关系,这样就可以用面向对象的方式,…...

vue2生命周期和计算属性
vue2的生命周期 删除一些没用的 App.vue 删成这个样子就行 <template><router-view/></template><style lang"scss"></style>来到路由把没用的删除 import Vue from vue import VueRouter from vue-router import HomeView from .…...

Hadoop3:MapReduce之简介、WordCount案例源码阅读、简单功能开发
一、概念 MapReduce是一个 分布式运算程序 的编程框架,是用户开发“基于 Hadoop的数据分析 应用”的核心框架。 MapReduce核心功能是将 用户编写的业务逻辑代码 和 自带默认组件 整合成一个完整的 分布式运算程序 ,并发运行在一个 Hadoop集群上。 1、M…...

centos8stream 编译安装 php-rabbit-mq模块
官方GitHub:https://github.com/php-amqp/php-amqp 环境依赖安装 dnf install cmake make -y 1.安装rabbitmq-c cd /usr/local/src/ wget https://github.com/alanxz/rabbitmq-c/archive/refs/tags/v0.14.0.tar.gz tar xvf v0.14.0.tar.gz cd rabbitmq-c-0.14.0/…...

「异步魔法:Python数据库交互的革命」(二)
哈喽,我是阿佑,上篇文章带领了大家跨入的异步魔法的大门——Python数据库交互,一场魔法与技术的奇幻之旅! 从基础概念到DB-API,再到ORM的高级魔法,我们一步步揭开了数据库操作的神秘面纱。SQLAlchemy和Djan…...
php正则中的i,m,s,x,e分别表示什么
正则表达式模式修饰符(也称为标志或模式修饰符)用于改变正则表达式的行为。这些修饰符可以附加在正则表达式的定界符之后,通常为正斜杠(/)或井号(#),以改变搜索或替换的方式。 1、i…...

最新!2023年台湾10米DEM地形瓦片数据
上次更新谷歌倾斜摄影转换生成OSGB瓦片V1.1版本,使用该版本生产了台北、台中、桃园三个地方的倾斜摄影OSGB数据,在OSGB可视化软件中进行展示,可视化效果和加载效率俱佳。已经很久没更新地形瓦片数据,主要是热点地区的原始数据没有…...
网络学习(11) |深入解析客户端缓存与服务器缓存:HTTP缓存控制头字段及优化实践
文章目录 客户端缓存与服务器缓存的区别客户端缓存浏览器缓存应用程序缓存优点缺点 服务器缓存优点缺点 HTTP缓存控制头字段Cache-ControlExpiresLast-ModifiedETag 缓存策略的优化与实践经验分享1. 使用合适的缓存头字段2. 结合使用Last-Modified和ETag3. 利用CDN进行缓存4. 实…...
uniapp中二次封装jssdk和使用
直接上代码 // import wx from "weixin-js-sdk"; /*** 考虑到包的大小,所以直接在 index.html 文件中cdn引入了jssdk* <script src"https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>* 注意:这里 jWeixin 一…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...