序:稚晖的新作品“在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,达尔闻也将第一时间发布。知识补给—CNN 与 FCN
通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量。以AlexNet为代表的经典CNN结构适合于图像级的分类和回归任务,因为它们最后都期望得到整个输入图像的一个数值描述(概率),比如AlexNet的ImageNet模型输出一个1000维的向量表示输入图像属于每一类的概率(softmax归一化)。栗子:下图中的猫, 输入AlexNet, 得到一个长为1000的输出向量, 表示输入图像属于每一类的概率, 其中在“tabby cat”这一类统计概率最高。FCN对图像进行像素级的分类,从而解决了语义级别的图像分类(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。最后逐个像素计算softmax分类的损失, 相当于每一个像素对应一个训练样本。下图是Longjon用于语义分类所采用的全卷积网络(FCN)的结构示意图:简单的来说,FCN与CNN的区别在把于CNN最后的全连接层换成卷积层,输出的是一张已经Label好的图片。
CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:较浅的卷积层感知域较小,学习到一些局部区域的特征;较深的卷积层具有较大的感知域,能够学习到更加抽象一些的特征。这些抽象特征对物体的大小、位置和方向等敏感性更低,从而有助于识别性能的提高。
(知识补给内容来源网络,侵权联系删除)
达尔闻入驻分享者 稚晖系列——我是稚晖,常驻“达尔闻说”,不定期为大家分享人工智能前沿知识。我就关注“达尔闻说”
稚晖的个人网站:www.pengzhihui.xyz