☰
传感器端计算:突破边缘AI数据搬运功耗困境的关键技术
2026/9/29 9:41:09 网站建设 项目流程

先说一个我自己踩过的坑:前年做一个工业视觉检测方案,产品经理拍板用的是“普通摄像头+边缘盒子”的老套路。等一测功耗,整套系统最高到12W,客户要求压到5W以内,怎么都下不来。后面仔细分析才发现,真正吃掉功耗的既不是CPU也不是NPU,而是图像数据从传感器搬到DDR、再从DDR搬进算子的这一路。一趟1080P@60fps的原始图像,每秒数据量就超过100MB,这个搬运成本比计算本身高出不止一个数量级。那段时间我一直在看传感器端计算(in-sensor computing)的资料,越看越觉得这条路径才是解决“边缘功耗墙”的真正钥匙,而不是继续堆算力。

这篇文章我打算把传感器端计算这件事拆开讲清楚:它到底解决什么问题、主流的技术路径有哪些、像素级计算和近感计算的核心原理怎么理解、工程化落地时最容易踩的坑是什么,以及怎么判断一个场景到底适不适合上传感器端计算。不管你是做低功耗IoT设备的,还是做视觉检测、穿戴式医疗的,这篇文章都值得花十分钟看完。

1. 数据搬运的惊人成本:感算一体到底在解决什么

1.1 算力不是瓶颈,带宽才是

很多人一谈到边缘AI,第一反应就是“算力不够”。但如果你把功耗账本摊开看,会发现一个不太符合直觉的结论:在大多数视觉边缘场景里,幻觉中的“算力不够”根本不存在,真正压垮系统的是数据搬运的带宽和能耗。

我给你算一笔简单的账。以一颗1600万像素的传感器为例,RAW格式12bit输出,一帧就是1600万×12bit = 192Mbit ≈ 24MB,如果跑30fps,每秒大概产生720MB数据。这些数据要从像素阵列读出,经过MIPI或LVDS接口传到SoC,先写进DDR,再从DDR读出来送进NPU做卷积。这一趟下来,每个bit平均要花几十皮焦的能量,算下来光是搬运功耗就是好几瓦。

与之对应的是,一个MAC运算(乘加运算)在先进工艺下能耗大概只有零点几到几个皮焦。换句话说,搬一个数据所花的能量,足够做几十次甚至上百次计算了。这就是业界经常引用的“数据搬运能耗远大于计算能耗”的真正含义。只要你还坚持“传感器只管采、处理器只管算”的传统架构,那这套架构的物理极限就在传输链路上,CPU再快、NPU再强,都救不了功耗。

1.2 传感器端计算把“算”往数据源头推

传感器端计算的思路完全反过来:既然搬运数据那么贵,那就干脆别搬了,直接在传感器这层把数据“消化”掉一部分,只输出真正有用的结果——比如一个缺陷坐标、一个人脸框、一个动作标签、一对异常波形脉冲。数据从720MB/s变成了几百字节每秒,后面所有环节的带宽、存储、功耗压力全都缓解了。

这个思路最典型的一个代表是事件相机(event camera)。事件相机不算传统意义上的感算一体芯片,但它做的就是“传感器端判断”:每个像素自己判断亮度变化是否超过阈值,只有变化足够大的时候才输出一个事件,静态画面完全不输出。这样拍出来的数据天然就是稀疏的,后续算法不需要对整帧图像做处理,只需要处理稀疏事件流。我用过一款事件相机做高速旋转机械的振动监测,原本要300fps的帧率才能捕捉到的异常,事件流只要几毫秒就能触发一个“变化量超限”信号,数据量大概只有传统方案的百分之一。

真正的传感器端计算(in-sensor computing)走得更远,它不只是“判断要不要输出”,而是直接在像素阵列内部完成卷积、池化、特征提取等计算,直接输出高层语义特征。所以你理解的传感器端计算,本质上是把“感知”和“计算”这两个原本分离的环节融合在一起,从物理层面绕开数据搬运这座大山。

2. 感内、近感、事件驱动:传感器端计算的三条主流技术路线

