k210单片机水果分拣 darknet模型转pb模型

darknet模型转pb模型

  • darknet模型训练
  • 前言
  • darkflow安装
  • 转换pb文件

darknet模型训练

前言

k210现在支持的主流模型是kmodel,在rtos下也可以使用tflite,之前的版本使用的是一个叫model compiler的转换工具,通过它转换成c语言,在maix的c语言人脸识别demo中使用过,我找了好久这个工具,终于找到了github网址,却显示404,勘智官方已经放弃,估计现在主推应该是kmodel
kmodel可以通过堪智的nncase工具转换nncase,maix在其上做了改进MAIX工具
说一下官方的nncase,如果是使用的micropython最好使用0.1.0rc5版本,0.2的版本会出现一些错误,而maix推出的也是在0.1.0rc5版本上进行了封装。
如果你想在k210上运行神经网络,你需要kmodel格式的模型,但是这样的模型怎么获取呢?
下面为nncase0.2支持的算子
k210单片机水果分拣 darknet模型转pb模型_第1张图片
这里我们需要转换为tflite模型,而tflite模型是tensorflow在移动端的模型,darknet并不能直接转换为tflite,我们需要一个工具-darkflow

darkflow安装

首先下载darknet的源码
git clone https://github.com/thtrieu/darkflow.git
k210单片机水果分拣 darknet模型转pb模型_第2张图片
如果使用linux系统,由于文件原因会报错,参考网上方法:在安装之前, 打开darkflow根目录下darkflow/utils中的loader.py,将其中121行中的self.offset由16改为20:
self.offset = 20

darkflow需要以下的支持,如果没有安装可以使用pip进行安装
Python3, tensorflow 1.0, numpy

然后在darkflow文件夹下进行编译和安装

python3 setup.py build_ext --inplace

k210单片机水果分拣 darknet模型转pb模型_第3张图片

pip3 install -e .

如果显示这样便是安装成功
k210单片机水果分拣 darknet模型转pb模型_第4张图片

转换pb文件

darknet训练完成后会在backup文件夹下生成final.weight文件,将final.weight文件和cfg文件移动到darkflow文件夹下
在这里插入图片描述
修改labels.txt,将里面的种类数改为自己的种类数

k210单片机水果分拣 darknet模型转pb模型_第5张图片
使用命令将weights文件和cfg文件转换为pb文件

flow --model fruit.cfg --load  fruit_final.weights  --savepb

转换之后会显示网络结果
k210单片机水果分拣 darknet模型转pb模型_第6张图片
如果提示没有安装tensorflow,可以使用pip安装1.14版本

ModuleNotFoundError: No module named 'tensorflow'
pip install tensorflow==1.4

这时在built_graph下会生成pb文件
k210单片机水果分拣 darknet模型转pb模型_第7张图片
默认网络输入为input,输出为output
到此就已经获取pb文件了,然后可以使用maix工具转换为tflite了
具体如何转换为kmodel,我将在下一篇中讲

你可能感兴趣的:(k210单片机水果分拣 darknet模型转pb模型)