海思hi3516dv300开发--yolov3转caffe

一、yolov3转caffemodel

由于项目中使用的是yolov3模型,而RuyiStudio中用的是caffemodel,需要首先对其进行转换。

1、caffe配置:加入unsample层

pan.baidu.com/s/13GpoYo 密码:bwrd

其中的upsample_layer.hpp放入include/caffe/layers下面;upsample_layer.cpp与upsample_layer.cu放在src/caffe/layers下面。

修改相应的caffe.proto文件,src/caffe/proto/caffe.proto中的LayerParameter的最后一行加入加入:

message LayerParameter {

.....

optional UpsampleParameter upsample_param = 149;

}

注意149为新层的ID号,该ID号请根据个人的caffe.proto文件指定即可。

然后再caffe.proto中添加upsample层的参数:

message UpsampleParameter{

optional int32 scale = 1 [default = 1];

}

重新编译Caffe:

make clean

make all -j8

make pycaffe -j8

2、yolov3转caffe

(1) github.com/marvis/pytor 基于yolo与yolov2

(2) github.com/ChenYingpeng 增加了对yolov3的支持

模型转换:python darknet2caffe.py cfg/yolov3.cfg weights/yolov3.weights prototxt/yolov3.prototxt caffemodel/yolov3.caffemodel

二、转换后模型验证

github.com/ChenYingpeng

(1)修改CMakefile.txt文件,改为本机caffe安装路径

(2)根据自己的yolov3模型修改参数

yolo_layer.h

yolo_layer.cpp (anchor值见yolov3.cfg文件)

(2)编译

mkdir build

cmake ..

make -j8

(3)测试

./x86_64/bin/detectnet ../prototxt/yolov3.prototxt ../caffemodel/yolov3.caffemodel ../images/dog.jpg

三、可能的问题

转换与测试过程中遇到了两个问题:

1、caffe/blob.hpp:9:34: fatal error: caffe/proto/caffe.pb.h: 没有那个文件或目录

解决方法:

转到caffe目录下, 运行以下代码:

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

mkdir include/caffe/proto

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

2、cmke …时,出现 error: identifier “nullptr” is undefined, expected a ";"等错误

解决方法:

这个应该C++11版本的问题,修改CMakeLists.txt文件

12-16行为新添加的内容, 12-15行可以选择添加, 添加-std=c++11解决问题


参考资料:

blog.csdn.net/SMF0504/a

blog.csdn.net/nodototao

blog.csdn.net/weixin_38

blog.csdn.net/Chen_ying

发布于 2020-02-22 17:36