stm32f407能跑linux吗_在STM32上跑神经网络做手势识别

序:稚晖的新作品“在STM32上跑神经网络做手势识别” b站的播放量已经高达8.3w,作品精彩演示一定要点击下面视频观看!

视频中通过MCU成功跑起了一个CNN模型,CNN模型最低需要什么性能的硬件呢?

为了在Cortex-M的MCU上成功跑起CNN,用的模型是一个不到10层FCN网络,但是即便如此,对于主频只有不到100MHz,SRAM只有不到100K的单片机来说依然是极其吃力的,模型不做量化的话肯定无法做到实时的。 硬件资源: 作品硬件自制,使用的MCU是STM32F407。 在168 MHz频率下,从Flash存储器执行时,STM32F407单片机能够提供210 DMIPS/566 CoreMark性能,并且利用ART加速器实现了FLASH零等待状态。 DSP指令和浮点单元扩大了产品的应用范围。 迄今基于Cortex-M内核的微控制器产品中,F407的性能得分是非常高的。 等不及,先展示最终实现结果。 实现细节、详细介绍等整理好资料后,再来分享。 作品精彩后续可关注稚晖的个人网站: www.pengzhihui.xyz ,达尔闻也将第一时间发布。 dd5480f925bccc3918201e8c2dc34198.gif

知识补给—CNN 与 FCN

stm32f407能跑linux吗_在STM32上跑神经网络做手势识别_第1张图片 通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量。 以AlexNet为代表的经典CNN结构适合于图像级的分类和回归任务,因为它们最后都期望得到整个输入图像的一个数值描述(概率),比如AlexNet的ImageNet模型输出一个1000维的向量表示输入图像属于每一类的概率(softmax归一化)。 栗子: 下图中的猫, 输入AlexNet, 得到一个长为1000的输出向量, 表示输入图像属于每一类的概率, 其中在“tabby cat”这一类统计概率最高。 stm32f407能跑linux吗_在STM32上跑神经网络做手势识别_第2张图片 FCN对图像进行像素级的分类,从而解决了语义级别的图像分类(semantic segmentation)问题。 与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。 最后逐个像素计算softmax分类的损失, 相当于每一个像素对应一个训练样本。 下图是Longjon用于语义分类所采用的全卷积网络(FCN)的结构示意图: stm32f407能跑linux吗_在STM32上跑神经网络做手势识别_第3张图片 简单的来说,FCN与CNN的区别在把于CNN最后的全连接层换成卷积层,输出的是一张已经Label好的图片。

stm32f407能跑linux吗_在STM32上跑神经网络做手势识别_第4张图片

CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感知域较小,学习到一些局部区域的特征;较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。这些抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高。

(知识补给内容来源网络,侵权联系删除)

0afd16c581f655237395d303d9adb669.png 达尔闻入驻分享者 稚晖系列——我是稚晖,常驻“达尔闻说”,不定期为大家分享人工智能前沿知识。

c449105100a530e89b59dab7ce72cfa7.png我就关注“达尔闻说”

稚晖 的个人网站:www.pengzhihui.xyz 稚晖 的往期回顾: 新手想玩嵌入式硬件,用单片机还是树莓派好? 如何自制一块“树莓派”-DIY ARM-Linux卡片电脑 你有什么用单片机或开源硬件做的有意思的作品吗? 毕业设计做磁悬浮装置可行? PID算法加持更稳 如何自制1个超迷你的语音助手?

DIY逗比的时钟,制作资料100%开源!

stm32f407能跑linux吗_在STM32上跑神经网络做手势识别_第5张图片

你可能感兴趣的:(stm32f407能跑linux吗_在STM32上跑神经网络做手势识别)