文章目录
一、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文件
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文件。
三、树莓派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放到同一个文件夹下
在终端打开test文件夹输入指令
./yolov5_pnnx
成功调用摄像头进行检测。