一.背景
因为CNN只能处理同步事件,现在的论文中大部分是通过给定时间窗口,在时间窗口中将异步的事件数据转换为传统的帧进行同步处理,但是事件流是非常稀疏的,使用事件窗口这种方法会丢失很多信息,并且无法利用事件是稀疏的特性,因此,需要构造异步事件的同步表示,以最好地保持事件数据的时空完整性,并且利用事件的稀疏性。
本论文开发了一种紧凑且内存高效的事件数据到同步帧的转换方式Time-Ordered Recent Events (TORE) Volume,并且证明了该事件的表示方法在检测,去躁,重建, 姿态识别领域上均有提高。
本文的代码开源了,但是是用matlab写的!!!!!太折磨人了
二.方法
论文中的图直观的说明了核心做法:
首先一个很简单的道理:较老的事件没有新的事件重要,所以本文采取的策略是记录最新的几个事件丢弃之前的事件,本文通过在每个像素位置使用“先进先出”(FIFO)缓冲区实现(这个缓冲区是白色的方框,同样有k层,类似于栈的感觉,图中画的只是一层),k代表设置的队列长度,表示队列中可以存储的事件个数,随着时间的增长不断更新,用公式表示:
公式中k=1时,记录最新的事件,所以第一张图中的TORE Volume下的序号我感觉写错了,应该是1,2,3。
有了缓冲区的表示形式,接下来定义TORE Volume,TORE Volume实际上就是表示当前事件t与队列中储存的事件之间的时间差:
log是为了保留更远的时间信息,τ代表最大的时间,表示超过这个时间就不做考虑,本文中的实验使用τ=5秒的最大内存保留率。
其中τ’=150(150微秒),这个参数是让时间差不会过小,因为过小的时间差往往是噪声引起的,上述方法允许在给定事件集合的任何时间段创建TORE Volume
缓冲区是从时间开始就不断工作的,通过公式(5)就可以获得任意时间t时刻的TORE Volume 表示,是一个2 × K × H × W张量,将这个张量送入CNN便可以进行后续的子任务。
三.结果
在不同的子任务下,使用本文的事件表示的方法均得到了一定的提升
去噪:
重建后:
分类:
2D Pose Estimation:
3D Pose Estimation:
四.备注
1.文中3D姿态检测使用了自己设计的一个模型:
2.手势识别任务中, 对DVS128 Gesture数据集每段手势事件流每25ms输出一次结果,并应用225ms的时间平均滤波器得到最终的结果。
五.想法
该方法有一个很好的特点就是可以在任意时间戳输出同步事件,这样就可以和APS Frame达成同步,这样进行多模态融合效果应该会更好。