SNN知识储备-ANN2SNN
1. SpiCalib
1.1 针对的问题
- 在CNN转SNN时,通常会有较大的性能下降和时延
- 以前的工作主要集中在简单的分类任务上,忽略了SNN神经元的发电率应当是对ANN神经元激活值的精确近似
1.2 方法
- 提出了Spike Calibration来消除离散脉冲对输出分布的有害影响
- 使用burst mechanism,极大程度地减少clipping error(该方法参见论文:Yang Li and Yi Zeng. Efficient and accurate conversion of spiking neural network with burst spikes. arXiv preprint arXiv:2204.13271, 2022.)
- 修改了LIPooling为MLIPooling,从而可对任意MaxPooling层进行无损转换(该方法参见上面这篇论文)
- 提出了使用贝叶斯优化来快速找到权重归一化参数p,避免经验设定
1.3 效果
- 在分类、目标检测、分割任务达到了SOTA的效果
- 第一次获得在上述几种任务上同时达到与ANN相当的SNN
- 在检测任务中:只需要花先前工作台的1/50的推理时间;在分割任务中:只需要花先前工作的0.492倍能耗就能达到同样的效果。
1.4 讨论
虽然文中提出的SpiCalib可以解决绝大多数SIN问题,但对于少数激活值接近0的神经元,它们可以在整个模拟时间内保持放电,并且不能被SpiCalib纠正。
未来如果能将量化技术与SpiCalib结合起来,会让转换更加实用和高效。
1.5细枝末节
- 分类任务中:MLIPooling负责粗调,SpiClib负责精调
- 在ResNet上只使用SpiCalib会造成性能下降
- SpiCalib在目标检测任务中的主要优势为:快速精准检测出多个小物体
- 耗能分析公式
出自论文:https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf
curie.