海思hi3516dv300开发--yolov3转caffe
一、yolov3转caffemodel
由于项目中使用的是yolov3模型,而RuyiStudio中用的是caffemodel,需要首先对其进行转换。
1、caffe配置:加入unsample层
https:// pan.baidu.com/s/13GpoYo qKSCeFX0m0ves_fQ#list/path=%2F 密码: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) https:// github.com/marvis/pytor ch-caffe-darknet-convert 基于yolo与yolov2
(2) https:// github.com/ChenYingpeng /darknet2caffe 增加了对yolov3的支持
模型转换:python darknet2caffe.py cfg/yolov3.cfg weights/yolov3.weights prototxt/yolov3.prototxt caffemodel/yolov3.caffemodel
二、转换后模型验证
https:// github.com/ChenYingpeng /caffe-yolov3
(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解决问题
参考资料:
https:// blog.csdn.net/SMF0504/a rticle/details/103976256
https:// blog.csdn.net/nodototao /article/details/85711703
https:// blog.csdn.net/Chen_ying peng/article/details/80692018