首页 > 其他分享 >海思3559 yolov5模型转wk详细笔记

海思3559 yolov5模型转wk详细笔记

时间:2024-07-03 10:09:01浏览次数:18  
标签:yolov5 onnx wk 3559 插入 caffe 图片 描述

文章目录

    前言
    1.编译caffer
        1.1安装虚拟机
        1.2安装caffer
        1.3编译python接口
    2.适应wk的yolov5模型训练
        2.1下载yolov5-6.0项目源码
        2.2安装yolov5-6.0运行环境
        2.3修改模型
        2.4修改数据集
        2.5修改模型算子
        2.6 模型训练
    3.模型转换:pt->onnx->caffe->wk
        3.1 pt->onnx
        3.2 onnx->caffe
        3.4 caffe->wk
    总结

前言

目前项目需要在海思3559上开发,但查了相关文档,感觉还是比较复杂的。相比于3403、3519的使用atc工具直接从onnx->om,3559需要从onnx->caffer->wk则显得复杂许多,特此记录一下。
下面先给笔者自己在此过程中的架构与各架构的主要任务框图:
在这里插入图片描述
1.编译caffer
1.1安装虚拟机

笔者使用的是VM安装的Ubuntu18.04
这里关于安装虚拟机与换源等操作不再赘述,默认读者都已经准备完成了。
1.2安装caffer

安装依赖库

sudo apt-get update
sudo apt-get install libprotobuf-dev
sudo apt-get install libleveldb-dev
sudo apt-get install libsnappy-dev
sudo apt-get install libopencv-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install liblmdb-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install --no-install-recommends libboost-all-dev

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

下载项目源码
由于笔者虚拟机上没梯子,就用zip包的方式下载源码。
下载caffer源码
https://github.com/BVLC/caffe/tags
在这里插入图片描述
下载caffe-plus工程
https://github.com/jnulzl/caffe_plus
在这里插入图片描述
将以上两份zip源码分别解压为caffer与caffe-plus。

添加upsample层和transpose层

    将caffe_plus/include/caffe/layers/upsample_layer.hpp
    caffe_plus/include/caffe/layers/permute_layer.hpp
    复制到caffe/include/caffe/layers/
    ​
    将caffe_plus/src/caffe/layers/upsample_layer.cpp
    caffe_plus/src/caffe/layers/upsample_layer.cu
    caffe_plus/src/caffe/layers/permute_layer.cpp
    caffe_plus/src/caffe/layers/permute_layer.cu
    复制到caffe/src/caffe/layers/

修改caffe.proto文件

    gedit caffe/src/caffe/proto/caffe.proto
    在optional WindowDataParameter window_data_param = 129;(约第407行)后增加代码:
    optional PermuteParameter permute_param = 150;
    optional UpsampleParameter upsample_param = 151;

在这里插入图片描述

    在末尾增加代码:
    message PermuteParameter {
    // The new orders of the axes of data. Notice it should be with
    // in the same range as the input data, and it starts from 0.
    // Do not provide repeated order.
    repeated uint32 order = 1;
    }
    message UpsampleParameter {
    optional int32 height = 1 [default = 32];
    optional int32 width = 2 [default = 32];
    optional int32 height_scale = 3 [default = 2];
    optional int32 width_scale = 4 [default = 2];
    enum UpsampleOp {
    NEAREST = 0;
    BILINEAR = 1;
    }
    optional UpsampleOp mode = 5 [default = BILINEAR];
    }

在这里插入图片描述

配置Makefike.config

//进入caffe目录
cd caffe
//备份配置文件
cp Makefike.config.example Makefike.config
//打开配置文件
gedit Makefile.config

    1
    2
    3
    4
    5
    6

    去掉CPU_ONLY前面的#号注释,使得CPU_ONLY := 1

在这里插入图片描述

    找到INCLUDE_DIRS 其后面新增内容 /usr/include/hdf5/serial与/usr/include
    找到LIBRARY_DIRS 其后面新增内容 /usr/lib/x86_64-linux-gnu/hdf5/serial与/usr/lib/x86_64-linux-gnu,删除/usr/local/lib
    这里的新增/usr/include 、/usr/lib/x86_64-linux-gnu与删除/usr/local/lib为opencv的配置,需要根据自己的时间情况进行修改,保证能找到对应版本的opencv就行。

在这里插入图片描述

执行编译

make all
make test
make runtest

    1
    2
    3

在这里插入图片描述
安装完成没有报错,全绿说明caffe安装成功,如果其中一项发生错误,make clean重新编译即可。
1.3编译python接口

Ubuntu18.04安装的是python2.7(python)与python3.6(python3),以下操作都是在python2.7下进行的。
先安装pip与fortran

sudo apt install python-pip
sudo apt-get install gfortran
pip install --upgrade pip==20.3.4

    1
    2
    3

    打开caffer/python/requirements.txt
    将python-dateutil>=1.4,<2
    修改为
    python-dateutil

在这里插入图片描述
逐行读取requirements.txt进行 pip install

pip install -r requirements.txt

    1

由于需要进行onnx->caffe的操作,所以需要安装onnx包,这里推荐安装1.9.0版本

pip install onnx==1.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

    1

将caffe根目录下的python文件所在路径加入到全局环境变量

vim ~/.bashrc

    1

在末尾添加一句:

