技术到了最后,都是要在实际生活中实践,才有活力;而不是曲高和寡,光是鼓吹技术多牛逼,没有切实改变生活,提高体验,产生经济价值,那样的技术都是耍流氓。
同样的,TInyML如果只在官方的几个平台玩,只跑hello word、magic wand多没有意思。笔者不是说一步到位,把Tensorflow lite micro玩出花,可以随便跨平台,搞出有趣应用;只是摸索出一套方法部分实践上解决跨平台的问题,可以移植到任意NRF52840的板子,有慧根的读者根据思路可以进一步扩展到其他平台。
买了官方推荐的 ARDUINO NANO 33 BLE SENSE (¥330 海淘)的板子,同时手里有青风52840的板子(套件¥198,核心板¥20),想法很朴素:在TinyML官方例程跑熟练的基础上,把框架移植到同一芯片的平台的国内性价比模块上搞些好玩的应用。
把同一核心芯片的应用从一个硬件平台(开发板)移植到另一个硬件平台;这样就能“旧瓶装新酒”,老平台的BLE通讯技术加上TyniML AI技术,岂不是母牛上天!想起来似乎很容易;但是问题没有那么简单。下图是我的探索路径,四处碰壁、断断续续。
问题总结起来有:
工作项目时间因素最终改变原来的平台,选择ST硬件平台。ST Cube AI对TFLite Micro做了一层自己的封装,好用到爆。你生成的模型无论是keras还是saved_model都支持,直接导入。
不过个人私下因为个人兴趣想办法解决了。
简单的说,在Nordic 官方论坛看到一个官方实习生也在解决类似问题,不过他用的另外一个高大上的双核硬件,思路由此打开了。下面是示意图:
#生成 TARGET nrf5340pdk_nrf5340_cpuapp TARGET cortex-m4 的工程
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=nrf5340pdk_nrf5340_cpuapp TARGET_ARCH=cortex-m4 generate_hello_world_make_project
west -vvv build -b nrf5340pdk_nrf5340_cpuapp -p
tensorflow/lite/micro/tools/make/gen/
├── nrf5340pdk_nrf5340_cpuapp_cortex-m33
│ ├── lib
│ │ └── libtensorflow-microlite.a
│ └── obj
│ └── tensorflow
├── nrf5340pdk_nrf5340_cpuapp_cortex-m4
│ ├── lib
│ │ └── libtensorflow-microlite.a
│ ├── obj
│ │ └── tensorflow
│ └── prj
│ └── hello_world
https://github.com/flavorfan/nrf52840-fan
基于zypyr实现,关键技术其实就是zypyr的custom board支持,还有编译时支持external project 把tensorflow lite一起编译了,后面再把它搞成zypyr的库。以后开发就直接用这个库了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。