yolov5转onnx,yolov5入门

  yolov5转onnx,yolov5入门

  https://blog.csdn.net/watermelon1123/article/details/82083522

  下一节将重点介绍如何实现从darknet到yolov3的转换。首先,这个过程要感谢陈英鹏提供的代码。博客在这里。

  1.加入上采样层并编译Caffe

  上采样层的代码在这里,密码bwrd。

  的upsample_layer.hpp放在include/cafe/layers下;Upsample_layer.cpp和upsample_layer.cu放在src/caffe/layers下。

  修改对应的caffe.proto文件,在src/caffe/proto/caffe.proto中添加最后一行LayerParameter:

  消息层参数{

  .

  可选upsample parameter up sample _ param=149;

  }

  请注意,149是新图层的ID号。请根据您的个人caffe.proto文件指定ID号。

  然后在caffe.proto中添加上采样层的参数:

  消息UpsampleParameter{

  可选int 32 scale=1[默认值=1];

  }

  然后重新编译Caffe,以便向上采样层被添加到Caffe中。更多信息,请参考caffe中添加新层的教程。

  上面已经说过,转换成Caffe后只涉及推理过程,所以我们需要转换训练好的模型(。cfg)和重量文件(。重量)到。proto和。对应Caffe下的Caffe模型。代码可以借鉴github上的模型转换工具。注意,这个工具需要pytorch支持。请自行安装。而这个工具应用于Yolov2,因为我们在Caffe中添加了相应的upsample层并且yolov3和v2的网络结构发生了变化,所以需要替换相应的darknet2caffe.py,代码在这里,密码是i6y2。

  至此,我们的准备工作结束,可以通过Caffe得到相应的blobs了。这些blobs中包含的信息与darknet输入到yolo层的信息相同。我们只需要通过yolo层分析blobs的信息就可以得到目标的位置和类别信息。由于个人原因,这部分代码不能打开,不过可以参考陈英鹏的代码,在这里。测试也是可用的。只是注意,因为我们yolo层的检测过程是在Caffe之外实现的,所以yolo层对应的信息作者是以硬编码的形式加入到代码中的。使用时需要根据个人yolo层的参数进行修改(比如我测试时yolo_layer.cpp中函数get_detections中的类别数没有变化,发生了无法形容的结果.).

  yolov3从暗网过渡到Caffe的整个过程就结束了,其中yolov3的原理就不详细解释了。本文主要关注与向Caffe框架过渡相关的内容。关于yolov3的具体原理文章推荐大家看这篇文章,里面详细讲解了yolov1~v3(从一组大一新生的论文中,让人不禁感叹长江后浪推前浪,前浪是GG)。关于yolov3的训练代码,推荐大家去看看darknet的源代码,尤其是Yolo层的代码。作者文章中有很多内容没有说清楚,有兴趣的可以仔细研究一下。

  【代码使用】YOLOv3和高斯YOLOv3模型使用指南caffe https://blog.csdn.net/weixin _ 38715903/article/details/103695844 yolov 3 caffe使用

  1)转换为咖啡模式

  前提:我只是通过训练得到了相应的权重,准备了yolo要求的layer layer - upsample_layer.cpp,upsample_layer.cu,upsample_layer.h。

  参考:https://blog.csdn.net/watermelon1123/article/details/82083522

  添加一个新的层来完成咖啡的制备。然后安装pytorch。

  克隆转换工具:

  git克隆https://github.com/marvis/pytorch-caffe-darknet-convert

  开始转换:最后会得到yolov 3 . proto txt yolov 3 . caffemodel。

  python 2.7 darknet 2 caffe . py CFG/yolo v3-VOC . CFG yolo v3-VOC . weights yolo v3 . proto txt yolo v3 . caffemodel

  将yolov3-voc.weights放入文件夹。

  然后把yolov3-voc.cfg放在。/cfg文件夹。

  Yov3.prototxt yolov3.caffe model是要生成的caffe模型和pro文件的名称。

  2)使用caffe模型:

  克隆使用工具:

  git克隆https://github.com/ChenYingpeng/caffe-yolov3

  cd咖啡-yolov3

  将生成的caffemodel和prototxt放在。/caffemodel和。/prototxt文件[如果没有,就创建一个]

  修改cmakelist.txt

  全部都要改成自己的框架路径

  #构建C/C接口

  包含目录($ { PROJECT _ INCLUDE _ DIR } $ { GIE _ PATH }/INCLUDE)

  包含目录(${PROJECT_INCLUDE_DIR}

  /home/Ubuntu 247/李良/咖啡-固态硬盘/包含

  /home/Ubuntu 247/李良/咖啡-固态硬盘/构建/包含

  )

  文件(全球推理资源*。cpp * .铜)

  文件(全局推理包括*。h)

  cuda _ add _ library(yolov 3-插件共享$ {推理资源})

  目标_链接_库(约洛夫3-插件

  /home/Ubuntu 247/李良/caffe-SSD/build/lib/lib caffe。因此

  /usr/lib/x86 _ 64-Linux-GNU/libglog。因此

  /usr/lib/x86 _ 64-Linux-GNU/libgflags。所以。2

  /usr/lib/x86 _ 64-Linux-GNU/lib boost _ system。因此

  /usr/lib/x86 _ 64-Linux-GNU/libglew。所以。1.13

  )

  如果你在训练中使用的是自己的锚值,要修改锚的值(yolo.cpp中),再进行编译;还有yolo.h中的班数

  /*

  *公司:综合

  *作者:陈

  *日期:2018年6月四日

  */

  #包含" yolo_layer.h "

  #包含"布拉斯. h "

  #包含" cuda.h "

  #include activations.h

  #包含box.h

  #包含标准视频

  #包含数学。h

  //yolov3

  //浮点偏差[18]={10,13,16,30,33,23,30,61,62,45,59,119,116,90,156,198,373,326 };

  浮点偏差[18]={7,15,16,18,22,32,9,40,20,71,37,39,52,65,70,110,105,208 };

  /*

  *公司:综合

  *作者:陈

  *日期:2018年6月四日

  */

  # ifndef _ _ YOLO _图层_H_

  #定义_ _ YOLO _图层_H_

  #包含咖啡/咖啡. hpp

  #包含字符串

  #包含矢量

  使用名称空间框架

  const int class=3;

  常量浮点阈值=0.5

  常量浮点hier _ thresh=0.5

  常量浮点型nms _ thresh=0.5

  const int num _ bbox es=3;

  const int relative=1;

  编译

  创建目录构建

  激光唱片版本

  第一种.

  品牌-j12

  运行:/x86_64/jwdfn/detectnet./prototxt/yolov3.prototxt./caffemodel/yolov3.caffemodel./images/dog.jpg

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: