Bird
Raised Fist0
Computer Visionml~8 mins

Top-K accuracy in Computer Vision - Model Metrics & Evaluation

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Metrics & Evaluation - Top-K accuracy
Which metric matters for Top-K accuracy and WHY

Top-K accuracy measures if the correct answer is within the model's top K guesses. This is useful when many classes exist, like recognizing objects in pictures. It tells us if the model is close, even if not perfect. For example, if K=5, the model is right if the true label is in its 5 best guesses. This helps when exact match is hard but near misses still count.

Confusion matrix or equivalent visualization
True label: Cat
Model top-1 guess: Dog (wrong)
Model top-5 guesses: [Dog, Cat, Rabbit, Fox, Horse]

Top-1 accuracy: 0 (missed)
Top-5 accuracy: 1 (hit, because Cat is in top 5)

Confusion matrix is less useful here because Top-K checks multiple guesses.
Instead, we count how often true label is in top K predictions over all samples.
    
Precision vs Recall tradeoff with concrete examples

Top-K accuracy is about recall: how often the true label is found in the top K guesses. Increasing K raises recall but may lower precision because more guesses include wrong labels.

Example: In a photo app, showing top 3 guesses helps users find the right label even if top guess is wrong. But showing too many guesses (large K) can confuse users.

So, choose K to balance user ease (higher recall) and clarity (higher precision).

What "good" vs "bad" metric values look like for Top-K accuracy

Good Top-1 accuracy means the model often guesses exactly right. For example, 80% Top-1 accuracy means 8 out of 10 times the first guess is correct.

Good Top-5 accuracy might be 95%, meaning the true label is almost always in the top 5 guesses.

Bad values are low numbers, like 30% Top-1 and 50% Top-5, showing the model struggles to find the right label even among many guesses.

Metrics pitfalls
  • Relying only on Top-1 accuracy can hide near misses that are useful in practice.
  • Choosing too large K inflates accuracy but may not help real users.
  • Data leakage can make Top-K accuracy look better if test data is too similar to training.
  • Overfitting can cause high Top-K accuracy on training but poor real-world results.
Self-check question

Your image classifier has 60% Top-1 accuracy but 90% Top-5 accuracy. Is this good?

Answer: It depends on your use case. If users can pick from top 5 guesses, 90% means the model is helpful. But 60% Top-1 means it often misses the first guess, so if exact match is needed, it may not be good enough.

Key Result
Top-K accuracy shows if the true label is within the model's top K guesses, balancing exact match and near misses.

Practice

(1/5)
1. What does Top-K accuracy measure in a classification model?
easy
A. If the true label is among the top K predicted labels
B. The accuracy of the model's single best prediction only
C. The time taken to make K predictions
D. The number of classes in the dataset

Solution

  1. Step 1: Understand the definition of Top-K accuracy

    Top-K accuracy checks if the correct label is within the top K guesses made by the model, not just the top 1.
  2. Step 2: Compare options with the definition

    Only If the true label is among the top K predicted labels correctly states that Top-K accuracy measures if the true label is in the top K predictions.
  3. Final Answer:

    If the true label is among the top K predicted labels -> Option A
  4. Quick Check:

    Top-K accuracy = True label in top K predictions [OK]
Hint: Top-K means checking top K guesses, not just one [OK]
Common Mistakes:
  • Confusing Top-K accuracy with single-label accuracy
  • Thinking it measures prediction speed
  • Assuming it counts total classes
2. Which of the following is the correct way to compute Top-3 accuracy using PyTorch's topk method on model outputs outputs and true labels labels?
easy
A. pred = outputs.max(3); correct = pred.eq(labels).sum().item()
B. correct = outputs.topk(3).eq(labels).sum().item()
C. _, pred = outputs.topk(3, dim=1); correct = pred.eq(labels.view(-1,1)).sum().item()
D. _, pred = outputs.topk(1, dim=0); correct = pred.eq(labels).sum().item()

Solution

  1. Step 1: Understand PyTorch topk usage

    The topk(k, dim=1) returns top k values and indices along dimension 1 (classes). We want indices for predictions.
  2. Step 2: Match predictions with labels

    Reshape labels to (-1,1) to compare with top-k predictions and count matches with eq and sum.
  3. Final Answer:

    _, pred = outputs.topk(3, dim=1); correct = pred.eq(labels.view(-1,1)).sum().item() -> Option C
  4. Quick Check:

    Use topk with dim=1 and compare with labels reshaped [OK]
