Skip to main content

Quick Start

This page walks through a minimal forward pass, a training command, and instance-level inference.

Minimal Forward Pass​

import torch
from spikeseg.models import SpikeSEG

# Instantiate from the IGARSS 2023 paper configuration
model = SpikeSEG.from_paper("igarss2023", n_classes=1)

# Simulate an event frame: (batch, channels, height, width)
input_events = torch.randn(1, 1, 128, 128)

model.reset_state()
for t in range(10):
saliency, encoder_output = model(input_events)
if encoder_output.has_spikes:
print(f"t={t}: {encoder_output.n_classification_spikes} classification spikes")

saliency is a pixel-level map; encoder_output holds per-layer spikes, pooling indices, and membrane potentials.

Train with One Command​

python scripts/train.py --config configs/config.yaml

Training is layer-wise: Conv1 uses fixed DoG filters, Conv2 and Conv3 are trained via STDP with WTA competition. The script saves checkpoints, TensorBoard logs, and a final metrics JSON. See Training Guide for details.

Instance Segmentation with HULK-SMASH​

import torch
from spikeseg.models import SpikeSEG
from spikeseg.algorithms import HULKDecoder, group_instances_to_objects

model = SpikeSEG.from_paper("igarss2023", n_classes=1)
model.load_state_dict(torch.load("checkpoint.pth"))

hulk = HULKDecoder.from_encoder(model.encoder)

model.reset_state()
encoder_output = model.encode(input_events)

instances = []
for spike_loc in encoder_output.get_spike_locations():
inst = hulk.unravel_spike(
spike_location=spike_loc,
pool1_indices=encoder_output.pooling_indices.pool1_indices,
pool2_indices=encoder_output.pooling_indices.pool2_indices,
pool1_output_size=encoder_output.pooling_indices.pool1_output_size,
pool2_output_size=encoder_output.pooling_indices.pool2_output_size,
)
instances.append(inst)

objects = group_instances_to_objects(instances, smash_threshold=0.1)
print(f"Detected {len(objects)} objects from {len(instances)} instances")

Evaluate a Checkpoint​

python scripts/evaluate.py \
--checkpoint checkpoints/best.pt \
--data-root /path/to/EBSSA \
--volume-based \
--output metrics.json

This runs volume-based evaluation (IGARSS 2023 methodology) and writes all metrics to metrics.json. See Evaluation Guide.

What Next​

GoalPage
Understand the theorySpiking Neurons
See the full architectureArchitecture Overview
Configure trainingConfiguration
Browse the APIAPI Reference