Skip to content
Michael_Portfolio.ipynb
MR
File browser
Michael_Portfolio.ipynb
profile.jpg
resume.pdf

One editable portfolio notebook. Edits survive refreshes in this tab and reset when the tab closes or the notebook is reset.

michaelml.dev / Michael_Portfolio.ipynb
Kaggle competition for predicting pasture biomass from images using a 4-model stacking ensemble. Achieved 21% MAE improvement over the best individual model with R² of 0.9998.
[ ]
code · CSIRO Image2Biomass Prediction
project = load_project("csiro-image2biomass")
project.summary()
Output
CSIRO Image2Biomass Prediction project preview

CSIRO Image2Biomass Prediction

Kaggle competition for predicting pasture biomass from images using a 4-model stacking ensemble. Achieved 21% MAE improvement over the best individual model with R² of 0.9998.

PyTorchDINOv2ConvNeXtSigLIPStacking EnsembleCatBoostComputer VisionRegressionKaggleAgricultural AI
[ ]
code · Problem definition
project = load_project("csiro-image2biomass")
project.problem()
Output
ProblemPasture biomass traditionally requires destructive sampling; the competition asked models to estimate five biomass targets from images and metadata.
ApproachStack DINOv2, ConvNeXt, SigLIP/boosting, and DINOv2-Giant/Lasso pipelines with image augmentation, metadata features, TTA, and grouped cross-validation.
OutcomeRecorded MAE 10.03, a 21.37% improvement over the best individual model in the project evaluation, with weighted R² 0.9998.
[ ]
code · Constraints
project = load_project("csiro-image2biomass")
project.constraints()
Output

Constraints

  • Five related regression targets had different error profiles.
  • Repeated image paths made leakage-safe grouping essential.
  • The solution had to combine image and structured metadata features.
[ ]
code · Role and implementation
project = load_project("csiro-image2biomass")
project.implementation()
Output

Role and implementation

My role: Designed and evaluated the four-model vision ensemble, feature pipeline, grouped validation strategy, and Lasso stacking meta-model.

  • Combined DINOv2, ConvNeXt, SigLIP, boosting models, and Lasso in a stacking ensemble.
  • Used Albumentations, Mixup/CutMix, test-time augmentation, and metadata encoders.
  • Grouped five-fold validation by image path.
[ ]
code · Architecture
project = load_project("csiro-image2biomass")
project.show_architecture()
Output

Architecture overview

Stack DINOv2, ConvNeXt, SigLIP/boosting, and DINOv2-Giant/Lasso pipelines with image augmentation, metadata features, TTA, and grouped cross-validation.

The documented project does not claim a separate architecture artifact.

[ ]
code · Demo and media
project = load_project("csiro-image2biomass")
project.media()
Output
CSIRO Image2Biomass Prediction project media
[ ]
code · Evaluation
project = load_project("csiro-image2biomass")
project.evaluation()
Output

Evaluation

  • Compared all four base models against the stacking meta-model.
  • Tracked MAE and per-target as well as weighted R².
[ ]
code · Results
project = load_project("csiro-image2biomass")
project.results()
Output

Results

  • Stacking MAE: 10.03 versus 12.76 for the best individual model.
  • Weighted R²: 0.9998 in the documented project evaluation.
[ ]
code · Tradeoffs and failures
project = load_project("csiro-image2biomass")
project.tradeoffs()
Output

Tradeoffs

  • The ensemble improves aggregate error while increasing inference cost and operational complexity.
  • Aggregate R² can obscure weaker performance on individual biomass targets.
[ ]
code · What I would improve
project = load_project("csiro-image2biomass")
project.improvements()
Output

Improvements

  • Report uncertainty and additional held-out robustness checks by geography and species.
  • Distill the ensemble for more practical field inference.
[ ]
code · Links and repository
project = load_project("csiro-image2biomass")
project.links()
Output
GitHub
Python 3 · PyodideWorker: CPUConnecting…Command modeLn 1, Col 1