DashNet: A Hybrid Artificial and Spiking Neural Network for High-speed Object Tracking
DashNet: A Hybrid Artificial and Spiking Neural Network for High-speed Object Tracking
2021-05-10 20:14:27
Paper: https://arxiv.org/pdf/1909.12942.pdf
Code: Not available yet
1. Background and Motivation:
本文提出了一种混合 SNN 和 ANN 的跟踪框架,分别用 SNN 编码脉冲流,ANN 编码 video frame。此外,由于缺乏 event camera 的跟踪数据集,作者将 NFS 数据集进行转换,得到对应的脉冲流数据。
其中,比较有意思的是,作者提出了一种直接训练 SNN tracking 的方法。
2. Method
2.1. SNN Tracking:
作者这里采用了离散 LIF 模型作为 SNNs 的基本计算单元,即:
其中,dt 代表离散的时间步骤,当势能超过设定阈值时,将会发射一个脉冲,然后进行重置。
其中,H(x) 代表 Heaviside function。当 x > 0 时,H(x) = 1,否则,H(x) = 0。如公式 3 所示,SNNs 用 event-driven binary spikes 来表达信息。然而,跟踪任务通常需要高精度的 BBox 信息,这和脉冲表示是不同的。虽然 rate coding 可以缓解该问题,但是其仍然需要 prohibitive time latency 来确保性能。为了将 SNNs 应用到跟踪任务中,作者将 SNN 看做是特征提取器,并且添加一个线性层来学习 high-precision information。用这种方式,其可以累积非常短期间隔的脉冲信息,通过 linear-and-product operation 来输出最终结果。对应的,作者提出了如下的损失函数,MSE 被用于给定时间窗口 T 的所有样本上进行最小化:
其中,N 代表网络的层数,nk 代表第 k 层 神经元的个数。然后作者提到,用了 BPTT 进行了模型的训练。但是,这里没讲明白,到底用的什么作为 label 进行训练的呢?从下面的 ANN tracking 模块和SNN的输出,推测应该是直接预测 4-D 的向量,对跟踪的矩形框进行位置估计。
这里的 SNN 跟踪模块的网络结构是: Input-MP2-32C3S3-64C3S1-128C3S1-128C3S2-256C3S2-FC1024-FC4 。其中, MP 应该是 Max-Pooling,C是指卷积层,S是指 stride,FC就是全连接层。从网络层的角度来说,和常规的 CNN+FC 组合没有区别。但是激活函数这里用的是 LIF 神经元,是根据电压进行激活重置的。
2.2. ANN Tracking:
这里就是常规的输入视频帧,提取特征,然后进行结果的预测。和 SNN 不同的地方就是,激活函数,这里用的是 ReLU,这也是主流 ANN 的激活函数:
这里 ANN 的计算代价昂贵。
这部分的网络结构是: Input-32C3S3-MP2-64C3S1-MP2-128C3S1-128C1S1-MP2-256C2S2-FC1024-FC4 。
2.3. Hybrid Approach:
2.3.1. Temporal Complementary Filter (TCF):
给定 ANN 和 SNN 模块的跟踪结果,作者这里进行了集成,以得到更加鲁棒的跟踪结果 ,该部分的融合是由时序互补滤波 (Temporal Complementary Filter) 进行融合的。
ANN 的输出 和 SNN 输出的时序距离定义为 D = ||ta - ts||2. ta 和 ts 分别是 ANN 和 SNN 的时间戳,对于相同时间戳的 SNN 的输出,作者搜索和 ANN 最接近的 p-th个输出。最近的距离满足:
利用这种方式,作者计算了组合权重 w,
最终,可以获得组合的输出 h:
其中,O 和 a 分别是 SNN 和 ANN tracker 的输出。TCF 还假设 ANN 可以提供更加准确的跟踪结果,这样就可以有效地修改 SNN 的结果。
2.3.2. Attention Mechanism:
作者开发了一种注意力方法作为一种可训练的 channel 插入模块。具体来说,在推理阶段,对于 frame-based picture Ft,作者首先搜索最近邻的 TCF 跟踪轨迹,然后用这个反馈的结果来产生一个新的输入 tensor。就是根据历史时刻的信息,进行产生一个先验的 soft mask weight M。这个 M 的计算过程如下所示:
其中,矩形框区域的值是根据跟踪状态决定的。有了这个掩模,作者计算一个 attentional channel input: 然后将其和输入图像进行组合,当做是新的 tensor 作为网络的输入。
关于该模块的训练,作者是直接对原始的矩形框位置进行随机的扰动,这样训练数据的获取较为简单。否则,应该是要在一批视频上进行测试,得到跟踪结果后,再挑选合适的轨迹,当做训练数据,进行相关的模型训练。用这种方法,frame-based CNN 可以学习到有噪声的辅助信息,对于改善跟踪的鲁棒性是有帮助的。
2.4. Hybrid Data Simulator:
这部分是用 FCN 的方法学习一个 event data 模拟器,可以做到从 frames 到 event 的转换,类似的算法库有 v2e,GitHub上可以搜得到。
3. Experimental Results:
终于到了令人兴奋地实验部分了,兴奋地地方在哪呢?速度!
首先来看精度方面:
从上面的图中,可以发现,跟踪的总体精度不是很高。作者这里提供了两个数据集的结果,NFS 和 PRED18. 在 NFS 数据上,APS的跟踪算法比本文方法是要强的,例如 MDNet 的 SR 是 50.2,而本文方法是 42.8. 但是在 DVS 数据上,作者的方法可以达到 38.0,而MDNet是 32.9. 这说明,这两个方法在各自擅长的领域,各有千秋?
作者也对比了不同的模块,以验证不同模块的有效性,具体结果如下所示:
作者和其他的跟踪方法在不同的测试平台上也进行了对比和验证。
重点来了,从上述表格可以发现,在 GPU 上的速度,貌似并不快,达到 47.8 FPS,而在神经形态硬件上可以取得 2083.3 FPS 的速度。为什么在天机芯片上的速度这么强的呢?作者给出了如下的分析:
1. 天机芯片的文章发表在 Nature 上,本身该硬件就是结合了 ANN 和 SNN 融合的思路来做的,硬件上可能有专门的优化;
2. SNN 没有矩阵、向量的乘法操作,只有加法操作。这就节省了大量的计算资源,实现起来更加容易,功耗更低,跑的快;
3. SNN 处理的 event data,是稀疏的,从这个角度来说,的确是可以节省不少资源。
但是,有一点小疑问,SNN 的速度是 2083.3,融合了 SNN-ANN 的 Dashnet,为啥速度不变呢?问了相关老师,解释说是因为天机芯片里面可以一部分核配置为ANN模式一部分是SNN模式,tracking 的时候最高频率由最快的网络决定。从精度上来说,ANN 0.393,SNN 0.321,融合后的 DashNet 0.372,居于两者之间。速度和功耗上比 ANN 好,精度降低了一些。
==