darknet的yolov3转换为yolov3.caffemodel,并验证是否转换成功

本文档详细介绍了如何将darknet的yolov3模型转换为Caffe的yolov3.caffemodel,并提供了转换过程中的配置步骤,包括在Caffe中添加upsample层,使用darknet2caffe工具进行转换,以及转换后的模型验证。在验证过程中,修改了相关参数以适应不同类别的检测,并解决了转换和验证过程中遇到的文件缺失和依赖库问题。
                                           darknet原版检测结果                                         转化后模型检测结果

 

前提:默认已经配置好源码版caffe

配置caffe步骤:

首先配置opencv

注意一些和caffe的版本兼容问题

然后配置caffe

配置成功后在进行下面的配置

1、caffe配置:加入upsample层

由于caffe缺少yolo的upsample层

需要加入相应的信息

可从如下地址进行下载

https://pan.baidu.com/s/13GpoYoqKSCeFX0m0ves_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 -j16
make test -j16
make runtest -j16
make pycaffe -j16

2、yolov3转caffe

github.com/ChenYingpeng/darknet2caffe 增加了对yolov3的支持

模型转换:

python darknet2caffe.py ../models/yolov3.cfg ../models/yolov3.weights yolov3.prototxt  yolov3.caffemodel

yolov3.prototxt 和yolov3.caffemodel为转换结果

3、转换后模型验证

github.com/ChenYingpeng/caffe-yolov3

不用clone,直接下载

(1)修改CMakefile.txt文件,将里面所有的caffe路径改为本机caffe安装路径并验证路径能否打开

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

   yolo_layer.h

   const int classes = 80; // 这里修改为自己的类数

  detector.h

  int m_classes = 80; //改为自己的类数

  yolo_layer.cpp

  修改anchors:

//yolov3
float biases[18] = {10,13,16,30,33,23,30,61,62,45,59,119,116,90,156,198,373,326};

如果是对于tiny网络,在设置float biases_tiny的同时打开yolov3或者yolov4下面的float biases任何一个即可

对于剪枝网络按照原始网络情况设置

(anchor值和原始yolov3.cfg文件一致)

(3)编译

mkdir build
cmake ..
make -j16

(4)测试

./x86_64/bin/demo ../../models_transfer/yolov3.prototxt ../../models_transfer/yolov3.caffemodel ../../models_transfer/test.jpg

4、报错解决

(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)缺少libgflags.so.2的问题

git clone https://github.com/gflags/gflags
cmake .
make -j16
sudo make install
cd /usr/lib/x86_64-linux-gnu
sudo ln -s /usr/lib/x86_64-linux-gnu/libgflags.so libgflags.so.2

(3)缺少libGLEW.so.2.0.0的问题

sudo apt-get install glew-utils
cd /usr/lib/x86_64-linux-gnu/
ls libGLEW.so.2.0.0
sudo ln -s libGLEW.so.2.0.0 libGLEW.so.1.13

 

refer:

https://zhuanlan.zhihu.com/p/95882397

https://blog.csdn.net/e3399/article/details/106058700

https://github.com/ChenYingpeng/darknet2caffe

https://zhuanlan.zhihu.com/p/357316097

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值