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