文章目录
前言
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