点上方蓝字计算机视觉联盟获取更多干货

在右上方 ··· 设为星标 ★,与你不见不散

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:量子位

AI博士笔记系列推荐

周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接

为了让更多IoT设备用上AI,在条件“简陋”的单片机上跑图像识别模型也成为一种需求。

但是图像识别对内存有较高的要求,一般搭载MCU的设备内存都不高,怎样才能解决这个问题呢?

最近,微软提出了一种RNNPool方法,甚至可在内存只有256 KBSTM32开发板上运行人脸检测模型。

这篇论文也发表在近期举行的顶会NeurIPS 2020上,相关代码已经开源。

CNN难以适应单片机低内存

目前,计算机视觉领域的主要架构都是基于CNN,但是CNN对处理器的内存要求比较高,所以对于微型处理器,更加不友好。

CNN主要分成两个部分,一是卷积层,用来提取被输入图像的视觉特征。二是池化层,用来组合特征,并且简单表达出来。

但这样的结构真的非常消耗内存,假如我们输入一张56×56的8位图像,在处理的过程中,至少需要800KB的内存。

边缘AI往往内存和功耗都有限,大多数Arm Cortex-M4微控制器设备的内存都少于256 KB。

显然,CNN方法应用在这类边缘设备上是不现实的。

虽然压缩激活图的大小可以减少输出通道的数量,但这可能会导致精度大大降低。

另一种方法是对图的行/列数量进行下采样。

假设是一个28×28×256的激活图取代56×56×256激活图。那么,一个图像就可以压缩到200 KB内。

池化算子和带状卷积是下采样激活图的标准方法,但这个方法依赖于相对简单和有损的聚合。若将其应用于较大的接收域,或者图像模块进行更激进的下采样,则可能会导致其精度降低。

因此,如上图中所示,在大多数标准CNN架构中,这种运算符仅限于在2×2的接收域才能保证它的准确度。

而且这种方法只将激活图大小减少了四倍,满足不了我们的要求。

因此,我们需要找到一个池化算子,它既可以总结激活图的大模块,并可以一次性降低激活图的大小。

这种方法就叫做RNNPool。

RNNPool所需内存减少80~90%

RNNPool在语法上等效于池化算子,可以快速减小中间图的大小。它的模型层数更少,对内存要求更低,可以在内存受限的小型设备上分析图像。

RNNPool由两个学习递归神经网络(RNN)组成,它们以每个模块为单个向量,在水平和垂直方向上扫过激活图的每个模块。

RNNPool获取一个激活图的模块并将其汇总为1×1体素,然后逐步执行下采样步骤。RNNPool可以支持8×8,甚至16×16的模块大小,并且可以以步长s = 4或s = 8采样,而不会显著降低精度。

第一个RNN遍历每一行和每一列,并将它们全部汇总为h1维的1×1体素,第二个RNN双向遍历这些体素,并且生成一个最终的1×4×h2向量。其中,h1是第一遍RNN隐藏状态的大小,其中h2是第二个RNN隐藏状态的大小。

因此,它可以在不损失准确度的情况下大幅降低激活图的采样率。

由于RNNPool与池化算子等价,所以它可用于替换CNN中的所有池化运算符,降低对内存需求。

将RNNPool放在CNN架构的开头,可以快速采样激活图,降低峰值内存需求。

在大多数情况下,研究人员发现基于RNNPool的模型所需的内存可以减少至原来的10~20%。同时,仍能保持几乎相同的准确度。

实验测试结果

研究人员将基于RNNPool的人脸检测模型(称为RNNPool-Face-M4)在一个叫做SeeDot的工具上编译。

RNNPool-Face-M4用在Arm Cortex-M4微控制器的STM32F439-M4器件上,通过测试,它能在10.45秒内处理单个图像,它的峰值内存仅需要188 KB。

再通过跟EagleEye(小型设备领域的SOTA技术)比较,可以看到,RNNPool-Face-Quant在内存消耗上的225KB明显明显优于EagleEye的1.17MB。

Demo

微软团队还基于RNNPool制作了两个图像任务Demo。

其中一个是脸部识别。

在训练时,根据参数不同,输入图像将为640x640的RGB图,或者为320x320的的单色图。

在测试时,主要运用了两种模式。一是为一组样本图像生成边界框的评估模式,二是计算诸如mAP分数之类的测试模式。

测试方法一是将图像保存在特定的文件夹中,并在具有高置信度的脸部周围标志上边框。如下图所示:

测试方法二对于每个图像,都提供了单独的预测文件,文件中的每一行都对应一个标识框。对于每个框,将生成五个数字:框的长度,框的高度,x轴偏移,y轴偏移,存在脸部的置信度值。

除了面部识别的程序代码外,他们还贴出了一个Visual_Wakeword的代码库,这是一个二元的识别程序,即判断图像里面,是否有人的出现。

官方介绍:
https://www.microsoft.com/en-us/research/blog/seeing-on-tiny-battery-powered-microcontrollers-with-rnnpool/

论文地址:
https://www.microsoft.com/en-us/research/publication/rnnpool-efficient-non-linear-pooling-for-ram-constrained-inference/

开源代码:
https://github.com/microsoft/EdgeML/blob/master/pytorch/edgeml_pytorch/graph/rnnpool.py

https://github.com/microsoft/EdgeML/tree/master/examples/pytorch/vision

end

