草庐IT

传感器端计算( in-sensor computing)

放牛郎在摸鱼 2023-04-12 原文

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

接下来的时代是一个人工智能的时代,人工智能的时代就是传感器的时代,“智能”传感器的时代。传感器必须具备一定的信息处理的功能,不再是简单的采集数据的设备,是需要作为一个相对独立的感知sensing)、存储storge)、计算computing)单元的。

感知网络中的传感器节点的数量在快速增长,导致了感知终端与计算单元之间的大量的冗余数据的交换 。为了更加高效地处理这些数据,并且降低计算功耗,很有必要发展一种新的计算范式,减少这些冗余数据在感知终端和计算单元之间的来回搬运,这就是所谓的传感器端计算,或者感存算一体化。顾名思义,近传感器计算就是在传感器附近进行数据的运算,传感器运算就是在传感器的内部单元进行一定的数据运算。

传统的传感器网络的架构主要结构:感知终端负责本地的数据采集,对采集到的信号不加处理、傻瓜式地上传到云端服务器,由云端服务器进行进一步的信号分析,如果有需要的话,远端服务器通过网络传输返回给感知终端相关的结果信息。在这个过程中就会导致一些问题,这些问题亟待解决。
1、感知终端采样的数据量很大,并且传输到云端,需要高带宽high bandwidth);
2、感知终端与云端通过网络进行数据通信,会导致一定的延时response time),这在许多场合是无法忍受的(例如无人驾驶领域等);
3、感知终端采样到的数据不经处理,直接传输,会带来高功耗high energy consumption)问题;
4、信息在本地和云端传输的过程中,可能会被窃取,带来隐私保护、信息安全security)的问题;
5、感知终端采集到的大量的原始信息,需要大存储空间large data storage
·············


一、“智能”的传感器

什么是“智能”的传感器呢?“智能传感器”不再单单是终端采集信号的设备,还需要对采集到的信号进行一定程度的处理。
进行比较低级的任务处理,比如噪声抑制、滤波、背景提取、特征增强、运动提取等;
进行比较高级的任务处理,比如对图像、语音信号的识别、分类以及定位等

二、传感器端计算的结构

传感器端计算的主要功能可以分为这三个部分:感知、存储、计算

1.感知

感知部分由传感器完成(sensor),针对不同的任务场景有不同的传感器,图像传感器(CMOS image sensor, CIS)、压力传感器、触觉传感器、气体传感器等,本质上都是将外界的物理信息转换成对应的模拟信号。接下来的内容,以图像传感器CIS为例进行说明。

图像传感器利用光电效应将外界的光信号转变为电信号,提交后续功能层进一步处理。

2.存储、计算

感知层图像传感器输出的模拟电信号,输入存储、计算层。存储、计算相分离的冯诺依曼架构固然可以完成传感器端计算的任务,但是也不可避免地导致数据在存储、计算层之间的搬运,这是冯诺依曼架构本身固有的缺点,无法避免。
通过忆阻器阵列,可实现存储计算一体化的功能。(忆阻器的神奇功能就不在这里详细介绍,感兴趣的读者可以自行阅读忆阻器的相关材料,网上很多)。忆阻器阵列基于欧姆定律和基尔霍夫电流定律完成网络运算中的乘法操作和加法操作。

三、集成

完成传感器端计算的三部分功能层都已确定,那如何将这三部分连接起来呢,通过什么方式呢?

这是四种不同的集成方式,具体内容不再详述,可以参阅书籍handbook of 3D integration全三册

个人认为,在实际的制造中,比较可行的方式应该是三维异质集成,CIS与存算芯片在不同的生产线生产,通过wafer bonding或者hybrid bonding的方式,将两部分连接起来,这样的连接方式能够满足CIS的高带宽的要求,至于CIS的模拟电信号在传输给存算芯片的过程中如何保持信号的真度,又是另一个棘手的问题了。

四、算法

如何对感知得到的数据进行处理,以完成前面所说的一些低级或高级的运算任务,就需要将算法一起考虑进去。
现有的神经网络模型,resnet、Alexnet等网络,固然可以实现很好的识别分类功能,但其模型较大,网络参数很多,难以部署在目前的存算阵列里面,故需要对神经网络模型进行压缩处理,包括剪枝量化、参数共享等。
在将感知得到模拟信号输入到神经网络前,是否可以对信号进行预处理,降低信号维度,保留其中的有效信息,以减少任务的运算量,目前也提出了许多新的基于神经网络的算法。


