RNNPool ——使得人脸识别在RAM只有256KB的STM32上运行成为可能

Github地址https://github.com/Microsoft/EdgeML

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

 

RNNPool为微软提出的可跑在RAM只有256KB的STM32上的人脸检测模型,主要是通过将其中的大部分卷积部分替换为文中提到的RNNPool layer部分,使之在计算量/内存峰值占用最大的地方替换为相应的较小的方法,作者通过实验,将经典网络中的一部分卷积替代为该部分,能够明显的降低参数量大小的同时,保证其准确率不会有较大损失。

 

文章最后还将标准的S3FD网络架构中的某一部分用RNNPool组件进行了替代,然后将其放在了ARM Cortex-M4的仅有256KB RAM的STM32F439-M4嵌入式设备上,在该设备上图像分辨率为320*240*1上的单帧图像推理速度为10.45 sec,并且达到了State-of-the-art的MAP,该方法对于工业上在性能受限的设备上有很好的借鉴意义。

 

通过这里就可以发现,RNNPool layer相当于一个广义的池化操作,故它是一个component,可以在任何的基于卷积网络的部分进行替代,而通过名字就可以看出,RNNPool则是借鉴了RNN网络中的方法,用overlapping patches将feature map中的各层之间的权重进行关联,使之更加注重抓取局部特征并且依赖后续的卷积层来抓取全局内容。RNNPool具体的操作方式如下图:

从上图可以看出,利用RNNPool组件可以将尺寸为r*c*k的kernel size大小的feature map转化为一个大小为4*h2长度的一个向量。其中每一个h2长度的向量都是通过FASTGRNN的方式得到,FASTGRNN具体操作可看相关文献(paper:FastGRNN: A Fast, Accurate, Stable and Tiny Kilobyte Sized Gated Recurrent Neural Network)

 

文章中就将RNNPool在GoogleNet、Mobilenet等经典网络上进行了替代,然后分析了替代后的网络和原网络在参数量、计算量等方面的差异。我将其在mobilenetV2网络上替代后的结构进行了打印,具体如下:

MobilenetV2  RNNPool layer层前后输入尺寸变化情况

 

官方给出的代码RNNPool(6, 6, 8, 8, input_channel)中前两个参数代表了输入尺寸的kernel size 的大小,及每个窗口的大小,第三个参数代表了kernel的通道数,第四个参数代表了输出向量h2的长度,input_channel则为滑动窗口的个数*batch_size大小。

故原图经过卷积后变为112*112*8,将batch_size=1,输入大小为112*112*8的feature_map经过RNNPool 操作后每个6*6*8大小的kernel尺寸则变为4*8=32,而根据步长stride=2计算出滑动窗口个数为729(27*27个,故经过RNNPool后feature_map尺寸从batch_size*112*112*8变为batch_size*32*27*27,显著降低了运算量。

 

原文又以DenseNet121举例,给出了原图和替换为RNNPool后的网络结构图,如下:

DenseNet121与DenseNet121-RNNPool比较示意图

文章给出了经典模型在Imagenet-10数据集下的准确率,参数量,峰值内存,加法参数量等信息,并与更改为RNNPool的对应网络的指标进行比较,如下:

可以看出,RNNPool层的加入不仅峰值内存、参数量有所降低,准确率在某些网络上甚至有一定的提升,而且RNNPool组件的特点可以方便的进行网络的搭建。

以上就是关于微软推出的RNNPool内容的解读,更详细的内容可去网上参看原文和代码,有任何错误的地方也请指出,如果文章对同行业/爱好者有帮助的话,那就随手点个赞吧,笔芯~ ~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值