yolov3转caffe模型

        最近的项目,需要将训练的yolov3模型部署到hisi3516CV500上去,中间经过yolov3训练出来的weights转caffemodel,这里将自己 走过的步骤和error记录下来,一是自己做个总结记录;二是可以让遇到同样错误的朋友快速解决问题;

        一,yolov3 训练出来的模型转为caffemodel需要(***.cfg和***.weights)两个文件,用github上的转化项目caffe-yolov3工程这里给出地址:https://github.com/ChenYingpeng/caffe-yolov3.git

         第一次调用这个工程,自己的linux上已经安装了caffe环境,进入python,import caffe 没有报错

         调用caffe-yolov3步骤:

         1、git clone https://github.com/ChenYingpeng/caffe-yolov3,cd  model_convert ,

              使用python yolov3_darknet2caffe.py  yolov3.cfg yolov3.weights  yolov3.prototxt  yolov3.caffemodel,不出错就会生成**.prototxt和**.caffemodel两个你需要的文件,但事实“不会那么一帆风顺”

               error1:[libprotobuf ERROR google/protobuf/text_format.cc:274] Error parsing text-format caffe.NetParameter: 2622:20: Message type "caffe.LayerParameter" has no field named "upsample_param".
WARNING: Logging before InitGoogleLogging() is written to STDERR
F0626 10:08:24.390600 9704 upgrade_proto.cpp:90] Check failed: ReadProtoFromTextFile(param_file, param) Failed to parse NetParameter file: yolov3.prototxt

                解决办法:1、原生安装的caffe1.0,没有upsample layer,需要按照这篇博客的第二点添加caffe中缺少的upsample layer层https://blog.csdn.net/Chen_yingpeng/article/details/80692018,我也总结到这里:

                首先caffe环境搭建自行百度解决,其次需要了解Yolov3里面有shortcut、route、upsample、yolo等这些层是caffe不支持的,但是shortcut可以用eltwise替换,route可以用concat替换,yolo只能自己写,upsample可以添加。这里添加upsample这一层的代码我的百度云盘分享:https://pan.baidu.com/s/1xJ3xo4aeCj2ndIqwtaU7Hg 无提取密码哦。

                添加过程:把upsample_layer.hpp 放在include/caffe/layers下面;

                                  把upsample_layer.cpp与upsample_layer.cu放在src/caffe/layers下面;

                往自己的caffe.proto里面添加UpsampleParameter相关参数; 然后重新编译;编译成功之后就可以加载yolov3.prototxt与yolov3.caffemodel运行;

                 这里可能会报错:“fatal error: caffe/proto/caffe.pb.h: No such file or directory(使用caffe时编译出错)”

                 解决办法:1、打开终端,进入caffe所在路径;

                                    2、执行以下指令

                                          mkdir include/caffe/proto

                                          protoc ./src/caffe/proto/caffe.proto --cpp_out=.

                                           mv ./src/caffe/proto/caffe.pb.h ./include/caffe/proto/

                                     3、重新编译即可

 

你可能感兴趣的:(caffe,yolov3TOcaffe)