RepLiteDet-S0.5: Pollen, RedNectar and BlueNectar detector
RepLiteDet-S0.5 is a small int8 object detector for the FIRST Tech Challenge 2026-27 game (BIOBUZZ). It finds three kinds of game ball, Pollen, RedNectar and BlueNectar, in a 320 x 320 camera frame. The file is 0.77 MB and is built to run on a Limelight 3A. It extends the RepLiteDet-S0 family (the public 1-class Pollen detector is ftc8565/replitedet-s0) with a 3-class head, an added bottom-up path in the neck and task-aligned training, trained for 24000 steps.
Results
Mean +/- standard deviation over 3 training seeds. Each number is classwise mAP@[.5:.95] on a held-out TEST set (defined below); higher is better. The SSD-MobileNetV2 baseline has the same step budget and uses the same three sources at different shares (40% / 40% / 20%). This model was trained at batch 16 and the baseline at batch 8, so at the same step count it saw twice as many images.
| model | home venue (our nectar test set) | second FTC field (BlueDarkUP robot camera) | new venues (phone photos, other teams) | Pollen-only scenes (pollen-rich test) | mean of first three |
|---|---|---|---|---|---|
| RepLiteDet-S0.5 (this model) | 0.649 +/- 0.004 | 0.763 +/- 0.004 | 0.409 +/- 0.004 | 0.776 +/- 0.003 | 0.607 +/- 0.003 |
| SSD-MobileNetV2 300, same steps, same sources at 40/40/20 | 0.443 +/- 0.023 | 0.656 +/- 0.031 | 0.364 +/- 0.011 | 0.622 +/- 0.010 | 0.488 +/- 0.020 |
The Pollen-only column scores only the Pollen class, on scenes that contain no nectar.
How to use it
Files: replitedet_s0p5_int8.tflite (the detector) and labels.txt (one class name per line, in output index order: Pollen, RedNectar, BlueNectar). Load both in the Limelight neural detector pipeline.
Set the confidence threshold to 0.45. That is the value this model picked on the validation sets (best F1 over all three classes together at one threshold); every per-class figure below is measured at it.
What the numbers mean
- mAP@[.5:.95] is the area under each class's precision-recall curve, averaged over box overlap (IoU) requirements from 0.50 to 0.95, then averaged over the three classes. A box of the wrong colour counts as a miss and a false positive. It does not depend on the threshold.
- Precision is the share of reported boxes that are a real ball of that class. Recall is the share of real balls of that class that get a box.
- Home venue: our own labelled nectar photos (146 images, 920 balls). Second FTC field: frames from another team's robot camera on a different field. New venues: phone photos by two other teams, never used in training or model selection. Pollen-only scenes: our original single-class Pollen test set.
Per class, shipped model (seed 17), home venue test, threshold 0.45
| class | balls | mAP@[.5:.95] | mAP@0.5 | precision | recall |
|---|---|---|---|---|---|
| Pollen | 438 | 0.706 | 0.948 | 0.896 | 0.902 |
| RedNectar | 159 | 0.592 | 0.879 | 0.854 | 0.849 |
| BlueNectar | 323 | 0.657 | 0.895 | 0.877 | 0.882 |
Wrong-colour boxes at the threshold (a ball found in the right place, labelled as another class):
| real class | called Pollen | called RedNectar | called BlueNectar |
|---|---|---|---|
| Pollen | 395 | 0 | 0 |
| RedNectar | 6 | 134 | 1 |
| BlueNectar | 0 | 3 | 285 |
By ball size (square root of box area, in pixels of the 320 frame), all classes together:
| size | balls | recall at any score | AP@0.5 | AP@0.75 |
|---|---|---|---|---|
| <18 px | 337 | 0.956 | 0.772 | 0.498 |
| 18-28 px | 213 | 0.958 | 0.845 | 0.681 |
| 28-45 px | 220 | 0.996 | 0.944 | 0.916 |
| >45 px | 150 | 1.000 | 0.953 | 0.953 |
Empty frames: 4 boxes on 20 frames with no ball (0.20 per frame).
Size and speed
| file size | median time per frame | measured on |
|---|---|---|
| 0.77 MB | 23.3 ms | one Intel i9 efficiency core, 1 thread, TFLite with XNNPACK, 300 runs |
| RepLiteDet-S0 (1 class), same session | 21.9 ms | the same core and settings, interleaved |
This is a desktop measurement for comparing models, not the frame time on a Limelight 3A. The absolute time on this desktop varies between sessions, so compare only rows measured together.
How it was trained
- Network: the RepLiteDet-S0 backbone with an FPN-Lite neck (space-to-depth from stride 4 into stride 8, plus a bottom-up path), SSD head, 3 classes. Exported int8 with levels P3 to P5, class-agnostic NMS at IoU 0.60, up to 20 boxes.
- Losses: task-aligned anchor assignment, quality focal loss for the classes.
- Data per batch: 55% our Pollen photos, 30% our labelled nectar photos, 15% rendered BIOBUZZ scenes with colour jitter. 24000 steps, batch 16, from a COCO-pretrained RepLiteDet-S0.
- Hue is never changed, because the class is the colour. Only the rendered scenes get colour jitter, and only in saturation and brightness; our photos are used as recorded.
- No third-party image is in the training data. Third-party sets were used to evaluate it (see Acknowledgements).
Limits
- Our labelled nectar comes from one venue and one lighting setup. On phone photos from other venues the score drops to about 0.41 (table above).
- RedNectar is the weakest class (mAP@[.5:.95] 0.592 on the home venue). At the threshold, 6 of its balls were called Pollen, 1 of its balls was called BlueNectar.
- Balls in the <18 px band have the lowest AP@0.75 (0.498; recall at any score 0.956): they are found, but the boxes are looser and the scores lower.
- Colour depends on the camera's white balance. Keep it fixed on the robot.
Acknowledgements: third-party data
This model was evaluated (and developed) with BIOBUZZ datasets shared on Roboflow Universe by other FIRST Tech Challenge teams. Thank you to:
- BlueDarkUP: FTC-BioBuzz (v1), MIT License. Used for evaluation (second-field validation and test set).
- jonathan-qi (FTC 11347): FTC-BIOBUZZ (v3), CC BY 4.0. Used for evaluation (held-out new-venue test set).
- krishna-seshan (Brickbots): FTC BioBuzz Game Elements (v2), MIT License. Used for evaluation (held-out new-venue test set).
- BioBuzz Projects (FTC 11093): BioBuzz Pollen Detection (v2), CC BY 4.0. Used in development experiments; not in the released weights.
Changes: augmented duplicates removed, class names mapped to Pollen / RedNectar / BlueNectar, images restored to their recorded aspect and cropped to 4:3, near-duplicate frames removed, and partial boxes down-weighted in development runs. No labels in these datasets were edited. These teams do not endorse this model.
Licence
Model weights and config: Apache 2.0 (see LICENSE). The third-party datasets keep their own licences (see ATTRIBUTION.md); no dataset image ships in this repository.
- Downloads last month
- 15