【OrangePi AIpro】: 探索AI加成的开源硬件魅力


鑫宝Code

🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"


文章目录

  • Orange Pi: 探索开源硬件的魅力
    • 引言
    • Orange Pi概述
    • OrangePi AIPro产品介绍
    • 试用体验
      • 安装前准备
      • 开机联网
      • 体验 AI 应用样例
        • Image_HDR_Enhance样例
        • CartoonGAN 图像风格迁移
      • 开源项目--给视频人物加上眼线
    • 写在最后
      • 负载能力
      • 散热效能
      • 噪音控制

Orange Pi: 探索开源硬件的魅力

在这里插入图片描述

引言

在嵌入式系统的世界里,开源硬件平台如Raspberry PiArduino早已成为创新者、教育者和爱好者的首选。然而,在这个领域中,还有一颗璀璨的明星——Orange Pi。本文将深入探索Orange Pi的起源、特点以及其在教育、项目开发和物联网应用中的潜力。

Orange Pi概述

什么是Orange Pi?

Orange Pi是深圳市橙子科技有限公司开发的一系列开源单板计算机(SBC)。它以提供高性价比的硬件解决方案而闻名,旨在为开发者提供一个功能强大且成本低廉的开发平台。

历史与背景

Orange Pi项目始于2014年,起初是为了与Raspberry Pi竞争,但很快发展出自己的特色。Orange Pi不断推出新的版本,从最初的H2+到后来的Zero Plus2、Orange Pi 4等,每一款都针对不同的需求进行了优化。

OrangePi AIPro产品介绍

在这里插入图片描述

特性描述
处理器4核64位处理器 + AI处理器
AI算力支持8-12TOPS
内存8GB / 16GB LPDDR4X
存储可外接32GB / 64GB / 128GB / 256GB eMMC模块
图形处理器集成
显示输出双4K HDMI输出
- HDMI输出x2
- M.2插槽支持SATA/NVMe SSD 2280
- USB 3.0x2
- Micro USB(串口打印调试功能)
- MIPI摄像头接口x2
- 电池接口预留
应用领域AI边缘计算、深度视觉学习、视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等
操作系统支持Ubuntu, openEuler
用途AI算法原型验证、推理应用开发

详情查看官网链接

试用体验

安装前准备

设备名称描述
Type-C PD-65W适配器提供电力输入,用于为开发板供电。
32G TF卡已经由官方预置,包含基本的操作系统或固件。
开发板包括散热风扇等配件已安装完毕,核心硬件。
TF卡读卡器用于将TF卡连接至电脑,以便烧录新的操作系统或固件。
HDMI线用于连接开发板的HDMI输出端口至显示器或笔记本的HDMI输入端口。
显示屏可选,如果你计划使用笔记本的屏幕,需要确保它支持HDMI输入。
有线键盘用于输入命令和文本,确保与开发板的USB或Type-C接口兼容。
有线鼠标提供额外的控制方式,确保与开发板的USB或Type-C接口兼容。

个人需要准备HDMI线,显示器,有线键盘有线鼠标就可以啦。官方自带了32G TF卡和烧录好的镜像文件😍

在这里插入图片描述

开机联网

我们将相关线材都插入后,就可以点亮机器了。当电源插上的时候。我们可以看到显示器上显示如下的画面。在这里插入图片描述

这里密码是 Mind@123

在这里插入图片描述

输入密码后,我们就进入了系统,我们先连接WiFi,点击右上角的WiFi图标,选择要连接的WiFi即可。
在这里插入图片描述

体验 AI 应用样例

根据文档所言,我们进入samples目录,能看到8个项目文件,以及一个start_notebook.sh 文件,我们运行start_notebook.sh 文件,本地启动一个Jupyter 环境。我们复制本地的URL到浏览器打开。

项目运行时,开发版的温度在40多度左右,摸上去稍微发烫,还是不错的👍

cd samples/
./start_notebook.sh

在这里插入图片描述
这样我们就可以看到对应的Jupyter网页了。

这里有8个项目,我选择了2个感兴趣的项目进行运行。

