模型性能批量评估示例
概述
本项目展示 YOLOv5s 和 YOLOv8s 通过 Netrans 量化后的性能评估实现方案:
- 在 YOLO 代码框架内实现批量推理和评估性能
- 通过 client 接口与板卡建立通信,将 YOLO 源码中的模型推理替换为板卡推理
- 快速测试量化后的精度损失,确保结果可重复性
项目结构
├── src/ # 测试验证代码
│ ├── val_pnna.py # yolov5s 相关板卡的推理代码
│ ├── validator.py # yolov8s 相关板卡的推理代码
│ └── client.py # jsonrpc_server 相关代码
├── docs/
│ ├── yolov5s_evaluation.md # yolov5s 性能批量评估示例
│ └── yolov8s_evaluation.md # yolov8s 性能批量评估示例
├── resource/ # 资源文件
│ ├── yolov5s/ # yolov5s 权重文件和量化后文件
│ └── yolov8s/ # yolov8s 权重文件和量化后文件
└── README.md # 项目说明文档
环境要求及配置
硬件要求
| 项目 |
要求 |
| NPU 板卡 |
FT78E_DSKC_202311V0 板卡 |
| 连接方式 |
网线连接(自备) |
| 服务状态 |
板卡已开启 jsonrpc_server 服务 |
Python 环境搭建
# 下载虚拟环境管理工具 mamba 的安装脚本
wget "https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease//Miniforge3-$(uname)-$(uname -m).sh"
# 创建 mamba 的安装目录
mkdir -p ~/app
# 安装 mamba 到 ~/app/
bash Miniforge3-Linux-x86_64.sh -b -p ${HOME}/app/miniforge3
# 添加 mamba 的初始化脚本到环境配置文件
echo "source ${HOME}/app/miniforge3/etc/profile.d/mamba.sh" >> ${HOME}/.bashrc
# 重新加载 ~/.bashrc 文件,使 mamba 初始化生效
source ${HOME}/.bashrc
# 创建一个名为 netrans 的虚拟环境,并安装 Python 3.8
mamba create -n netrans python=3.10 -y
# 激活 netrans 虚拟环境
mamba activate netrans
板卡单张图片推理示例
# eval_single.py
import torch
import numpy as np
import cv2
from client import Client
# 初始化 PNNA
method_model = "detection"
pnna_device = Client("ws://192.168.23.100:8000/websocket")
# 新增模型
ret_add = pnna_device.add_model(
'./resource/yolov5s/wksp/dynamic_fixed_point-16/network_binary.nb',
method_model
)
# 数据加载
img = cv2.imread('./resource/yolov5s/0.jpg')
img_data = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# PNNA 推理,返回推理结果和推理时间
infer_data, infer_time = pnna_device.infer(method_model, img_data)
# 结果转化为 tensor
preds = torch.frombuffer(infer_data[0], dtype=torch.float32).reshape(1, 25200, 85)
评估示例
作者:liangliangou