这是我的私人微信,还有少量坑位,可与相关学者研究人员交流学习 

目前开设有人工智能、机器学习、计算机视觉、自动驾驶(含SLAM)、Python、求职面经、综合交流群扫描添加CV联盟微信拉你进群,备注:CV联盟

王博的公众号,欢迎关注,干货多多

王博的系列手推笔记(附高清PDF下载):

博士笔记 | 周志华《机器学习》手推笔记第一章思维导图

博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”

博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”

博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”

博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)

博士笔记 | 周志华《机器学习》手推笔记第八章(上)

博士笔记 | 周志华《机器学习》手推笔记第八章(下)

博士笔记 | 周志华《机器学习》手推笔记第九章

点个在看支持一下吧

人脸检测,微软提出用RNN代替CNN相关推荐

  1. 内存256KB设备也能人脸检测,微软提出用RNN代替CNN | NeurIPS 2020

    蕾师师 发自 凹非寺 量子位 报道 | 公众号 QbitAI 为了让更多IoT设备用上AI,在条件"简陋"的单片机上跑图像识别模型也成为一种需求. 但是图像识别对内存有较高的要求, ...

  2. 人脸检测(十六)--Cascade CNN

    转自:https://blog.csdn.net/xzzppp/article/details/51692907 论文:A Convolutional Neural Network Cascade f ...

  3. 【20201218期AI简报】内存256KB设备也能人脸检测!

    导读:本期为 AI 简报 20201218 期,将为您带来 8 条相关新闻,有趣有料~ 本文一共 2500 字,通篇阅读结束需要 6~9 分钟 1. 内存256KB设备也能人脸检测!微软提出用RNN代 ...

  4. MTCNN-将多任务级联卷积神经网络用于人脸检测和对齐

    论文链接:  https://kpzhang93.github.io/MTCNN_face_detection_alignment/,本文是根据自己的理解翻译的如有错误,还请见谅,评论提出,立马修 ...

  5. (转)如何应用MTCNN和FaceNet模型实现人脸检测及识别

    https://zhuanlan.zhihu.com/p/37705980 人脸检测与人脸识别 人脸检测是对人脸进行识别和处理的第一步,主要用于检测并定位图片中的人脸,返回高精度的人脸框坐标及人脸特征 ...

  6. 人脸检测:《MTCNN》论文详解2016

    Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 作者链接:https://kpz ...

  7. 人脸检测 中那些 有启发意义的idea

    检测三问 什么是Anchor,为什么要有anchor? SSD究竟在训练啥? 什么是mAP?  如何计算? 计算过程可视化.目标检测模型的评估指标mAP详解(附代码)A Survey on Perfo ...

  8. 人脸检测算法_腾讯已开源高精度人脸检测算法DSFD

    腾讯提出一种高精度双分支人脸检测器DSFD并开源.该算法曾在全球两大权威人脸检测数据集WIDERFACE和FDDB上均取得了第一. 任务介绍 人脸检测算法是在图像上检测出人脸的位置(通常以矩形框形式输 ...

  9. 基于肤色空间建模+连通域处理的人脸检测算法的MATLAB仿真

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

最新文章

  1. Jupyter Magic - Timing(%%time %time %timeit)
  2. Windows下配置Chrome WebDriver
  3. 顺序表的结构和9个基本运算算法
  4. 想要使用 for循环,就要添加 索引器
  5. java ee的小程序_扩展Java EE应用程序的基础
  6. linux 字符串 空,linux – bash空字符串/命令
  7. android开发简历,轻松拿到了阿里Android高级开发工程师的offer
  8. 统一数据接入实践分享
  9. 古代的人才选拔,哪种制度更好?
  10. 9月7日冬瓜哥与你见面畅谈!
  11. [Unity3d] [图文]【寻路】 Waypoint 与 NavMesh 比较(转)
  12. TCP/IP模型背后的内涵(一)
  13. 苏强SN系列服务器说明书,SN2000交流伺服驱动器使用手册.pdf
  14. linux 路由 pppoe ipv6,ubuntu PPPoE v6 Server配置
  15. 2144775-48-2,D-Biotin-PEG6-Thalidomide可用于cereblon(CRBN)结合和置换分析
  16. [存储-测试工具]vdbench文件测试随机IO混合读写配置模板
  17. 22/04/30本周总结
  18. VirtualAPP技术应用及安全分析报告
  19. vue:将Element UI的时间选择器(DatePicker)的Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)转化为XXXX-XX-XX的格式
  20. KMP算法前后缀原理

热门文章

  1. 双光子荧光成像_在不影响分辨率的情况下,成功将双光子显微镜成像速度提高5倍!...
  2. mysql config.path_mysql之 mysql_config_editor/login-path 登录密码保护
  3. java final 初始化_[转]java static final 初始化
  4. 一般向量空间的基变换_MIT—线性代数笔记30 线性变换及对应矩阵
  5. 如何给影像添加投影_如何在EasyEarth Desktop(CS客户端)进行影像处理
  6. visionpro定位不跟随图像_医海探弋,TMS定位技术的发展分析
  7. nginx做正向代理http,内网主机yum安装外网资源
  8. Strust2 Mysql数据库,sql语句分页,JSP显示
  9. _Linux自编译云锁Web网站防火墙,看完小白也能保护网站安全
  10. science量子计算机,第一快讯|《Science》量子计算机被证明超越了经典计算机