Image_HDR_Enhance样例

这个项目主要是对曝光不足的项目进行HDR效果增强。
在这里插入图片描述
我们点击Jupyter notebook进行运行。
在这里插入图片描述
可以看到结果如上所示,消耗的时候是264ms ,可以看出这块开发版的AI性能还是蛮快的。

CartoonGAN 图像风格迁移

这个项目主要是对图像进行卡通处理话,我们仍然点击Jupyter notebook进行运行。
原图是这样的,
在这里插入图片描述

经过动画后,可以看到运行结果如下:
在这里插入图片描述

开源项目–给视频人物加上眼线

既然OrangePi AIpro 擅长AI 推理,那我们能够想到的就是采用一些比较流行的OpenCV项目来进行验证。
目前采用的项目地址如下:

https://github.com/kaushil24/Artificial-Eyeliner/

项目概述

本项目的核心在于开发一种智能算法,旨在为静态图像中的面部自动添加眼线效果。这一过程涉及多个步骤,从精准定位面部特征开始,到细致描绘眼部轮廓,最终实现自然美观的眼线增强。以下是整个流程的精炼概述:

关键点提取
在这里插入图片描述

算法首先从每张人脸中精确提取出68个关键界标点,其中特别关注于与眼睛相关的第37至48号点,这些点构成了左眼和右眼的上下边缘。

插值技术

为了创建流畅且自然的眼线,我们对提取的关键点进行插值处理,通过在相邻点间增加虚拟点来构建平滑的线条。这一过程确保了眼线的连续性和美感。

眼线算法

流程图清晰地勾勒出了算法的执行逻辑:

  1. 首先,利用OpenCV将图像转化为NumPy数组,便于数学运算和图像处理。
  2. 接着,通过face_detector()函数定位脸部边界框,获取关键的坐标信息。
  3. 对于每一帧中的每一副脸庞,提取68个特征点,并从中选取与眼睛相关的点集。
  4. 使用getEyeLandmarkPts()函数,进一步细化为四个矩阵,分别代表左眼的上眼睑、下眼睑,以及右眼的相应部分。
def getEyeLandmarkPts(face_landmark_points):'''Input: Coordinates of Bounding Box single faceReturns: eye's landmark points'''face_landmark_points[36][0]-=5face_landmark_points[39][0]+=5face_landmark_points[42][0]-=5face_landmark_points[45][0]+=5L_eye_top = face_landmark_points[36: 40]L_eye_bottom = np.append(face_landmark_points[39: 42], face_landmark_points[36]).reshape(4,2)R_eye_top = face_landmark_points[42:  46]R_eye_bottom = np.append(face_landmark_points[45:48], face_landmark_points[42]).reshape(4,2)return [L_eye_top, L_eye_bottom, R_eye_top, R_eye_bottom]
  1. 为达到更加逼真的视觉效果,调整端点位置,使其略微向外延伸,增加眼线的连贯性。
  2. 运用interpolateCoordinates()函数对每条曲线进行插值,确保线条的流畅度。
def interpolateCoordinates(xy_coords, x_intrp):x = xy_coords[:, 0]y = xy_coords[:, 1]intrp = interp1d(x, y, kind='quadratic')y_intrp = intrp(x_intrp)y_intrp = np.floor(y_intrp).astype(int)return y_intrp
  1. 最后,通过drawEyeLiner()函数,基于插值后的坐标,绘制出连续的眼线,分别针对左眼和右眼。
