搜索
bottom↓
回复: 12

想在单片机里面跑神经网络算法,是不是只有cortex-M55内核?

[复制链接]

出0入32汤圆

发表于 2022-3-11 15:24:33 | 显示全部楼层 |阅读模式
还有别的选择吗?

但cortex-M55内核,似乎至今也没有落地啊!没有芯片啊!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出100入312汤圆

发表于 2022-3-11 15:49:19 来自手机 | 显示全部楼层
看你具体应用,一般推荐soc方案,使用硬件dnn单元

出0入0汤圆

发表于 2022-3-11 16:07:09 | 显示全部楼层
cortxm3跑过,H7也跑过。

出140入158汤圆

发表于 2022-3-11 16:10:14 | 显示全部楼层
只要RAM足够大,大STC的51也可以跑,只是慢而已

出200入2554汤圆

发表于 2022-3-11 16:28:07 | 显示全部楼层
跑算法,和跑训练完全是两个量级的事情。
Arduino 也有专门的 ANN 库,但仅限于跑训练好的网络。

训练用单片机不划算,慢又没精度;但跑训练好的网络,开销并不大

出0入442汤圆

发表于 2022-3-11 18:25:11 来自手机 | 显示全部楼层
t3486784401 发表于 2022-3-11 16:28
跑算法,和跑训练完全是两个量级的事情。
Arduino 也有专门的 ANN 库,但仅限于跑训练好的网络。


(引用自5楼)

你跑个实时人脸检测看看它跪不跪。。

出100入312汤圆

发表于 2022-3-11 18:45:06 来自手机 | 显示全部楼层
t3486784401 发表于 2022-3-11 16:28
跑算法,和跑训练完全是两个量级的事情。
Arduino 也有专门的 ANN 库,但仅限于跑训练好的网络。


(引用自5楼)

训练好的网络,也要算力

出200入2554汤圆

发表于 2022-3-11 19:32:30 来自手机 | 显示全部楼层
wye11083 发表于 2022-3-11 18:25
你跑个实时人脸检测看看它跪不跪。。
(引用自6楼)

这目测是连接口带宽都吃紧…

出0入90汤圆

发表于 2022-3-11 19:41:45 | 显示全部楼层
K210        

出200入2554汤圆

发表于 2022-3-11 19:46:31 来自手机 | 显示全部楼层
akey3000 发表于 2022-3-11 18:45
训练好的网络,也要算力
(引用自7楼)

这的确,毕竟都是浮点起步

出0入135汤圆

发表于 2022-3-11 19:52:07 来自手机 | 显示全部楼层
想多了,普通单片机就别想了

出0入442汤圆

发表于 2022-3-11 21:25:54 来自手机 | 显示全部楼层
t3486784401 发表于 2022-3-11 19:46
这的确,毕竟都是浮点起步
(引用自10楼)

nop,一般的模型直接量化4.12定点都可以几乎无损跑整型计算。甚至玩得6的可以量化成8位甚至4位整型来计算。我不会玩,只会跑4.12量化了。。直接乘4096,然后计算时处理好上一H限,这甚至在有dsp的mcu里可以直接mul和mac来解决了(mac需要支持三元计算且为64bit整数加,即maca=coef*var+maca)。

出0入309汤圆

发表于 2022-3-11 22:32:35 | 显示全部楼层
本帖最后由 iamseer 于 2022-3-11 22:37 编辑
wye11083 发表于 2022-3-11 21:25
nop,一般的模型直接量化4.12定点都可以几乎无损跑整型计算。甚至玩得6的可以量化成8位甚至4位整型来计算 ...
(引用自12楼)


强制要求8位运算的硬件也不少。嘉楠的K210和Google的Coral都只支持8位运算,倒是Intel计算棒支持16位浮点。
这篇文章讲量化挺清楚的
https://sahnimanas.github.io/post/quantization-in-tflite/


基本原则就是把浮点线性映射到0~255,反正卷积里面大家都是映射过的,那运算前映射一次,卷积完反向映射一次,整个卷积就能回避浮点运算。至于映射的参数,tensorflow或者K210转换工具都能做。也可以在训练时就量化好。

量化之后精度会损失一些,不过一般都还行。简单的模型损失几乎可以忽略。

Arduino官方有支持TensorFlow Lite的库,但是限定在cortex核心上跑,AVR之类不行。

我自己学习TensorFlow也手写了一个神经网络的代码跑在8位AVR上(Circuit Playground Classic, ATmega32u4 @ 8MHz)。三个全联接层对加速度传感器做分类。测试下来浮点需要60ms,8位运算13ms。
https://github.com/DeqingSun/Mac ... nt-on-8-bit-Arduino
代码全是C写的,所以卷积,循环之类的效率不算高,如果上汇编优化估计至少快30%
AVR跑模型也不是不行,简单的也能干,只是受限于主频和内存大小不大好使。当然上cortex就好多了。

话说回来,把“跑神经网络”和“实时人脸检测”混为一谈有抬杠之嫌。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-16 06:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表