export PYTHONPATH=/home/lh/data/3559/caffe/python:$PYTHONPATH

    1

路径需根据自己的实际情况修改。
在这里插入图片描述
保存后,并使其生效:

source ~/.bashrc

    1

打开caffer目录下的Makefile.config,找到文件中的PYTHON_INCLUDE

查看python2.7路径是否与实际一致,不一致则需要修改,笔者这里需要修改。
在这里插入图片描述

保存关闭后执行

make pycaffe

    1

输出以下信息表示编译python接口成功:

    PROTOC (python) src/caffe/proto/caffe.proto

验证python接口

python
import caffe

    1
    2

在这里插入图片描述
导入caffe模块不报错,则表示安装成功。
2.适应wk的yolov5模型训练
2.1下载yolov5-6.0项目源码

https://github.com/ultralytics/yolov5/tags

在这里插入图片描述
2.2安装yolov5-6.0运行环境

参考之前写的文章:https://blog.csdn.net/JulyLi2019/article/details/111666353
2.3修改模型

打开yolov5-6.0项目工程,将models目录下新建一个yolov5s_hs.yaml:

# YOLOv5

标签:yolov5,onnx,wk,3559,插入,caffe,图片,描述
From: https://www.cnblogs.com/eastgeneral/p/18281059

相关文章

  • YOLOv5改进 | 主干网络 | ODConv + ConvNeXt 增强目标特征提取能力
    秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 ......
  • SHELL脚本学习(十四)gawk进阶
    一、使用变量gawk支持两种变量内建变量自定义变量1.1内建变量1.1.1字段和记录分隔符变量数据字段变量允许使用美元符号$和位置来引用对应的字段。$1对应第一个数据字段,$2对应第二个数据字段,以此类推。数据字段用字段分隔符划定。默认情况下,字段分隔符是一个空......
  • 文本三剑客之grep和awk
    文本三剑客之grep和awk目录文本三剑客之grep和awk一、grep命令grep命令的语法:grep[选项]...查找条件目标文件命令作用-m数字多个匹配只取第一个-v取反-i忽略大小写-n显示匹配的行号-c统计匹配的行数-o仅显示匹配到的字符串-A数字匹配后几......
  • YOLOv5模型优化&性能提升&实战项目 专栏介绍
    订阅专栏后,私信发一下微信号和订阅截图。专栏权益:1、一份深度学习源码(如果没有源码,会在一周内制作完成,不额外收费)!!!2、免费远程部署源码!!!4、加微信免费答疑!!!5、VPN加速器永久使用!!!6、专栏内内容持续更新,永久观看,包含项目结果图!!!7、已有项目可视化定制!!!8、第二份源码价格半......
  • 基于YOLOv5的火灾检测系统的设计与实现
    基于YOLOv5的火灾检测系统的设计与实现概述系统架构主要组件代码结构功能描述YOLOv5检测器视频处理器主窗口详细代码说明YOLOv5检测器类视频处理类主窗口类使用说明环境配置运行程序操作步骤检测示例图像检测视频检测实时检测数据集介绍数据集获取数据集规模YOLOv5......
  • YOLOv5快速入门和使用
    YOLOv5快速入门使用官方文档地址:https://docs.ultralytics.com/zh/yolov5/如果文章看不懂,过一遍自己整理过程,然后去参考视频中看对应的视频:环境准备-->代码拉取-->打标-->训练模型-->运行 一、配置虚拟环境(不止是YOLO如果使用其余的需要隔离环境也可以这样操作)为了防止影......
  • 文本三剑客之awk命令
    概念awk是Linux以及UNIX环境中现有的功能最强大的数据处理工具,awk其名称得自于它的创始人AlfredAho、PeterWeinberger和BrianKernighan姓氏的首个字母awk是一种处理文本数据的编程语言,适合文本处理和报表生成,awk的设计使得它非常适合于处理由行和列组成的文本数据......
  • 助力樱桃智能自动化采摘,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建果园种植采摘
    随着科技的飞速发展,人工智能(AI)技术已经渗透到我们生活的方方面面,从智能家居到自动驾驶,再到医疗健康,其影响力无处不在。然而,当我们把目光转向中国的农业领域时,一个令人惊讶的事实映入眼帘——在这片广袤的土地上,农业生产仍然大量依赖人力,而非智能机械化。与此同时,国外的农业生产......
  • 《YOLOv5入门 + 改进涨点》专栏介绍 & 专栏目录 |目前已有40+篇内容,内含各种Head检测
    《YOLOv5入门+改进涨点》介绍&目录本专栏是博主精心设计的专门为了提升检测效果,希望改进YOLOv5并发表论文的同学们而设计。专栏的内容紧跟学术届的热点更新最新内容,紧跟YOLOv5的官方项目的实时更新。本专栏的内容是基于YOLOv5-6.1的版本进行改进专栏聚焦前沿方法,本专栏的......
  • 【AWK】awk的使用
    AWK看这篇就基本能满足日常了:https://www.cnblogs.com/zhengyan6/p/16290156.htmlawd-F'f''{print$NF}'1.txt$NF分隔符的最后一列。(如果能分割就是最后一个,如果不能分割,那就是整行)NF是行数。。$0是一整行$1是分割数据后的第一个项NR:用来记录行号(awk的参数是......