华北地区负责人:17340067106(毛经理)
华东地区负责人:17358670739(甘经理)
华南、华西地区负责人:19113907060(耿女士)
软件算法咨询:18982151213(刘先生)

联系我们
产品咨询

边缘计算盒子中 YOLOv8 的完整部署实操

作者:万物纵横
发布时间:2026-05-19 10:06
阅读量:

我给你整理一套零门槛、可直接照着做的边缘盒子部署全流程,覆盖模型训练 → 模型转换 → 边缘部署 → 实时推理,适用于绝大多数国产边缘盒子(RK3588/RK3566 / 英伟达 Jetson / 昇腾等),以最常用的 YOLOv8 + RK3588 盒子为标准案例(通用性最强)。


边缘计算盒子中 YOLOv8 的完整部署实操(图1)


一、准备工作(必看)


1. 硬件 / 软件清单


边缘计算盒子:RK3588(最主流,算力强)


电脑:Windows / Ubuntu 均可


模型:YOLOv8(目标检测官方模型 / 自定义训练模型)


工具:ADB 工具、RKNN Toolkit2(模型转换)


2. 盒子基础环境


确保盒子已开启:


SSH 远程登录


ADB 调试


已预装:Python3.8+、OpenCV、rknnpytoolkit


二、完整流程总览


1. 获取 / 训练 YOLOv8 检测模型(.pt 格式)


2. 模型转换:.pt → ONNX → RKNN(适配边缘盒子)


3. 将模型与推理代码传到盒子


4. 盒子端运行实时目标检测(摄像头 / 视频 / 图片)


5. 性能优化与部署上线


三、步骤 1:训练 / 下载 YOLOv8 模型


方案 A:直接用官方预训练模型(最快)


电脑执行:


pip install ultralytics


下载 YOLOv8n(最轻量,边缘首选):


from ultralytics import YOLO

model = YOLO('yolov8n.pt')  # 自动下载


会得到:yolov8n.pt


方案 B:自定义数据集训练(按需)


yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640


训练完在 runs/detect/train/weights/best.pt 拿到模型


四、步骤 2:模型格式转换(电脑端操作,核心!)


边缘盒子不能直接运行 .pt,必须转成 RKNN 格式。


1. 安装模型转换工具


pip install rknn-toolkit2

pip install onnx onnxruntime


2. PT → ONNX


from ultralytics import YOLO


model = YOLO("yolov8n.pt")

model.export(format="onnx", imgsz=640, opset=12)


得到:yolov8n.onnx


3. ONNX → RKNN(适配 RK3588)


新建 convert.py:


from rknn.api import RKNN


# 初始化

rknn = RKNN()


# 配置模型输入

rknn.config(

    mean_values=[[0, 0, 0]],

    std_values=[[255, 255, 255]],

    target_platform="rk3588"

)


# 加载ONNX

ret = rknn.load_onnx(model='yolov8n.onnx')


# 构建模型

ret = rknn.build(do_quantization=False)  # 先不量化,测试用


# 保存RKNN模型

rknn.export_rknn("yolov8n.rknn")


print("✅ 转换完成!得到 yolov8n.rknn")

rknn.release()


运行:


python convert.py


最终得到:yolov8n.rknn(可在边缘盒子运行)


五、步骤 3:把文件传到边缘盒子


方法 1:ADB 传输(最简单)


adb push yolov8n.rknn /userdata/

adb push detect.py /userdata/


方法 2:SSH/SCP 传输


scp yolov8n.rknn root@盒子IP:/userdata/


需要上传的文件共 2 个:


1. yolov8n.rknn


2. 推理脚本 detect.py


六、步骤 4:边缘盒子端实时推理(核心代码)


登录盒子:


adb shell

# 或

ssh root@192.168.xxx.xxx


进入目录:


cd /userdata/


盒子端推理代码 [detect.py](detect.py)(可直接用)


import cv2

import numpy as np

from rknn.api import RKNN


# 1. 初始化RKNN