传感器端计算的叫法很多,容易混。按计算发生的位置和数据流形态,我习惯把它分成三条路线:感内计算(in-sensor computing)、近感计算(near-sensor computing)和事件驱动感知(event-driven sensing)。这三条路线不是同一件事,但它们经常被放在一起讨论,选型的时候要特别注意区分。

2.1 感内计算(in-sensor computing):在像素里做算术

感内计算指的是计算直接发生在像素阵列内部,通常是在模拟域完成。像素不再是单纯的“光电转换器”,而是变成了一个能执行乘加运算的模拟计算单元。比如把卷积核的权重映射到多个光电二极管上,让光电流直接做加权求和,最后读出来的就不是“像素灰度值”,而是“卷积特征图”。

这条路线的核心优点是极致的能效比。因为是模拟域处理,不用做AD转换、不用从阵列读出大数据量,计算能耗可以压缩到极低。我在一份研究数据里看到,模拟域像素级卷积的能效可以达到TOps/W量级,比传统数字处理器高出两个数量级。但代价也很明显:精度受限、灵活性差、对工艺偏差非常敏感。模拟计算的误差来源太多了,后面第四章我会详细讲。

2.2 近感计算(near-sensor computing):传感器旁边放个专用核

近感计算是把一个数字处理核和传感器封装在一起,或者直接集成在同一个芯片上,缩短数据搬运的物理距离。计算还是数字域,精度和灵活性都保留得很好,但节约的主要是“片间传输”的能量,片内像素到处理核的模拟数据仍然要读出和转换。

典型的商业案例是索尼IMX500,它把DSP和SRAM集成在CMOS图像传感器芯片上,可以在传感器内部跑一个轻量CNN,输出对象检测、语义分割的结果。IMX500输出的不是处理后的特征图,而是“检测到了什么、在哪个位置”,也就是说它已经把“结果”给了后端,后端不需要再做大计算量推理。这类方案非常适合安防摄像头、智能门锁这些对实时性和功耗都有要求的场景。

2.3 事件驱动感知(event-driven sensing):从源头只输出“变化”

事件相机是这条路线最出名的代表。它不是“算”出来的,而是从物理层面改变了数据产生的方式:没有变化就不产生数据,有变化才输出微秒级的稀疏事件流。它的数据完全是异步的,时间分辨率极高,动态范围极好,在高速运动、高对比度场景下比传统帧相机优势大得多。

拿它和感内计算比较,事件相机更像是“前端数据触发的传感器”,感内计算则是“在传感器内部做完整计算”。事件相机适合做运动信息提取、高速追踪、视觉SLAM;感内计算适合做静态目标的特征提取、识别分类。两者可以搭配使用。

2.4 三条路线的关键参数对比

路线计算位置数据输出能效比灵活性代表方案/产品
感内计算像素阵列内,模拟域特征图/判断结果极高(TOps/W量级)低,算子固定或受限学术原型、产业预研芯片
近感计算传感器同封装/同芯片,数字域语义结果/特征高中高,可跑轻量CNN索尼IMX500等
事件驱动像素级变化检测稀疏异步事件流高(数据量大减)中,需专用算法动态视觉传感器

选型的第一步,是先搞清楚自己说的“传感器端计算”到底是哪一条路线,因为它们对算法、硬件、工具链的要求差别非常大。如果只是想在功耗上“省一点”,近感计算的成熟度最高;如果想在极致功耗和极致数据压缩上做文章,才需要考虑感内计算或事件驱动方案。

3. 把卷积“写进”像素:感内计算的关键原理拆解

3.1 光电流加权求和:矩阵运算的模拟实现

感内计算最核心的一个操作,其实是把卷积运算映射到像素阵列的物理过程上。

传统CMOS图像传感器的像素只做一件事:把光照强度转成电压或电流。而感算一体的像素会在像素内部或像素之间构建加权网络。怎么理解呢?想象一个小的卷积核是3×3的九个权重,你把这九个权重分别映射到九条光电流通道上,每个通道的电流会按照权重被放大或衰减,然后再汇到一条线上相加。这个“加权+相加”的过程,在物理上就是一个最原始的乘加运算。

