爱芯派Pro部署YOLOv5模型全流程指南

📅 2026/7/17 1:47:43
爱芯派Pro部署YOLOv5模型全流程指南
1. 爱芯派 Pro 开发板与 YOLOv5 模型部署概述爱芯派 Pro 是一款基于 AX620A 芯片的高性能 AI 开发板具备 3.6TopsINT8 的算力专为边缘计算和计算机视觉应用设计。YOLOv5 作为当前最流行的目标检测算法之一其轻量级版本非常适合在爱芯派 Pro 这样的边缘设备上部署运行。在实际项目中我们经常需要将训练好的 YOLOv5 模型部署到爱芯派 Pro 开发板上这个过程涉及模型格式转换、量化、优化等多个步骤。本文将详细介绍如何使用爱芯官方工具链完成 YOLOv5 模型的完整部署流程包括从原始 PyTorch 模型到最终在开发板上运行的全过程。2. 环境准备与工具安装2.1 开发板基础环境配置在开始模型部署前需要确保开发板系统环境已正确配置刷写最新系统镜像到开发板通过串口或 SSH 连接开发板更新系统软件包sudo apt update sudo apt upgrade -y安装基础依赖sudo apt install -y git cmake build-essential libopencv-dev2.2 模型转换工具安装爱芯官方提供了 pulsar 工具用于模型转换和量化推荐使用 Docker 方式安装# 安装 Docker sudo apt install -y docker.io sudo systemctl enable --now docker # 添加当前用户到 docker 组 sudo usermod -aG docker $USER newgrp docker # 拉取 pulsar 镜像 docker pull sipeed/pulsar # 验证安装 docker run --rm sipeed/pulsar pulsar -h注意如果国内拉取镜像速度慢可以配置 Docker 镜像加速器。编辑/etc/docker/daemon.json文件添加镜像源。3. YOLOv5 模型转换与量化3.1 准备原始 YOLOv5 模型首先需要获取 YOLOv5 官方模型或自己训练的模型git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt # 导出 ONNX 格式模型 python export.py --weights yolov5s.pt --include onnx --imgsz 640 640导出时需要注意输入尺寸需与训练时保持一致默认 640x640确保所有算子都支持 ONNX 导出可以添加--dynamic参数导出动态尺寸模型3.2 模型量化配置创建量化配置文件config_yolov5.prototxtinput_type: INPUT_TYPE_ONNX output_type: OUTPUT_TYPE_JOINT target_hardware: TARGET_HARDWARE_AX620 cpu_backend_settings { axe_setting { mode: ENABLED axe_param { optimize_slim_model: true } } } src_input_tensors { color_space: TENSOR_COLOR_SPACE_RGB } dst_input_tensors { color_space: TENSOR_COLOR_SPACE_RGB } neuwizard_conf { operator_conf { input_conf_items { attributes { input_modifications { affine_preprocess { slope: 1 slope_divisor: 255 bias: 0 } } } } } dataset_conf_calibration { path: calibration_dataset.tar type: DATASET_TYPE_TAR size: 100 batch_size: 1 } } pulsar_conf { ax620_virtual_npu: AX620_VIRTUAL_NPU_MODE_111 batch_size: 1 }3.3 执行模型转换使用 pulsar 工具进行模型转换docker run -it --rm -v $(pwd):/data sipeed/pulsar \ pulsar build --input yolov5s.onnx \ --output yolov5s.joint \ --config config_yolov5.prototxt \ --output_config out_config_yolov5.prototxt转换过程可能耗时几分钟完成后会生成yolov5s.joint可在开发板上运行的模型文件out_config_yolov5.prototxt包含模型输入输出信息的配置文件4. 模型部署与测试4.1 将模型传输到开发板使用 scp 将转换后的模型文件传输到开发板scp yolov5s.joint user开发板IP:~/projects/4.2 准备测试程序从官方示例库获取基础代码git clone https://github.com/AXERA-TECH/ax-samples cd ax-samples mkdir build cd build cmake -DAXERA_TARGET_CHIPAX620 .. make -j$(nproc)4.3 运行目标检测使用编译好的示例程序测试模型./ax_yolov5 -m yolov5s.joint -i test.jpg程序会输出检测结果包括检测到的目标类别和置信度目标边界框坐标推理耗时5. 性能优化技巧5.1 模型量化优化使用更多样化的校准数据集可以提高量化精度尝试不同的量化策略如逐通道量化对于关键层可以尝试混合精度量化5.2 推理流水线优化使用双 NPU 模式提高吞吐量ax620_virtual_npu: AX620_VIRTUAL_NPU_MODE_112合理设置 batch size 平衡延迟和吞吐使用异步推理重叠计算和数据传输5.3 内存优化使用内存池减少动态分配开销优化中间结果的内存布局利用芯片的共享内存特性6. 实际应用开发6.1 摄像头实时检测基于 libmaix 开发摄像头应用#include maix.h #include axpi.h int main() { maix::Camera cam(640, 480); maix::Display disp; axpi_model_t model; // 初始化模型 axpi_create_model(model, yolov5s.joint); while(1) { auto img cam.read(); axpi_run_model(model, img.data()); // 处理检测结果 auto detections axpi_get_results(model); for(auto det : detections) { img.draw_rect(det.bbox, maix::COLOR_RED); } disp.show(img); } axpi_destroy_model(model); return 0; }6.2 常见问题解决模型转换失败检查 ONNX 算子支持情况尝试简化模型结构更新 pulsar 工具到最新版本推理结果异常验证输入数据预处理是否正确检查量化校准数据是否具有代表性对比浮点模型和量化模型输出性能不达标分析 NPU 利用率检查是否有算子回退到 CPU 执行优化模型结构和参数7. 进阶开发建议对于需要更高性能的场景可以考虑使用 YOLOv5 的更轻量版本如 nano 或 tiny自定义模型结构优化 NPU 利用率利用 AI-ISP 实现图像预处理加速开发多模型级联应用如检测分类爱芯派 Pro 的 AX620A 芯片还支持4K 视频编解码多路摄像头输入丰富的外设接口这些特性可以与 YOLOv5 模型结合开发更复杂的边缘 AI 应用。