HSI Studio

ML Hub

Desktop only. Training runs against a local Python interpreter, or on Kaggle. Neither is reachable from a browser tab.

The ML Hub takes a dataset from the Library and trains a model on it. It's organised as a single vertical flow: what to predict → where the labels come from → which model → what compute → run.

Open it from the bottom of the viewer sidebar, under Scholar Architecture Hub — the button reads Open AI Hub.

The Hub. The left column is the run in order — compute, dataset, objective, model — and the Run Summary on the right is the whole configuration in one place, so nothing is buried in a panel you forgot to open.
The Hub. The left column is the run in order — compute, dataset, objective, model — and the Run Summary on the right is the whole configuration in one place, so nothing is buried in a panel you forgot to open.

1. Task

Predict — classification (assign a class) or regression (predict a number).

Label level — what one training example is:

LevelOne example isTypical case
Each annotated pixelA spatial window centred on a labelled pixelScene segmentation, material maps
Each captureA whole cubeOne sample per capture — a specimen, a tablet, a leaf

Label source — where the ground truth lives:

SourceHow it works
MaskThe annotations you painted in the viewer, or a _mask.npz found beside the cube
Folder nameThe directory a capture sits in is its class. Folder depth is configurable
CSV tableA file mapping a key column (filename) to a value column (label)
JSON tableThe same, in JSON
Labels joined from a CSV. Pick the column holding the filenames and the column holding the label, and the Hub reports how many distinct values it found in each.
Labels joined from a CSV. Pick the column holding the filenames and the column holding the label, and the Hub reports how many distinct values it found in each.

For CSV and JSON you pick the key column, the value column, and the delimiter. HSI Studio inspects the file and shows you what it found, so a mismatch between the table keys and the actual filenames is visible before you start a run rather than after.

For per-capture labelling, patchesPerFile controls how many windows are sampled from each cube — a whole cube is one label but many training examples.

2. Model

Six built-in architectures, plus a custom builder:

ArchitectureShape of the idea
3D-CNN3-D convolutions over the spatial-spectral volume. The reliable default
HybridSN3-D convolutions to extract spectral-spatial features, then 2-D convolutions for spatial abstraction. Cheaper than pure 3-D, usually as accurate
SpectralCNN1-D convolutions over the spectrum only, no spatial context. Fast; the right choice when each pixel is independent
ResNetResidual blocks with squeeze-and-excite channel attention
SpectralFormerA transformer attending across bands, learning which wavelengths matter to each other
MambaA selective state-space model over the spectral sequence — linear cost in band count
CustomBuild a layer stack yourself
The architecture picker. Each entry names the idea behind it rather than just the acronym.
The architecture picker. Each entry names the idea behind it rather than just the acronym.

Custom architectures can be assembled in the visual Layer Builder, or written directly as JSON in the spec editor. Starting from a preset — "customise from 3D-CNN" — gives you that architecture's spec as an editable starting point. An architecture diagram renders the layer graph as you build it.

Training hyperparameters:

ParameterDefaultNotes
Epochs30
Learning rate0.001
Batch size64Lower this first if you hit out-of-memory
Window size9The spatial patch around each labelled pixel
Validation split0.2
NormalisationPer cube (min-max)Or across the whole dataset, or none
Max samples per class2000Caps over-represented classes
Class weightsOnCompensates for imbalance in the loss

Normalisation is the setting people get wrong. Per-cube min-max makes each capture self-consistent and is right when illumination varies between captures. Normalising across the dataset preserves absolute differences between captures — which is what you want when the absolute reflectance level is the signal.

3. Compute

The Hub scans your machine for Python interpreters — everything on PATH, the Windows py launcher, and every conda environment — and reports for each one whether torch and numpy are present, the CUDA version, and which GPUs it can see. Interpreters missing a dependency are listed with what's missing rather than hidden, so you know which environment to install into.

If nothing suitable is found, the Hub says so and tells you what to install (pip install torch numpy). Results are cached; rescan after installing.

The Compute panel: the machine, the interpreter that was found, and the packages and GPU it can see.
The Compute panel: the machine, the interpreter that was found, and the packages and GPU it can see.

A system readout shows the machine itself — OS, processor, logical cores, memory — separately from the interpreter, because the two are easy to confuse when a run is slow.

When several GPUs are present you pick the device explicitly, so a run doesn't silently take device 0.

Run on offers This computer or Kaggle (cloud). See Kaggle Integration for the remote path.

4. Input preview

The input preview: every capture with the label it resolved to. Nothing is loaded and nothing is trained, so it stays quick on a large dataset.
The input preview: every capture with the label it resolved to. Nothing is loaded and nothing is trained, so it stays quick on a large dataset.

Before running, preview exactly what the model will be fed: the sampled windows, their labels, and the class distribution. This catches the two failure modes that otherwise waste a training run — labels that didn't join to the files, and a class balance so skewed the model will learn the majority class and nothing else.

5. Training

Training in progress. Loss and accuracy update per epoch, the chart plots training against validation, and the estimate at the bottom right says how long is left.
Training in progress. Loss and accuracy update per epoch, the chart plots training against validation, and the estimate at the bottom right says how long is left.

The monitor streams live from the trainer:

  • Loss and accuracy per epoch, train and validation, as a chart.
  • For regression: RMSE per epoch, plus a predicted-vs-actual scatter — the plot that actually tells you whether a regressor works.
  • The raw trainer log, including CUDA out-of-memory diagnostics with the memory figures that caused them.
  • Elapsed time and estimated remaining.

Runs can be cancelled. Completed runs produce a checkpoint plus a classification report — per-class precision, recall, F1 and support.

Run history

Every run, local or remote, is recorded. The run list lets you reveal a run's output directory on disk, forget a run, or prune old ones.

The Hub includes a literature search over Semantic Scholar, so you can look up the architecture you're about to use without leaving the app. Results carry a citation box with a copyable reference.

Bear in mind that the architecture a paper used on its own dataset is a starting point for yours, not a conclusion about it.

Semantic Scholar works without a key at a low rate limit; you can add your own key in settings for a higher one.