由于我在树莓派4B将torchscript使用pnnx得到.param+.bin文件报bug,没解决,于是我又在windows10上进行格式的转换。
这几步我是在windows10 x64 上进行的。
我用的是稍微比较旧的版本,使用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文件下
在终端输入指令在yolov5s-master中激活环境输入以下指令(记得添加train参数)
python export.py --weights yolov5s.pt --include torchscript --train
在yolov5-master文件夹下得到yolov5s.torchscript文件
下载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文件。
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
到倪辉巨佬的git下载ncnn,https://github.com/Tencent/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