Hint: Use topk(dim=1) and reshape labels for comparison [OK]
Common Mistakes:
  • Using max instead of topk for multiple predictions
  • Wrong dimension in topk call
  • Not reshaping labels for comparison
3. Given the following PyTorch code snippet, what is the printed Top-2 accuracy count?
import torch
outputs = torch.tensor([[0.1, 0.8, 0.05, 0.05],
                        [0.4, 0.3, 0.2, 0.1],
                        [0.25, 0.25, 0.25, 0.25]])
labels = torch.tensor([1, 2, 3])
_, pred = outputs.topk(2, dim=1)
correct = pred.eq(labels.view(-1,1)).sum().item()
print(correct)
medium
A. 2
B. 1
C. 3
D. 0

Solution

  1. Step 1: Identify top 2 predictions per sample

    For each row: - Row 1: top 2 indices are [1, 0] (0.8, 0.1) - Row 2: top 2 indices are [0, 1] (0.4, 0.3) - Row 3: top 2 indices are [0, 1] (both 0.25, tie broken by index)
  2. Step 2: Check if true label is in top 2 predictions

    Labels are [1, 2, 3]: - Sample 1: label 1 in [1,0] -> yes - Sample 2: label 2 in [0,1] -> no - Sample 3: label 3 in [0,1] -> no
  3. Final Answer:

    1 -> Option B
  4. Quick Check:

    Only one label in top 2 predictions [OK]
Hint: Check top K indices and compare with labels one by one [OK]
Common Mistakes:
  • Assuming all labels are in top 2
  • Ignoring tie-breaking in topk
  • Not reshaping labels for comparison
4. You wrote this code to compute Top-5 accuracy but it always returns zero. What is the bug?
_, pred = outputs.topk(5)
correct = pred.eq(labels).sum().item()
medium
A. Missing dimension argument in topk causes wrong axis selection
B. Labels should be converted to float before comparison
C. topk should be called with k=1 for Top-5 accuracy
D. Using sum().item() returns a tensor, not a number

Solution

  1. Step 1: Check topk usage without dimension

    Calling topk(5) without dim defaults to dim=0, which is incorrect for class predictions along dim=1.
  2. Step 2: Understand effect on predictions and comparison

    Wrong dimension means predicted indices do not align with labels, so pred.eq(labels) never matches, resulting in zero correct.
  3. Final Answer:

    Missing dimension argument in topk causes wrong axis selection -> Option A
  4. Quick Check:

    Always specify dim=1 for class predictions in topk [OK]
Hint: Always specify dim=1 in topk for class dimension [OK]
Common Mistakes:
  • Forgetting dim argument in topk
  • Converting labels unnecessarily
  • Misunderstanding sum().item() output
5. You have a model with 100 classes and want to report Top-1 and Top-5 accuracy on a test set. Which approach best handles the evaluation efficiently and correctly?
hard
A. Use topk(1, dim=1) for Top-5 accuracy and topk(5, dim=1) for Top-1 accuracy
B. Compute Top-1 accuracy by max(dim=0) and Top-5 by topk(5, dim=0) without reshaping labels
C. Calculate Top-5 accuracy by checking if label is in top 5 predictions using a for loop over each sample
D. Use topk(5, dim=1) on model outputs, compare with labels reshaped, then compute Top-1 by checking if label equals top prediction

Solution

  1. Step 1: Understand correct usage of topk for Top-K accuracy

    Top-5 accuracy requires topk(5, dim=1) to get top 5 class indices per sample. Labels must be reshaped to compare with these indices.
  2. Step 2: Compute Top-1 accuracy separately

    Top-1 accuracy is checking if label equals the top prediction (max or topk with k=1). This is done by comparing labels with top prediction indices.
  3. Final Answer:

    Use topk(5, dim=1) on model outputs, compare with labels reshaped, then compute Top-1 by checking if label equals top prediction -> Option D
  4. Quick Check:

    Top-K needs topk(dim=1) and label reshape; Top-1 is top prediction check [OK]
Hint: Top-K needs topk(dim=1) and label reshape; Top-1 is top prediction check [OK]
Common Mistakes:
  • Using wrong dimension in topk
  • Mixing up Top-1 and Top-5 calls
  • Not reshaping labels for comparison
  • Using loops instead of vectorized operations