文章目录
OrangePi Kunpeng Pro ——信创再接力
1. 绪论
最近收到CSDN邀请,对OrangePi Kunpeng Pro 进入深入测评体验,感谢CSDN送来的OrangePi Kunpeng Pro开发板。作为AI开发者,我之前主要从事信创支持工作,曾经使用过寒武纪、昇腾、瑞芯微等厂商的开发板。这次收到新款的OrangePi Kunpeng Pro开发板,我感到非常兴奋,并决定展开一系列详细的测评。通过这次试用,我希望能够深入了解这款开发板的性能和应用潜力,并与大家分享我的开发经验和心得体会。
1.1 开箱
开机示例图,配置充电线:
系统打开界面图,采用开源OpenEuler系统,连接WIFI:
2. 硬件介绍
2.1 硬件配置
OrangePi Kunpeng Pro是一款基于ARM架构的高性能开发板,配备了强大的处理器和丰富的接口,适用于物联网、智能家居、机器人等多种应用场景。其主要特点包括:
- 高性能处理器:采用4核64位处理器+AI处理器,集成图形处理器,支持8TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出。本次收到OrangePi Kunpeng Pro为8GB+32GB.
- 丰富接口,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口等。
- 支持信创:支持openEuler操作系统,开箱默认安装;
- AI推理能力:满足大多数AI算法原型验证、推理应用开发的需求,同时可以为各种应用场景提供更高效的算力,如云计算、大数据、分布式存储、高性能计算等。
2.2 硬件清单
名称 | 类型 |
---|---|
处理器 | 4 核 64 位 Arm 处理器(鲲鹏) |
内存 | 类型: LPDDR4X 容量: 8 G B 8 G B 8GB 或 16 G B 16 G B 16GB |
存储 | 板载 32MB 的 SPI Flash Micro SD 卡插槽 eMMC 插座: 可外接 eMMC 模块 M. 2 M-Key 接口: 可接 2280 规格的 NVMe SSD 或 SATA SSD |
以太网 | 支持 10 / 100 / 1000 M b p s 10 / 100 / 1000 \mathrm{Mbps} 10/100/1000Mbps ・板载 PHY 芯片: RTL8211F |
Wi-Fi+蓝牙 | 支持 2.4 G 2.4 \mathrm{G} 2.4G 和 5 G 5 \mathrm{G} 5G 双频 WIFI - BT4. 2 模组: 欧智通 6221 B U U C 6221 \mathrm{BUUC} 6221BUUC |
USB | 2 个 USB3. 0 Host 接口 1 个 Type-C 接口 (只支持 USB3.0, 不支持 USB2.0) |
摄像头 | 2 个 MIPI CSI 2 Lane 接口 |
显示 | 2 个 HDMI 接口 1 个 MIPI DSI 2 Lane 接口 |
音频 | 1 个 3.5 m m 3.5 \mathrm{~mm} 3.5 mm 耳机孔, 支持音频输入输出 |
3. 网络测试
3.1 有线连接
连接本地网线,通过ssh登录
ssh [email protected]
登录成功后,通过ifconfig查看分配的网络地址
ifconfig
3.2 WIFI连接
查看周围热点信息;
nmcli dev wifi
4.查看系统配置
lacpu
# 查看内存信息
free -h
## 查看
lsblk
## 查看npu
npu-smi info
### 发现这里初始化的时候npu驱动出现问题,后续更新;
5. 安装常用软件
5.1 安装python
5.1.1 更换pip源为国内清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host https://pypi.tuna.tsinghua.edu.cn
5.2 安装docker
开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的操作系统上,也可以实现虚拟化部署。
sudo yum install docker -y
# 查看docker -v 版本
docker -v
5.3 安装opencv
OpenCV是开源计算机视觉库的简称,是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
pip install opencv-python
import cv2
print(cv2.__version__)
5.4 安装dlib
Dlib,包含用于在C ++中创建复杂软件以解决实际问题的机器学习算法和工具。广泛应用于工业界和学术界,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。
pip3 install dlib
运行一下程序,基于opencv和dlib库实现人脸嘴、眉毛 等部位;
#导入工具包
from collections import OrderedDict
import numpy as np
import argparse
import dlib
import cv2
#https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/
#http://dlib.net/files/
# 参数
ap = argparse.ArgumentParser()
ap.add_argument("-p", "--shape-predictor", default="shape_predictor_68_face_landmarks.dat",
help="path to facial landmark predictor")
ap.add_argument("-i", "--image", default="images/liudehua2.jpg",
help="path to input image")
args = vars(ap.parse_args())
FACIAL_LANDMARKS_68_IDXS = OrderedDict([
("mouth", (48, 68)),
("right_eyebrow", (17, 22)),
("left_eyebrow", (22, 27)),
("right_eye", (36, 42)),
("left_eye", (42, 48)),
("nose", (27, 36)),
("jaw", (0, 17))
])
FACIAL_LANDMARKS_5_IDXS = OrderedDict([
("right_eye", (2, 3)),
("left_eye", (0, 1)),
("nose", (4))
])
def shape_to_np(shape, dtype="int"):
# 创建68*2
coords = np.zeros((shape.num_parts, 2), dtype=dtype)
# 遍历每一个关键点
# 得到坐标
for i in range(0, shape.num_parts):
coords[i] = (shape.part(i).x, shape.part(i).y)
return coords
def visualize_facial_landmarks(image, shape, colors=None, alpha=0.75):
# 创建两个copy
# overlay and one for the final output image
overlay = image.copy()
output = image.copy()
# 设置一些颜色区域
if colors is None:
colors = [(19, 199, 109), (79, 76, 240), (230, 159, 23),
(168, 100, 168), (158, 163, 32),
(163, 38, 32), (180, 42, 220)]
# 遍历每一个区域
for (i, name) in enumerate(FACIAL_LANDMARKS_68_IDXS.keys()):
# 得到每一个点的坐标
(j, k) = FACIAL_LANDMARKS_68_IDXS[name]
pts = shape[j:k]
# 检查位置
if name == "jaw":
# 用线条连起来
for l in range(1, len(pts)):
ptA = tuple(pts[l - 1])
ptB = tuple(pts[l])
cv2.line(overlay, ptA, ptB, colors[i], 2)
# 计算凸包
else:
hull = cv2.convexHull(pts)
cv2.drawContours(overlay, [hull], -1, colors[i], -1)
# 叠加在原图上,可以指定比例
cv2.addWeighted(overlay, alpha, output, 1 - alpha, 0, output)
return output
# 加载人脸检测与关键点定位
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(args["shape_predictor"])
# 读取输入数据,预处理
image = cv2.imread(args["image"])
(h, w) = image.shape[:2]
width=500
r = width / float(w)
dim = (width, int(h * r))
image = cv2.resize(image, dim, interpolation=cv2.INTER_AREA)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 人脸检测
rects = detector(gray, 1)
# 遍历检测到的框
for (i, rect) in enumerate(rects):
# 对人脸框进行关键点定位
# 转换成ndarray
shape = predictor(gray, rect)
shape = shape_to_np(shape)
# 遍历每一个部分
for (name, (i, j)) in FACIAL_LANDMARKS_68_IDXS.items():
clone = image.copy()
cv2.putText(clone, name, (10, 30), cv2.FONT_HERSHEY_SIMPLEX,
0.7, (0, 0, 255), 2)
# 根据位置画点
for (x, y) in shape[i:j]:
cv2.circle(clone, (x, y), 3, (0, 0, 255), -1)
# 提取ROI区域
(x, y, w, h) = cv2.boundingRect(np.array([shape[i:j]]))
roi = image[y:y + h, x:x + w]
(h, w) = roi.shape[:2]
width=250
r = width / float(w)
dim = (width, int(h * r))
roi = cv2.resize(roi, dim, interpolation=cv2.INTER_AREA)
# 显示每一部分
cv2.imshow("ROI", roi)
cv2.imshow("Image", clone)
cv2.waitKey(0)
# 展示所有区域
output = visualize_facial_landmarks(image, shape)
cv2.imshow("Image", output)
cv2.waitKey(0)
6.CPU多进程能力测试
基于python 脚本执行OrangePi Kunpeng Pro CPU ;创建3个进程分别执行冒泡排序算法并测量执行时间进行测试。
import time
import random
import multiprocessing
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
def measure_performance():
arr = [random.randint(0, 10000) for _ in range(10000)]
start_time = time.time()
bubble_sort(arr)
end_time = time.time()
return end_time - start_time
def process_task(process_id):
execution_time = measure_performance()
print(f"进程 {
process_id} 冒泡排序算法执行时间: {
execution_time:.5f} 秒")
if __name__ == "__main__":
processes = []
for i in range(3):
process = multiprocessing.Process(target=process_task, args=(i,))
processes.append(process)
process.start()
for process in processes:
process.join()
bubble_sort
函数执行冒泡排序算法。measure_performance
函数生成一个随机数组并测量冒泡排序的执行时间。process_task
函数是每个进程要执行的任务,它调用measure_performance
并打印执行时间。- 主程序创建并启动3个进程,每个进程执行一次冒泡排序算法,并等待所有进程完成。
7. 测评总结
编译和运行环境编译工具,支持 cmake、c++ 编译环境,运行环境,可以运行Python;扩展性接口丰富;OrangePi Kunpeng Pro配备了多种接口和扩展槽,提供了灵活的扩展性,能够满足不同的应用需求。从开发板到小型服务器都可以胜任。系统表现稳定性上,在实际应用中,OrangePi Kunpeng Pro测试冒泡排序,CPU执行稳定,多进程能力执行稳定;
本来这次想测试AI能力的,官方文档上面没找到该板子的AI推理相关内容,希望后续补充吧,能够测试推理AI模型;openEuler 系统的应用,在打开应用后,应用软件没有放大窗口按钮,测试代码案例中,容易出现核转储问题,生态社区、兼容性还需要加强;
总体来说,还是一款性能非常强劲且功能齐全的板子,期待有更多的使用案例及生态输出;
文章评论