# Weedsense Eval

> Evaluates a model's ability to jointly perform fine-grained weed species segmentation, continuous plant height regression, and discrete temporal growth stage classification from single RGB images. Use when the user wants to benchmark on WeedSense, or asks about evaluating this task. Reports mIoU, MAE, Accuracy.

- Skill: `qhjqhj00/weedsense-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/weedsense-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/weedsense-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/weedsense-eval

---


# weedsense-eval

> WeedSense: Multi-Task Learning for Weed Segmentation, Height Estimation, and Growth Stage Classification — Sarker et al. (2025) (arXiv:2508.14486, 2025)

## What this evaluates

Evaluates a model's ability to jointly perform fine-grained weed species segmentation, continuous plant height regression, and discrete temporal growth stage classification from single RGB images.

## Datasets

- **WeedSense** — total ?; splits: test (-1)

## Metrics

- `mIoU` **(primary)** — range: percent
  - Mean Intersection over Union averaged across all 17 classes (including background). Computed as the average of IoU per class over the dataset.
- `MAE` **(primary)** — range: other
  - Mean Absolute Error between predicted and ground-truth plant height in centimeters.
- `Accuracy` **(primary)** — range: percent
  - Percentage of correctly predicted growth stage labels (weekly intervals 1–11) out of total samples.

## Input / output format

**Input**: Single RGB image of a weed plant in a greenhouse setting.

**Output**: Per image: (1) pixel-wise segmentation mask with 17 classes, (2) scalar plant height in cm, (3) discrete growth stage class label (weeks 1–11).

## Scoring recipe

```python
ious = []
for c in range(17):
    p = (pred_mask == c)
    g = (gold_mask == c)
    inter = np.sum(p & g)
    union = np.sum(p | g)
    ious.append(inter / union if union > 0 else 1.0)
mIoU = np.mean(ious) * 100
MAE = np.mean(np.abs(pred_height - gold_height))
Accuracy = np.mean(pred_stage == gold_stage) * 100
```

## Common pitfalls

- The dataset includes 16 weed species plus a background class, making it a 17-class segmentation problem; failing to account for background inflates mIoU.
- Growth stage labels are discrete weekly intervals (1–11) rather than continuous time; treating them as regression targets will yield incorrect Accuracy/F1 scores.
- Height is measured in centimeters and reported as MAE; confusing it with RMSE or R² will misrepresent the primary regression metric.

## Evidence (verbatim from paper)

> mIoU(%)↑ mF1(%)↑ MAE(cm)↓ RMSE(cm)↓ R2↑ Max Error(cm)↓ Within1cm (%)↑ Within2cm (%)↑ Within5cm (%)↑ Accuracy(%)↑ F1(%)↑

## Citation

```bibtex
@misc{sarker2025weedsense,
  title={WeedSense: Multi-Task Learning for Weed Segmentation, Height Estimation, and Growth Stage Classification},
  author={Sarker et al. (2025)},
  year={2025},
  note={arXiv:2508.14486}
}
```

- arXiv: 2508.14486

