背景

最近在做华为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. 深度学习实战教程(1)--手机跑目标检测(YOLO,从DarkNet到Caffe再到NCNN完整打通)

    https://github.com/lwplw 这篇打算就直入主题了,YOLO是什么.DarkNet是什么.Caffe是什么.NCNN又是什么-等等这一系列的基础科普这里就完全不说了,牵扯实在太多, ...

  2. 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目

    这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...

  3. 【darknet速成】Darknet图像分类从模型自定义到测试

    欢迎来到专栏<2小时玩转开源框架系列>,这是我们第12篇文章,前面已经说过了caffe,tensorflow,pytorch,mxnet,keras,paddlepaddle,cntk,c ...

  4. 12大深度学习开源框架(caffe,tensorflow,pytorch,mxnet等)汇总详解

    这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...

  5. Pytorch版本YOLOv3模型转Darknet weights模型然后转caffemodel再转wk模型在nnie上面推理

    Pytorch版本YOLOv3模型转darknet weights模型然后转caffemodel再转wk模型在nnie上面推理 文章目录 Pytorch版本YOLOv3模型转darknet weigh ...

  6. Darknet源码阅读【吐血整理,持续更新中】

    github地址 https://github.com/BBuf/Darknet Darknet源码阅读 Darknet是一个较为轻型的完全基于C与CUDA的开源深度学习框架,其主要特点就是容易安装, ...

  7. Yolov3转化Caffe框架详解

    前些日子因工程需求,需要将yolov3从基于darknet转化为基于Caffe框架,过程中踩了一些坑,特在此记录一下. 1.Yolov3的网络结构 想要转化为Caffe框架,就要先了解yolov3的网 ...

  8. 始于TensorFlow ,终于PyTorch

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | Scott Carey 译者 | Sambodhi 策划 ...

  9. 【杂谈】什么是我心目中深度学习算法工程师的标准

    有三AI平台只专心做原创输出很少扯淡也不蹭热点,不过最近询问的朋友多了,不得不统一写篇文章来回答一下这个大家都很关心的问题,当然,这仅仅是个人观点. 作者&编辑 | 言有三 目前利用深度学习这 ...

最新文章

  1. pytorch bert预训练模型的加载地址
  2. 外国人评价鸿蒙os2.0发布,鸿蒙os2.0发布以来广获好评,却遭到部分网友指责是披着羊皮的狼...
  3. 【异常-举例6:finally】
  4. python单例模式数据库连接池_Python实现单例模式的四种方式
  5. [html] html哪个标签属性可以通过预解析DNS?
  6. 这又是什么新玩法?华为Mate 30 Pro真机谍照现身:音量键大变样
  7. matplotlib画子图subplot
  8. Scut游戏server引擎Unity3d访问
  9. 德勤 oracle par面,德勤霸王PAR面两次,谈感受,发面经
  10. 查看windows产品密钥
  11. 九州PTV8508优盘破解免固件刷入第三方app教程
  12. html中怎么让英文排版,css如何实现英文对话排版
  13. 华师大 OJ 3023
  14. 创建一个有吸引力的标志
  15. uni-app学习(一)
  16. PR工程版本转换攻略,低版本PR打开高版本工程
  17. UNIAPP、微信小程序激励视频、插屏等封装
  18. .net的域名是什么
  19. vm如何压缩磁盘空间_如何释放/收缩vmware虚拟磁盘空间
  20. Win7连接手机提示ADB Interface 找不到驱动程序解决办法

热门文章

  1. Intellij Idea创建maven项目,App.java代码编辑区没有run选项
  2. 2023年推荐几款开源或免费的web应用防火墙
  3. GO+MySQL,如虎添翼!
  4. SPFA算法+例题 :问题 A: 黑暗城堡
  5. Mysql 和 Oracle 的基本知识总结
  6. 网络舆情系统的四大要素-张华平博士
  7. 穴位按摩---自我保健---1
  8. OCR 图像智能字符识别技术
  9. 删除浏览器浏览器删除cookie方法
  10. html标签中文字换行