darknet转caffe
背景
最近在做华为atlas平台AI项目,atlas平台只支持tensorflow和caffe模型,而自己训练的是yolov3/yolov4/yolov5的darknet模型,需要先转换到pb或者caffemodel格式。
====================================================================
在网上查过一些模型转换方式,一种是先转ONNX模型,再转tensorflow/caffe模型,这当中踩过不少坑,大家可以参考这个github工程;本人之前通过这个github工程转pb文件成功过,但是最后从pb文件转到atlas支持的om文件时,报有些层不支持的错误,具体可以参见这篇帖子.
后来又采取另外一种方式(推荐这种,简单、适应性强),就是要讲的darknet直接转caffe。我用的是这个github工程,非常好用,它里面的models/darknet_yolov3/darknet_yolov3/darknet2caffe.py的脚本是python2.7写的,配置非常简单,必须要有toch和caffe环境,用python2.7最简单,python3.X有些语句不支持,不过修改一下就好了,我在python3.6和python2.7下都跑通过,坑比较少,只是这个只能转yolov3系列的,yolov4的mish激活函数不支持,你可以将mish改成leaky relu。转换精度本人测试过yolov3,tiny_yolov3,yolov3.pelee.spp.panet等网络,精度几乎没有下降。
models/darknet_yolov3/darknet_yolov3/darknet2caffe.py转换模型时碰到的问题:
1.yolov3.pelee.spp.panet的route层有三个,在darknet2caffe.py的307行添加一个if分支,否则会报错:
if (bottom_layer_dim == 3):layer_name = [layer_id + int(idx) if int(idx) < 0 else int(idx) + 1 for idx in layer_name ]prev_layer_id1 = int(layer_name[0])prev_layer_id2 = int(layer_name[1])prev_layer_id3 = int(layer_name[2])bottom1 = topnames[prev_layer_id1]bottom2 = topnames[prev_layer_id2]bottom3 = topnames[prev_layer_id3]route_layer['bottom'] = [bottom1, bottom2, bottom3]
2.在转换leaky loss版本的yolov4时,route层有时为单个正数,将296行的prev_layer_id = layer_id + int(block[‘layers’])替换成下面的代码,否则会报错:
layer_name = [layer_id + int(idx) if int(idx) < 0 else int(idx) + 1 for idx in layer_name ]
prev_layer_id = int(layer_name[0])
后来在网上找到了支持yolov4的mish层工程https://github.com/zhangsong8/darknet2caffe,写的也是非常不错,将mish.h、mish.cpp、mish.cu拷贝到对应目录下重新编译caffe工程就好了,so easy。
希望此博客能帮到转模型遇坑的你。
====================================================================
下面贴出配置环境用到的一些命令:
python demo_darknet2onnx.py ./model/yolov4.cfg ./model/yolov4.weights ./model/000150.jpg 1
python convertCaffe.py ./model/yolov4_1_3_608_608_static0.onnx ./model/zhang.prototxt ./model/zhang.caffemodel
python convertCaffe.py ./yolov4_1_3_608_608_static.onnx ./zhang.prototxt ./zhang.caffemode
pip install scikit-image
conda create --name pytorch1.3.1 python=3.6
pip install torch==1.4.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install torchvision==0.4.2 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install onnx==1.6.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install onnxruntime-gpu==1.0.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install tensorflow-gpu==1.15.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install onnx-tf==1.5.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install opencv-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install matplotlib -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install tqdm -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install scikit-image -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install protobuf -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install numpy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.compython darknet2caffe.py ../../yolov3.cfg ../../yolov3.weights zhang.prototxt zhang.caffemodelexport PYTHONPATH=/root/zhangsong/huawei/trainning/caffe/MobileNet-YOLO-master/python:$PYTHONPATH
export PYTHONPATH=/root/zhangsong/huawei/trainning/caffe/MobileNet-YOLO-master/python/caffe:$PYTHONPATH
darknet转caffe相关推荐
- 深度学习实战教程(1)--手机跑目标检测(YOLO,从DarkNet到Caffe再到NCNN完整打通)
https://github.com/lwplw 这篇打算就直入主题了,YOLO是什么.DarkNet是什么.Caffe是什么.NCNN又是什么-等等这一系列的基础科普这里就完全不说了,牵扯实在太多, ...
- 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目
这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...
- 【darknet速成】Darknet图像分类从模型自定义到测试
欢迎来到专栏<2小时玩转开源框架系列>,这是我们第12篇文章,前面已经说过了caffe,tensorflow,pytorch,mxnet,keras,paddlepaddle,cntk,c ...
- 12大深度学习开源框架(caffe,tensorflow,pytorch,mxnet等)汇总详解
这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...
- Pytorch版本YOLOv3模型转Darknet weights模型然后转caffemodel再转wk模型在nnie上面推理
Pytorch版本YOLOv3模型转darknet weights模型然后转caffemodel再转wk模型在nnie上面推理 文章目录 Pytorch版本YOLOv3模型转darknet weigh ...
- Darknet源码阅读【吐血整理,持续更新中】
github地址 https://github.com/BBuf/Darknet Darknet源码阅读 Darknet是一个较为轻型的完全基于C与CUDA的开源深度学习框架,其主要特点就是容易安装, ...
- Yolov3转化Caffe框架详解
前些日子因工程需求,需要将yolov3从基于darknet转化为基于Caffe框架,过程中踩了一些坑,特在此记录一下. 1.Yolov3的网络结构 想要转化为Caffe框架,就要先了解yolov3的网 ...
- 始于TensorFlow ,终于PyTorch
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | Scott Carey 译者 | Sambodhi 策划 ...
- 【杂谈】什么是我心目中深度学习算法工程师的标准
有三AI平台只专心做原创输出很少扯淡也不蹭热点,不过最近询问的朋友多了,不得不统一写篇文章来回答一下这个大家都很关心的问题,当然,这仅仅是个人观点. 作者&编辑 | 言有三 目前利用深度学习这 ...
最新文章
- pytorch bert预训练模型的加载地址
- 外国人评价鸿蒙os2.0发布,鸿蒙os2.0发布以来广获好评,却遭到部分网友指责是披着羊皮的狼...
- 【异常-举例6:finally】
- python单例模式数据库连接池_Python实现单例模式的四种方式
- [html] html哪个标签属性可以通过预解析DNS?
- 这又是什么新玩法?华为Mate 30 Pro真机谍照现身:音量键大变样
- matplotlib画子图subplot
- Scut游戏server引擎Unity3d访问
- 德勤 oracle par面,德勤霸王PAR面两次,谈感受,发面经
- 查看windows产品密钥
- 九州PTV8508优盘破解免固件刷入第三方app教程
- html中怎么让英文排版,css如何实现英文对话排版
- 华师大 OJ 3023
- 创建一个有吸引力的标志
- uni-app学习(一)
- PR工程版本转换攻略,低版本PR打开高版本工程
- UNIAPP、微信小程序激励视频、插屏等封装
- .net的域名是什么
- vm如何压缩磁盘空间_如何释放/收缩vmware虚拟磁盘空间
- Win7连接手机提示ADB Interface 找不到驱动程序解决办法