高通QCS8550部署Yolov8模型
(原创作者:CSDN_伊利丹~怒风)前言:
在当今科技飞速发展的时代,边缘计算和人工智能的融合正推动着众多领域的创新变革。而在这一进程中,硬件平台的性能起着至关重要的作用。今天,我们将聚焦于一款强大的硬件 —— 高通 QCS8550,探索如何在其上部署热门的 Yolov8 模型。
高通 QCS8550 采用先进的 4 纳米制程工艺,在提升性能的同时有效降低了功耗。其核心由八核 Kryo CPU 构成,具体包括一个主频高达 3.2GHz 的超大核,能轻松应对高强度任务;四个主频为 2.8GHz 的性能内核,兼顾性能与能效;还有三个主频 2.0GHz 的效率内核,负责日常轻负载操作,这种合理的内核配置实现了任务处理的高效与节能。在图形处理方面,集成的 Adreno 740 GPU 表现卓越,支持 4K@60Hz 的显示输出,为高清多媒体应用提供有力支撑。不仅如此,该平台在视频处理能力上也十分出色,支持 8K@30fps 的视频编码以及 8K@60fps 的视频解码,并且兼容 H.264 和 H.265 编码标准,能满足各类高品质视频应用的需求。
然而,QCS8550 最为引人注目的,当属其强大的 AI 处理能力。整体 AI 算力高达 48TOPS,内部集成的高通 Hexagon 神经网络处理单元支持先进的 INT4 AI 精度格式,相比上一代产品,在持续 AI 推理方面实现了 60% 的能效提升。这意味着设备在拥有强大 AI 性能的同时,能够极大地降低能耗,尤其适用于智能监控、机器人、自动驾驶辅助等对 AI 性能和能耗有严苛要求的长时间运行智能场景。
[*]高通QCS8550芯片参数
[*]Yolov8介绍
[*]模型在线转换平台
[*]本次测试采用的硬件设备
YOLOv8系列性能指标
模型尺寸(像素)QCS8550推理速度 NPU QNN (ms)YOLOv8n6401.66YOLOv8s6402.38YOLOv8m6404.65YOLOv8l6408.42YOLOv8x64013.13点击链接可以下载YOLOv8系列模型的pt格式
(一)将pt模型转换为onnx格式
Step1:升级pip版本为25.1.1
python3.10 -m pip install --upgrade pip
pip -V
aidlux@aidlux:~/aidcode$ pip -V
pip 25.1.1 from /home/aidlux/.local/lib/python3.10/site-packages/pip (python 3.10)Step2:安装Yolov8和onnx
pip install yolov8 onnxStep3:设置yolo命令的环境变量
方法 1:临时添加环境变量(立即生效)
在终端中执行以下命令,将 ~/.local/bin 添加到当前会话的环境变量中
export PATH="$PATH:$HOME/.local/bin"
[*]说明:此操作仅对当前终端会话有效,关闭终端后失效。
[*]验证:执行 yolo --version,若输出版本号(如 0.0.2),则说明命令已生效。
方法 2:永久添加环境变量(长期有效)
echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc
source ~/.bashrc# 使修改立即生效验证:执行 yolo --version,若输出版本号(如 0.0.2),则说明命令已生效。
测试环境中安装yolo版本为8.3.152
提示:如果遇到用户组权限问题,可以忽悠,因为yolo命令会另外构建临时文件,也可以执行下面命令更改用户组,执行后下面的警告会消失:
sudo chown -R aidlux:aidlux ~/.config/
sudo chown -R aidlux:aidlux ~/.config/Ultralytics可能遇见的报错如下:
WARNING ⚠️ user config directory '/home/aidlux/.config/Ultralytics' is not writeable, defaulting to '/tmp' or CWD.Alternatively you can define a YOLO_CONFIG_DIR environment variable for this path.
Step4:将Yolov8系列模型的pt格式转换为onnx格式
新建一个python文件,命名自定义即可,用于模型转换以及导出:
from ultralytics import YOLO
# 加载同级目录下的.pt模型文件
model = YOLO('./yolov8x.pt')# 替换为实际模型文件名
# 导出ONNX配置参数
export_params = {
'format': 'onnx',
'opset': 12, # 推荐算子集版本
'simplify': True, # 启用模型简化
'dynamic': False, # 固定输入尺寸
'imgsz': 640, # 标准输入尺寸
'half': False # 保持FP32精度
}
# 执行转换并保存到同级目录
model.export(**export_params)执行该程序完成将pt模型导出为onnx模型
提示:Yolov8n,Yolov8s,Yolov8m,Yolov8l替换代码中Yolov8x即可;
(二)使用AIMO将onnx模型转换高通NPU可以运行的模型格式
Step1:选择模型优化,模型格式选择onnx格式上传模型
Step2:选择芯片型号以及目标框架,这里我们选择QCS8550+Qnn2.31
Step3:点击查看模型,使用Netron查看模型结构,进行输入输出的填写
如上图output节点由Mul和Sigmod两个节点Concat而成,分别点击两个节点复制OUTPUTS的name名称到下图中:
参考上图中红色框部分填写,其他不变,注意开启自动量化功能,AIMO更多操作查看使用说明或开发指南中的AIMO介绍。
Step4:接下来进行提交即可,转换完成后将目标模型文件下载,解压缩后其中的.bin.aidem文件即为模型文件
(三)在QCS8550的NPU中推理Yolov8_int8模型
检查aidlux环境中的aidlite版本是否与我们转换模型时选择的Qnn版本一致,终端执行:
sudo aid-pkg installed 如果没有aidlite-qnn231,需要安装:
sudo aid-pkg update
sudo aid-pkg install aidlite-sdk
# Install the latest version of AidLite (latest QNN version)
sudo aid-pkg install aidlite
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除
页:
[1]