前言
硬件:maix dock 软件:maix ide nncase 0.1(版本大坑)
一、踩大坑
- maix 对 k210 的 nncase 模型转换工具早已停止支持,只支持nncase 0.1版本。用最新nncase转换的kmodel 在maix里加载不了,接上一条,所以说要用maix对k210做开发,就要用nncase0.1去转换模型,但是嘉楠官网早已更新到了nncase1.7,而0.1属于化石版本,早已不做支持。【好,我要用maix,只有选用nncase0.1】
- 接上,所以0.1很low,nncase0.1只能转换 tflite 模型到kmodel。而我在使用中发现,nncase0.1好像转换不了由pytorch模型转换而来的tflite(个人理解),不知其中是什么原理,总之就是报错。换用tensorflow模型生成的tfliite就可以用nncase0.1转换成功。【好,那我换成tensorflow写模型】
- 接上,tensorflow生成的tflite,经nncase0.1转为kmodel,烧到maix dock里。发现一个问题是,maix提供的模型推理函数,输入只能是图片(个人理解),但是我想要的是网络输入数据和输出数据由我自己定。【好,那不用maix开发了,换用嘉楠官方提供的K210 SDK 库】
- 接上,换用k210 SDK库,嗯,整不来了,太难了,嘉楠官方给的k210 sdk 例程是针对他们自己的开发板的。但是我现在用的是maix dock开发板,我想用别的开发板的例程来开发自己的开发板,好吧,整不来了,纯c编写各种驱动和模型加载推理代码。【好,我放弃maix dock k210】
- 如上所述,一步一步撞壁,一步一步改换路线,最后放弃210(个人太菜),准备换v831。下面记录下本次探索的过程
- 总结:自己写的pytroch模型想在k210上部署,得选用嘉楠官方的开发板,用他提供的SDK开发。maix dock 不行(个人理解)
二、pytorch 转 kmodel
第①步:pytorch模型搭建、训练、保存
第②步(思路一):pytorch 转 onnx 转 pb 转 tflite 转 kmodel
1. pytorch 转 onnx (成熟的,pytorch官方支持)
2. onnx 转 pb()
3. pb 转 tflite()
4. tflite 转 kmodel(nncase0.1)
第②步(思路二):pytorch 转 onnx 转 h5 转 tflite 转 kmodel
第②步(思路三):k210 嘉楠 SDK 开发
|