【“星睿O6”AI PC开发套件评测】姿态估计
本文介绍了瑞莎星睿 O6 (Radxa Orion O6) 开发板结合 YOLO 模型实现人体姿态识别的项目设计,包括环境搭建、预训练模型、工程代码和效果演示等。
项目介绍
- 准备工作:OpenCV 安装、Ultralytics 软件包安装、预训练模型下载等;
- 姿态估计:采用 YOLOv8 算法实现人体关键点检测;
准备工作
包括 硬件连接、虚拟环境创建、OpenCV 安装、Ultralytics 库部署等。
硬件连接
- 使用 HDMI 数据线连接显示屏(也可使用 VNC 或 SSH 远程登录);
- USB 接口连接鼠标键盘;
- 网线连接 LAN 接口和路由器(或 WiFi 模块连接无线网);
- 使用 PD 电源供电(或 ATX 电源供电);
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)是通过识别和定位人体的特定关节(如肩膀、肘部、膝盖等)来分析人体姿态和动作的技术。
该技术可在图像中检测出人体,并精确获取关键点的坐标信息,通常指定 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指令; 终端打印人体关键点检测结果,包括识别信息、位置、耗时等;
- 弹窗显示结果
更多效果演示
总结
本文介绍了瑞莎星睿 O6 (Radxa Orion O6) 开发板结合 OpenCV 和 YOLOv8-pose 模型实现姿态估计的项目设计,包括算法模型介绍、工程代码、效果演示等,为相关产品在边缘 AI 视觉领域的开发设计和快速应用提供了参考。