1. 低功耗视频这条赛道,为什么值得单独拿出来聊
低功耗视频这个词,外行听起来像是两个不太搭界的词拼在一起。视频意味着大带宽、高算力、持续运行,低功耗意味着省电、长续航、小体积,这两件事天然矛盾。但恰恰是这种矛盾,撑起了一个非常具体的市场:电池供电的摄像头、门铃、行车记录仪、运动相机、宠物看护器、户外监控设备。这些设备有一个共同特征——它们不能一直插着电,但又必须持续地看、持续地录、持续地判断。
我最早接触这类方案是在做一款电池门铃的时候。当时选型的第一反应是找一颗通用MCU加一颗WiFi模组,再配一个图像传感器,觉得这样最灵活。结果实测下来,待机功耗压不下去,唤醒一次要几百毫秒,用户按下门铃到手机弹出画面,中间能等三四秒。这个体验在消费级产品里基本等于判死刑。后来才意识到,低功耗视频不是把通用芯片拼起来就能做好的事,它需要一颗从一开始就为这个场景设计的芯片——在待机时几乎不耗电,在事件触发时能瞬间唤醒、快速出图、快速编码、快速送出去。
合肥君正这家公司,就是在这个缝隙里扎下去的。它的产品线围绕低功耗视频和边缘智能展开,核心思路是把图像处理、视频编码、轻量级AI推理和低功耗管理集成到一颗SoC里,让设备在大部分时间里处于极低功耗的监听状态,只在真正需要的时候才全速运转。这个思路听起来简单,但工程实现上有一堆坑:唤醒延迟怎么压、内存怎么省、编码器怎么在低码率下保住画质、AI模型怎么塞进有限的算力和内存里。这些问题的答案,决定了产品能不能落地。
这篇文章不打算写成公司宣传稿,而是想从技术选型和工程实践的角度,把低功耗视频加边缘AI这条路线拆开讲。适合正在做电池类视觉产品的硬件工程师、嵌入式开发者,也适合想了解这类芯片到底难在哪里的产品经理。我会尽量把原理、参数、踩坑经验都摊开说,能抄作业的地方直接给方案。
2. 低功耗视频芯片的核心矛盾:待机功耗与唤醒速度的拉锯
2.1 为什么待机功耗是这类产品的生死线
先算一笔账。一颗常见的18650锂电池,容量大约2600mAh,标称电压3.7V,总能量约9.6Wh。如果设备待机功耗是1mW,理论上能撑9600小时,也就是400天。如果待机功耗是10mW,就只剩40天。如果待机功耗是50mW,不到8天。而消费级电池摄像头通常要求至少3到6个月的续航,这意味着整机待机功耗必须控制在1mW到3mW这个量级。
这个数字有多苛刻?很多通用WiFi模组光是维持网络连接的待机功耗就在20mW以上,还没算主控和传感器。所以低功耗视频方案的第一条铁律是:不能一直保持网络连接,也不能一直让主控全速运行。正确的做法是分层管理——最底层是一个极低功耗的监听电路,可能只消耗几十微瓦,负责检测是否有事件触发;触发之后才唤醒主控和通信模块,快速完成采集、编码、上传,然后重新回到深度休眠。
合肥君正的方案里,这个分层管理是硬件级别的。芯片内部有独立的低功耗域,可以在主域断电的情况下维持RTC、部分SRAM和唤醒逻辑。PIR传感器或者音频检测模块的输出直接接到唤醒引脚上,从触发到主控开始执行代码,延迟可以压到毫秒级。这个设计的关键在于,唤醒逻辑不能依赖软件轮询,必须是硬件中断驱动,否则光是轮询本身就会把功耗吃光。
2.2 唤醒速度为什么比待机功耗更难做
待机功耗可以靠工艺和电源域划分来优化,但唤醒速度是一个系统性问题。设备被唤醒之后,需要完成一系列动作:传感器上电并稳定、时钟恢复、PLL锁定、DDR初始化、图像信号处理器配置、编码器配置、网络重连、鉴权、传输。每一步都有延迟,加起来很容易超过一秒。
我实测过一些方案,从PIR触发到手机收到第一帧画面,快的能到800毫秒,慢的要三秒以上。对于门铃这类场景,用户按下去之后如果超过一秒才看到画面,就会觉得卡。对于行车记录仪,碰撞触发后如果唤醒太慢,可能错过关键的前几秒画面。
君正在这方面做的优化,我理解主要有几个层面。一是把一些初始化工作提前做好,比如在深度休眠时保留部分时钟和电源状态,唤醒后不需要从头初始化。二是把图像采集和编码的流水线做得很短,传感器出图之后直接进编码器,中间不经过多余的内存拷贝。三是网络重连做了快速通道,保存连接上下文,唤醒后直接恢复而不是重新握手。这些优化单独看都不神奇,但叠在一起,就能把端到端延迟压到可接受的范围。
注意:唤醒速度的测试不能只看芯片手册上的数字,一定要在整机状态下测。传感器上电稳定时间、电源纹波、天线匹配这些因素,都会让实际延迟比理论值差很多。
2.3 编码器在低码率下的画质取舍
低功耗视频还有一个容易被忽略的点:编码。电池设备通常走WiFi或蜂窝网络,带宽有限,码率必须压得很低。但码率一低,画质就崩,尤其是运动场景和低照度场景。这时候编码器的质量就体现出来了。
君正的芯片一般支持H.264和H.265,部分型号支持智能编码,也就是根据画面内容动态调整码率。比如画面静止时大幅降低码率,有运动时再提上去。这个策略对电池设备特别有用,因为大部分时间画面是静止的,省下来的码率和功耗都很可观。
但智能编码有个坑:如果场景检测做得不好,运动物体刚出现的那几帧可能被压得很糊,等码率提上来已经错过了。所以调参的时候,我一般会把运动检测的灵敏度调高一点,宁可多花一点码率,也要保证关键帧的清晰度。另外,低照度下的降噪和编码要配合好,降噪太狠会抹掉细节,降噪不够则编码器会把噪声也编进去,反而更费码率。
3. 边缘AI塞进低功耗芯片,到底难在哪
3.1 算力、内存、功耗的不可能三角
把AI推理放到设备端,好处很明显:不用把原始视频全传上去,省带宽、省功耗、响应快、隐私也好。但难点在于,低功耗芯片的算力通常只有零点几TOPS到几TOPS,内存可能只有几十MB,功耗预算可能只有几百毫瓦。在这个约束下跑AI模型,就像在小户型里塞下一整套家具,每一寸空间都要算计。
君正的思路是只做轻量级推理,比如人形检测、人脸检测、移动侦测、宠物识别这类任务。这些任务的模型可以做到几百KB到几MB,算力需求在几十到几百MOPS。芯片里通常会有专门的NPU或者DSP来加速,而不是用CPU硬跑。用CPU跑不是不行,但功耗会高一个数量级,而且会拖慢整个流水线。
我见过一些团队,一开始想在一颗低功耗芯片上跑通用目标检测,结果发现帧率只有一两帧,功耗还超标。后来退回到只做人形检测,把模型量化到int8,输入分辨率降到128x128,才勉强跑通。这个教训是:边缘AI在低功耗场景下,不要追求通用性,要针对具体任务做极致优化。
3.2 模型量化与剪枝的实际操作
模型量化是必做的。把float32的权重转成int8,模型大小直接降到四分之一,推理速度通常能提升两到四倍,功耗也明显下降。但量化会带来精度损失,尤其是对小目标和低对比度场景。我的经验是,量化之后一定要用真实场景的数据做校准,不能只用公开数据集。校准集要覆盖白天、夜晚、逆光、雨雾这些实际会遇到的情况,否则模型在实验室里看着没问题,一到现场就漏检。
剪枝是另一个手段。把模型中贡献小的通道或层去掉,能进一步压缩模型。但剪枝之后通常需要重新训练或者微调,否则精度掉得厉害。对于嵌入式团队来说,如果缺乏训练能力,可以考虑用现成的轻量级骨干网络,比如MobileNet系列或者ShuffleNet系列,这些网络本身就是为移动端设计的,量化友好,剪枝空间也大。
还有一个容易被忽略的点是输入预处理。摄像头出来的图像通常是RGB或者Bayer格式,而模型可能需要YUV或者灰度图。这个转换如果放在CPU上做,会消耗不少算力。君正的芯片通常支持硬件级的格式转换和缩放,直接输出模型需要的输入格式,省掉这一步的开销。
3.3 推理结果怎么和视频编码协同
边缘AI的推理结果不是孤立的,它要和视频编码、传输策略联动。比如人形检测到有人,才把视频码率提上去并开始上传;没人的时候只传低码率的缩略图或者干脆不传。这个联动逻辑如果设计得好,能大幅省电省流量。
但联动也有坑。如果检测和编码是两套独立的流水线,可能会出现检测到人但编码器还没切到高码率的情况,导致关键画面被压糊。所以最好让检测结果直接控制编码器的参数,中间延迟越小越好。另外,检测的帧率不一定要和编码帧率一样,可以检测跑低帧率,编码跑高帧率,这样既省算力又不丢画面。
提示:推理和编码共用内存带宽的时候,要注意优先级。如果推理把带宽占满了,编码器可能会丢帧。一般建议给编码器更高的内存优先级,推理可以适当降帧。
4. 从芯片到产品:那些手册上不会写的工程细节
4.1 电源树设计决定了一半的成败
低功耗视频产品的电源树,比普通嵌入式产品复杂得多。因为芯片内部有多个电源域,每个域的电压和上电时序都有要求。如果电源树设计得不好,轻则功耗超标,重则芯片根本起不来。
我踩过的一个坑是DCDC和LDO的选型。DCDC效率高,但纹波大,可能干扰图像传感器和射频。LDO纹波小,但效率低,压差大的时候发热严重。正确的做法是混合使用:主电源用DCDC做一级降压,然后对噪声敏感的模块用LDO做二级稳压。另外,每个电源域的上电时序要严格按照手册来,该先上的先上,该后上的后上,否则可能出现闩锁或者初始化失败。
还有一个细节是休眠时的电源管理。芯片进入深度休眠后,哪些电源域要保留,哪些要关掉,这个要在硬件设计阶段就规划好。如果保留的域太多,待机功耗下不来;如果关得太多,唤醒之后重新初始化的时间又太长。这个平衡点需要根据具体产品的续航要求和响应要求来定。
4.2 传感器选型和驱动适配的坑
图像传感器的选型,不能只看分辨率和帧率。低功耗场景下,要重点关注几个参数:休眠电流、唤醒时间、低照度性能、以及是否支持硬件级的运动检测。
有些传感器支持在休眠状态下做低分辨率的运动检测,检测到变化才唤醒主控。这个功能如果用好,可以省掉外置PIR,降低成本和体积。但不同传感器的这个功能实现差异很大,有的灵敏度不够,有的误报率高,需要实际测试。
驱动适配也是个大工程。传感器的寄存器配置通常有几百个,不同厂家的传感器配置方式还不一样。君正的SDK一般会提供常见传感器的驱动,但如果你选的传感器不在列表里,就需要自己移植。移植的时候要注意时钟配置、MIPI时序、曝光增益控制这些细节,任何一个不对,出图就是黑的或者花的。
4.3 网络传输的省电策略
网络传输是功耗大户。WiFi模组在发送时的峰值电流可能达到几百毫安,如果传输策略设计得不好,电池很快就被抽干。
我的做法是尽量批量传输,而不是来一帧传一帧。比如攒够一秒的视频再一起传,这样WiFi模组可以更长时间处于休眠状态。另外,传输的时候要尽量用低带宽模式,比如802.11b或者低速率模式,虽然传输时间长一点,但峰值电流低,总体功耗可能更省。
还有一个策略是本地缓存加按需上传。设备本地存一段视频,只有检测到事件才上传关键片段,平时只上传心跳和缩略图。这个策略对云存储成本也更友好。
注意:WiFi模组的省电模式要和路由器的beacon间隔配合。如果路由器beacon间隔太长,模组休眠时间可以更长,但唤醒延迟会增加。这个参数需要根据实际网络环境调。
5. 实测数据与调优经验:把功耗从毫瓦级再往下压
5.1 功耗拆解:每一毫瓦都要找到出处
做低功耗优化,第一步是精确测量。不能只看整机电流,要把各个模块的功耗拆开。我的做法是在电源树的每个分支上串一个采样电阻,用高精度电流探头或者功耗分析仪分别测。测的时候要覆盖所有状态:深度休眠、监听、唤醒中、采集、编码、传输。
实测下来,一个典型的电池摄像头,深度休眠应该在几十微安到几百微安,监听状态在1mW以内,唤醒后的峰值可能到几百毫瓦,但持续时间要尽量短。如果深度休眠超过1mA,就要查是哪个模块没关干净。常见的问题包括:LDO的静态电流太大、传感器的休眠配置不对、GPIO上拉电阻一直在耗电、DDR没有进入自刷新模式。
5.2 唤醒延迟的逐段优化
唤醒延迟的优化,要把整个链路拆开测。从PIR触发开始,到主控开始执行第一条指令,这是硬件唤醒时间;从执行指令到传感器出第一帧,这是传感器初始化时间;从出图到编码完成,这是编码时间;从编码完成到数据发出,这是网络时间。每一段都要单独测,找到瓶颈。
我遇到过的一个瓶颈是DDR初始化。有些方案为了省电,休眠时把DDR完全断电,唤醒后重新初始化要几十毫秒。后来改成DDR进入自刷新模式,虽然休眠功耗高了一点,但唤醒时间缩短了一大半,整体体验反而更好。这个取舍要看产品对响应速度的要求。
另一个瓶颈是网络重连。如果每次唤醒都重新扫描、关联、鉴权、获取IP,可能要一两秒。优化方法是保存连接上下文,唤醒后直接恢复。但这个功能需要WiFi模组和协议栈支持,不是所有方案都能做。
5.3 温度对功耗和性能的影响
低温环境下,电池内阻增大,实际可用容量下降,同时芯片的漏电流也会变化。高温环境下,漏电流增大,待机功耗会上升。这些因素在实验室常温下测不出来,但到了实际使用场景就会暴露。
我的经验是,在-10度到50度这个范围里,至少要做三个温度点的功耗测试:低温、常温、高温。如果产品要出口到寒冷地区,还要测-20度甚至-30度。测试的时候要注意,电池本身的特性也会随温度变化,最好用程控电源模拟电池,而不是直接用电池测。
6. 这条路线接下来还能怎么走
低功耗视频加边缘AI这个方向,远没有到天花板。从技术上看,还有几个明显的演进空间。
一是模型和硬件的协同设计。现在的做法通常是先有芯片,再想办法把模型塞进去。未来如果能在芯片设计阶段就考虑目标模型的算子特性,定制一些专用加速单元,效率还能再上一个台阶。
二是多模态融合。现在主要是视觉,未来可以加上音频、雷达、甚至环境光传感器,用多模态信息做更准确的触发和判断,减少误报,进一步省电。
三是端云协同的进一步细化。哪些推理放端侧,哪些放云侧,这个划分不是固定的。随着端侧算力提升和模型压缩技术进步,会有更多任务从云侧移到端侧,响应更快,隐私也更好。
从产品角度看,电池类视觉设备的形态还在不断分化。除了门铃和摄像头,还有宠物项圈、车载监控、农业监测、工业巡检这些场景,每个场景对功耗、算力、成本的要求都不一样。芯片方案要做的,是在这些差异化需求里找到最大公约数,同时保留足够的灵活性。
我在实际项目里的体会是,低功耗视频这个事,没有一招鲜的解决方案。每一毫瓦的节省、每一毫秒的延迟优化,都是靠一个个细节抠出来的。选对芯片只是起点,真正的功夫在电源设计、驱动适配、参数调优、场景测试这些脏活累活里。君正这类厂商的价值,在于把最难的底层做扎实了,让做产品的人能把精力放在场景和体验上。这个分工,对整个行业来说都是好事。