What You’ll Build
A closed-loop object detection system that compounds accuracy over time:1
Detect
Deploy YOLO as a custom extractor. Every image ingested produces bounding boxes, class labels, and detection embeddings.
2
Review
Surface low-confidence detections for human review. Annotate each detection as confirmed, corrected, false positive, or missed.
3
Fine-Tune
Export annotations as YOLO-format training data. Fine-tune externally and upload improved weights as a new extractor version.
4
Compound
Taxonomies auto-classify future detections against your curated ground truth. Clusters discover new categories. Retroactive reapplication improves old data.
1. Deploy YOLO as a Custom Extractor
Package a YOLO-based detector as a custom extractor. The extractor reads images, runs inference, and outputs detection features — bounding boxes, class labels, and confidence scores.manifest.py — extractor metadata and feature definitions
manifest.py — extractor metadata and feature definitions
pipeline.py — YOLO inference with LazyModelMixin
pipeline.py — YOLO inference with LazyModelMixin
Upload and Deploy
Your extractor is now available at feature URI
mixpeek://yolo_detector@1.0.0/detection_embedding. This URI is the stable contract — retrievers, taxonomies, and clusters all reference it, so you can swap model versions without breaking downstream consumers.2. Create a Collection and Ingest Images
Bind the YOLO extractor to a bucket so every uploaded image gets processed automatically.3. Build a Retriever for Detection Review
Create a retriever that surfaces detections for human review. Filter by confidence to focus reviewers on borderline cases where the model is least sure.4. Annotate Detections
Reviewers examine each detection and record their decision. Thepayload carries the corrected bounding boxes and class labels — this is what becomes training data.
Label Vocabulary
Before annotating, establish a consistent label vocabulary. The stats endpoint groups by exact string match, so consistency matters.confirmed
Detection is correct as-is. Becomes a positive training sample that reinforces the model.
corrected
Bounding box or class was adjusted. Highest-value sample — teaches the model its mistakes.
false_positive
No real object at this location. Becomes a hard negative that reduces false alarms.
missed
Object exists but wasn’t detected. Added as new ground truth for the next training run.
Recording Decisions
- Individual Annotations
- Bulk Review (up to 1,000)
Always include
retriever_id and execution_id when annotating retriever results. This provenance link lets you measure which retrievers produce the most approved vs. rejected results — critical for evaluating retriever quality over time.5. Track Model Quality with Stats
Monitor how your model is performing across review cycles. A risingcorrected or false_positive rate signals the model needs retraining.
Interpreting Stats for Retraining Decisions
6. Export Annotations as YOLO Training Data
Query your annotations and convert them to YOLO format. Every corrected bounding box and confirmed detection becomes a labeled training sample.The YOLO format expects one
.txt file per image with lines of class x_center y_center width height, all values normalized to [0, 1]. The export script handles this conversion from Mixpeek’s pixel-coordinate annotation payloads.7. Fine-Tune and Redeploy
Fine-tune YOLO externally with your exported annotations, then upload the improved weights as a new extractor version.- Fine-Tune (Ultralytics)
- Upload as New Extractor Version
- Alternative: Model Registry
8. Auto-Classify Detections with Taxonomies
Once you have enough confirmed annotations, promote them to a reference collection. Then create a taxonomy that auto-classifies future detections by matching against your curated ground truth.1
Create the taxonomy
2
Apply to your detection collection
Every new image auto-classifies at ingestion time:
3
Backfill existing data when the reference improves
When annotations accumulate and your reference collection gets better, trigger retroactive mode to reclassify all existing detections:
Retroactive reapplication is a first-class operation, not a data migration. When your reference improves — more annotations, better coverage, new categories — old data automatically re-benefits.
9. Discover New Categories with Clusters
YOLO might detect “unknown” objects that don’t fit existing classes. Use clustering to group similar unknowns and discover categories you haven’t labeled yet.1
Review cluster labels
The LLM-generated name gives you a starting point. Review the cluster members to confirm the grouping makes sense.
2
Promote to taxonomy node
The cluster becomes a reference for auto-classification. Future detections matching this cluster auto-label.
3
Add to training data
Confirmed cluster members become training samples for the next YOLO fine-tune — new classes discovered from your own data.
10. Automate the Loop with Webhooks
Wire up webhooks so the pipeline runs without manual intervention. Each annotation event can trigger downstream processing.Automation Patterns
The Compounding Flywheel
Each Mixpeek primitive contributes to a system that gets better with use:Custom Extractor
Runs YOLO, produces detections with stable feature URIs. Versioned — v1 and v2 coexist.
Annotations
Captures human corrections — the highest-quality training signal. Bulk API for review queues.
Model Registry
Stores fine-tuned weights. Upload, deploy, version — without repackaging the extractor.
Taxonomies
Auto-classifies detections against curated ground truth. Retroactive mode backfills old data.
Clusters
Discovers object categories you haven’t labeled yet. Promote stable clusters to taxonomy nodes.
Webhooks
Triggers downstream actions on every annotation event. No polling required.
Next Steps
Custom Extractors
Full guide to packaging and deploying custom feature extractors.
Model Registry
Upload fine-tuned weights, manage versions, and deploy to the inference cluster.
Taxonomies
Build flat and hierarchical classification systems with retroactive reapplication.
Clusters
Discover structure in your data with 8 algorithms and LLM-powered labeling.

