Skip to main content
This tutorial builds a computer vision pipeline that gets smarter with use. You’ll deploy YOLO as a custom extractor, review detections with annotations, export corrections as training data, and close the loop by uploading improved weights — all through Mixpeek primitives.
Self-improving CV pipeline: YOLO extractor → human review → fine-tune → redeploy, with taxonomies and clusters feeding back into the loop

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.
Prerequisites: A Mixpeek namespace with an API key. Familiarity with custom extractors and the model registry helps but isn’t required.

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.
Use the exact key names: feature_type, feature_name, embedding_dim, distance_metric. Using name/type/dimensions/distance will silently create zero vector indexes.

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.
Trigger batch processing to run YOLO across all uploaded images:

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.
Focus reviewers on uncertainty. Annotating high-confidence correct detections adds little value. Filtering for confidence < 0.7 routes reviewers to the cases where YOLO is least sure — exactly the training signal you need for the next fine-tune.

4. Annotate Detections

Reviewers examine each detection and record their decision. The payload 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

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 rising corrected or false_positive rate signals the model needs retraining.

Interpreting Stats for Retraining Decisions

Track stats over time, not just cumulatively. A model at 90% confirmed overall might be at 60% confirmed on last week’s data if the deployment context changed (new camera angle, different lighting, seasonal changes).

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.
The new version gets its own feature URI — mixpeek://yolo_detector@2.0.0/detection_embedding — so you can run both versions side by side and compare results before switching production traffic.

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.
Clusters reveal groups like “delivery trucks,” “bicycles,” or “strollers” — objects the base YOLO model might lump together or miss entirely.
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.
The key insight is that these primitives compose. Annotations curate the edges where the model was wrong. Those curated edges become training data and reference collection entries. The reference collection powers taxonomy auto-classification. Clusters discover what you haven’t labeled yet. And every improvement backfills via retroactive taxonomy application — old data re-benefits from every new correction.

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.