此文档将详细讲解如何在 Sirider S1 利用 NPU 硬件加速推理 YOLOv4 模型。
文档分为两部分:快速体验和详细教程。
radxa 提供一个开箱即用的 YOLOv4 目标检测例子,旨在用户可以直接在 sirider s1 使用 AIPU 推理 yolov4_tiny 模型,
免去复杂的模型编译和执行代码编译, 这对想快速使用 AIPU 而不想从头编译模型的用户是最佳的选择,
如您对完整工作流程感兴趣可以参考 详细教程 章节。
克隆仓库代码
git clone https://github.com/zifeng-radxa/siriders1_NPU_yolov4_tiny_demo.git
安装依赖
:::tip
建议使用 virtualenv
:::
cd siriders1_NPU_yolov4_tiny_demo/demo
pip3 install -r requirements.txt
运行 yolov4 demo 程序
python3 yolov4_aipu.py -m [mode] -i [your_input_path] -r
# python3 yolov4_aipu,py -m camera -r
参数解析:
`-h`, `--help`: 打印参数信息
`-m`, `--mode`: 输入模式选择,支持['camera', 'video', 'image']
`-i`, `--input`: 输入文件路径, 当 mode 为 ['video', 'image'] 时请提供文件路径
`-r`, `--real_time`: 实时预览
`-s`, `--save`: 保存输出,保存在 `output` 文件夹
要使用周易 Z2 部署目标模型,需要分三步走,模型转换,编译推理文件,应用层程序设计
:::tip
此过程在 x86 主机上完成,进行模型转换前,请根据 周易 AIPU SDK 安装教程
安装 周易SDK
并完成 配置 nn-compiler 环境
:::
克隆仓库代码
git clone https://github.com/zifeng-radxa/siriders1_NPU_yolov4_tiny_demo.git
生成量化数据
cd siriders1_NPU_yolov4_tiny_demo/convert
python3 preprocess.py
生成 aipu 模型
aipubuild tflite_yolo_v4_tinybuild.cfg
生成目标模型路径 ./aipu_yolov4_tiny.bin
编译可用于推理 周易Z2 AIPU 模型的可执行文件
复制仓库例子中 compile
文件夹到 周易 SDK
将 siriders1_NPU_yolov4_tiny_demo 仓库下的 compile
文件夹复制到 YOUR_SDK_PATH/siengine
, 注意修改 YOUR_SDK_PATH 为您的实际路径
cp -r compile YOUR_SDK_PATH/siengine
交叉编译
:::tip
请根据您的交叉编译工具链条路径修改 CMakeList.txt 中的 Linux_Tool_ROOT, 默认为 /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
交叉编译工具链下载地址: gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu
:::
cd YOUR_SDK_PATH/siengine/compile
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. && make
cd ..
生成的输出文件在 out
文件夹中
将生成的 aipu_yolov4_tiny.bin
模型文件和 out/linux
下的文件到 sirider s1 上。
利用 yolov4_aipu.py 测试结果
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:linux/libs
python3 yolov4_aipu.py -m image -i YOUR_IMAGE_PATH -r