OrchID-NCD Models
Trained model weights for the OrchID-NCD project — ultra-fine-grained visual classification of Ophrys orchids.
Fine-grained classification of six cryptic Ophrys species (O. exaltata, O. garganica, O. incubacea, O. majellensis, O. sphegodes, O. sphegodes Palena) using ResNet-18/50, ConvNeXt-Tiny/Small, and DINOv2-Small/Base.
Exp 6: Cross-Entropy
5-fold stratified cross-validation on deduplicated clean split (2,232 train, 300 test).
Training recipe: epochs=100, patience=15, effective batch=32 (gradient accumulation ×4), per-architecture LR from registry.
| Model | Val F1 (macro) | Test F1 | Test Acc | Best Fold | Folds |
|---|---|---|---|---|---|
| ResNet-18 | 0.9006 ± 0.0088 | 0.8799 | 0.8800 | 2 | 5 |
| ResNet-50 | 0.9178 ± 0.0062 | 0.8822 | 0.8800 | 3 | 5 |
| ConvNeXt-Tiny | 0.8918 ± 0.0112 | 0.8902 | 0.8900 | 1 | 5 |
| ConvNeXt-Small | 0.8828 ± 0.0140 | 0.8626 | 0.8633 | 4 | 5 |
| DINOv2-Small | 0.9061 ± 0.0161 | 0.8883 | 0.8867 | 1 | 5 |
| DINOv2-Base | 0.9157 ± 0.0079 | 0.9271 | 0.9267 | 1 | 5 |
Exp 7: Supervised Contrastive Learning
Two-phase training: SupCon pretraining (InfoNCE, τ=0.07) → CE fine-tuning with frozen backbone.
Recipe: same per-architecture optimizer/LR, projection dim=128, CE Phase LR=0.01, patience=15 on val metrics.
| Model | Val F1 (macro) | Test F1 | Test Acc | Best Fold | Folds |
|---|---|---|---|---|---|
| ResNet-18 | 0.6123 ± 0.0744 | 0.7357 | 0.7367 | 4 | 5 |
| ResNet-50 | 0.7359 ± 0.0640 | 0.7993 | 0.7967 | 1 | 5 |
| ConvNeXt-Tiny | 0.8755 ± 0.0191 | 0.6810 | 0.7133 | 1 | 5 |
| ConvNeXt-Small | 0.8821 ± 0.0103 | 0.6886 | 0.7133 | 1 | 5 |
| DINOv2-Small | 0.9058 ± 0.0143 | 0.8958 | 0.8967 | 4 | 5 |
| DINOv2-Base | 0.9135 ± 0.0061 | 0.6874 | 0.7200 | 3 | 5 |
Exp 8: Spherical Orthogonal Prototypes (SpHOR)
Two-phase training: SupCon + Spherical Orthogonal Prototypes → CE fine-tuning with frozen backbone.
Recipe: same as Exp 7, with spherical prototype repulsion (repulse=0.01).
| Model | Val F1 (macro) | Test F1 | Test Acc | Best Fold | Folds |
|---|---|---|---|---|---|
| ResNet-18 | 0.5563 ± 0.1110 | 0.5369 | 0.5800 | 4 | 5 |
| ResNet-50 | 0.7361 ± 0.0772 | 0.6093 | 0.6600 | 1 | 5 |
| ConvNeXt-Tiny | 0.8755 ± 0.0191 | 0.6810 | 0.7133 | 1 | 5 |
| DINOv2-Small | 0.9059 ± 0.0066 | 0.7470 | 0.7467 | 4 | 5 |
Structure
exp6_ce/ — Exp 6 (Cross-Entropy)
exp6_clean_split_resnet18/
results.json — aggregated metrics + test results
config.json — training configuration
best_fold_N.pt — weights of the best fold
best_fold_N_adapter/ — LoRA adapter (DINOv2 only)
exp7_supcon/ — Exp 7 (SupCon + CE fine-tune)
exp7_supcon_resnet18/
...
exp8_sphor/ — Exp 8 (SpHOR)
exp8_sphor_resnet18/
...
Usage
The classifier in the OrchID-NCD Space downloads these weights at startup and uses them for inference.
Links
Space using marcellorusso/orchid-ncd-models 1
Evaluation results
- Macro F1 Score on orchid-ncd-datasetExp 6 (CE)0.901
- Macro F1 Score on orchid-ncd-datasetExp 6 (CE)0.918
- Macro F1 Score on orchid-ncd-datasetExp 6 (CE)0.892
- Macro F1 Score on orchid-ncd-datasetExp 6 (CE)0.883
- Macro F1 Score on orchid-ncd-datasetExp 6 (CE)0.906
- Macro F1 Score on orchid-ncd-datasetExp 6 (CE)0.916
- Macro F1 Score on orchid-ncd-datasetExp 7 (SupCon)0.612
- Macro F1 Score on orchid-ncd-datasetExp 7 (SupCon)0.736
- Macro F1 Score on orchid-ncd-datasetExp 7 (SupCon)0.875
- Macro F1 Score on orchid-ncd-datasetExp 7 (SupCon)0.882
- Macro F1 Score on orchid-ncd-datasetExp 7 (SupCon)0.906
- Macro F1 Score on orchid-ncd-datasetExp 7 (SupCon)0.913
- Macro F1 Score on orchid-ncd-datasetExp 8 (SpHOR)0.556
- Macro F1 Score on orchid-ncd-datasetExp 8 (SpHOR)0.736
- Macro F1 Score on orchid-ncd-datasetExp 8 (SpHOR)0.875
- Macro F1 Score on orchid-ncd-datasetExp 8 (SpHOR)0.906