yolov5s使用Pnnx部署到树莓派4B(Ncnn)

文章目录

  • 一、pt->torchscript->param+bin(Pnnx)->Ncnn->Ncnnfp16
  • 二、将pt格式转换成.param和.bin格式
    • 2.1配置基本环境以及yolov5s.pt文件配置
    • 2.2yolov5s.pt->yolov5s.torchscript
    • 2.3yolov5.torchscript->yolov5s.ncnn.param/bin
  • 三、树莓派Ncnn环境配置
    • 3.1安装git和cmake依赖、其他依赖
    • 3.2下载Ncnn并解压
  • 四、编译Ncnn
  • 五、测试摄像头


一、pt->torchscript->param+bin(Pnnx)->Ncnn->Ncnnfp16

由于我在树莓派4B将torchscript使用pnnx得到.param+.bin文件报bug,没解决,于是我又在windows10上进行格式的转换。

二、将pt格式转换成.param和.bin格式

这几步我是在windows10 x64 上进行的。

2.1配置基本环境以及yolov5s.pt文件配置

我用的是稍微比较旧的版本,使用conda创建的环境,对yolov5s.pt文件进行格式转换。具体环境也可参照https://github.com/ultralytics/yolov5requirements.txt进行配置。
下载yolov5官方源码https://github.com/ultralytics/yolov5,下载最新的yolov5s.pt文件https://github.com/ultralytics/yolov5/releases/tag/v6.1并将yolov5.pt文件放到解压后的yolov5-master文件下

2.2yolov5s.pt->yolov5s.torchscript

在终端输入指令在yolov5s-master中激活环境输入以下指令(记得添加train参数)

 python export.py --weights yolov5s.pt --include torchscript --train

在yolov5-master文件夹下得到yolov5s.torchscript文件
yolov5s使用Pnnx部署到树莓派4B(Ncnn)_第1张图片

2.3yolov5.torchscript->yolov5s.ncnn.param/bin

下载pnnx工具包https://github.com/pnnx/pnnx,有三个版本,我在树莓派4B上跳bug,就在windows上进行。下载完成后将yolov5s.torchscript放到pnnx文件夹下,在终端上输入如下指令

pnnx.exe yolov5s.torchscript inputshape=[1,3,640,640] inputshape2=[1,3,320,320]

使用pnnx.exe运行yolov5s.torchscript,生成yolov5s.ncnn.param和yolov5s.ncnn.bin文件。

yolov5s使用Pnnx部署到树莓派4B(Ncnn)_第2张图片

三、树莓派Ncnn环境配置

3.1安装git和cmake依赖、其他依赖

sudo apt-get install git cmake

sudo apt-get install -y gfortran
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev libatlas-base-dev

3.2下载Ncnn并解压

到倪辉巨佬的git下载ncnn,https://github.com/Tencent/ncnn

四、编译Ncnn

在ncnn文件夹下新建一个build文件夹,在这个文件夹下输入以下指令进行编译,注意:yolov5_pnnx.cpp文件ncnn/example已经给出,我修改部分(添加了摄像头检测)已经上传至(https://github.com/wodianlehaibuxingma/yolov5_ncnn我没有修改yolov5_pnnx.cpp名字)

cmake -DCMAKE_BUILD_TYPE=Release -DNCNN_VULKAN=OFF -DNCNN_BUILD_EXAMPLES=ON ..
make -j$(nproc)

注意:…VULKAN=OFF…

编译完成,会在build文件夹下生成yolov5_pnnx

五、测试摄像头

将生成的yolov5s.ncnn.param、yolov5s.ncnn.bin文件、yolov5_pnnx.cpp和编译后的yolov5_pnnx放到同一个文件夹下
yolov5s使用Pnnx部署到树莓派4B(Ncnn)_第3张图片
在终端打开test文件夹输入指令

./yolov5_pnnx

yolov5s使用Pnnx部署到树莓派4B(Ncnn)_第4张图片
成功调用摄像头进行检测。

你可能感兴趣的:(python,开发语言)