How robotic-vision-lab/edge-informed-contrast-maximization works
EINCM is a research implementation for edge-informed contrast maximization on event-camera data, producing per-pixel motion estimates and optical-flow evaluations. The principal workflow is to load a dataset sample, optimize its motion field across pyramid levels using contrast, edge-correlation, and regularization terms, then evaluate and visualize results. The README documents DSEC, ECD, and MVSEC support and DSEC submission conversion; these are represented even where their implementation was not sampled. Wiring details for unsampled experiment stages are limited to documented capabilities and visible calls.
Main entry points: exp_mgr.py Experiment manager · losses.py Optimization losses · mvsec_loader.py MVSEC loader · dsec_npz_to_png.py DSEC PNG conversion
Components 24
Experiment orchestration
- Experiment entry
src/experiments/e00/__main__.py - Experiment manager
src/experiments/e00/exp_mgr.py - Experiment configuration
src/experiments/e00/configs
Event data
- DSEC loader
src/dataloaders/dsec_loader.py - ECD loader
src/dataloaders/ecd_loader.py - MVSEC loader
src/dataloaders/mvsec_loader.py - MVSEC reader
src/dataloaders/mvsec_utils/mvsec_reader.py - HDF5 reader
src/dataloaders/reader_utils/hdf5_file_reader.py - NumPy reader
src/dataloaders/reader_utils/numpy_file_reader.py - Edge extraction
src/experiments/e00
Motion optimization
- Pyramid solver
src/eincm/solver.py - Optimization losses
src/eincm/losses.py - Event warping
src/eincm/event_warpers.py - Contrast and correlation
src/eincm/objectives - Field regularizers
src/eincm/regularizers.py - Optimization callbacks
src/eincm/callbacks.py
Evaluation outputs
- Theta evaluation
src/evaluations/theta_eval.py - Flow metrics
src/evaluations/flow_eval.py - Experiment plots
src/experiments/e00/plotters.py - Experiment results
src/outputs - DSEC PNG conversion
src/dsec_npz_to_png.py
Other components
- Researcher
- Event datasets
- DSEC submission files
Connections 31
- Researcher → Experiment entry: runs experiment
- Experiment configuration → Experiment entry: configures run
- Experiment entry → Experiment manager: starts run
- Experiment manager → DSEC loader: selects dataset
- Experiment manager → ECD loader: selects dataset
- Experiment manager → MVSEC loader: selects dataset
- Event datasets → DSEC loader: provides samples
- Event datasets → ECD loader: provides samples
- Event datasets → MVSEC loader: provides samples
- MVSEC loader → MVSEC reader: reads data
- MVSEC reader → HDF5 reader: reads HDF5
- MVSEC reader → NumPy reader: reads NumPy
- DSEC loader → Experiment manager: yields samples
- ECD loader → Experiment manager: yields samples
- MVSEC loader → Experiment manager: yields samples
- Experiment manager → Edge extraction: prepares edges
- Experiment manager → Pyramid solver: optimizes sample
- Pyramid solver → Optimization losses: minimizes loss
- Optimization losses → Event warping: warps events
- Optimization losses → Contrast and correlation: computes objectives
- Optimization losses → Field regularizers: computes penalties
- Pyramid solver → Optimization callbacks: reports iterations
- Experiment manager → Theta evaluation: evaluates estimates
- Theta evaluation → Optimization losses: computes metrics
- Theta evaluation → Flow metrics: scores flow
- Experiment manager → Experiment plots: plots results
- Experiment manager → Experiment results: stores results
- Researcher → DSEC PNG conversion: converts results
- Experiment results → DSEC PNG conversion: provides estimates
- Event datasets → DSEC PNG conversion: provides timestamps
- DSEC PNG conversion → DSEC submission files: writes PNG flow