关键是这个过程中没有任何数字电路参与,也不需要把像素值一个个读出来再做乘加。光照射到像素上,光电流本身就在源源不断地产生,加权求和的过程是实时的、并行的、几乎零额外能耗的。这就是为什么模拟域感内计算能效比高到夸张的原因。

3.2 电荷域和时间域计算:比电压域更稳定的路径

不过电压域的加权求和有一个老问题:像素输出电压摆幅小,动态范围有限,容易受噪声干扰。所以很多新的感内计算研究倾向于做电荷域计算或时间域计算。

电荷域计算的做法是,把像素的光电二极管在曝光期间收集到的电荷,通过控制浮置扩散节点的开关时序,按权重分配到不同的存储电容里。因为电荷的累加是物理过程,不需要额外的运算电路,精度和鲁棒性都比电压域好一些。

时间域计算更巧妙:它把“模拟量”转化成了“时间量”。比如让一个像素的输出信号去控制一个比较器翻转的时间点,光照越强,翻转越快,而“翻转的时间”用数字计数器来记录。这样把计算变成对时间戳的加减操作,规避了模拟电压精度差的问题,又保留了低功耗的优势。我自己看这一块的时候有个体会:模拟域计算的演进方向,本质上是在“精度”和“能耗”之间寻找一个工程上可行的平衡点,电荷域和时间域是绕开模拟精度瓶颈的两个关键手段。

3.3 忆阻器和RRAM交叉阵列:把权重存储进传感器

感内计算的另一个大方向,是引入非易失存储器件,比如RRAM或PCM,把神经网络的权重直接“烧”在传感器芯片上。RRAM阵列本身就具备两个特性:一是能存储权重(不同阻态代表不同权重),二是能通过基尔霍夫定律做矩阵向量乘(电流自然相加)。把它和光电探测阵列叠在一起,就实现了一颗芯片上同时完成“感知→存储→计算”的完整链路。

用生活化的类比:传统架构里,传感器是“眼睛”,存储器是“记事本”,处理器是“算盘”,三者各干各的,数据每次都要在三个器官之间来回倒。感算一体用RRAM做的方案,相当于把“记事本”和“算盘”直接装在了“眼睛”里,看到什么、查到什么、算到什么,全都原地完成,只有最终的结论才传达给你。

这个方向非常有前景,但目前大部分还停留在实验室阶段,离量产有距离。看论文和宣传资料的时候,需要特别注意区分“研究了什么”和“量产了什么”。

3.4 一个具体例子:像素内做卷积到底怎么做

我给你一个更具体的操作级理解。假设你想在传感器端对图像做一个3×3的卷积核,那么曝光期间,像素阵列的某个邻域内就会有九个光电二极管同时感光。如果你希望在读出时直接得到卷积结果,最直接的做法是把这九个像素的光电流,按照卷积核的权重,分别接到不同增益的放大器上,再把放大器输出汇总到一根总线上。

更聪明一点的做法是分时复用:分三次曝光,第一次用正权重曝光积分,第二次用负权重曝光积分,第三次做归一化。最后读出的电压差就是卷积输出。这个过程不需要AD转换,也不需要把九个数一一读到外面,天然就是并行的,每颗像素都在为最终的卷积结果贡献自己的一份力量。

但这也会带来一个问题:像素面积大了不少,填充因子下降,感光效率降低。所以感内计算芯片的分辨率往往做不高,目前公开的研究多数是几百到一千分之一分辨率级别,比如64×64、128×128,很少看到VGA以上的。这个限制决定了它更适合“任务简单、数据越少越好”的场景,而不是高清拍照。

4. 精度、温度、一致性:感算一体方案工程化的三座大山

实话说,感算一体在论文里很美好,但到量产落地阶段,有三座山真不好翻。我看了不少项目,也参与过外部的方案评估,发现问题往往不出在“能不能算”,而出在“算得稳不稳定”。这三座山是:模拟计算的精度、温度漂移、以及量产一致性。

4.1 模拟域计算的精度天花板

