Low accuracy (~50%) with SSL (BYOL/MAE/VICReg) on hyperspectral crop stress data — what am I missing? [R]

Reddit r/MachineLearning / 4/17/2026

💬 OpinionSignals & Early TrendsIdeas & Deep AnalysisModels & Research

Key Points

  • The author is working on nitrogen-deficiency detection for cabbage using hyperspectral data with three classes (healthy, mild stress, severe stress) and is trying SSL pretraining (BYOL/MAE/VICReg) followed by fine-tuning for classification.
  • Despite trying several SSL methods and multiple spectral augmentations (noise, masking, scaling, etc.), accuracy remains around 45–50% and F1-score is also low, only slightly above random guessing for three classes.
  • They also tested k-NN and linear probing on the learned representations, but performance stayed weak, suggesting the representations may not be capturing class-separating spectral patterns.
  • The author suspects issues such as poor spectral separability among classes, SSL methods tuned for RGB not transferring well to hyperspectral signals, and augmentations potentially harming learning; they seek guidance on better SSL approaches and architectures (including whether masked spectral modeling or vegetation indices/PCA would help).
  • They are asking for practical recommendations on validated ways to assess SSL representations and proven model designs for hyperspectral plant-stress classification, including 1D CNN vs ViT vs hybrids and any field-tested evaluation tricks.

I’m working on a hyperspectral dataset of cabbage crops for nitrogen deficiency detection. The dataset has 3 classes:

Healthy

Mild nitrogen stress

Severe nitrogen stress

I’m trying to use self-supervised learning (SSL) for representation learning and then fine-tune for classification.

What I’ve done:

Tried multiple SSL methods: BYOL, MAE, VICReg

Used data augmentation (spectral noise, masking, scaling, etc.)

Fine-tuned with a classifier head

Evaluated using accuracy and F1-score

Problem:

No matter what I try, the performance is stuck around:

Accuracy: ~45–50%

F1-score: also low (~0.5)

This is barely better than random (since 3 classes ≈ 33%).

My setup:

Hyperspectral data (hundreds of bands)

1D/patch-based model (ViT-style)

SSL pretraining → fine-tuning pipeline

Tried k-NN and linear probe as well (still weak)

What I suspect:

Classes might not be well separable spectrally

SSL methods designed for RGB may not adapt well

Augmentations might be hurting instead of helping

Model not capturing spectral-specific patterns

What I’m looking for:

Would really appreciate suggestions on:

Better SSL methods for hyperspectral data

Is VICReg actually the best choice here?

Should I try masked spectral modeling instead?

Feature engineering

Should I include vegetation indices (NDVI, etc.)?

PCA before training?

Model architecture

1D CNN vs ViT vs hybrid?

Any proven architectures for hyperspectral?

Evaluation

Best way to validate SSL representations?

Any tricks to improve linear probe results?

General advice

Anyone worked on plant stress / hyperspectral classification?

Common

submitted by /u/DoubleFun4398
[link] [comments]