海思Hi3519AV100深度学习方案(二)darknet转caffmodel之模型转换(yolov3+caffe+python3.5)

系列文章目录

海思Hi3519AV100深度学习方案(一)darknet转caffmodel之caffe安装(基于Ubuntu16.04+python3.5+opencv3.4.0+cuda10.0)



前言

通过上一篇文章已经完成了模型转换的重要环境caffe的安装配置,本篇主要介绍训练好的darknet yolov3模型转换成海思支持的caffe模型


提示:以下是本篇文章正文内容,下面案例可供参考

一、准备upsample层

因为官方caffe框架不支持yolo3的upsample层,所以需要手动增加upsample层

1.1 下载upsample 层相关的代码 ,网上提供的路径,感谢作者: https://pan.baidu.com/s/13GpoYoqKSCeFX0m0ves_fQ#list/path=%2F。密码:bwrd

1.2 应用下载的源码到caffe框架里面,有四个文件:
upsample_layer.hpp、upsample_layer.cu、upsample_layer.cpp 、 caffe.proto

a) 放入caffe相关的路径里

将upsample_layer.hpp 拷贝到/caffe/include/caffe/layers
将upsample_layer.cu和upsample_layer.cpp 拷贝到/caffe/src/caffe/layers
将 caffe.proto拷贝到/caffe/src/caffe/proto

b) 修改caffe.proto文件
在caffe.proto文件 查找message LayerParameter

message LayerParameter {
………….
optional UpsampleParameter upsample_param = 149;#最后一行添加
}

赋值的149层数跟上面指定的层数不冲突。

c)在caffe.proto文件文件最后添加Upsample层的参数

message UpsampleParameter{
  optional int32 scale = 1 [default = 1];
}

d)完成后需要重新编译caffe

1) sudo make clean 
2) sudo make all -j4
3) sudo make pycaffe -j4
python 
import caffe

二、转换yolo3 darknet模型成caffemodel

1)下载工具 工程caffe-yolov3 https://github.com/ChenYingpeng/caffe-yolov3
得到文件 caffe-yolov3-master.tar.gz
在工作路径下 打开终端解压

 tar -xvf caffe-yolov3-master.tar.gz

2)下载转换程序darknet2caffe link(https://github.com/ChenYingpeng/darknet2caffe)

得到 darknet2caffe-master.zip 解压后将文件夹拷贝到 caffe-yolov3-master路径下
然后cd 到darknet2caffe-master路径下执行命令进行转换:

python darknet2caffe.py yolov3xxx.cfg yolov3xxx.weights xxx.prototxt xxx.caffemodel

注意
根据自己的caffe安装路径修改caffe_root值。

gedit yolov3-darknet2caffe.py 
caffe_root='/home/mina522/caffe/'

至此,就可以产生caffe模型以及对应prototxt。

参考原文链接:https://blog.csdn.net/avideointerfaces/article/details/89111955

三、关于python3源码修改

在转换过程中由于 darknet2caffe.py是用python2写的代码,如果用python3环境,有几处要修改为python3的语法:

1.has_key()函数已抛弃,应该换为 x in y

例如:
if block.has_key(‘name’) 
换为 
if ‘name’ in block: 
#里面有很多 查找并替换所有;

2.print改为加括号(原版代码中print有加括号也有没加括号的,实在是不合理······)

print(‘try:’) ##类似这样的
print (’%s %s: %s’ % (blanks, key,format_value(v)),file=fp)#关于文件写入的有好几处,都要注意修改;

3.修改一处代码错误,源码会使最终生成的prototxt中pad出现小数

convolution_param[‘pad’] = str(int(int(convolution_param[‘kernel_size’])/2))#(源代码少了int())
convolution_param[‘pad’] = str(int(convolution_param[‘kernel_size’])//2)# 或者修改为

4 在转换过程中提示缺少torch模块

在python3下安装指令:

pip3 install http://download.pytorch.org/whl/cu80/torch-0.1.11.post5-cp35-cp35m-linux_x86_64.whl 
pip3 install torchvision

总结

遇到问题多思考,查找总结大神们的解决方法,问题总能解决的,在你遇到问题之前,不知道多少人都曾经遇到过,所以千万不能放弃。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值