def drawEyeliner(img, interp_pts):L_eye_interp, R_eye_interp = interp_ptsL_interp_x, L_interp_top_y, L_interp_bottom_y = L_eye_interpR_interp_x, R_interp_top_y, R_interp_bottom_y = R_eye_interpoverlay = img.copy()# overlay = np.empty(img.shape)# overlay = np.zeros_like(img)for i in range(len(L_interp_x)-2):x1 = L_interp_x[i]y1_top = L_interp_top_y[i]x2 = L_interp_x[i+1]y2_top = L_interp_top_y[i+1]cv2.line(overlay, (x1, y1_top), (x2, y2_top), color, thickness)y1_bottom = L_interp_bottom_y[i]y2_bottom = L_interp_bottom_y[i+1]cv2.line(overlay, (x1, y1_bottom), (x1, y2_bottom), color, thickness)for i in range(len(R_interp_x)-2):x1 = R_interp_x[i]y1_top = R_interp_top_y[i]x2 = R_interp_x[i+1]y2_top = R_interp_top_y[i+1]cv2.line(overlay, (x1, y1_top), (x2, y2_top), color, thickness)y1_bottom = R_interp_bottom_y[i]y2_bottom = R_interp_bottom_y[i+1]cv2.line(overlay, (x1, y1_bottom), (x1, y2_bottom), color, thickness)# background = Image.fromarray(img) # .convert("1")# foreground = Image.fromarray(overlay).convert("1")# newImg = Image.composite(foreground, background, foreground)#, mask='1')# # img = cv2.bitwise_and(overlay, img)# return cv2.cvtColor(np.array(newImg), cv2.COLOR_RGB2BGR)overlay_crop = overlay[min(L_interp_bottom_y) - 50 : max(L_interp_top_y) + 50, L_interp_x[0]-50 : L_interp_x[-1] + 50 ]# print(max(L_interp_top_y) + 15, min(L_interp_bottom_y) - 15, L_interp_x[0]-10, L_interp_x[-1] + 10 )return overlay, overlay_crop

调用项目

该项目的用发非常简单,首先从Github上克隆到本地

git clone https://github.com/kaushil24/Artificial-Eyeliner/

接下来,打开命令提示符并键入以下代码以运行示例测试

# 安装依赖文件
pip install -r requirements.txt
python3 eyeliner.py -v "Media/Sample Video.mp4"

我们也可以通过将视频路径放在参数中来使用自己的视频。完整的CLI命令如下:

python eyeliner.py [-i image] [-v video] [-d dat] [-t thickness] [-c color] [-s save]

每个参数的具体含义如下:

  • i :要在其上绘制眼线的图像的路径
  • v :要在其上绘制眼线的视频的路径。
  • v :也可以通过网络摄像头获取视频。例如:python3 -v webcam -s “Webcam output”
  • t :整数(整数)以设置眼线的厚度。默认值= 2。推荐的数值介于1-5之间
  • d:shape_predictor_68_face_landmarks.dat文件的路径。默认路径在根目录中。除非将shape_predictor_68_face_landmarks.dat文件存储在其他位置,否则不需要使用此参数。
  • c :更改眼线的颜色。语法-c 255 255 255。默认值= 0 0 0。其中每个数字代表其RGB值。
  • s :要将输出保存到的位置和文件名。注意程序在保存文件时会自动添加扩展名。如果已经存在同名文件,它将覆盖该文件。

采用项目的数据我们可以得到如下的图:
在这里插入图片描述

写在最后

负载能力

此款开发版展现出了惊人的负载处理能力,它不仅在处理图片HDR上,甚至在视频上都有着很快的速度,在HDR上小号的的时间是200多ms,在视频给人物加上眼线也表现的很出色。

散热效能

在散热设计上,Orange AI Pro同样交出了一份满意的答卷。即便在连续运行1小时的高强度测试中,得益于其内置的高效散热风扇,主板温度始终维持在一个令人安心的低位。

噪音控制

在噪音控制方面,Orange AI Pro再次展现了其细腻的设计考量。除了启动的瞬间,会听到轻微的启动声,日常运行中,无论是执行繁重的AI模型运算,还是进行常规任务处理,其静谧无声的表现几乎让人忘记了风扇的存在,营造出一个宁静而专注的工作环境,体现了其在用户体验上的精益求精。

确实,Orange Pi AIpro作为一款源自本土创新的开发板,其设计思路和易用性令人赞叹。遵循详尽的官方文档,即便是初学者也能迅速上手,仿佛一位亲切的导师引领着每一步操作,让复杂的技术变得触手可及。

