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


鑫宝Code

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


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.0 x2
- 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 face
    Returns: eye's landmark points
    '''
    face_landmark_points[36][0]-=5
    face_landmark_points[39][0]+=5
    face_landmark_points[42][0]-=5
    face_landmark_points[45][0]+=5
    
    L_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_pts

    L_interp_x, L_interp_top_y, L_interp_bottom_y = L_eye_interp
    R_interp_x, R_interp_top_y, R_interp_bottom_y = R_eye_interp

    overlay = 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

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 07:06:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 07:06:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 07:06:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 07:06:04       69 阅读

热门阅读

  1. C++ 有用的资源

    2024-07-16 07:06:04       18 阅读
  2. Hello,World!(C++)

    2024-07-16 07:06:04       20 阅读
  3. Eclipse 创建 XML 文件

    2024-07-16 07:06:04       22 阅读
  4. Electron 为什么采用多进程,而不是单进程

    2024-07-16 07:06:04       18 阅读
  5. live555 rtsp服务器实战之createNewStreamSource

    2024-07-16 07:06:04       27 阅读
  6. MATLAB的mat文件转换成json文件

    2024-07-16 07:06:04       31 阅读
  7. 统计学随笔

    2024-07-16 07:06:04       23 阅读
  8. 暂停cPanel / WHM帐户的方法

    2024-07-16 07:06:04       20 阅读
  9. .NET C# 使用 iText 生成PDF

    2024-07-16 07:06:04       17 阅读
  10. 服务器的rabbitmq的guest账号登不进去

    2024-07-16 07:06:04       28 阅读