NEON Tree Genus Classification (ResNet-18)
Classifies tree crowns detected by
DeepForest into 60 genera. Trained on RGB imagery from 30
NEON sites across North America.
Usage
1from deepforest import main
2from deepforest.model import CropModel
3
4detector = main.deepforest()
5detector.load_model("weecology/deepforest-tree")
6
7genus_model = CropModel.load_model("weecology/cropmodel-neon-resnet18-genus")
8
9results = detector.predict_tile(path="tile.tif", crop_model=genus_model)
10# results has columns: cropmodel_label, cropmodel_score
Results (Test Set)
| Metric | Value |
|---|
| Accuracy | 87.8% |
| Macro F1 | 0.81 |
| Weighted F1 | 0.88 |
| Classes | 60 |
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 | 16 (val_loss=0.60) |
| 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