为了在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的性能得分是非常高的。

等不及,先展示最终实现结果。实现细节、详细介绍等整理好资料后,再来分享。

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

jpg 神经网络 手势识别_在STM32上跑神经网络做手势识别相关推荐

  1. 我在STM32单片机上跑神经网络算法

    01  前言 为什么可以在STM32上面跑神经网络? 简而言之就是使用STM32CubeMX中的X-Cube-AI扩展包将当前比较热门的AI框架进行C代码的转化,以支持在嵌入式设备上使用. 目前使用X ...

  2. 在STM32单片机上跑神经网络算法

    摘要:为什么可以在STM32上面跑神经网络?简而言之就是使用STM32CubeMX中的X-Cube-AI扩展包将当前比较热门的AI框架进行C代码的转化,以支持在嵌入式设备上使用,目前使用X-Cube- ...

  3. stm32硬件消抖_在 STM32 上使用 C++ 指南

    结识更多同行,共同讨论"嵌入式"技术.欢迎添加社区客服微信,备注发送"电源+公司名(学校)+职位(专业)"拉您入群. 简介 本文描述了如何使用在搭载了 RT-T ...

  4. rtthread工业使用_在STM32平台跑RT-Thread下的C++详尽使用指南

    本文描述了如何使用在搭载了 RT-Thread 系统的 STM32 平台上使用 C++,包括 C++ 的配置和应用等.并给出了在STM32F411 NUCLEO开发板上验证的代码示例. 硬件平台简介 ...

  5. python百度手势识别_【百度大脑新品体验】手势识别

    总感觉积分涨得好慢啊,我又来了混积分了! 上次我尝试做了一个给眼镜加特效,针对的是静态图像,具体文章参考 https://ai.baidu.com/forum/topic/show/942890 . ...

  6. 做神经网络用哪个笔记本,笔记本能跑神经网络么

    什么配置的笔记本电脑足够用来写代码,运行代码? 1.用来写代码和运行代码的笔记本配置,要看写的是什么程序,运行的是什么开发环境.(1)如果运行数据库,比如SQLServer,建议大内存,高速CPU. ...

  7. 机器学习 啤酒数据集_啤酒数据集上的神经网络

    机器学习 啤酒数据集 Artificial neural networks (ANNs), usually simply called neural networks (NNs), are compu ...

  8. [学习笔记]使用GNU Toolchain在STM32上跑起一个最小OS

    前言: 我是从小学2年级开始接触电脑的,那个时候的系统满大街都是windows95,如果再早一点,接触到的系统应该是在小霸王游戏机上.十几年过去了(好伤感XD),现在终于知道一个最简单的操作系统,从硬 ...

  9. 专用神经网络处理器的芯片,cpu可以跑神经网络吗

    苹果产品中的"统一内存(unifie?emory)"与以往的"内存怎么样? 这个统一内存就是把内存.GPU的显存和神经网络处理器的缓存放到一起,通过Fabric和CPU/ ...

最新文章

  1. php api 无符号整数基数为16的整数参数的字符串表示形式,[1.12]-参数规则:接口参数规则配置 | PhalApi(π框架) - PHP轻量级开源接口框架 - 接口,从简单开始!...
  2. 牛客 - 牛牛的滑动窗口(单调栈+思维+差分)
  3. JDK 8时代的抽象类与接口
  4. 第六十一期: 从7600万个5G连接中,我们发现了7种最有前景的5G物联网应用
  5. viewDidLoad等相关函数调用
  6. [计蒜客]T1853 非常男女
  7. 转:Apple的App Analytics统计平台你必须知道的
  8. 人工智能民主化无关紧要,数据孤岛以及如何建立一家AI公司
  9. matlab的控制系统仿真,MATLAB控制系统仿真教程
  10. XJTU_选课小助手
  11. 专利申请过程中的重要文件总结
  12. 硅谷天才CEO被罢免10天后绝地反击,重夺控制权
  13. 懒人神器,IDEA插件之EasyCode,自动生成CRUD代码
  14. C语言任意输入三个数构成三角形,随便输入三个数,看能否组成一个三角形
  15. MYSQL_ 表结构设计和数据类型优化
  16. 计算机图形学应用题,计算机图形学教学大纲
  17. 【Azure 应用服务】NodeJS Express + MSAL 实现API应用Token认证(AAD OAuth2 idToken)的认证实验 -- passport.authenticate()
  18. ubuntu 8.10安装配置经验(转载)
  19. Ceph万字总结|如何改善存储性能以及提升存储稳定性
  20. 【前沿招聘】美的集团高薪招聘SRM运维工程师/实施顾问

热门文章

  1. 就linux学习的一点感受,谈谈前天面试后的感受吧,关于学习Linux
  2. VS2019 windows桌面应用_多邻国英语测试推出桌面应用程序,确保考试环境安全可靠...
  3. 稀疏矩阵三元组 严蔚敏_Sparse稀疏矩阵主要存储格式总结
  4. 机器学习处理信号分离_[学习笔记]使用机器学习和深度学习处理信号基础知识...
  5. firewall-cmd命令管理防火墙
  6. 通讯录新建分组功能php,微信通讯录分组怎么设置
  7. 在c语言中下面指针,c语言指针的知识点
  8. fastText原理和文本分类实战
  9. php上传多张图片为什么只显示一张,javascript,_js多张图片上传 也拿到多张图片的路径 在页面上展示只显示一张?只执行了一次???,javascript - phpStudy...
  10. jacobi迭代法matlab_解线性方程组的经典迭代法(1)-理论