总结

本文介绍了感存算一体化的“智能”传感器的基础知识,希望能够给大家带来一些帮助。人工智能的时代,在一些要求低延时或数据密集型领域中,“智能”传感器大有可为,一起努力。

现在针对于传感端计算的研究已经有许多文章的发表,在这里给出几个文章链接,以供参考。

  1. Du, Z. et al. ShiDianNao: shifting vision processing closer to the sensor. In Proc. 42nd Annual International Symposium on Computer Architecture (ISCA) 92–104 (ACM and IEEE, 2015).
  2. Chen, T. et al. Diannao: a small-footprint high-throughput accelerator for ubiquitous machine-learning. ACM SIGARCH Computer Architecture News 42, 269–284 (2014).
  3. Hsu, T.-H. et al. AI edge devices using computing-in-memory and processing-in-sensor: from system to device. IEEE Int. Electron Devices Meet. 22.25.21–2225.24 (2019).
  4. Amir, M. et al. NeuroSensor: a 3D image sensor with integrated neural accelerator. In 2016 IEEE SOI-3D-Subthreshold Microelectronics Technology Unified Conference (S3S) 1–2 (IEEE, 2016).
  5. Amir, M. F ., Ko, J. H., Na, T., Kim, D. & Mukhopadhyay, S. 3-D stacked image sensor with deep neural network computation. IEEE Sens. J. 18, 4187–4199 (2018).
  6. LiKamWa, R., Hou, Y ., Gao, J., Polansky, M. & Zhong, L. RedEye: analog ConvNet image sensor architecture for continuous mobile vision. ACM SIGARCH Computer Architecture News 44, 255–266 (2016).
  7. Li, C. et al. Analogue signal and image processing with large memristor crossbars. Nat. Electron. 1, 52–59 (2018).
  8. Zidan, M. A., Strachan, J. P . & Lu, W . D. The future of electronics based on memristive systems. Nat. Electron. 1, 22–29 (2018).
  9. Chu, M. et al. Neuromorphic hardware system for visual pattern recognition with memristor array and CMOS neuron. IEEE Trans. Ind. Electron. 62, 2410–2419 (2014).
  10. Mennel, L. et al. Ultrafast machine vision with 2D material neural network image sensors. Nature 579, 62–66 (2020).
  11. Hsieh, H.-Y . & Tang, K.-T. VLSI implementation of a bio-inspired olfactory spiking neural network. IEEE Trans. Neural Netw. Learn. Syst. 23, 1065–1073 (2012).
  12. Shulaker, M. M. et al. Three-dimensional integration of nanotechnologies for computing and data storage on a single chip. Nature 547, 74–78 (2017).

有关传感器端计算( in-sensor computing)的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  3. ruby-on-rails - Rails 3 I18 : translation missing: da. datetime.distance_in_words.about_x_hours - 2

    我看到这个错误:translationmissing:da.datetime.distance_in_words.about_x_hours我的语言环境文件:http://pastie.org/2944890我的看法:我已将其添加到我的application.rb中:config.i18n.load_path+=Dir[Rails.root.join('my','locales','*.{rb,yml}').to_s]config.i18n.default_locale=:da如果我删除I18配置,帮助程序会处理英语。更新:我在config/enviorments/devolpment

  4. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  5. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  6. ruby - Sinatra set cache_control to static files in public folder编译错误 - 2

    我不知道为什么,但是当我设置这个设置时它无法编译设置:static_cache_control,[:public,:max_age=>300]这是我得到的syntaxerror,unexpectedtASSOC,expecting']'(SyntaxError)set:static_cache_control,[:public,:max_age=>300]^我只想将“过期”header设置为css、javaascript和图像文件。谢谢。 最佳答案 我猜您使用的是Ruby1.8.7。Sinatra文档中显示的语法似乎是在Ruby1.

  7. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  8. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  9. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  10. ruby-on-rails - rails : check if the model was really saved in after_save - 2

    ActiveRecord用于在每次调用保存方法时调用after_save回调,即使模型没有更改并且没有生成插入/更新查询也是如此。这实际上是默认行为。在大多数情况下这没问题。但是一些after_save回调对模型是否实际保存的事情很敏感。有没有办法确定模型是否实际保存在after_save中?我正在运行以下测试代码:classStage 最佳答案 ActiveRecordusetocallafter_savecallbackeachtimesavemethodiscalledevenifthemodelwasnotchangedan

随机推荐