Git Product home page Git Product logo

spikecv's Introduction

注意:目前是开发版本,部分用例尚未通过测试。

spikecv_logo

面向超高速脉冲相机的开源视觉框架 —— SpikeCV

”我们不仅提供锤子,还制造钉子,捕光制电,让我们打开前所未见的视觉新世界。 “

Documentation Status

中文|English

SpikeCV具体文档地址为:https://spikecv.readthedocs.io


简介

脉冲相机

超高速脉冲相机模拟灵长类视网膜编码原理,每个像素位置直接根据光强变化独立发放脉冲。如下图(b)中显示,当光子累计达到预先设定好的阈值时就产生脉冲比特流,1表示发放脉冲,0表示无脉冲。与图(a)中展示的传统相机成像区别是,常见的数码相机按照一个较低的固定频率产生静止图片序列,无法有效记录光的高速变化过程,例如拍摄场景存在高速运动时,产生的图片会存在运动模糊。而脉冲相机目前可按照40KHZ的频率将光信号转化为脉冲比特流,记录的视觉时空变化较为完整,可应用超高速视觉场景的采集、表示、编码、检测、跟踪和识别等任务。

spike_camera

上图出自论文:Huang T, Zheng Y, Yu Z, et al. 1000× Faster Camera and Machine Vision with Ordinary Devices[J]. Engineering, 2022. 更多关于脉冲相机的细节请参考这篇文章。

SpikeCV 架构

spikecv_structure

如上图所示,SpikeCV主要包含三个部分:

  1. 脉冲相机数据集
    • Raw Spikes:由脉冲相机产生或模拟器生成的脉冲流
    • HFR Videos:与脉冲流对应的高帧率视频流(High-Frame-Rate Videos, HFR),可用于检验基于脉冲相机的超高速场景重构算法
    • Optical Flow:拍摄/模拟场景的光流信息
    • Stero Depth:双目、单目脉冲相机拍摄场景的深度信息
    • Object Labels:场景中物体的类别标签信息
    • Bounding Boxes:表示运动/前景物体所在位置及大小的候选框,可用于检测、跟踪等任务
  2. 设备接口:提供脉冲相机驱动及配套的数据采集,实时脉冲数据处理接口。可支持用于目前已发行的脉冲相机作为输入,或使用离线文件进行模拟相机数据调试
  3. 模块库
    • SpkData:包含脉冲数据类SpikeStream,脉冲相机模拟器,与用于加载脉冲相机数据与脉冲流对应的标签数据(Ground Truth, GT),和模拟脉冲相机原理的脉冲生成
    • SpkProc:面向脉冲相机的模型及算法,包含Filters滤波器Reconstrution重构算法OF Estimation光流估计Depth Estimation深度估计Deteciton 物体检测Tracking多目标跟踪物体识别 等模块
    • Tools:工具类接口,包含:
      • Visualization —— 脉冲流或各类视觉任务结果的可视化
      • Metrics —— 各类视觉任务结果的定量评价指标
      • Utils —— 辅助开发工具,例如数据路径处理等

安装说明

安装

建议使用Anaconda创建专属于 SpikeCV 的使用环境

# 从启智平台下载代码仓库
git clone https://git.openi.org.cn/Cordium/SpikeCV.git 
cd SpikeCV
python setup.py install

数据集

SpikeCV 脚本的运行依赖于开源框架的数据集,因此请确保所执行任务对应的数据集下载成功,可通过网页下载或是通过命令行从指定的数据集链接下载,例如:

cd SpikeCV\SpkData\datasets
wget -c SpikeCV数据集的网页链接 -O | tar -xz

对于较大的数据集,建议直接从启智SpikeCV仓库的数据集地址下载,并将数据集文件夹解压缩到SpikeCV\SpkData\datasets 目录下。

目前已开源的数据集包括:

数据集名称 描述 样例
recVidarReal2019 脉冲相机高速运动数据集。包括超高速运动物体(ClassA)和相机高速运动(ClassB)两类场景。
motVidarReal2020 脉冲相机真实拍摄的多目标检测跟踪数据集,带有标签数据,可用于多目标运动物体的检测跟踪任务。
momVidarReal2021 Multi-Object-Motion 脉冲数据集:51段真实场景脉冲序列;提供多种物体运动模式和高速运行场景下的实拍Vidar脉冲流,种类丰富,速度较快;可用于脉冲图像重构、高速目标检测跟踪、运动分析(运动分割、光流估计)等任务。
OpticalFlowSPIFT 模拟多种飞行物体Spike flything things (SPIFT)场景,带有高速移动目标的光流数据,可应用于高速场景重构、高速目标检测跟踪、运动分析等任务(如光流估计等)。
OpticalFlowPHM 模拟真实场景高速运动Photo-realistic High-speed Motion(PHM)场景,带有高速移动目标的光流数据,可应用于高速场景重构、高速目标检测跟踪、运动分析等任务(如光流估计等)。
PKU-Vidar-DVS 联合事件相机DVS和脉冲相机脉冲流的数据集,脉冲相机提供高速纹理采样,事件相机进行高速动态采样,提供12Meps的事件流, 25 Hz RGB图像(346 x 260)。该数据集提供候选框标注数据,可用于高速与极端光照场景下目标精准检测的任务。
PKU-Spike-Stereo 双目脉冲相机结合深度数据,提供脉冲流和ZED深度图,包含室内室外的高速运动场景,10类目标,887个深度标注图。
BSS 脉冲相机彩色重建数据集,包含28个拜耳模式脉冲流片段,涉及运动来源包括相机运动和物体运动。

