无垠的广袤 · 2025年12月31日 · 上海

【“星睿O6”AI PC开发套件评测】姿态估计

【“星睿O6”AI PC开发套件评测】姿态估计

本文介绍了瑞莎星睿 O6 (Radxa Orion O6) 开发板结合 YOLO 模型实现人体姿态识别的项目设计,包括环境搭建、预训练模型、工程代码和效果演示等。

项目介绍

  • 准备工作:OpenCV 安装、Ultralytics 软件包安装、预训练模型下载等;
  • 姿态估计:采用 YOLOv8 算法实现人体关键点检测;

准备工作

包括 硬件连接、虚拟环境创建、OpenCV 安装、Ultralytics 库部署等。

硬件连接

  • 使用 HDMI 数据线连接显示屏(也可使用 VNC 或 SSH 远程登录);
  • USB 接口连接鼠标键盘;
  • 网线连接 LAN 接口和路由器(或 WiFi 模块连接无线网);
  • 使用 PD 电源供电(或 ATX 电源供电);

hardware_connection.jpg

OpenCV 安装

为了避免影响系统 Python,这里采用创建虚拟环境的方案

  • 创建并激活虚拟环境
mkdir ~/cv && cd ~/cv    # 创建 cv 文件夹,便于管理
python3 -m venv venv     # 创建虚拟环境 venv
source venv/bin/activate # 激活虚拟环境 venv
  • 升级 pip 并安装 NumPy + OpenCV 全家桶
pip install -U pip numpy                          # 安装 numpy
pip install opencv-python opencv-contrib-python   # opencv 主模块及 contrib
  • 验证安装
python3 -c "import cv2,sys,numpy;print('OpenCV:',cv2.__version__,'NumPy:',numpy.__version__)"
  • 输出版本号

详见:OpenCV .

Ultralytics 部署

Ultralytics 基于多年在计算机视觉和人工智能领域的基础研究,在目标检测跟踪实例分割图像分类姿态估计等任务中表现出色。

  • 使用系统或第三方轮子,安装 ultralytics 软件包
sudo apt update && sudo apt install -y python3-dev python3-pip libopenblas-dev
pip install ultralytics
  • 验证安装
python3 -c "import ultralytics, sys, torch; print('ultralytics', ultralytics.__version__, '| torch', torch.__version__, '| Python', sys.version.split()[0])"
  • 输出相应版本号

详见:ultralytics .

姿态识别

姿态识别(Pose Detection)或人体关键点检测(Human Keypoints Detection)是通过识别和定位人体的特定关节(如肩膀、肘部、膝盖等)来分析人体姿态和动作的技术。

pose_recog_cover.jpg

该技术可在图像中检测出人体,并精确获取关键点的坐标信息,通常指定 17 到 24 个关键点。

在默认的 YOLOv8 姿势估计模型中,有17个关键点,每个关键点代表人体不同的部位。1-17 每个索引对应身体关节的映射分别为

鼻子、左眼、右眼、左耳、右耳、左肩、右肩、左手肘、右肘、左手腕、右腕、左髋、右髋、左膝、右膝、左脚踝、右脚踝。

详见:姿势估计 - Ultralytics YOLO 文档 .

模型

获取目标模型(这里使用 YOLO 预训练模型 yolov8n-pose.pt 权重文件);

wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolov8n-pose.pt

将其放置于 model 文件夹。

代码

  • 终端执行 source ~/cv/venv/bin/activate 激活虚拟环境;
  • 执行 touch pose_yolo.py 新建程序文件,并添加如下代码
#!/usr/bin/env python3
import cv2
from ultralytics import YOLO
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-i', '--image', default='./img/pos_dance.jpg')
args = parser.parse_args()
IMG_FILE = args.image

model = YOLO('./model/yolov8n-pose.pt')   # 关键点模型
# img = cv2.imread('./img/pos_dance.jpg')
img = cv2.imread(IMG_FILE)

results = model(img, imgsz=640, conf=0.25)   # 返回 Keypoints
# annotated = results[0].plot(kpt_radius=4, kpt_line=True)  # 画点+连线
annotated = results[0].plot(
    boxes=False,      # 无外框
    labels=False,     # 无标签
    conf=False,       # 无置信度
    kpt_radius=4,     # 点大小
    kpt_line=True     # 骨架连线
)

cv2.namedWindow("YOLO-Pose", cv2.WINDOW_NORMAL)
cv2.imshow("YOLO-Pose", annotated)
cv2.waitKey(0)
cv2.destroyAllWindows()

保存代码。

效果

  • 终端执行 python pose_yolo.py 指令;
  • 终端打印人体关键点检测结果,包括识别信息、位置、耗时等;

    pd_print.jpg

  • 弹窗显示结果

pd_dance.jpg

更多效果演示

pd_hipop.jpg

pd_hiphop.jpg

pd_actors.jpg

pd_play.jpg

pd_football.jpg

总结

本文介绍了瑞莎星睿 O6 (Radxa Orion O6) 开发板结合 OpenCV 和 YOLOv8-pose 模型实现姿态估计的项目设计,包括算法模型介绍、工程代码、效果演示等,为相关产品在边缘 AI 视觉领域的开发设计和快速应用提供了参考。

推荐阅读
关注数
4
文章数
25
MCU 开发者和爱好者
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息