因为之前实习期间写的几篇文章,偶尔还会收到大佬们的私信,问我能不能推荐实习生。现在我已经从鹅厂离职又回到学校啦,所以大家如果要找实习最好还是去论坛或者问在职的朋友推荐吧。
这两周调研了一些SNN光流估计方面的应用,其中比较有意思的一个方向是利用事件相机(Event-Based Camera) 实现位姿估计。关于事件相机这个领域,UZH-RPG机器人感知组的Davide Scaramuzza这两年做了很多相关的工作。这里推荐他们的资源页面,里面有包括相关文章,代码,数据集以及硬件资料等。uzh-rpg/event-based_vision_resourcesgithub.com
事件相机角速度回归
这篇UZH RPG发在ICRA 2020上的文章叫做Event-Based Angular Velocity Regression with Spiking Networks:Event-Based Angular Velocity Regression with Spiking Networksieeexplore.ieee.org
因为事件相机输出的是神经形态的数据,因此可以不用预处理地对脉冲神经网络进行训练。他们利用真实全景图片生成的数据集对角速度进行估计。
主要贡献:引入脉冲神经网络连续时间回归问题数据集
新的卷积SNN架构用于数值回归
State-of-the-art ANN网络事件的视觉问题
目前瓶颈:反向传播不能直接应用在SNN -> 脉冲不可微
几乎所有已报道工作为分类问题,回归(预测连续时间数值)工作很少
实现方法:神经元模型:脉冲响应模型 Spiking Response Model - SRM
数据形式:通过事件元组(x, y, t, p) 表示像素(x, y) 在 t 时刻收到了极性为 p 的触发。P 为正表示该像素光强变亮,p为负表示该点处变暗
神经网络结构:通过构建nl层前馈神经网络,W为权重矩阵,Sin为输入层,具体公式如下图所示:
尖峰响应和不应期
其中(2)式表示SRM0型神经元模型,在脉冲响应之后的时间内两个输入尖峰可以进行交互
网络架构:
本文采用卷积脉冲神经网络,其中包括五层卷积层,一个池化层和全连接层,超参数如下表所示脉冲神经网络参数
其中,时间参数即公式5、6中的ts,tr,决定了响应和耐火核的衰减率。时间参数随深度逐渐增加,以说明事件相机的输入到输出变化
池化层选用全局均值脉冲池化(global average spike pooling),与CNN中的均值池化方法类似,在最后一个卷积层之后引入。
网络通过池化层之后输出的角速度为:
其中,g_i为合并空间位置(x, y)之后上一层第i个通道的空间峰值序列
综合数据集生成:
本文没有利用真实DVS相机拍摄的图片进行实验,而是利用事件相机模拟器ESIM(依然是UZH-RPG的成果),生成数据集并将相应参数匹配DAVIS240C,对比度阈值为正态分布。
原始图片选择的是SUN360数据集(10^4全景图片)中的一部分(train set: 9000, test set: 500),模拟500ms时间窗的序列,构建了总时长约为1.4h的数据集。并将图像随机在RPY坐标系内绕三轴旋转。H. Rebecq, D. Gehrig, and D. Scaramuzza, “ESIM: an open event camera simulator,” in Conf. on Robotics Learning (CoRL), 2018
损失函数定义为预测角速度和真实角速度欧式距离的时间积分:
需要注意的是,这种loss func的定义与van Rossum distance相关。有一个特点就是经过需要预置一段时间(T0~T1) 之后才能计算loss function,这将会导致时间相关事件数据集的最开始一部分偏差较大,这一点在之后的图中也有呈现。
训练步骤:
随机水平和垂直翻转 & 时间倒转 -> 避免过拟合
损失函数梯度通过Pytorch中 SLAYER实现
步长1ms,50ms之后评估loss function
分辨率:240×180
迭代次数:240000
批大小:16
优化方法:ADAM
学习率:0.0001
时间参数:ts 和 tr可能不理想 -> 可以被学习优化
实验结果:误差与其他网络相比
RPY(RTP)偏航轴坐标系中,三轴的角速度真实值和预测值如下图所示。角速度回归结果曲线,可以看到由于loss function需要一定预置时间,40ms之前的数据偏差较大
总体而言,除了初始的预置时间引起的误差较大以外,还存在长时间后依然难以缩小误差的情况。三周误差大小呈现Roll > Pan(yaw) > tilt(pitch) 的顺序。其中由于Roll的回归预测会面临图像边缘像素会频繁触发事件的影响,比剩下两轴的误差大约高了20%。
这篇文献笔记其实也是这段时间research的一个缩影,不仅仅是UZH-RPG组,事件相机以及光流估计的工作也非常多,当下很重要的一个任务还是找到未来工作的方向吧。现在回到学校里以后尤其想做一些hard-core的研究,再加上组里对于SNN研究有很深厚的经验,觉得用SNN做事件相机相关的视觉的工作还是比较好的方向。最近正好大组里新买了一台DVS相机,可以很快着手实验。
希望有从事相关领域的dalao可以多多交流啊,之后我也会定期把自己读文章的一些思考放上来,当然不会涉及任何未发表的&正在做的工作。