darknet模型转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支持的算子
这里我们需要转换为tflite模型,而tflite模型是tensorflow在移动端的模型,darknet并不能直接转换为tflite,我们需要一个工具-darkflow
darkflow安装
首先下载darknet的源码
git clone https://github.com/thtrieu/darkflow.git
如果使用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
pip3 install -e .
如果显示这样便是安装成功
转换pb文件
darknet训练完成后会在backup文件夹下生成final.weight文件,将final.weight文件和cfg文件移动到darkflow文件夹下
修改labels.txt,将里面的种类数改为自己的种类数
使用命令将weights文件和cfg文件转换为pb文件
flow --model fruit.cfg --load fruit_final.weights --savepb
转换之后会显示网络结果
如果提示没有安装tensorflow,可以使用pip安装1.14版本
ModuleNotFoundError: No module named 'tensorflow'
pip install tensorflow==1.4
这时在built_graph下会生成pb文件
默认网络输入为input,输出为output
到此就已经获取pb文件了,然后可以使用maix工具转换为tflite了
具体如何转换为kmodel,我将在下一篇中讲