yolov3的模型转换为caff以及如意工具量化
·
- 1:Caffe环境搭建
- 下载文件修改源:修改pip
- 2:Darknet2caffe模型转换
- 1:在Ubuntu系统下,分步执行下面的命令,安装编译darknet2caffe时需要的torch环境
- pip3 install torchvision==0.5.0 -i Simple Index some-package
- pip3 install torch==1.4.0 -i Simple Index some-package
- 2:执行下面的命令,下载darknet2caffe的代码到Ubuntu系统的code目录下
- mkdir code
- cd code
- mkdir code
- 3:由于python的本地版本是python3.6,开源代码为 python2.X,因此需要对代码语法做适当调整
- 将 darknet2caffe.py 中的所有的 if block.has_key('name'):替换成 if 'name' in block:

- 一共有20个地方需要修改

- 再将caffe_root修改为caffe的实际的绝对路径,如:/home/hispark/code/caffe/

- 将prototxt.py 按照如下方式进行修改,适配python3版本的print。
- 进入darknet2caffe目录,执行下面的命令,将三个文件拷贝到caffe目录下
- cp caffe_layers/upsample_layer/upsample_layer.hpp ../caffe/include/caffe/layers/
- cp caffe_layers/upsample_layer/upsample_layer.c* ../caffe/src/caffe/layers/
- 进入caffe的 src/caffe/proto/目录下,修改caffe.proto文件
- cd ../caffe/src/caffe/proto/
- 在 message LayerParameter {}中新增 optional UpsampleParameter upsample_param = 150;

- 在caffe.proto最后添加UpsampleParameter参数,如下图所示:

- 在caffe目录下,执行下面的命名,重新编译caffe环境,命令如下。
- make clean
- make -j4
- make pycaffe
- 若无任何报错,证明darknet2caffe环境和代码已经适配成功。
- 将 darknet2caffe.py 中的所有的 if block.has_key('name'):替换成 if 'name' in block:
- 1:在Ubuntu系统下,分步执行下面的命令,安装编译darknet2caffe时需要的torch环境
- 3:模型转换
- 将训练生成的文件存放到darknet2caffe目录下,如:resnet18_new_final.weights

- 将之前配置的cfg文件放在以下目录

- 启动命令:python3.8 darknet2caffe.py cfg/yolov3-hat.cfg yolov3-hat_last.weights yolov3_caffe.prototxt yolov3_caffe.caffemodel

- yolov3_caffe.prototxt和 yolov3_caffe.caffemodel为生成的目标文件
- yolov3-hat.cfg 为之前配置的文件,生成目标文件:.caffemodel和一个.prototxt文件

- 出现错误
- 错误

- 可能问题:可能磁盘满了
- df -a

- snap满了
- df -a
- 解决:sudo apt autoremove --purge snapd
- 错误
- 将训练生成的文件存放到darknet2caffe目录下,如:resnet18_new_final.weights
- 4:模型量化
- RuyiStudio启动

- 新建工程


- 双击该cfg文件

- 修改以下参数


- 制作imagin.list,路径里不要有中文,不需要mean文件,全填好后运行生成wk文件

- 运行

- 生成


- RuyiStudio启动
- 5:开发板端的信息函数修改
- 修改添加模型文件


- 修改:SAMPLE_SVP_NNIE_Yolov3_SoftwareInit

- 还要修改sample_svp_nnie_software.h中关于yolov3的参数设置,修改为5+classnum(自己类别的个数)

- 如果是部分类别检测不出来sample_svp_nnie_software.c中找到static HI_S32 SVP_NNIE_Yolov3_GetResult,修改里面的

- yolov3出现精度损失问题
- 主要原因是生成的wk参数没有设置对,在ruyistdio中将image_type中的RGB_order设置为RGB

- 其中 RGB_order 项需选择为 RGB ,而后在程序中向源Blob填充数据时需按照 BGR 填充,以320*320分辨率的 dog_bike_car 示例为例,两者组合后的预测结果如下表所示:

- 其中 RGB_order 项需选择为 RGB ,而后在程序中向源Blob填充数据时需按照 BGR 填充,以320*320分辨率的 dog_bike_car 示例为例,两者组合后的预测结果如下表所示:
- 将图片转为BGR格式:YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(下)_yolox 海思_燕卫博的博客-CSDN博客

- 生成该bgr文件

- 生成该bgr文件
- 主要原因是生成的wk参数没有设置对,在ruyistdio中将image_type中的RGB_order设置为RGB
- 修改添加模型文件
更多推荐



所有评论(0)