RDK X5 火力全开:10TOPS算力加速YOLOv8目标检测

地瓜机器人最新推出的RDK X5开发板,基于旭日5(Sunrise 5)芯片,将AI算力提升至10 TOPS,相比前代产品性能提升超过134% 。这款百元级国产开发板的出现,让嵌入式实时目标检测进入了全新的性价比阶段。本文将详细介绍如何在RDK X5上部署YOLOv8目标检测模型,充分利用其集成的BPU(贝叶斯架构)实现30FPS以上的实时推理,并与Jetson Xavier NX进行实测对比,展现国产AIoT平台的硬核实力。

一、RDK X5核心亮点

1.1 硬件规格

RDK X5搭载了地瓜自研的旭日5芯片,主要参数如下 :

  • CPU:8核ARM Cortex-A55,性能大幅提升

  • BPU:贝叶斯架构(Bayes-e),支持INT8量化加速

  • AI算力:10 TOPS(INT8),可高效运行YOLOv8、Transformer等模型

  • 内存:4GB/8GB LPDDR4X可选

  • 网络:双频Wi-Fi 6 + 蓝牙5.4,千兆以太网

  • 接口:4个USB 3.0、全尺寸HDMI、MIPI CSI/DSI、40针GPIO

1.2 开发优势

RDK X5不仅硬件强悍,软件生态也十分完善。官方提供了RDK Studio图形化开发工具,支持闪连模式(一根Type-C线即可连接和烧录系统),大幅降低入门门槛 。同时,Model Zoo模型仓库中预置了数十种优化好的AI模型,开发者可以直接调用 。

二、环境搭建与系统准备

2.1 烧录系统镜像

首先从地瓜开发者社区下载RDK X5官方系统镜像(Ubuntu 22.04定制版):

# 镜像下载地址(需注册登录)
https://archive.d-robotics.cc/downloads/os_images/rdk_x5/

准备一张至少16GB的MicroSD卡,使用烧录工具(如balenaEtcher或Win32DiskImager)将下载的.xz压缩包解压后的.img文件写入SD卡 。

插入SD卡,连接电源和显示器,首次启动会自动扩展分区,约2-3分钟后进入系统。默认用户名和密码均为sunrise

2.2 安装NPU开发环境

RDK X5的BPU驱动和推理库已预装在系统中,位于/opt/digit目录。我们只需要安装Python依赖:

sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-opencv
pip3 install ultralytics numpy

三、YOLOv8模型转换与优化

RDK X5的BPU仅支持INT8量化模型,需要将PyTorch格式的YOLOv8转换为ONNX,再通过地瓜工具链生成可执行模型。

3.1 导出ONNX模型

在PC或RDK X5上运行(需要网络下载预训练权重):

from ultralytics import YOLO

# 加载YOLOv8m模型(中等规模,平衡速度与精度)
model = YOLO('yolov8m.pt')
# 导出为ONNX,输入尺寸640x640
model.export(format='onnx', imgsz=640, dynamic=False)

3.2 使用工具链量化转换

地瓜官方提供了基于Docker的工具链环境,建议使用最新版本 :

# 拉取工具链Docker镜像(版本号以官方最新为准)
docker pull hub.d-robotics.cc/ai_toolchain/ubuntu_20.04_x5_gcc9:v1.2.6

# 运行容器并挂载当前目录
docker run -it --rm -v $(pwd):/data hub.d-robotics.cc/ai_toolchain/ubuntu_20.04_x5_gcc9:v1.2.6

在容器内进行模型转换:

cd /data
# 使用hb_mapper工具转换(地瓜BPU模型转换工具)
hb_mapper makertbin --model-type onnx \
                     --model ./yolov8m.onnx \
                     --proto-file ./yolov8_config.yaml \
                     --output ./yolov8m_x5.bin

其中yolov8_config.yaml需要配置输入节点、输出节点、量化校准参数等。官方Model Zoo提供了完整的YOLOv8配置文件模板 。

四、在RDK X5上运行实时检测

4.1 使用Python API部署

创建推理脚本yolo_x5_detect.py

python

import cv2
import numpy as np
from horizon_tc_interface import HB_ONNXRuntime  # 地瓜NPU推理接口

# 加载量化后的模型
sess = HB_ONNXRuntime(model_file="./yolov8m_x5.bin")

# 获取输入输出信息
input_name = sess.input_names[0]
output_names = sess.output_names

# 打开摄像头
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

# FPS计算
fps = 0
frame_count = 0
import time
start_time = time.time()

while True:
    ret, frame = cap.read()
    if not ret:
        break

    # 预处理:resize + 归一化 + NHWC格式
    img = cv2.resize(frame, (640, 640))
    img = img.astype(np.float32) / 255.0
    # RDK BPU通常要求NHWC格式
    img_input = np.expand_dims(img, axis=0)  # (1, 640, 640, 3)

    # 推理
    outputs = sess.run(output_names, {input_name: img_input})
    
    # 后处理(解析检测框,此处省略具体实现,可参考Model Zoo示例)
    # boxes = postprocess(outputs)
    
    # 在画面绘制检测结果(略)
    
    # 计算FPS
    frame_count += 1
    if frame_count >= 30:
        end_time = time.time()
        fps = frame_count / (end_time - start_time)
        print(f"FPS: {fps:.2f}")
        frame_count = 0
        start_time = time.time()

    cv2.imshow("RDK X5 YOLOv8 Detection", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

注意:YOLOv8的后处理(包括解码框、NMS等)占用较多CPU资源。地瓜Model Zoo提供了C++优化的后处理实现,可以进一步提升整体帧率 。

4.2 使用Model Zoo快速体验

地瓜官方提供了预编译的YOLOv8示例,可以直接运行:

cd /app/pydev_demo/08_yolov8_sample/
sudo python3 ./yolov8_detect.py

系统会自动加载预置模型并调用USB摄像头,实时显示检测结果 。