🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"
文章目录
Orange Pi: 探索开源硬件的魅力
引言
在嵌入式系统的世界里,开源硬件平台如Raspberry Pi
和Arduino
早已成为创新者、教育者和爱好者的首选。然而,在这个领域中,还有一颗璀璨的明星——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号点,这些点构成了左眼和右眼的上下边缘。
插值技术
为了创建流畅且自然的眼线,我们对提取的关键点进行插值处理,通过在相邻点间增加虚拟点来构建平滑的线条。这一过程确保了眼线的连续性和美感。
眼线算法
流程图清晰地勾勒出了算法的执行逻辑:
- 首先,利用OpenCV将图像转化为NumPy数组,便于数学运算和图像处理。
- 接着,通过
face_detector()
函数定位脸部边界框,获取关键的坐标信息。 - 对于每一帧中的每一副脸庞,提取68个特征点,并从中选取与眼睛相关的点集。
- 使用
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]
- 为达到更加逼真的视觉效果,调整端点位置,使其略微向外延伸,增加眼线的连贯性。
- 运用
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
- 最后,通过
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不仅仅是一款开发板,它是通往未来智能世界的一把钥匙,引领着我们走向更加智能、互联的生活。。