NightJet Edge v1

NightJet Edge v1 is a tiny temporal luma enhancement model for passive low-light imagery. It accepts a causal 5-frame luma window and predicts an enhanced luma frame for the latest input.

The easiest way to try it is the NightJet Space.

The canonical developer repo is github.com/cezarc1/nightjet. Use Hugging Face for the hosted demo and model artifacts; use GitHub for the installable CLI/API, source code, training/export docs, and Jetson/KubeJet deployment path.

Files

File Purpose
nightjet-edge-v1.pt Inference-only PyTorch checkpoint
nightjet-edge-v1.onnx Fixed-shape ONNX exchange artifact
manifest.json Architecture, input/output contract, provenance, hashes, and eval notes
examples/input.jpg Sample low-light input
examples/output.jpg Output from the default model
examples/comparison.jpg Before/after strip

The sharper nightjet-edge-v1-detail variant is intentionally not included in this first Hugging Face repo. It has more visible detail but a much worse temporal flicker score, so it should be published as a separate model repo if we decide to expose it later.

Input And Output

  • Input tensor: luma_window
  • Input shape: 1 x 5 x H x W
  • Input dtype/range: float32, [0, 1]
  • Temporal order: causal, latest frame last
  • Output tensor: enhanced_luma
  • Output shape: 1 x 1 x H x W
  • Output dtype/range: float32, [0, 1]

For normal image use, install NightJet and let the public API handle RGB/luma conversion:

from pathlib import Path

from nightjet.inference import NightJetEnhancer

enhancer = NightJetEnhancer.from_checkpoint(Path("nightjet-edge-v1.pt"))
enhancer.enhance_image(
    Path("examples/input.jpg"),
    output_path=Path("nightjet-output.png"),
    preserve_color=False,
)

Architecture

The model is NightJetEdgeV1, a residual convolutional network with:

  • 5 input luma frames
  • 16 base channels
  • 8 detail channels
  • 2 depthwise-separable trunk blocks
  • trunk scale 2
  • bounded residual scale 0.45

The output is:

clamp(latest_luma + residual_scale * tanh(residual), 0, 1)

Training Data And Teachers

The public weights were trained on local low-light luma bundles derived from a passive night-vision camera path. Targets were distilled from stronger teacher enhancement outputs, including HVI-CIDNet, DarkIR, and ReDDiT-derived detail targets.

Datasets, teacher outputs, and raw clips are not included. The checkpoint is an inference-only payload derived from local KubeTorch run outputs.

Evaluation Snapshot

Metrics below come from the committed manifest.json and tiny held-out eval splits. Treat them as model-selection evidence, not broad benchmark claims.

Split Teacher MAE Detail gain Temporal flicker ratio Detail score Temporal score
ReDDiT detail probe 0.032482 2.079988 1.759828 51.999704 81.004304

Limitations

  • Luma-only enhancement; color is either grayscale RGB or original chroma recombined with enhanced luma.
  • Small eval splits and teacher-derived targets.
  • Detail-seeking behavior can amplify noise and flicker.
  • No guarantee of robustness across sensors, lenses, compression pipelines, or lighting regimes.
  • TensorRT performance must be measured on the target Jetson runtime.

License And Provenance

NightJet source code is MIT licensed. Model weights are covered by the separate WEIGHTS_LICENSE.md file in this Hugging Face repo because they were distilled from teacher-model outputs and local camera data. Review upstream teacher-model licenses and data rights before redistributing, commercializing, or embedding the weights in a product.

Links

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Space using ggamecrazy/nightjet-edge-v1 1