20170921周报

1.项目内容

对于多信道探针采集到的脑电波信号进行实时准确分类

2.项目流程

首先,对采集到的脑电波信号进行滤波,然后根据高低阈值确定并提取我们要进行聚类的波形块,并对每个波形块进行特征提取,最后利用masked_EM算法对这些特征进行聚类,从而确定每一个波形块(spike)属于哪一个脑细胞发出。

3.实施方法

基于nature论文的klusta方法提出一套完整的流程,但是并没有进行算法加速,基于kilosort的论文虽然实现了GPU加速,但是前面的两种方法都是基于大规模离线数据的处理,并不能实现数据的实时处理。

因此我们考虑对数据进行切分成小块,对每一小块的数据进行GPU加速从而达到实时或准实时处理,同时基于GPU性能的考虑,部分算法流程可能不适合在GPU上运行,因此我们考虑GPU和CPU混合调用的方法,使资源调度达到更优,从而减少计算时间。

基于此,我们先实现一个CPU_only和GPU_only的代码,然后进行计算资源的分配。

4.总体进度

Nature的论文算法实现有一个Python版本的完整代码,同时有一个C++版本的masked_EM算法实现。基于上面的算法,目前我已经实现了一个完整版本的C++代码,并已经完成了测试(和Python的代码对比测试),CUDA代码对于聚类前面的数据预处理部分,目前代码写完了提取波形块的代码,后面还有三次样条插值和PCA部分的代码未完成,对于聚类部分的代码,目前处理了聚类数据的处理,关于masked_EM聚类算法的实现未完成。

5.本周进度

对之前由于GPU计算能力影响的flood_fill算法(用于提取波形块部分)进行了重新调试和运行。

之前何炯师兄发给我的并行EM算法的代码学习了一下,并对算法尝试加入masked进行了一些修改,但是因为当前的masked_EM算法涉及的东西(类别的分裂和删除等)比较多,所以目前还只是理解EM的并行部分,没有进行太多代码更改。

同时看了CUDA的cublas的函数库,测试了常用的几个函数的用法。

6.下周计划

基于cublas函数库和已有的并行EM算法代码,尝试实现masked_EM算法。

你可能感兴趣的:(20170921周报)