模拟域计算的精度,天然受限于信号链路上的噪声源。像素的暗电流噪声——光照为零的时候,像素本身也会因为热激发产生暗电流。这个暗电流大小、温度升高时呈指数增加,直接叠加到光电流上。加权求和时,暗电流也被加权了,如果权重很大,暗电流的波动就会被放大,最终在卷积结果里形成明显的噪声。还有工艺偏差:同一颗芯片上,不同像素的晶体管阈值电压、电容值、增益都可能有百分之几到百分之十几的偏差。数字电路里这些偏差可以靠设计修正,模拟域里这些偏差直接变成了计算误差。

要让模拟域卷积精度达到8bit,也就是相当于256个灰度等级的分辨率,这在实际芯片里已经非常吃力。很多研究论文其实按4bit以下的“有效精度”在跑。所以你在评估一个感算一体芯片时,不要看它宣传“神经网络精度达到95%”,那是可能加了很多纠偏、重训练的计算出来的结果,要问清楚的是:在典型工况、不调参的情况下,实际任务的精度掉了多少。

4.2 温度漂移:室外场景最大的拦路虎

第二个坑是温度。感算一体把计算和感知做在一起,传感器本身就会发热,而环境温度的变化更是逃不掉。传统数字芯片对温度相对不敏感,但模拟域计算不一样:MOS管的阈值电压、迁移率都会随温度漂移,电容的漏电流、暗电流更是温度敏感参数。实测下来,同一个感算芯片在25度和65度环境下,卷积输出幅值可能差20%以上。

这对室外安防、工业现场这些宽温域场景几乎是致命的。所以如果评估一个感算方案用在户外,高温和低温环境下的精度衰减数据一定要拿到,还要问清楚有没有片上温度补偿电路。我见过好几份方案书,能在室温下演示得很完美,但一到夏天设备外壳温度上到60度,检测率就明显下滑。

4.3 量产一致性与校准成本

第三座山是量产一致性。模拟电路的工艺偏差决定了,每一颗芯片的响应曲线都略有不同。数字芯片出厂时可以统一烧录同一个固件,但模拟感算芯片出厂时,可能需要逐颗校准——给标准光照、测标准输出、烧录校准系数。一颗两颗没问题,但到了百万片级别的量产,逐颗校准的时间和成本都是绕不开的问题。

换句话说,传感器端计算目前更适合“工艺成熟、出货量可控”的场景,比如医疗耗材、工业探头这类单价值高、产量不是最大的行业。如果是消费电子那种百万套起订、对成本极其敏感的行业,校准摊销成本可能会劝退很多人。

4.4 算法侧的补偿手段

好消息是,并不全是硬件的活儿,算法侧可以做一部分补偿。比较常见的做法是重训练:把硬件引入的非理想因素(噪声、漂移、失配)建模成一个可微的“硬件效应层”,插在网络结构里,用真实硬件的噪声分布去训练网络。这样训练出来的模型,在面对硬件真实工况时鲁棒性会好很多。我见过有人把图像传感器的噪声模型和量化噪声一起引入训练,最后在低照度下的检测精度提升了十几个百分点。

所以,工程化的思路不是“等硬件完美了再上应用”,而是“硬件算法协同设计”:硬件负责把能耗和延迟降下来;算法负责在容忍硬件非理想的前提下,把精度拉回可接受范围。

5. 评估一份感算一体方案,我先看这五个维度

这些年我陆续接触过一些传感器端计算的方案评估,有芯片公司的参考设计,也有外包团队的项目提案,还看过好几个研究原型。被各种漂亮参数“骗过”几次之后,我总结了一套自己的评估框架。如果你也要评估感算一体方案,我建议按这五个维度逐项过一遍。

5.1 功耗口径:标的到底是裸片还是全系统

第一件事就是把功耗口径对齐。有的方案PPT上写“超低功耗0.1mW”,结果一问,这只是像素阵列的功耗,没有包括AD转换、参考电压生成、时钟、IO驱动这些外围电路。全系统一算,可能跳到几毫瓦甚至几十毫瓦,完全不是一个量级。所以看到功耗数字,第一反应应该问一句:这功耗包括哪些模块?是常开的功耗还是休眠唤醒的平均功耗?

