神经形态数据集DVS128Gesture在SNN上的训练、可视化处理

        这个项目是我本科毕设的一小部分,感觉没啥人写这个,我就写一写纪念下我本科最后一次大作业(主要分享核心思想,不含代码)。

1、DVS128Gesture数据集 

        DVS128 Gesture数据集 是一个使用 DVS 相机拍摄的,应用于手势识别任务的神经形态数据集,由IBM 公司在 2017 年开源发布。 DVS128 Gesture 数据集包含了11 种不同的手势类别,由 29 个不同个体在 3 种不同的光照条件下进行样本演示,通过DVS 相机直接拍摄手势的动态信息,然后标注完成之后组合成手势识别数据集,与第二章中提到的直接标注数据集的制作手段相同。
        DVS128 Gesture共有 1464 个样本数据,其中训练集 1176 份、测试集 288 份,图片的像素为标准的128x128 尺寸大小。
gesture_classes = ['Hand Clapping', 'R Hand Wave', 'L Hand Wave', 'R Arm Clockwise',
           'R Arm C Clockwise', 'L Arm Clockwise', 'L Arm C Clockwise', 'Arm Rolls',
           'Air Drums', 'Air Guitar', 'Other']

2、数据处理

        在git官网下载好数据集后,使用SpikingJelly库文件datasets.dvs_128gesture中的DVS128Gesture解压函数进行解压

3、训练、测试

3.1、训练

        训练过程与其余snn训练过程基本一致。特别的地方在于,DVS128Gesture处理得到的数据是(T、C、H、W),于是使用Dataloader函数进行打包时会得到(N、T、C、H、W)数据格式,不符合snn处理的数据格式,于是我们必须将N、T交换,使用transpose函数进行此操作。

        值得注意的是,SNN在完成一次batch的训练后,LIF神经元的膜电位必须重置,防止干扰后续batch的训练效果。

        训练过程参数可以通过调用os库进行输出

        训练结束,更新模型参数

3.2、测试

        如果大家理解训练过程,那么测试也只是简化了BP的训练过程,因此不再赘述。

4、输出可视化

        输出可视化分为两种:一是使用外部的gesture事件流数据、二是使用测试集中的事件流数据。由于本文缺少dvs相机,无法实现外部gesture事件流数据生成,于是退而求其次,使用测试集中的数据进行可视化验证。

        输出可视化主要包括两方面内容:一是事件流数据的动态显示、二是输出预测pred的结果。

4.1、事件流数据动态显示

        主要内容:使用plt的停顿函数依次显示不同时间步长的事件状态。

4.2、预测pred结果

        主要内容:输出预测值以及置信度。其中:由于输入x的格式(T、C、H、W)无法直接被snn接纳处理,因此我们进行填充使得输入x是一个batchsize=1的批数据。将所有时间步长的平均输出作为pred的参考。

4.3、可视化效果

        其中:前者是预测的手势,()里面是置信度。

dvs128gesture

5、代码框架

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值