更让人瞩目的是,这款开发板搭载了令人印象深刻的8至20TOPS的AI算力,犹如一颗强劲的心脏,为前沿的AI探索注入了无限活力。丰富的扩展接口,如同一块空白的画布,等待着开发者们挥洒创意,无论是智能家居的智慧构建,还是物联网领域的无尽可能,Orange Pi AIpro都展现出了非凡的潜力和适应性。

它的到来,仿佛是一位多才多艺的艺术家,既能在智能家居的舞台上大放异彩,又能游刃有余地穿梭于各式各样的AIoT场景之中。凭借着卓越的性能和高度的灵活性,Orange Pi AIpro无疑是嵌入式AI领域的一股清流,为未来的项目研发铺设了一条充满机遇的道路,其稳定性和可靠性更是为创新之旅保驾护航。

总之,Orange Pi AIpro不仅仅是一款开发板,它是通往未来智能世界的一把钥匙,引领着我们走向更加智能、互联的生活。。

参考资料:
【香橙派教程】Orange Pi AIpro一键上手及黑科技功能演示

End

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

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

相关文章

—张pdf怎么分割成多页,怎么把一个pdf分割

在数字化时代,pdf文件已经成为我们工作和生活中不可或缺的一部分。然而,有时候我们可能会遇到需要将一张pdf文件分割成多页的情况。无论是为了便于分享,还是为了满足特定的文档格式要求,这个任务都可能变得相当棘手。但别担心&…

zookeeper+kafka消息队列群集部署

一、消息队列 1.消息队列 消息是应用间传送的数据 消息队列是应用见的通信方式,消息发送后立即返回,由消息系统确保消息可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发…

设计模式学习(二)工厂模式——抽象工厂模式+注册表

设计模式学习(二)工厂模式——抽象工厂模式注册表 前言使用简单工厂改进使用注册表改进参考文章 前言 在上一篇文章中我们提到了抽象工厂模式初版代码的一些缺点:①客户端违反开闭原则②提供方违反开闭原则。本文将针对这两点进行讨论 使用…

CSS-0_3 CSS和单位

文章目录 CSS的值和单位属性值长度单位CSS和绝对单位CSS和相对单位百分比em & rem视口 颜色单位 碎碎念 CSS的值和单位 我们知道,CSS是由属性和属性值所组成的表 随着CSS的发展,属性不说几千也有几百,我从来不支持去背诵所有的可能性。…

昇思25天学习打卡营第22天|基于MindSpore的红酒分类实验

基于MindSpore的红酒分类实验 K近邻算法实现红酒聚类 1、实验目的 了解KNN的基本概念;了解如何使用MindSpore进行KNN实验。 2、K近邻算法原理介绍 K近邻算法(K-Nearest-Neighbor, KNN)是一种用于分类和回归的非参数统计方法,…

WPF 手撸插件 一

1、本文主要使不适用第三方工具,纯手工的WPF主项目加载另一个WPF的项目,这里我们加载的是*.exe。 2、项目结构如下图。AbstractionLayer用于创建插件的接口。WPFIPluginDemo是主程序。WpfPlugin3是要加载的插件程序。 3、 AbstractionLayer中添加接口IP…

jvm常用密令、jvm性能优化、jvm性能检测、Java jstat密令使用、Java自带工具、Java jmap使用

1.jps是Java虚拟机的进程状态工具,用于列出正在运行的Java进程 jps命令的使用:cmd打开直接jps 1.1不带参数: jps 默认情况下,列出所有正在运行的 Java 进程的进程 ID 和主类名。 1.2 -l:显示完整的主类名或 JAR 文件…

计算机的错误计算(三十二)

摘要 在计算机的错误计算(二十八)与(三十 一)中,我们探讨了 Visual Studio 对 6个随机exp(x)函数的计算精度问题。根据网友的反馈,本节将展示 Python 对它们的输出:结果几乎与 Visual Studio …

MyBatis框架学习笔记(四):动态SQL语句、映射关系和缓存