5.2 有效精度:实际任务的指标,而不是模型精度

第二看有效精度。方案方可能会给你一个很高的模型精度指标,比如“MNIST识别99.2%”“VOC检测mAP 80%”,但这个精度是在标准数据集上,用理想的软件模型跑出来的,而不是在真实硬件上测出来的。你要追问的是:在你们这芯片上,实际跑一个业务场景的数据集,准确率、召回率是多少?跟你们芯片输出精度相比,软件模型的精度掉几个点?如果调了模型结构来适配硬件,那新模型跟原始模型比又掉了多少?

我有个很简单的判断方法:拉着方案方一起,拿你们自己的真实数据,在对方的开发板上跑一个最小验证集,几十张图哪怕只有一百张就行,看看输出的结果和标注的差距有多大。这比看十页PPT都管用。

5.3 数据流匹配度:你的算法能否映射到它的算子

第三看数据流匹配度。不同感算芯片支持的算子集差异极大:有的只能跑固定3×3卷积核,有的只能做边缘检测模板,有的支持可编程的tiny CNN。你要看看自己的业务算法,是不是能拆成对方算子集的组合。如果业务算法里需要一个5×5空洞卷积、一个softmax、一个NMS(非极大值抑制),而这些算子芯片上都没有,那这个“感算一体”对你来说就是无效的,只能当普通低功耗传感器用。我建议把这部分做成一张算子映射表,一条一条核。

5.4 工具链成熟度:没有SDK和编译器的硬件都是半成品

第四看工具链。传感器端计算芯片不像GPU那样有非常成熟的CUDA生态,很多还停留在“给一堆寄存器手册”的状态。如果没有一个能用的SDK、编译器或者至少是Python前端工具,你把算法模型做到芯片上会非常痛苦。我面试过一堆标称“AI芯片”的团队,最后发现连神经网络模型转换工具都要自己写,这种产品化程度基本不值得投入。

一个衡量标准:上手时间。拿到开发板后,你团队最快几天能跑通第一个demo?如果超过两周还没有进展,说明工具链成熟度太低,后续产品化的风险会很高。

5.5 成本与供应链:NRE、良率、量级,一个都不能少

最后看成本账。定制感算芯片的前期NRE(非回收工程投入)非常高,流一次片从几十万美元到上百万美元不等,这还不包括封装、测试、校准的后续成本。如果方案方不是推现成的标准产品,而是需要你定制,那要好好算一笔账:预估出货量是多少?如果出货量只有几千片,平摊下来每颗芯片的NRE成本可能比芯片本身贵几十倍,那这个方案在商业上就不成立。

5.6 一张快速评估打分表

评估维度问什么问题理想答案
功耗口径整系统功耗还是裸片功耗?全系统、带动态场景数值
有效精度真实业务数据下掉多少点?给出实测值,允许复现
数据流匹配我的算子能否映射到芯片?映射表完整、缺失少
工具链上手跑通demo要多久?三天以内
成本芯片单价/NRE/校准成本与出货量匹配且合理

6. 实战选型:哪些场景值得用传感器端计算,哪些是伪需求

看完了原理和评估维度,最后一个很现实的问题是:我做的场景到底要不要上传感器端计算?这东西不是万能的,很多场景上了反而是给自己找麻烦。我结合自己的项目经验,给几个判断框架和正反例子。

6.1 值得上的场景:高数据率、低特征维度、低功耗预算

判断一个场景适不适合传感器端计算,三个条件最好同时满足:原始数据量很大但最终要提取的信息维度很少、系统功耗预算极低容不下一个主控一直全速跑、任务模式相对稳定不需要频繁迭代算法。

典型的正向例子是工业质检的缺陷检测分选。产品在产线上高速流过,需要以极快的速度判断“这个工件正不正常”。传统方案是高速相机拍完,把图像传到工控机,工控机跑检测算法,整条链路延迟大、功耗高、设备贵。如果传感器端能做缺陷预判,只把疑似缺陷的局部区域或一个异常标签传到后端,产线速度可以大幅提升,后端设备的算力要求也会降低很多。

