yolov5模型pt转wk(HISI3559)转载文章
目录
1 caffe-plus环境安装
1.1 准备ubuntu16.04虚拟机
1.2 caffe安装
1.2.1 安装依赖
1.2.2 安装caffe
1.2.3 编译python接口
2 适应wk的yolov5模型训练
2.1 yolov5-6.0项目获取
2.2 安装yolov5-6.0需要的环境。
2.3 修改模型
2.4 修改数据集
2.5 模型训练
3 pt->onnx->caffe->wk
3.1 pt->onnx
3.2 onnx->caffe
3.3 caffe->wk
3.3.1 windows下安装MinGW
3.3.2 配置环境变量
3.3.3 验证配置是否成功
3.3.4 RuyiStudio安装
1 caffe-plus环境安装
1.1 准备ubuntu16.04虚拟机
当然也可以使用其他版本,这里建议使用VM安装ubuntu16.04。
关于换源等一系列操作自行百度即可。·
1.2 caffe安装
1.2.1 安装依赖
sudo apt-get update
apt-get install libprotobuf-dev
apt-get install libleveldb-dev
apt-get install libsnappy-dev
apt-get install libopencv-dev
apt-get install libhdf5-serial-dev
apt-get install protobuf-compiler
apt-get install libgflags-dev
apt-get install libgoogle-glog-dev
apt-get install liblmdb-dev
apt-get install libatlas-base-dev
apt-get install --no-install-recommends libboost-all-dev
1.2.2 安装caffe
安装git
apt-get install git
克隆caffe工程
git clone git://github.com/BVLC/caffe.git
克隆caffe-plus工程
yolov5中有upsample层和transpose层,caffe是没有的,需要手动添加,先下载caffe_plus代码:
git clone https://github.com/jnulzl/caffe_plus.git
将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文件
vim caffe/src/caffe/proto/caffe.proto
在optional WindowDataParameter window_data_param = 129;(约第423行)后增加代码:
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.去掉CPU_ONLY前面的#号注释,使得CPU_ONLY := 1
2.配置引用文件路径(主要是HDF5的路径问题),找到INCLUDE_DIRS和LIBRARY_DIRS,分别在其后面(空一空格)新增内容 /usr/include/hdf5/serial 和 /usr/lib/x86_64-linux-gnu/hdf5/serial ,然后按ctrl + S 保存并关掉该文件。
依次执行
make all
make test
make runtest
安装完成没有报错,全绿说明caffe安装成功
如果其中一项发生错误,执行
make clean
重新编译即可
1.2.3 编译python接口
Ubuntu16.04默认安装的是python2.7,没有pip指令包,所以需要先安装pip,根据提示键入命令:
apt install python-pip
安装完成后,进入如下目录:
cd caffe/python
其中有一个名为requirements.txt的文件,里面有需要的依赖库和版本信息,按照其安装即可。在安装前,需要先安装fortran编辑器(gfrotran),因为安装scipy库时需要它,执行命令:
apt-get install gfortran
随后输入:
pip install --upgrade pip
这一步极有可能发生pip无法更新以及安装包的问题,这是由于pip版本过老问题,可以手动安装较新版本的pip解决,这里建议安装20.3.4版本
apt install python-pip==20.3.4
然后需要修改一下/usr/bin/pip文件,不然执行requirements.txt文件中下载python模块的命令时会出现错误,键入命令:
gedit /usr/bin/pip
将文件中的
from pip import main
修改为
from pip._internal import main
保存后关闭
接着执行命令:
gedit requirements.txt
将
python-dateutil>=1.4,<2
修改为
python-dateutil
保存后管理
继续执行命令:
for req in $(cat requirements.txt); do pip install $req; done
下载所有python包、
如未发生错误,则表明安装成功,如果有某些包并未安装成功,可以手动安装,命令如下:
pip install xxx==版本号 -i http://mirrors.aliyun.com/pypi/simple/
由于我们要进行onnx->caffe的操作,所以需要安装onnx包,推荐安装1.7.0版本
pip install onnx==1.7.0 -i http://mirrors.aliyun.com/pypi/simple/
将caffe根目录下的python文件所在路径加入到全局环境变量
键入命令:
gedit ~/.bashrc
打开bashrc文件,在文件的最后面添加一条语句 :
export PYTHONPATH=/home/你的登录名/caffe/python:$PYTHONPATH
保存后关闭,并使其生效:
source ~/.bashrc
最后一步:编译python接口。这里需要先修改一下配置文件,键入命令:
gedit Makefile.config
找到文件中的PYTHON_INCLUDE
将
/usr/lib/python2.7/dist-packages/numpy/core/include
修改为
/usr/local/lib/python2.7/dist-packages/numpy/core/include
保存关闭后执行
make pycaffe
输出为:
PROTOC (python) src/caffe/proto/caffe.proto
表示编译python接口成功
验证一下,命令行输入python进入python2.7
import caffe
回车运行未报错则安装成功
2 适应wk的yolov5模型训练
2.1 yolov5-6.0项目获取
在GIthub上进入yolov5官方仓库下载6.0版本。
这里使用git clone下载的会是最新版本,建议下载6.0版本,下载zip包后解压
2.2 安装yolov5-6.0需要的环境。
这里参考rknn文档,关于利用anaconda安装yolov5环境的即可。
2.3 修改模型
利用pycharm打开yolov5-6.0项目工程,首先将models目录下的yolov5s.yaml配置文件修改为:
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# Parameters
nc: 80 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
# YOLOv5 v6.0 backbone
backbone:
# [from, number, module, args]
[[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
[-1, 3, C3, [128]],
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8
[-1, 6, C3, [256]],
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 3, C3, [1024]],
[-1, 1, SPPF, [1024, 5]], # 9
]
# YOLOv5 v6.0 head
head:
[[-1, 1, Conv, [512, 1, 1]],
# [-1, 1, nn.Upsample, [None, 2, 'nearest']],
[ -1, -1, nn.ConvTranspose2d,[ 256, 256, 2, 2 ] ],
[[-1, 6], 1, Concat, [1]], # cat backbone P4
[-1, 3, C3, [512, False]], # 13
[-1, 1, Conv, [256, 1, 1]],
#[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[ -1, -1, nn.ConvTranspose2d,[ 128, 128, 2, 2 ] ],
[[-1, 4], 1, Concat, [1]], # cat backbone P3
[-1, 3, C3, [256, False]], # 17 (P3/8-small)
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
[[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
这里主要是将上采样层换成了反卷积层,以适应HISI3559平台。其他配置文件根据自身数据集做出调整。
2.4 修改数据集
修改方式与rknn一致,可查看rknn文档
2.5 模型训练
进入yolov5的anaconda环境并cd项目根目录,运行:
python train.py --data mydata.yaml --cfg yolov5s.yaml
等待训练完成,关于结果,可阅读rknn文档
3 pt->onnx->caffe->wk
3.1 pt->onnx
训练好的模型在yolov5工程中的、/runs/train/exp/weights/目录下
python export.py --data mydata.yaml --weights runs/train/weights/best.pt --batch 1 --img 640 640 --train --simplify --include onnx --opset 10
将生成的onnx文件进行进一步的简化,运行:
python -m onnxsim best.onnx best-sim.onnx
其中,onnxsim后的两个参数分别是上一步生成的onnx的地址以及生成简化后onnx的地址。
3.2 onnx->caffe
获取yolov5_onnx2caffe项目
git clone https://github.com/Wulingtian/yolov5_onnx2caffe.git
将上一步生成的best-sim.onnx文件copy到虚拟机上
进入yolov5_onnx2caffe目录下
打开convertCaffe.py文件,根据模型网络层的情况与simple_onnx文件地址修改main函数下面的内容。
其中onnx_path为best-sim.onnx路径,其他两个为生成文件路径
并且如上图留下最后一个converttoCaffe,其他的注释掉。
这里需要注意!!!
由于编码问题,python2.7存在无法解析中文注释,这里需要在该工程下所有的py文件第一行加上
# -*- coding: UTF-8 -*-
解决编码问题,如图:
完成上述工作后,进入控制台到yolov5_onnx2caffe目录下,运行:
python converCaffe
输出如下表明转换成功,会在对应目录生成.caffemodel和.prototxt文件
随后将生成的.caffemodel和.prototxt文件copy到windows上,进行下一步操作
3.3 caffe->wk
3.3.1 windows下安装MinGW
MinGW 的全称是:Minimalist GNU on Windows ,实际上是将gcc(c/c++编译器)移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。
使用它的原因:
MinGW-w64 是开源软件,可以免费使用。
MinGW-w64 由一个活跃的开源社区在持续维护,不会过时。
MinGW-w64 支持最新的 C语言 标准。 使用 Windows 的C语言运行库,因此编译出的程序不需要第三方 DLL ,可以直接在 Windows 下运行。总之就是要在windows运行c/c++按就对了。可以理解为c/c++的编译器gcc的windows版。
1.下载解压安装
官方下载网站:MinGW-w64 - for 32 and 64 bit Windows download | SourceForge.net
页面向下拉,找到下一张图的位置
下载完成后压到想安装到的目录
3.3.2 配置环境变量
配置完成,确认保存即可
3.3.3 验证配置是否成功
cmd进入控制台
输入:
gcc -v
3.3.4 RuyiStudio安装
下载地址
RuyiStudio
解压压缩包
双击打开.exe文件
这里默认下一步即可
创建NNIE工程
如图的项目名,项目类型等选择如下:
打开文件最下方的 xxx.cfg,导入caffe模型文件,并设置模型转化的对应参数。
参数说明: prototxt ------------------------------- 导入caffe模型的prototxt文件
caffemodel --------------------------- 导入caffe模型的caffemodel文件
net_type ------------------------------ 模型类别(图像都是CNN)
is_simulation ------------------------ 是否进行仿真(默认即可)
marked_prototxt -------------------- 预生成wk文件的prototxt文件 (需要进行修改)
output_wk_name -------------------- 导出的wk文件的命名
complie_model ---------------------- 导出模型的精度
log_level ------------------------------ 是否开启日志文件
align_bytes ---------------------------- 模型组对齐方式(默认)
batch_num ----------------------------- 处理图片的批次
sparse_rate ---------------------------- FC参数稀疏化操作(默认)
image_type ---------------------------- 输入模型的图像类型(与后处 理有关)
RGB_order ---------------------------- 输入模型图像的通道顺序
image_list ----------------------------- 参考图片
norm_type ----------------------------- 模型输入数据初始化
mean_file ------------------------------ 均值文件(一般不用加)
打开mark_prototxt文件夹下的xxx.prototxt,删除xxx.prototxt最后几行中的Reshape和Transpose层(即model_hand中3个output区域的Reshape和Transpose层),然后保存修改后的xxx.prototxt,利用marked_prototxt中的Mark来查看修改后的xxx.prototxt(以其中一组Reshape和Transpose层为例子)。左边为未修改,右边为已修改。修改完成后记得保存。
删除掉最后的三个Transpose层,如下图:(其他yolo的tiny版本可能两个输出,这个看自己的模型)
修改后面的三个Reshape层,第一个dim改为0,删除第五个dim,第四个dim改为dim的平方。
修改后的
原始的
点击箭头make
成功后如下:
生成的.wk位置如下:
至此,模型转换整个流程完成。
最后就是模型部署了,可以参考如下:
GitHub - mahxn0/Hisi3559A_Yolov5: 基于hisi3559a的yolov5
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_51714298/article/details/127513820
1 caffe-plus环境安装
1.1 准备ubuntu16.04虚拟机
1.2 caffe安装
1.2.1 安装依赖
1.2.2 安装caffe
1.2.3 编译python接口
2 适应wk的yolov5模型训练
2.1 yolov5-6.0项目获取
2.2 安装yolov5-6.0需要的环境。
2.3 修改模型
2.4 修改数据集
2.5 模型训练
3 pt->onnx->caffe->wk
3.1 pt->onnx
3.2 onnx->caffe
3.3 caffe->wk
3.3.1 windows下安装MinGW
3.3.2 配置环境变量
3.3.3 验证配置是否成功
3.3.4 RuyiStudio安装
1 caffe-plus环境安装
1.1 准备ubuntu16.04虚拟机
当然也可以使用其他版本,这里建议使用VM安装ubuntu16.04。
关于换源等一系列操作自行百度即可。·
1.2 caffe安装
1.2.1 安装依赖
sudo apt-get update
apt-get install libprotobuf-dev
apt-get install libleveldb-dev
apt-get install libsnappy-dev
apt-get install libopencv-dev
apt-get install libhdf5-serial-dev
apt-get install protobuf-compiler
apt-get install libgflags-dev
apt-get install libgoogle-glog-dev
apt-get install liblmdb-dev
apt-get install libatlas-base-dev
apt-get install --no-install-recommends libboost-all-dev
1.2.2 安装caffe
安装git
apt-get install git
克隆caffe工程
git clone git://github.com/BVLC/caffe.git
克隆caffe-plus工程
yolov5中有upsample层和transpose层,caffe是没有的,需要手动添加,先下载caffe_plus代码:
git clone https://github.com/jnulzl/caffe_plus.git
将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文件
vim caffe/src/caffe/proto/caffe.proto
在optional WindowDataParameter window_data_param = 129;(约第423行)后增加代码:
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.去掉CPU_ONLY前面的#号注释,使得CPU_ONLY := 1
2.配置引用文件路径(主要是HDF5的路径问题),找到INCLUDE_DIRS和LIBRARY_DIRS,分别在其后面(空一空格)新增内容 /usr/include/hdf5/serial 和 /usr/lib/x86_64-linux-gnu/hdf5/serial ,然后按ctrl + S 保存并关掉该文件。
依次执行
make all
make test
make runtest
安装完成没有报错,全绿说明caffe安装成功
如果其中一项发生错误,执行
make clean
重新编译即可
1.2.3 编译python接口
Ubuntu16.04默认安装的是python2.7,没有pip指令包,所以需要先安装pip,根据提示键入命令:
apt install python-pip
安装完成后,进入如下目录:
cd caffe/python
其中有一个名为requirements.txt的文件,里面有需要的依赖库和版本信息,按照其安装即可。在安装前,需要先安装fortran编辑器(gfrotran),因为安装scipy库时需要它,执行命令:
apt-get install gfortran
随后输入:
pip install --upgrade pip
这一步极有可能发生pip无法更新以及安装包的问题,这是由于pip版本过老问题,可以手动安装较新版本的pip解决,这里建议安装20.3.4版本
apt install python-pip==20.3.4
然后需要修改一下/usr/bin/pip文件,不然执行requirements.txt文件中下载python模块的命令时会出现错误,键入命令:
gedit /usr/bin/pip
将文件中的
from pip import main
修改为
from pip._internal import main
保存后关闭
接着执行命令:
gedit requirements.txt
将
python-dateutil>=1.4,<2
修改为
python-dateutil
保存后管理
继续执行命令:
for req in $(cat requirements.txt); do pip install $req; done
下载所有python包、
如未发生错误,则表明安装成功,如果有某些包并未安装成功,可以手动安装,命令如下:
pip install xxx==版本号 -i http://mirrors.aliyun.com/pypi/simple/
由于我们要进行onnx->caffe的操作,所以需要安装onnx包,推荐安装1.7.0版本
pip install onnx==1.7.0 -i http://mirrors.aliyun.com/pypi/simple/
将caffe根目录下的python文件所在路径加入到全局环境变量
键入命令:
gedit ~/.bashrc
打开bashrc文件,在文件的最后面添加一条语句 :
export PYTHONPATH=/home/你的登录名/caffe/python:$PYTHONPATH
保存后关闭,并使其生效:
source ~/.bashrc
最后一步:编译python接口。这里需要先修改一下配置文件,键入命令:
gedit Makefile.config
找到文件中的PYTHON_INCLUDE
将
/usr/lib/python2.7/dist-packages/numpy/core/include
修改为
/usr/local/lib/python2.7/dist-packages/numpy/core/include
保存关闭后执行
make pycaffe
输出为:
PROTOC (python) src/caffe/proto/caffe.proto
表示编译python接口成功
验证一下,命令行输入python进入python2.7
import caffe
回车运行未报错则安装成功
2 适应wk的yolov5模型训练
2.1 yolov5-6.0项目获取
在GIthub上进入yolov5官方仓库下载6.0版本。
这里使用git clone下载的会是最新版本,建议下载6.0版本,下载zip包后解压
2.2 安装yolov5-6.0需要的环境。
这里参考rknn文档,关于利用anaconda安装yolov5环境的即可。
2.3 修改模型
利用pycharm打开yolov5-6.0项目工程,首先将models目录下的yolov5s.yaml配置文件修改为:
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# Parameters
nc: 80 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
# YOLOv5 v6.0 backbone
backbone:
# [from, number, module, args]
[[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
[-1, 3, C3, [128]],
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8
[-1, 6, C3, [256]],
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 3, C3, [1024]],
[-1, 1, SPPF, [1024, 5]], # 9
]
# YOLOv5 v6.0 head
head:
[[-1, 1, Conv, [512, 1, 1]],
# [-1, 1, nn.Upsample, [None, 2, 'nearest']],
[ -1, -1, nn.ConvTranspose2d,[ 256, 256, 2, 2 ] ],
[[-1, 6], 1, Concat, [1]], # cat backbone P4
[-1, 3, C3, [512, False]], # 13
[-1, 1, Conv, [256, 1, 1]],
#[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[ -1, -1, nn.ConvTranspose2d,[ 128, 128, 2, 2 ] ],
[[-1, 4], 1, Concat, [1]], # cat backbone P3
[-1, 3, C3, [256, False]], # 17 (P3/8-small)
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
[[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
这里主要是将上采样层换成了反卷积层,以适应HISI3559平台。其他配置文件根据自身数据集做出调整。
2.4 修改数据集
修改方式与rknn一致,可查看rknn文档
2.5 模型训练
进入yolov5的anaconda环境并cd项目根目录,运行:
python train.py --data mydata.yaml --cfg yolov5s.yaml
等待训练完成,关于结果,可阅读rknn文档
3 pt->onnx->caffe->wk
3.1 pt->onnx
训练好的模型在yolov5工程中的、/runs/train/exp/weights/目录下
python export.py --data mydata.yaml --weights runs/train/weights/best.pt --batch 1 --img 640 640 --train --simplify --include onnx --opset 10
将生成的onnx文件进行进一步的简化,运行:
python -m onnxsim best.onnx best-sim.onnx
其中,onnxsim后的两个参数分别是上一步生成的onnx的地址以及生成简化后onnx的地址。
3.2 onnx->caffe
获取yolov5_onnx2caffe项目
git clone https://github.com/Wulingtian/yolov5_onnx2caffe.git
将上一步生成的best-sim.onnx文件copy到虚拟机上
进入yolov5_onnx2caffe目录下
打开convertCaffe.py文件,根据模型网络层的情况与simple_onnx文件地址修改main函数下面的内容。
其中onnx_path为best-sim.onnx路径,其他两个为生成文件路径
并且如上图留下最后一个converttoCaffe,其他的注释掉。
这里需要注意!!!
由于编码问题,python2.7存在无法解析中文注释,这里需要在该工程下所有的py文件第一行加上
# -*- coding: UTF-8 -*-
解决编码问题,如图:
完成上述工作后,进入控制台到yolov5_onnx2caffe目录下,运行:
python converCaffe
输出如下表明转换成功,会在对应目录生成.caffemodel和.prototxt文件
随后将生成的.caffemodel和.prototxt文件copy到windows上,进行下一步操作
3.3 caffe->wk
3.3.1 windows下安装MinGW
MinGW 的全称是:Minimalist GNU on Windows ,实际上是将gcc(c/c++编译器)移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。
使用它的原因:
MinGW-w64 是开源软件,可以免费使用。
MinGW-w64 由一个活跃的开源社区在持续维护,不会过时。
MinGW-w64 支持最新的 C语言 标准。 使用 Windows 的C语言运行库,因此编译出的程序不需要第三方 DLL ,可以直接在 Windows 下运行。总之就是要在windows运行c/c++按就对了。可以理解为c/c++的编译器gcc的windows版。
1.下载解压安装
官方下载网站:MinGW-w64 - for 32 and 64 bit Windows download | SourceForge.net
页面向下拉,找到下一张图的位置
下载完成后压到想安装到的目录
3.3.2 配置环境变量
配置完成,确认保存即可
3.3.3 验证配置是否成功
cmd进入控制台
输入:
gcc -v
3.3.4 RuyiStudio安装
下载地址
RuyiStudio
解压压缩包
双击打开.exe文件
这里默认下一步即可
创建NNIE工程
如图的项目名,项目类型等选择如下:
打开文件最下方的 xxx.cfg,导入caffe模型文件,并设置模型转化的对应参数。
参数说明: prototxt ------------------------------- 导入caffe模型的prototxt文件
caffemodel --------------------------- 导入caffe模型的caffemodel文件
net_type ------------------------------ 模型类别(图像都是CNN)
is_simulation ------------------------ 是否进行仿真(默认即可)
marked_prototxt -------------------- 预生成wk文件的prototxt文件 (需要进行修改)
output_wk_name -------------------- 导出的wk文件的命名
complie_model ---------------------- 导出模型的精度
log_level ------------------------------ 是否开启日志文件
align_bytes ---------------------------- 模型组对齐方式(默认)
batch_num ----------------------------- 处理图片的批次
sparse_rate ---------------------------- FC参数稀疏化操作(默认)
image_type ---------------------------- 输入模型的图像类型(与后处 理有关)
RGB_order ---------------------------- 输入模型图像的通道顺序
image_list ----------------------------- 参考图片
norm_type ----------------------------- 模型输入数据初始化
mean_file ------------------------------ 均值文件(一般不用加)
打开mark_prototxt文件夹下的xxx.prototxt,删除xxx.prototxt最后几行中的Reshape和Transpose层(即model_hand中3个output区域的Reshape和Transpose层),然后保存修改后的xxx.prototxt,利用marked_prototxt中的Mark来查看修改后的xxx.prototxt(以其中一组Reshape和Transpose层为例子)。左边为未修改,右边为已修改。修改完成后记得保存。
删除掉最后的三个Transpose层,如下图:(其他yolo的tiny版本可能两个输出,这个看自己的模型)
修改后面的三个Reshape层,第一个dim改为0,删除第五个dim,第四个dim改为dim的平方。
修改后的
原始的
点击箭头make
成功后如下:
生成的.wk位置如下:
至此,模型转换整个流程完成。
最后就是模型部署了,可以参考如下:
GitHub - mahxn0/Hisi3559A_Yolov5: 基于hisi3559a的yolov5
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_51714298/article/details/127513820