SpiceNet / README.md
Noushad999's picture
Upload folder using huggingface_hub
1ea7ba6 verified
|
Raw
History Blame Contribute Delete
3.97 kB
---
license: mit
tags:
- image-classification
- domain-generalization
- fine-grained
- benchmark
- shortcut-learning
- pytorch
pretty_name: SpiceNet Reproducibility Archive
---
# SpiceNet: reproducibility archive
Artifacts for the paper **"SpiceNet: Measuring and Narrowing the Cross-Source Gap in
Fine-Grained Spice Recognition"** (Md. Noushad Jahan Ramim, Maisha Sameha,
Dr. Nazmun Nahid; University of Asia Pacific).
This repository contains everything needed to reproduce the paper **except the source
images**, which are not redistributed here (see Licensing). You reconstruct the
benchmark by downloading the two public image collections and applying the splits in
`manifests/`.
## Contents
| Folder | What it holds |
|---|---|
| `manifests/` | The deterministic manifests and 70/15/15 splits (seed 42): the 22-class unified benchmark, the 8-class overlap in each source, and the de-duplicated variants. Each entry references a source image by its original identifier. |
| `code/` | All training, evaluation, audit, and figure scripts, plus the `src/` package (dataset, model, domain-generalization methods). |
| `results/` | The computed result tables and per-sample/per-seed JSON behind every number and figure in the paper. |
| `checkpoints/` | Trained model weights (`best.pth`) for every experimental run reported in the paper: the cross-source SpiceFusionNet matrix, the eight benchmark backbones, the single-source ARC-V/RSC/SD study over three seeds, the invariance model, and GranuFormer. Smoke tests and the Paper-2 leave-one-source-out runs are excluded. |
| `DATASHEET.md` | Datasheet for the benchmark (provenance, licences, splits, dedup). |
## Download from the Hub
```python
from huggingface_hub import snapshot_download
local = snapshot_download(repo_id="Noushad999/SpiceNet", repo_type="model")
# manifests, code, results, and checkpoints are now under `local`
```
To pull a single checkpoint instead of the whole 6.5 GB:
```python
from huggingface_hub import hf_hub_download
ckpt = hf_hub_download(repo_id="Noushad999/SpiceNet", repo_type="model",
filename="checkpoints/arcv_sd_indian_s42/best.pth")
```
## The two source datasets (download these)
The images are **not** in this repository. Obtain them from their original sources:
- **Studio source** - Mendeley Indian Spice dataset, Thite et al., *Data in Brief*
57:110936, 2024. **CC BY 4.0**. doi:10.1016/j.dib.2024.110936 (Mendeley `vg77y9rtjb`).
- **In-the-wild source** - SpiceSpectrum, Ramim et al., *Data in Brief* 63:112097,
2025. Image deposit **CC BY-ND 4.0**. doi:10.17632/5v7w2hx8n5.2.
## Reconstructing the benchmark
1. Download both collections above and note the local root path of each.
2. The manifests in `manifests/` list, for every split, the source image identifiers
and the normalized class label. Map those identifiers to your local image paths.
3. Apply the splits as given (do not reshuffle; the seed is 42).
4. Reproduce the headline numbers without retraining using the released checkpoints:
- `code/eval_baseline_mcnemar.py` - single-source held-out accuracy and per-seed McNemar.
- `code/eval_commodity_matched.py` - the collapse with the coriander label-mismatch class removed.
- `code/eval_stats_hardening.py` - cluster bootstrap and seed-level paired tests.
Paths at the top of each script may need to point at your checkpoint and manifest
locations.
## Licensing
- **Code** in `code/` is released under the MIT License.
- **Manifests, splits, and result files** are released CC BY 4.0.
- **Checkpoints** are the authors' own trained weights and contain no source images.
- **Source images** retain their original licences (studio CC BY 4.0, in-the-wild
CC BY-ND 4.0) and are obtained from the repositories above, not from this archive.
## Citation
Please cite the paper and both source datasets. See `DATASHEET.md` for the dataset
references and the paper for the full bibliography.