保姆级教程:在SS928开发板上跑通Yolov5s模型(从虚拟机配置到板端运行)
零基础实战:SS928开发板部署YOLOv5s全流程避坑指南
第一次接触嵌入式AI开发时,我盯着SS928开发板和YOLOv5文档发呆了整整两小时——虚拟机连不上板卡、模型转换报错、交叉编译环境崩溃,这些坑几乎让项目流产。现在回想起来,90%的问题都源于基础环境配置的细节疏忽。本文将用真实踩坑经验,带你从零完成以下全流程:
- 开发环境搭建:Ubuntu虚拟机配置与SS928专用工具链部署
- 模型转换实战:YOLOv5s模型从PyTorch到昇腾NPU格式的完整转换过程
- 板端部署技巧:文件传输、权限管理、运行监控等关键操作
- 可视化调试:在无GUI的OpenEuler系统上查看检测结果
1. 开发环境精准配置
1.1 虚拟机环境搭建
推荐使用Ubuntu 20.04 LTS版本(实测与SS928工具链兼容性最佳),注意以下关键配置:
# 安装基础工具包(必须执行)
sudo apt update && sudo apt install -y \
build-essential \
git \
cmake \
libssl-dev \
libffi-dev \
python3-dev
常见问题排查:
- 若虚拟机无法识别USB设备:检查VMware Workstation的USB控制器设置(需启用USB3.0兼容性)
- 共享文件夹权限问题:建议将开发包直接拖入虚拟机桌面而非使用共享文件夹
1.2 CANN工具链安装
昇腾AI处理器的核心组件,安装时特别注意版本匹配:
| 组件 | 版本要求 | 验证命令 |
|---|---|---|
| CANN Toolkit | ≥5.0.RC1 | ls /usr/local/Ascend/ascend-toolkit/latest |
| ATC工具 | 配套版本 | atc --version |
安装步骤精简版:
# 解压开发包(注意空格转义)
unzip SS928\ V100R001C02SPC022\(Update\).zip
# 运行安装脚本(需root权限)
chmod +x Ascend*.run
sudo ./Ascend*.run --install
重要提示:安装完成后必须执行环境变量配置
source /usr/local/Ascend/ascend-toolkit/set_env.sh
1.3 交叉编译环境部署
SS928采用ARM架构,需配置x86到aarch64的交叉编译器:
# 解压工具链
tar -xzvf aarch64-mix210-linux.tgz -C /opt
# 永久生效环境变量(追加到~/.bashrc)
echo 'export PATH=/opt/aarch64-mix210-linux/bin:$PATH' >> ~/.bashrc
验证安装成功:
aarch64-mix210-linux-gcc -v
# 应输出类似 gcc version 7.3.0 的版本信息
2. YOLOv5s模型转换实战
2.1 模型准备与优化
建议使用官方v6.2版本模型(兼容性最佳):
wget https://github.com/ultralytics/yolov5/releases/download/v6.2/yolov5s.pt
转换为ONNX格式时的关键参数:
import torch
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
model.export(format='onnx',
dynamic=False,
simplify=True,
opset_version=12)
2.2 ATC模型转换详解
创建aipp_op.cfg配置文件(直接影响NPU推理性能):
aipp_op {
input_format : RGB888_U8
src_image_size_w : 640
src_image_size_h : 640
mean_chn_0 : 123.675
mean_chn_1 : 116.28
mean_chn_2 : 103.53
var_reci_chn_0 : 0.0171247538316637
var_reci_chn_1 : 0.0175070028011204
var_reci_chn_2 : 0.0174291938997821
}
转换命令示例:
atc --model=yolov5s.onnx \
--framework=5 \
--output=yolov5s_ss928 \
--soc_version=OPTG \
--insert_op_conf=aipp_op.cfg \
--input_shape="images:1,3,640,640"
典型错误处理:
E90016: Invalid shape:检查input_shape是否与ONNX模型匹配E90011: Operator not supported:可能需要修改模型结构或使用自定义算子
3. 板端部署全流程
3.1 文件传输与权限管理
推荐使用rsync替代scp(支持断点续传):
# Ubuntu端执行
rsync -avzP --rsh='ssh -p 22' \
output/ \
root@192.168.7.2:/root/yolov5_demo
板端必须执行的权限设置:
chmod +x /root/yolov5_demo/rundemo.sh
chmod 666 /dev/shm/*
3.2 运行监控与调试
实时查看NPU利用率:
# 板端执行
npu-smi info
性能优化技巧:
- 调整
rundemo.sh中的线程绑定:
taskset -c 0-3 ./yolov5_demo
- 使用
AI_PROFILER收集性能数据:
export AI_PROFILER_OUTPUT=/root/profiler_data
./yolov5_demo
4. 结果可视化方案
在无GUI环境下,可通过以下方式查看检测结果:
- SSH+X11转发(需板端安装xauth):
ssh -X root@192.168.7.2
display output.jpg
- WEB服务方案(推荐):
# 板端运行简易HTTP服务
python3 -m http.server 8000 --directory /root/output
在PC浏览器访问http://192.168.7.2:8000即可下载结果图像
实际部署时发现,SS928的NPU对YOLOv5s的推理速度能达到42FPS(640x640输入),但内存带宽可能成为瓶颈。建议批量处理时控制并发数,避免频繁的内存分配释放。
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)