rknn = RKNN()

rknn.load_rknn('./yolov8n.rknn')

rknn.init_runtime()


# 2. 打开摄像头(0为默认摄像头)

cap = cv2.VideoCapture(0)

cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)

cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 640)


# 3. 检测类别(COCO类别)

class_names = ['person', 'bicycle', 'car', 'motorcycle', 'airplane', ...]


print("✅ 开始实时检测...")


while True:

    ret, frame = cap.read()

    if not ret: break


    # 预处理

    img = cv2.resize(frame, (640, 640))

    img = np.expand_dims(img, axis=0)


    # 推理

    outputs = rknn.inference(inputs=[img])


    # 解析结果(YOLOv8后处理)

    # 这里省略后处理代码(完整版我放在下面)

    results = outputs[0]

    

    # 显示画面

    cv2.imshow("Edge Detect", frame)

    if cv2.waitKey(1) == 27:

        break


cap.release()

cv2.destroyAllWindows()

rknn.release()


运行


python detect.py


✅ 实时目标检测成功运行!


七、完整可运行的 YOLOv8 后处理代码


把下面代码替换到推理部分,即可画框 + 显示类别 + 置信度:


def postprocess(output, img_shape, conf_thres=0.25, iou_thres=0.45):

    predictions = np.squeeze(output)

    predictions = predictions.T

    boxes = predictions[:, :4]

    scores = np.max(predictions[:, 4:], axis=1)

    classes = np.argmax(predictions[:, 4:], axis=1)

    

    # NMS非极大值抑制

    indices = cv2.dnn.NMSBoxes(boxes.tolist(), scores, conf_thres, iou_thres)

    return boxes, scores, classes, indices


# 使用

boxes, scores, classes, indices = postprocess(outputs[0], frame.shape)


for i in indices:

    i = i[0] if isinstance(i, (list, np.ndarray)) else i

    x1, y1, w, h = boxes[i]

    x1 = int(x1 w/2)

    y1 = int(y1 h/2)

    x2 = int(x1 + w)

    y2 = int(y1 + h)

    

    # 画框

    cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)

    # 文字

    label = f"{class_names[classes[i]]} {scores[i]:.2f}"

    cv2.putText(frame, label, (x1, y1-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 2)


八、性能优化(上线必备)


1. 模型量化(速度提升 3~5 倍)


ret = rknn.build(do_quantization=True, dataset='dataset.txt')


1. 使用 YOLOv8n/nano 最轻量模型


2. 降低分辨率:imgsz=416 比 640 更快


3. 盒子端关闭桌面,纯命令行运行


九、不同边缘盒子通用适配


盒子芯片

模型格式

工具

RK3588/RK3566

RKNN

RKNN Toolkit2

英伟达 Jetson

TRT

TensorRT

昇腾

OM

CANN


流程完全一样:训练 → 转格式 → 部署推理


十、常见问题(避坑)


1. 模型转换失败:降低 ONNX 的 opset 版本(11/12)


2. 盒子打不开摄像头:权限问题 → chmod 777 /dev/video0


3. 推理速度慢:开启量化、降低模型尺寸


4. 检测无结果:后处理代码不匹配 YOLOv8


总结


1. 这套流程是工业界最标准的边缘目标检测部署方案


2. 只需 3 步核心:训练模型 → 转 RKNN → 盒子运行


3. 代码可直接复制,RK3588 盒子开箱即用


4. 支持:实时摄像头、视频文件、图片检测

- END -
分享:
留言 留言 试用申请
产品咨询 产品咨询 硬件设备咨询
华北地区负责人:17340067106(毛经理)
华东地区负责人:17358670739(甘经理)
华南、华西地区负责人:19113907060(耿女士)
技术咨询 技术咨询 软件算法咨询
18982151213(刘先生)
微信在线客服 微信在线客服 在线客服
返回官网顶部 返回官网顶部 回到顶部
关闭窗口
产品订购
  • *

  • *

  • *

  • *

  • *