1 动态 SQL 语句-更复杂的查询业务需求 1.1 动态 SQL-官方文档 (1)文档地址: mybatis – MyBatis 3 | 动态 SQL (2)为什么需要动态 SQL 动态 SQL 是 MyBatis 的强大特性之一 使用 JDBC 或其它类似的框架,根据不同条…

链接追踪系列-09.spring cloud项目整合elk显示业务日志

准备工作: 参看本系列之前篇:服务器安装elastic search 本机docker启动的kibana-tencent 使用本机安装的logstash。。。 本微服务实现的logstash配置如下: 使用腾讯云redis 启动本机mysql 启动本机docker 启动nacos,微服务依赖它作为…

为什么要使用加密软件?

一、保护数据安全:加密软件通过复杂的加密算法对敏感数据进行加密处理,使得未经授权的人员即使获取了加密数据,也无法轻易解密和获取其中的内容。这极大地提高了数据在存储、传输和使用过程中的安全性。 二、遵守法律法规:在许多国…

实验六:频域图像增强方法

一、实验目的 熟练掌握频域滤波增强的各类滤波器的原理及实现。分析不同用途的滤波器对频域滤波增强效果的影响,并分析不同的滤波器截止频率对频域滤波增强效果的影响。二、实验原理 ① Butterworth 低通滤波器:一种具有最大平坦通带幅度响应的滤波器。它的特点是在通带内具…

Dify中固定递归字符文本分割器的chunk长度计算方式

本文主要从源码角度剖析了Dify中FixedRecursiveCharacterTextSplitter的chunk长度计算方式。 1.self._length_function(chunk) 源码位置:dify\api\core\splitter\fixed\_text\_splitter.py\FixedRecursiveCharacterTextSplitter类\split\_text方法\self.\_length\_function(…

AutoHotKey自动热键(十一)下载SciTE4AutoHotkey-Plus的中文增强版脚本编辑器

关于AutoHotkey的专用编辑器, SciTE4AutoHotkey是一个免费的基于 SciTE 的 AutoHotkey 脚本编辑器,除了 DBGp 支持, 它还为 AutoHotkey 提供了语法高亮, 调用提示, 参数信息和自动完成, 以及其他拥有的编辑特性和辅助工具.XDebugClient 是一个基于 .NET Framework 2.0 的简单开…

buuctf-web

先输入127.0.0.1查找本地 得到网页目录,再输入127.0.0.1|ls查找下一级 得到php文件,127.0.0.1 | ls /返回上级目录 127.0.0.1 | cat /flag得到flag

如何提取视频中的音频?提取音频的几种方法

如何提取视频中的音频?提取视频中的音频,是许多人在处理多媒体内容时常遇到的需求。这一过程不仅仅是简单地从视听媒体中抽离音频部分,它背后蕴含着许多技术上的挑战和创意上的可能性。通过提取音频,你可以更方便地利用视频中的声…

object-C 解答算法:两数之和(leetCode-1)

两数之和(leetCode-1) 题目如下图:(也可以到leetCode上看完整题目,题号1) 解答方法一: 最简单的方法就是双指针遍历数组.代码如下 - (NSMutableArray *)sumOfTwoNumbers:(NSMutableArray *)array target:(int)target {NSMutableArray * resultArray [[NSMutableArray alloc…

【python】操作mysql数据库

一、操作步骤 MySQL是一个开源的关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)作为操作和管理数据的主要方式。MySQL具有以下特点: 开源:MySQL是开源软件,这意味着任何人…

数电基础 - 触发器

目录 ​编辑 一. 简介 二. SR锁存器 三. JK 触发器 四. D 触发器 五. 电平触发的触发器 六. 脉冲触发的触发器 七. 边沿触发的触发器 八 . 触发器的逻辑功能和描述方法 一. 简介 触发器是数字电路中的一种基本存储单元,具有记忆功能,能够存储一…

36.UART(通用异步收发传输器)-RS232(3)

(1)串口发送模块visio视图: (2)串口发送模块Verilog代码: /* 常见波特率: 4800、9600、14400、115200 在系统时钟为50MHz时,对应计数为: (1/4800) * 10^9 /20 -1 10416 …