YOLOv4 目标检测
此文档将详细讲解如何在 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
-
安装依赖
提示建议使用 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
文件夹
详细教程
模型转换
此过程在 x86 主机上完成,进行模型转换前,请根据 周易 Z2 AIPU 使用教程 安装 周易SDK 并完成 配置 nn-compiler 环境
- 生成量化数据
cd siriders1_NPU_yolov4_tiny_demo/convert
python3 preprocess.py - 生成 aipu 模型
生成目标模型路径 ./aipu_yolov4_tiny.bin
aipubuild tflite_yolo_v4_tinybuild.cfg
编译 AIPU 模型可执行推理文件
编译可用于推理 周易Z2 AIPU 模型的可执行文件
-
复制仓库例子中
compile
文件夹到 周易 SDK将 siriders1_NPU_yolov4_tiny_demo 仓库下的
compile
文件夹复制到YOUR_SDK_PATH/siengine
, 注意修改 YOUR_SDK_PATH 为您的实际路径cp -r compile YOUR_SDK_PATH/siengine
-
交叉编译
提示请根据您的交叉编译工具链条路径修改 CMakeList.txt 中的 Linux_Tool_ROOT, 默认为
/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
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