NEON Tree Species Classification (ResNet-18)

Classifies tree crowns detected by DeepForest into 167 species using USDA PLANTS codes. Trained on RGB imagery from 30 NEON sites across North America.

Trained with NeonTreeClassification.

Usage

from deepforest import main
from deepforest.model import CropModel

detector = main.deepforest()
detector.load_model("weecology/deepforest-tree")

species_model = CropModel.load_model("weecology/cropmodel-neon-resnet18-species")

results = detector.predict_tile(path="tile.tif", crop_model=species_model)
# results has columns: cropmodel_label, cropmodel_score

Results (Test Set)

Metric Value
Accuracy 86.9%
Macro F1 0.80
Weighted F1 0.87
Classes 167

Full per-class precision/recall/F1 in classification_report.csv.

Training

Parameter Value
Architecture ResNet-18 (torchvision, ImageNet pretrained)
Input 224×224 RGB, ImageNet normalization
Optimizer AdamW (lr=1e-3, weight_decay=1e-4)
Scheduler ReduceLROnPlateau
Max epochs 500 (early stopping patience=15)
Best epoch 11 (val_loss=0.62)
Batch size 512
Class weights None
Seed 42

Dataset

47,971 tree crowns from 30 NEON sites. Labels from NEON Vegetation Structure Taxonomy (VST) field surveys. RGB crown crops extracted at 0.1m resolution.

Split Samples
Train (70%) 33,579
Val (15%) 7,195
Test (15%) 7,197

Split method: random, seed=42.

Sites: ABBY, BART, BONA, CLBJ, DEJU, DELA, GRSM, GUAN, HARV, HEAL, JERC, KONZ, LENO, MLBS, MOAB, NIWO, ONAQ, OSBS, PUUM, RMNP, SCBI, SERC, SJER, SOAP, SRER, TALL, TEAK, UKFS, UNDE, WREF

License

MIT

Downloads last month
736
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support