Skip to main content...
CV Depth: the Measurement Pipeline
25 min

Day 54: Evaluating your fine-tuned detector

Does it actually detect garments?

Evaluate on the validation set with the Day-49 metric: per-class AP and overall mAP. But numbers alone hide failure modes — also look at the confusion between classes and at actual predicted boxes on held-out images. A detector with decent mAP that systematically confuses 'kurta' and 'dress' has a labelling or class-definition problem you'd never see from the single number.

Validating and inspecting per-class performance
metrics = model.val(data="garment_dataset/data.yaml")
print("mAP@0.5:", metrics.box.map50)
print("mAP@[0.5:0.95]:", metrics.box.map)
print("per-class AP@0.5:", metrics.box.ap50)   # find the weak classes

# eyeball predictions on held-out images — numbers hide failure modes
model.predict("val_samples/", save=True)        # writes annotated images

Weak classes tell a story

If one garment class has much lower AP, the cause is usually one of three: too few examples of it, inconsistent labels for it, or genuine visual similarity to another class. Diagnosing which — by looking at its actual failures — is worth more than any hyperparameter sweep, and it's exactly the kind of honest analysis the Day-90 checkpoint rewards.

Key terms

Per-class AP
Average Precision computed separately for each class, exposing which classes the detector handles well or poorly.
Qualitative evaluation
Inspecting actual predicted boxes on sample images to find failure modes numbers alone hide.

Your detector has good overall mAP but one class has much lower AP. Why look at its actual predicted images rather than just tuning hyperparameters?

We use cookies

We use cookies to enhance your browsing experience, serve personalized content, and analyze our traffic. By clicking "Accept All", you consent to our use of cookies. Learn more

    Day 54: Evaluating your fine-tuned detector | RBTechIconX