另一个正向例子是穿戴式心电图/脑电监测。原始波形数据连续产生,一天下来就是GB级的数据量;但医生真正关心的只是少数几个异常事件。在传感器端做信号质量评估和异常检测,只把异常段压包上传,云端压力、功耗、流量都降下来了。这已经是成熟产品里会用到近感计算的典型场景。

智能门锁和安防摄像头的低功耗唤醒场景也适合:平时传感器端只检测“有没有人/有没有移动”,一旦确认有人出现,再把摄像头调到全分辨率模式或者上传告警。这样待机功耗可以压到微安级别,电池续航从几天拉到几个月,体验差距巨大。

6.2 不适合上的场景:大模型、高精度多类感知、快速迭代

反过来,有几类场景我建议慎上。

第一类是需要跑大模型的场景。传感器端计算芯片的算力和存储容量都极其有限,基本跑不了几十MB的模型。如果你要做的是通用物体检测、上百种分类、语义理解,那还是老老实实用边缘盒子或云端方案。硬把模型塞进传感器端芯片,最后只能牺牲精度,效果远不如在处理器上跑一个剪枝后的模型。

第二类是环境极端、需要极高可靠性的场景。我之前提到温度漂移问题,如果在高温、低温、剧烈振动、强电磁干扰的环境下运行,模拟域计算的稳定性很难保证。军工、航天这种对可靠性极为苛刻的场景,现阶段宁可多耗点电,也要保证计算的确定性,不要用过渡方案去堵枪眼。

第三类是算法迭代非常快的场景。今天做行人检测,明天要加异常行为识别,后天又要换模型结构。如果每次都靠重新流片或重新烧录权重来适配,硬件改版周期会拖慢产品迭代速度。这种情况更适合用近感计算里可编程程度较高的方案,或者干脆把推理任务放到后端。

6.3 我自己的选型决策清单

到现在为止,我评估一个项目要不要上传感器端计算,会按顺序问五个问题:

  1. 当前系统的瓶颈真的是带宽或功耗吗?如果不是,根本不需要走到感算这一步。
  2. 业务模型在“极简网络”下能做到可接受的精度吗?先用软件仿真把一个很小的CNN剪到几百KB以内,测一下精度,如果低于业务线就不推。
  3. 使用场景的温度和光线环境可控吗?如果户外大温差、强光直射,先把方案方的温漂数据要过来看。
  4. 有没有靠谱的工具链支持?没有工具链的硬件,只能当实验室玩具。
  5. 这个项目的生命周期有多长?如果一年后大概率要换技术路线,那传感器端计算的定制投入不一定回本。

6.4 一个实际案例:把“高速瓶盖缺陷检测”从12W压到3.5W

最后分享一个我真实参与过的项目。产线上做瓶盖外观缺陷检测,每分钟检测600个瓶盖,原来用的方案是30fps工业相机+工控机,整机功耗12W左右,产线上一条线要放三套,对车间散热和电费压力都很大。后来我和一个小团队合作,把算法换成了一个极轻量的CNN——输入灰度图分辨率压到64×64,三个卷积层加一个池化加两个全连接,模型大小只有40KB。配合近感计算芯片,在传感器端完成推理,只输出“有缺陷/无缺陷”和缺陷类别,后端只接一个单片机做分选控制。

实测结果是:整机功耗降到了3.5W,检测速率提升了大概20%,因为省掉了图像传输和预处理的时间。这个项目让我实打实体会到,传感器端计算不是在理论上“节能”,而是在产品形态上能带来质的改变。前提是你要把原有的算法模型做一次彻底的“瘦身”,并且接受它在精度上比大模型低几个点的代价。

我现在的态度是:传感器端计算不是用来替代通用AI平台的,它是一个非常锋利的手术刀,专门切“高数据率、低特征维度、超低功耗”这一类场景。用对了,能帮你在产品功耗和实时性上建立别人追不上的优势。用错了,你会被它的灵活性差、工具链不成熟和校准成本拖进泥潭。把适用边界摸清楚,比追着新概念跑更重要。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询