引用方式

@misc{SpikeCV,
	title = {SpikeCV},
	author = {Zheng, Yajing and Zhang, Jiyuan and Zhao Rui and Ding, Jianhao and Li, Jianing and Chen, Shiyan and Yu, Zhaofei, Huang, Tiejun and other contributors},
	year = {2022},
	howpublished = {\url{https://git.openi.org.cn/Cordium/SpikeCV.git}},
}

更多脉冲相机的相关文章请参见 Publications.md

若有问题可通过以下邮箱进行咨询:

开源许可证

SpikeCV 开源项目是在Apache2.0许可证下授权的,请参考License.md查阅许可详情。

开发单位

pku_logo

SpikeCV是由北京大学视频与视觉技术国家工程研究中心牵头组织,脉冲视觉公司参与的开源项目。

spikecv's People

Contributors

zyj061 avatar hnmizuho avatar sv-wu avatar ruizhao26 avatar csycdong avatar chenkang455 avatar

Stargazers

E-Tiger Studio avatar  avatar  avatar mindon avatar  avatar Hertz avatar  avatar  avatar ☸️❻🅷🆉🆉🆉 avatar Shen Zhang avatar  avatar dlutzy avatar Hui avatar LIANG Jinxiu avatar Yaping Zhao avatar Sherlock Adrian Owen avatar  avatar zhengzheng avatar RO avatar Sherry.qiu avatar  avatar Rico avatar 煮酒 avatar Chunyang Li avatar  avatar Noble_d_Amour avatar Frank avatar Abraham avatar Qianpeng Li avatar Hai-Dang Huynh-Lam avatar config avatar liqibin avatar 老张 avatar Jian K. Liu Lab avatar Jiyuan Zhang avatar 卜通, Tong Bu avatar Wanru Li avatar Xiaolong avatar lixiaotong avatar 姜峰 avatar cao xizhe avatar  avatar Zhipeng Huang avatar MMIC Group avatar H.B. Jiang avatar Bill avatar  avatar  avatar Xinyu Shi avatar Liwei Huang avatar wang tianyi avatar Emma avatar  avatar  avatar  avatar  avatar Bo Xiong avatar  avatar  avatar Yiyang Zhang avatar 喵喵妙 avatar  avatar liyang avatar avawang avatar Quinn Zhang avatar  avatar zhengen li avatar  avatar Interstellar_H avatar Jindong Li avatar Gaoxiang Ye avatar  avatar zzk avatar fengjx avatar Bin Fan avatar River avatar YouSiki avatar  avatar Taoyi Wang avatar  avatar LYS avatar An-zhi WANG avatar Yuanlin Wang avatar  avatar  avatar KarryChiang avatar  avatar 爱可可-爱生活 avatar Pengyu Zhang avatar  avatar  avatar Xiao Wang(王逍) avatar  avatar  avatar Ding Chen avatar Aniki avatar Ordinarabbit avatar Lu Ming avatar  avatar 蛍狩 avatar

Watchers

☸️❻🅷🆉🆉🆉 avatar 侯金亭(Justin) avatar  avatar dlutzy avatar  avatar  avatar  avatar

spikecv's Issues

ValueError

hello,i have new issues: ValueError: At least one stride in the given numpy array is negative, and tensors with negative strides are not currently supported. (You can probably work around this by making a copy of your array with array.copy().)
how can i solve it

尝试运行examples中的代码时发生错误

我尝试进入examples/目录,然后python test_sjddnet.py
报告了如下错误:
Traceback (most recent call last):
File "test_sjddnet.py", line 10, in
from spkProc.reconstruction.SJDDNet.sjddnet_model import SJDDNet
ModuleNotFoundError: No module named 'spkProc.reconstruction.SJDDNet'

请问应该如何解决这个问题呢?

No module named 'sdk'

当我运行SpikeCV\examples\test_load.py时,报错如下

发生异常: ModuleNotFoundError
No module named 'sdk'
  File "C:\Users\帅小伙\Desktop\SpikeCV\SpikeCV\examples\test_load.py", line 15, in <module>
    from spkData import load_dat
ModuleNotFoundError: No module named 'sdk'

然后我注释掉了’E:\anaconda3\envs\torchGPU2.1.1\Lib\site-packages\SpikeCV-0.1a0-py3.9.egg\spkData\load_dat.py‘中的
sys.path.append('../device/spikevision/m1k40') from sdk import spikelinkapi as link
然后又报错如下

发生异常: ModuleNotFoundError
No module named 'SpikeCV'
  File "C:\Users\帅小伙\Desktop\nici\spikecv.py", line 2, in <module>
    from spkData.load_dat import data_parameter_dict
ModuleNotFoundError: No module named 'SpikeCV'

预训练的SJDDNet在其他数据集上无法重建出图像

请问我们尝试使用examples/test_sjddnet.py脚本加载pretrained_sjddnet.pth之后,可以正常重建示例数据water.dat,但在尝试重建另一个工业数据集时得到无法解释图像,如附图所示:
test_4
请问SJDDNet自带的预训练模型支持重构其他环境下采集的数据吗?在迁移到其他场景使用重建功能时,是否有其他参数可以做调整测试?
感谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.