Skip to content

Latest commit

 

History

History
106 lines (78 loc) · 3.56 KB

File metadata and controls

106 lines (78 loc) · 3.56 KB

部署指南

English

请从仓库根目录运行命令。使用以下命令安装通用 Python 依赖:

python -m pip install -r requirements.txt

在模型转换主机上另行安装兼容的 RKNN Toolkit,并在开发板上安装 RKNN Lite/Runtime。Toolkit、BSP、NPU 驱动和 librknnrt 的版本必须相互兼容。 AArch64 开发板应使用 BSP 提供的 OpenCV。

导出与转换

python srcs/export_onnx.py \
  --aadflownet-root /work/AADFlowNet \
  --checkpoint /path/to/aadflownet.pth --size 320 320 \
  --name aadflownet_320x320_fp32

python srcs/rknn/convert.py \
  --onnx build/onnx/aadflownet_320x320_fp32.onnx --target rk3588 --mode fp16

fp16 是 RKNN 的非 INT8 路径,并非与 PyTorch FP32 逐比特一致的路径。 针对 RV1126B 时必须使用 --target rv1126b 重新构建;切勿在不同平台之间 直接复制 RKNN 模型。

INT8 PTQ

PTQ 使用不含光流标签的代表性图像对。图像对文件的每一行格式为 CURRENT REFERENCE

python srcs/quantization/prepare_calibration.py \
  --pairs /path/to/calibration-pairs.txt --size 320 320 \
  --name aadflownet_320x320

python srcs/rknn/convert.py \
  --onnx build/onnx/aadflownet_320x320_fp32.onnx \
  --target rk3588 --mode int8-ptq --dataset build/calibration/aadflownet_320x320/dataset.txt

校准数据应覆盖零运动、小运动、典型运动和最大运动,同时包含真实的光照及 传感器变化。

实验性 INT8 QAT

QAT 需要带标签的 AADFlowNet 训练/验证数据,其中包括 flow_x/*.npyflow_y/*.npy

python srcs/quantization/train_qat.py \
  --aadflownet-root /work/AADFlowNet \
  --checkpoint /path/to/aadflownet.pth --data /path/to/aadflow-data \
  --epochs 5 --name aadflownet_qat

python srcs/quantization/export_qat_onnx.py \
  --aadflownet-root /work/AADFlowNet \
  --checkpoint build/qat/aadflownet_qat/checkpoint_qat_best.pth --size 320 320 \
  --name aadflownet_320x320_qat

python srcs/rknn/convert.py \
  --onnx build/onnx/aadflownet_320x320_qat.onnx --target rk3588 --mode int8-qat

RKNN Toolkit 对 Q/DQ 的支持取决于具体版本。务必在开发板上进行验证。

混合精度

python srcs/rknn/hybrid_quantize.py step1 \
  --onnx build/onnx/aadflownet_320x320_fp32.onnx \
  --dataset build/calibration/aadflownet_320x320/dataset.txt --target rk3588 \
  --name aadflownet_320x320

# 检查生成的 *.quantization.cfg,然后执行:
python srcs/rknn/hybrid_quantize.py step2 \
  --work-dir build/hybrid/rk3588/aadflownet_320x320 --target rk3588 \
  --name aadflownet_320x320

每个平台都需要分别执行这两个步骤。

验证与性能测试

python srcs/rknn/validate.py \
  --reference-onnx build/onnx/aadflownet_320x320_fp32.onnx \
  --rknn build/models/rk3588/aadflownet_320x320_fp32_fp16.rknn \
  --dataset build/calibration/aadflownet_320x320/dataset.txt --backend lite \
  --report-name rk3588-fp16

python srcs/benchmark.py \
  --model build/models/rk3588/aadflownet_320x320_fp32_fp16.rknn \
  --backend rknn --platform rk3588 --contexts 3 --warmup 10 --runs 100

请根据具体应用设置 --max-mae--max-epe 阈值。五路视频流并不意味着 存在五个 NPU 核心;应在实际开发板上测量延迟、吞吐量、内存占用和丢帧情况。

生成的检查点、校准数据、ONNX/RKNN 模型、报告、视频、厂商库和 SDK 文件, 应放在已忽略的 build/ 目录中,或存放在仓库之外。发布包应基于已提交文件 使用 git archive 创建,不要直接压缩工作目录。