二、基于海思芯片:从算法到移植 darknet框架下yolov3转为caffe框架下

一、基于海思芯片:从算法到移植   darknet框架下训练yolov3

二、基于海思芯片:从算法到移植   darknet框架下yolov3转为caffe框架下

三、基于海思芯片:从算法到移植   caffe-yolov3测试训练效果

四、基于海思芯片:从算法到移植   生成海思wk文件并进行成果展示


在本系列教程第一篇文章:一、基于海思芯片:从算法到移植 darknet框架下训练yolov3 ,已经把如何利用darknet框架yolov3模型训练数据集讲解了,要是你是一个小白,估计还是要摸索一点时间的,do not worry,有哥在,万事化小。本篇将着重讲解如何将darknet下的yolov3.cfg和anquanmao_yolov3-voc_30000.weights文件转为caffe框架下anquanmao30000.caffemodel和anquanmao30000.prototxt文件。

首先从github链接https://github.com/marvis/pytorch-caffe-darknet-convert下载pytorch-caffe-darknet-convert到你的工程目录,如图所示

不妨自己阅读一下README,其中我们能用到的部门从darknet转为caffe框架下的部分以及写法我都用红笔圈出来了,如图所示

但是大家都可以看到,我们要转换的是yolov3,但是官方给提供的案例是yolov2,直接用肯定是不能用的,有些初学者,上来不管三七二十一,一顿操作猛如虎,定睛一看原地杵。仔细看一下,yolov3上有upsample层在之前的版本上没有,把upsample_layer.hpp 放在include/caffe/layers下面, 把upsample_layer.cpp与upsample_layer.cu放在src/caffe/layers下面,重新编译caffe。现在进行一下扩展,开阔一下思路,以后所有遇到这种情况,就是我们需要的网络层原作者并没有提供,只需要添加相应的.hpp和.cpp和.cu文件到相应的目录下,然后重新编译集可,这样就能认识这个未知层。举个例子我自己最近利用比较新的Mobilenet_v3想用caffe下训练,但是Depthwise Convolutional Layer和ReLU6 Layer这两个层就是按照上述方法添加,再重新编译caffe,才能让caffe认识.prototxt中所有的网络层。

上面所述具体添加过程可以参考这篇博客,https://blog.csdn.net/Chen_yingpeng/article/details/80692018,上面写的很好,你自己也可以自行参阅其他方法。在这里配置好所有环境之后,执行命令,是我自己的环境啊,小伙伴按照自己的情况自行修改

python darknet2caffe.py yolov3.cfg anquanmao_yolov3-voc_30000.weights anquanmao30000.prototxt anquanmao30000.caffemodel

就是根据darknet框架下的anquanmao_yolov3-voc_30000.weights和yolov3.cfg文件生成caffe框架下的anquanmao30000.prototxt和anquanmao30000.caffemodel,千万注意这几个文件的顺序不要错了。最后转换的过程中需要一点时间,过程只要不报错,直到最后出现unknow layer type yolo这些单词转换就ok了。

我自己的文件都会在以后的篇章中上传,有些小伙伴直接卡在caffe编译上,这个我也不多说了,展开说太过冗余,一定要配置好opencv和cuda的环境,然后再去合理配置Makefile文件,每个人的环境都不一样,这个就不废话了,静下心搞,我稍后会提供一个qq群,供大家交流讨论。下一个篇章将会在caffe框架下测试anquanmao30000.prototxt和anquanmao30000.caffemodel的效果来判断是否正确。

发布了7 篇原创文章 · 获赞 2 · 访问量 3181

猜你喜欢

转载自blog.csdn.net/Bonjour_ca_va/article/details/104086830