阅读量:78
神经网络已经成为解决复杂机器学习问题的强大工具。然而,这种能力往往伴随着模型规模和计算复杂度的增加。当输入维度较大(例如长时序窗口、高分辨率特征空间)时,模型需要更多参数、每次推理需要更多算术运算,使其难以部署在嵌入式硬件上。
对于嵌入式系统而言,资源极其有限。内存空间受限,因此在桌面或云平台上轻松运行的模型可能无法放入芯片内的闪存。此外,较高的运算量(MACs/FLOPs)和推理延迟要求往往超出低功耗MCU或边缘设备所能承受的范围。
我们要解决的核心挑战是:如何在保持模型性能的前提下,大幅压缩神经网络模型,降低模型大小、推理时间和计算成本,从而实现其在资源受限的嵌入式系统上的部署。
神经网络模型压缩是如何工作的
神经网络模型往往比实际需要的更大。在训练和验证之前,我们很难准确判断架构规模是否合理。模型压缩的目标就是识别模型中的冗余和未充分利用的权重并将其移除。
我们使用专有的数学方法来寻找并压缩这些冗余,对网络进行重新整理,使其更加简洁、小巧和高效。同时,我们会严格控制精度损失,确保不会丢弃过多关键信息。
实例:紧急尖叫声检测(Emergency Scream Detection)
为了更直观地解释这一挑战,我们以“紧急尖叫声检测(ESD)”演示为例。ESD系统是一种机器学习模型,用于区分求救尖叫声和其他环境声音。该任务是一个二分类问题:Scream vs Not Scream。
模型使用 HYPERLINK "https://research.google.com/audioset/ontology/index.html" 公共数据集中的音频信号进行训练。训练数据集规模大且多样化,而验证数据集由团队采集的小规模现场录音构成。模型在训练集的k-fold验证中表现中等,但在新的现场数据上表现非常好。
基线模型性能:
我们使用基于全连接层的神经网络,并以STFT频谱图作为输入特征。该模型取得了最佳效果,达到:
k-fold验证精度:82%
现场数据测试精度:98%
从性能角度看,该模型表现优秀。然而,它有一个关键问题:
ROM占用:552kB
该大小超过目标嵌入式平台(Voice RA6E1)的内存限制,导致无法部署。
压缩模型性能:
为了解决这一问题,我们应用了Renesas为嵌入式部署优化的专有神经网络压缩技术。
压缩结果非常显著:
模型大小从552kB降至117kB(减少约79%)
k-fold验证精度保持82%
现场测试精度保持98%
MAC从129,68 降至21,001(降低83%)
客服热线
400-618-9990 / 13621148533
官方微信
关注微信公众号
