作者:Daniel Gehrig1, Antonio Loquercio1, Konstantinos G. Derpanis2, Davide Scaramuzza1
机构:Loquercio1, Konstantinos G. Derpanis2, Davide Scaramuzza1 1 Robotics and Perception GroupDepts. Informatics and Neuroinformatics University of Zurich and ETH Zurich 2 Ryerson University and Samsung AI Centre Toronto
出处:IEEE International Conference on Computer Vision (ICCV), Seoul, 2019
引用:5
关键词:体素网格、voxel grid、event spike tensor、resnet、识别
原文:https://arxiv.org/pdf/1904.08245.pdf
代码:https://github.com/uzh-rpg/rpg_event_representation_learning
视频:https://youtu.be/bQtSx59GXRY
一.背景
1.文章背景
事件相机是视觉传感器,记录每像素亮度变化的异步流,称为事件。与基于帧的相机相比,它们在计算机视觉方面具有吸引人的优势,包括高时间分辨率、高动态范围和无运动模糊。由于事件信号的时空分布稀疏、不均匀,模式识别算法通常将事件聚合成基于网格的表示形式,然后通过标准的视觉模型(如卷积神经网络(CNN))进行处理。
与本文最相关的是将事件流与基于标准帧的深度卷积神经网络(CNN)或递归架构相结合的方法,为此,预处理步骤通常将异步事件数据转换为类似网格的表示形式,可以同步或异步更新。到目前为止,还没有一个广泛研究选择输入表示的影响,留下以下有待解决的基本问题:将异步事件流转换为基于网格的(张量)表示以最大化给定任务性能的最佳方法是什么?
2.文章概述
提出了一个通用框架,可以将基于异步事件的数据转换为基于网格的表示。为了实现这一点,我们通过内核卷积、量化和投影来表示转换过程。
3.事件相机介绍
事件相机不是以固定的速率捕捉亮度图像,而是独立地测量每个像素的亮度变化(称为事件)。
事件相机的输出由一系列事件组成,这些事件编码了时间、位置和亮度变化的极性(符号)
二.论文翻译
1.event data
由于其异步性,事件被表示为一个集合。为了将事件与卷积神经网络结合使用,有必要将事件集合转换为网格状表示。这意味着我们必须找到一个映射在集合E和张量T之间M:E—>T。理想情况下,这种映射应该保留结构(即事件的时空局部性)和事件信息。
2.event field
直观地说,事件由x和y空间坐标、时间和极性构成的四维点极表示。这个点集可以总结为事件场
定义在连续的空间和时间,为事件的正(E+)和负(E-)极性。这种表示法用时空流形中的狄拉克脉冲来代替每个事件。得到的函数S (x;y;t)给出了E的连续时间表示,保持了事件的高时间分辨率,增强了时空局部性。
3.generating representation
Measurements 在本节中,我们将概括事件字段的概念,并演示如何使用它从事件生成类似网格的表示。我们注意到(3)可以解释为定义在事件域上的函数f的连续测量,即
(4)是事件观测场Event Measurement Field。它赋值一个度量值f到每个事件。这类函数的例子有事件极性f (x;y;t) = +-1,事件计数f (x;y;t) = 1,则归一化时间戳f (x;y;t) =(t-t0)/delta t。其他示例可能包括异步基于时间的图像传感器(ATIS)[10]等传感器提供的瞬时事件率或图像强度。文献中的各种表示方法都使用了事件观测场 event measurement field。在一些工作中,测量纯事件计数,并对每个像素和极性求和,以生成事件计数图像event count images。其他工作使用事件的时间戳来构造活跃事件面surface of active events(SAE),它保留了每个像素和极性的最近事件的时间戳。其他的表示使用事件极性并将它们聚合成一个三维Voxel Grid[70] 或一个二维Event Frame[53]。
Kernel Convolutions 虽然事件测量字段保持了事件的高时间分辨率,但是由于使用了Dirac脉冲,它仍然是不确定的。因此,要从事件观测场中获得有意义的信号,必须将其与合适的聚合内核进行卷积。因此卷积信号就变成了
在文献中,(5)也被称为膜电位[32,39,49]。在以前的工作中已经使用了这个内核的几个变体。最常用的两个是alpha-kernel,和exponential kernel。实际上,指数核也被用来构建hierarchy of
time-surfaces(HOTS)[29]和histogram of average timesurfaces (HATS)[59],其中事件被聚集成指数时间曲面exponential time surfaces。在HATS[59]中,指数时间曲面可以被解释为脉冲序列与指数核的局部卷积。另一个常用的核是trilinear voting kernel[26]。Generally, the design of kernel functions is based on task-dependent heuristics with no general agreement on the optimal kernel to maximize task performance。
Discretized Event Spike Tensor 在内核卷积之后,可以通过对卷积信号(5)进行定期采样来实现事件的网格表示。
我们把这种广义表示称为Event Spike Tensor(EST)。将极性和时间维度相加,就可以得到之前工作中引入的event-frame representation [57]。之前的工作考虑了量化各个维度,包括spatiotemporal binning[70],以及量化极性和空间维度[36,69]。然而,保留所有四维的广义形式以前没有被考虑过,因此是一种新的表示。
End-to-end Learned Representations (6)中的度量和内核通常是手工制作的函数。以前的工作是手动调整这些功能以最大化任务性能。相反,我们建议直接利用数据来寻找最佳的候选函数,从而学习端到端的表示。我们通过用一个多层感知器(MLP)替换(6)中的内核函数来实现这一点,其中两个隐藏层各有30个单位。此MLP将事件的坐标和时间戳作为输入,并在其周围生成激活映射。对于表示中的每个网格位置,我们对每个事件生成的激活映射进行评估,并根据式(6)将它们加在一起。对最终网格中的每个点重复该操作,得到类似网格的表示。为了增强跨事件的对称性,我们将MLP输入限制为坐标上的差异xl-xk,ym-yn,tl-tk。为了简单起见,我们也不学习度量函数,而是从一组固定的函数中选择它。为了加快推理速度,在测试时可以用一个有效的查找表来代替学到的内核,从而与手工内核的计算成本相当。这些设计选择使得表示既高效又完全可微。与以前使用次优启发式将事件转换为网格的工作不同,我们的框架现在可以将表示调优为下游任务,从而最大化性能。
Projection 从event spike tensor我们可以进一步实例化新的和现有的表示。例如,许多文献涉及三维张量,如[29,36,59,69,70]。event spike tensor是一个四维数据结构(两个空间、一个时间和一个极性),因此作为这些三维结构的先驱,可以通过对四维中的一个进行求和来获得。例如,双通道图像[36,59,69]可以通过压缩时间维得到,可以通过求和[36,59,69],也可以通过最大化[69]得到。The voxel grid 示[70]可以通过对事件极性求和得到。所有这些操作可以通过投影算符H,其中其中H可以求和Σ,最大化max,等,同时v表示维度可以是xl, ym, tn,或在极性,产生16个可能的预测。这里,我们只列出保留空间维度的表示,其中有四个,包括没有投影的EST:
我们将这些表示称为EST(7)、Voxel Grid(8)、Two-Channel Image(9)和事件帧(10)。投影的方向对结果表示的信息内容有影响。例如,沿时间轴投影大大压缩了事件表示,但以时间定位信息为代价。相反,投射事件极性会导致正面和负面事件的抵消,可能会在这个过程中移除信息。在这些表示中,EST最为突出,因为它通过放弃投影操作来保留最大数量的事件信息。
4. Empirical Evaluation
在本节中,我们将在标准事件相机基准上对我们的对象识别分类(第4.1节)和光流估计(第4.2节)所确定的表示形式进行广泛的比较评估。
Candidate Representations 我们首先根据event spike tensor (6)确定12种不同的表示形式。特别是,我们从三个候选项中选择度量函数(4):事件极性、事件计数和规范化时间戳。我们使用求和运算符Σ项目中定义的各种轴(7)- (10),导致四种变化:Event Spike Tensor, Voxel Grid, TwoChannel Image, and Event Frame.我们沿着极性维分裂event spike tensor (一个四维张量),并沿着时间维连接两个张量,有效地增加了通道的数量。这样做是为了使表示与二维卷积兼容。作为第一步,我们应用一个通用的三线性核卷积事件峰值信号,然后研究不同的核应用于EST时对性能的影响。最后,我们报告了直接利用原始事件的端到端训练变量的结果。
Object Recognition
由于其低动态范围、高延迟和运动模糊的倾向,传统相机的目标识别仍然具有挑战性。近年来,基于事件的分类越来越受欢迎,因为它可以解决所有这些挑战。
在本节中,我们将研究第4节中提出的事件表示在基于事件的对象识别任务中的性能。特别地,我们的目标是确定表示的信息内容与分类精度之间的关系。我们展示了我们的端到端学习表示显著优于最先进的[59]。我们在评估中使用了两个公开的数据集:N-Cars59和N-Caltech101[43]。N-Cars为场景中车辆识别的二进制任务提供了一个基准。它包含由ATIS事件相机记录的24029个长度为100 ms的事件样本。N-Caltech101 (Neuromorphic-Caltech101)是流行的Caltech101数据集的基于事件的版本,并提出了事件相机的多级识别任务。它包含8246个样本和100个类别,这些样本是通过将一个事件相机放在一个电机上,并将其移动到一个屏幕前面来记录的,屏幕上放映着来自Caltech101的各种样本。
Implementation 我们为每个数据集使用一个ResNet-34架构[22]。该网络对来自ImageNet[58]的彩色RGB图像进行预处理。为了考虑到预训练模型和我们的模型之间输入通道和输出类的数量不同,我们采用了以下方法[36]:我们用随机权值替换预训练模型的第一层和最后一层,然后对任务上的所有权值进行finetune。我们通过优化交叉熵损失进行训练,并使用ADAM优化器[28],初始学习率为1e 5,每10000次迭代减少2倍。我们对N-Caltech101和N-Cars分别使用60和100的批处理大小。
5.Optical Flow Estimation
与目标识别一样,基于帧的光流估计方法在高动态范围(如夜间和高速运动时)仍然具有挑战性。特别是,运动模糊和传感器的过/欠饱和经常会破坏图像中的亮度稳定性,这是许多方法背后的基本假设,从而导致估计错误。由于缺乏运动模糊和高动态范围,事件相机有潜力在这些条件下提供更高的精度估计。早期的基于事件的光流估计将平面拟合到事件[7]生成的时空流形上。其他的作品通过寻找投影到帧上的最佳事件对齐来解决这个问题[65]。最近,相对大规模的多车立体事件相机数据集(MVSEC)[68]使得基于深度学习的光流成为可能[69,70]。它提供了与激光雷达相结合的立体声DAVISrig的数据,用于ground truth光流估计[69]。数据集具有几个驾驶序列在白天和晚上,和室内序列记录在一个四轴飞行器。[69,70]中的方法以一种自我监督的方式学习flow,并使用标准的U-Net架构[56],在具有挑战性的夜间场景中优于现有的基于帧的方法。在[69]中,使用四通道图像表示作为网络的输入。该图像由[36]中使用的双通道事件计数图像和活动事件(SAE)[7]的双通道表面组成,按事件极性进行划分。虽然事件计数和时间表面结合了事件流的时间和空间信息,但它仍然通过丢弃除最近的事件时间戳之外的所有事件时间戳来压缩事件信号。
到目前为止,还不清楚哪种事件表示最适合学习光流。我们通过将第4节中列出的表示形式与在MVSEC数据集上评估的最先进的光流回归任务[69]进行比较来研究这个问题。
三.代码实现
1.model/ValueLayer
输入:x
输出:经过MLP后得到的x值(论文中使用MLP代替kernal)
2.model/Quantization
输入:
event——[4*N, 5],其中5表示,x,y,t,p,b,N表示1个事件流npy的数据维度,4表示的是设置的batchsize
其中这里的b表示batch size,表示0, 1,2, 3,训练数据是分别从4个类文件夹中取1个npy文件,将npy文件的第5维分别设置为0-3,然后依次连接在一起。
输出:
vox, [4, 18, 180, 240], 其中18 = 2*C
C表示the number of temporal bins,用于离散化时间维度,论文里用B表示
4表示设置的batchsize
方法:
Function:
- 计算event spike tensor
- 绘制体素网格,并将event spike tensor映射到体素网格内
在计算event spike tensor时,论文中为式6所示,其中kernal用MLP替代。
代码中,event spike tensor = t * MLP[t-i_bin/(C-1)],其中,C = 9, i_bin属于[0,9)
这样做的优势比较明显:
将时间戳作为度量方式,保留了event polarity 和 event count;
为了增强事件对称性,这里将MLP的输入限制为坐标的差值;
根据表征内容的不同,f可以是event count、time stamps、event polarities等。
Model:
MLP+Activation
(1) Linear(1,30) + leakyrelu
(2) Linear(30,30) + leakyrelu
(3) Linear(30, 1)
3.model/Classifier
输入:
vox_cropped
(
vox_cropped是通过crop_and_resize_to_resolution函数上采样得到
crop_dimension [224, 224]
vox_cropped [4, 18, 224, 224]
)
输出:
pred_result [4,101]
101代表数据集中的类别,4是batchsize
representation (体素网格)
方法:
分类识别
Model:
ResNet-34,将第一个conv和最后一层fc分别改为(18,64)和(512,101),其中18表示2*C,101表示类。
交叉熵损失函数
四.论文总结
本文介绍了一种事件相机数据的新型表示方法,保留了event的四个维度的数据,时间戳通过量化的方法分为了九个时间窗,其中极性维度与时间戳的维度进行结合,每个时间戳的维度储存一个极性的数据,因此时间戳共有2*9=18个维度。
通过狄拉克函数将离散的event变为连续事件,通过卷积操作对这个信号进行采样,这样就将事件实例化表示,通过MLP代替卷积操作使用的kernel,学习到最适合的表示方法。将事件数据放入体素网格中,借用传统rgb图像深度学习的模型,进行目标检测的任务。