知乎专栏:https://zhuanlan.zhihu.com/p/439927321
yolov5s在终端布署上效果还可以,本项目主要达成以下功能:将yolov5s.pt转成yolov5s.onnx,将yolov5s.onnx转成yolov5s.rknn,将yolov5s.rknn部署到rk3399或其他芯片的板子上。
项目地址如下:
https://gitee.com/Dreamdreams8/yolov5s_rknn_deploy/
https://github.com/Dreamdreams8/yolov5s_rknn_deploy
1、下载第三方库opencv:
链接:https://pan.baidu.com/s/1CvXOsnHHaZzxcMh_-x5Ffg 提取码:qkr7
将3rdparty_yolov5s_rknn_deploy/rknn_to_deploy_3rdparty/opencv放到rknn_to_deploy/examples/3rdparty/中
2、 安装RKNN-Toolkit 
1. 安装 Python3.6 和 pip3,也可以用conda创建一个虚拟环境
sudo apt-get install python3 python3-dev python3-pip
一般都是建议独立环境,用conda配置。没有conda的自行安装一个。
conda create -n rknn
conda activate rknn
2. 安装相关依赖
sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 \
libgl1-mesa-glx libprotobuf-dev gcc
3、安装python相关环境
cd onnx_to_rknn
pip install -r requirements-1.1.0.txt
4、安装rknn-toolkit
进入到3rdparty_yolov5s_rknn_deploy/onnx_to_rknn_3rdparty第三方库中
sudo pip3 install rknn_toolkit2*.whl
5、检查 RKNN-Toolkit 是否安装成功
rk@rk:~/rknn-toolkit2/package$ python3
>>> from rknn.api import RKNN
>>>
3、将yolov5s.pt转成yolov5s.onnx
cd yolov5s-to-onnx
1、安装依赖环境,跟上述环境有重叠的地方,一般不冲突
pip install -r yolov5_requirements.txt
2、将yolov5s的模型放到weights中
3、模型转换
python export.py --weights ./weights/yolov5s.pt --img-size 640 --batch 1 --rknn_mode
如果成果则会在weights中生成yolov5s.onnx
4、将yolov5s.onnx转成yolov5s.rknn
1、将生成的yolov5s.onnx放到onnx_to_rknn/examples/onnx/yolov5s中
cd onnx_to_rknn/examples/onnx/yolov5s
2、模型转换
python test.py
如果成功则会在目录下生成yolov5s.onnx,同时生成结果照片

5、将yolov5s.rknn部署到rk3399或其他芯片的板子上。
如果你代码直接在arm64平台上则不需要安装,如果在PC端要安装gcc跟g++版本
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu
将第4个步骤中生成的yolov5s-640-640.rknn拷贝到rknn_to_deploy/examples/yolov5s/model/中
进入到rknn_to_deploy/examples/yolov5s目录中
执行
bash build-linux.sh
如果成功则生成install跟build两个文件夹
将install文件放到板子上,执行
./yolov5s_demo
可以看到在model生成了out.jpg
走到这一步,恭喜你已经完成模型的布署。
参考来源:https://github.com/mrwangwg123/my-rknn-yolov5
参考来源:https://github.com/ultralytics/yolov5
参考来源:https://github.com/airockchip/yolov5