Bird
Raised Fist0
PyTorchml~3 mins

Why Non-maximum suppression in PyTorch? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if your AI could instantly pick the best answer and ignore the noise around it?

The Scenario

Imagine you are trying to find the best photo of a friend from hundreds of similar pictures. You look at each photo one by one, but many look almost the same, making it hard to pick just one.

The Problem

Manually comparing every photo is slow and confusing. You might accidentally pick multiple almost identical photos or miss the best one because it looks very similar to others. This wastes time and causes mistakes.

The Solution

Non-maximum suppression (NMS) helps by automatically picking the best photo and removing the similar, less good ones. It looks at scores and overlaps, keeping only the strongest choices so you get clear, unique results quickly.

Before vs After
✗ Before
for box in boxes:
    if not overlaps_with_selected(box):
        selected.append(box)
✓ After
selected = torchvision.ops.nms(boxes, scores, iou_threshold)
What It Enables

NMS lets models focus on the most important detections, making object recognition accurate and efficient.

Real Life Example

In self-driving cars, NMS helps the system pick the clearest, most confident detections of pedestrians and other vehicles, avoiding confusion from multiple overlapping boxes.

Key Takeaways

Manual filtering of overlapping detections is slow and error-prone.

Non-maximum suppression automatically keeps the best detections and removes duplicates.

This improves accuracy and speed in object detection tasks.

Practice

(1/5)
1. What is the main purpose of Non-maximum Suppression (NMS) in object detection using PyTorch?
easy
A. To increase the number of detected boxes
B. To resize images before detection
C. To randomly select boxes for training
D. To remove overlapping bounding boxes and keep only the best ones

Solution

  1. Step 1: Understand the role of NMS

    Non-maximum suppression is used to filter out overlapping bounding boxes that represent the same object.
  2. Step 2: Identify the goal of NMS

    It keeps only the bounding box with the highest confidence score among overlapping boxes to avoid duplicate detections.
  3. Final Answer:

    To remove overlapping bounding boxes and keep only the best ones -> Option D
  4. Quick Check:

    NMS purpose = remove overlaps, keep best [OK]
Hint: NMS filters duplicates, keeping only top scoring boxes [OK]
Common Mistakes:
  • Thinking NMS increases detected boxes
  • Confusing NMS with image resizing
  • Assuming NMS randomly selects boxes
2. Which PyTorch function is commonly used to perform Non-maximum Suppression on bounding boxes and scores?
easy
A. torch.sort
B. torch.max
C. torch.ops.torchvision.nms
D. torch.argmax

Solution

  1. Step 1: Identify the PyTorch NMS function

    PyTorch provides a dedicated function called torch.ops.torchvision.nms to perform Non-maximum Suppression.
  2. Step 2: Differentiate from other functions

    torch.max, torch.sort, and torch.argmax do not perform NMS; they serve different purposes like finding max values or sorting tensors.
  3. Final Answer:

    torch.ops.torchvision.nms -> Option C
  4. Quick Check:

    PyTorch NMS function = torch.ops.torchvision.nms [OK]
Hint: Use torch.ops.torchvision.nms for Non-maximum Suppression in PyTorch [OK]
Common Mistakes:
  • Using torch.max instead of torch.ops.torchvision.nms
  • Confusing sorting functions with NMS
  • Trying torch.argmax for NMS
3. Given the following PyTorch code snippet, what will be the output tensor of indices after applying NMS?
import torch
boxes = torch.tensor([[10, 10, 20, 20], [11, 11, 21, 21], [30, 30, 40, 40]], dtype=torch.float)
scores = torch.tensor([0.9, 0.8, 0.7])
iou_threshold = 0.5
indices = torch.ops.torchvision.nms(boxes, scores, iou_threshold)
print(indices.tolist())
medium
A. [0, 2]
B. [1, 2]
C. [0, 1, 2]
D. [2]

Solution

  1. Step 1: Analyze box overlaps and scores

    Boxes 0 and 1 overlap with IoU > 0.5, box 2 is separate. Box 0 has higher score (0.9) than box 1 (0.8).
  2. Step 2: Apply NMS logic

    NMS keeps box 0, removes box 1 due to overlap and lower score, and keeps box 2 as it does not overlap.
  3. Final Answer:

    [0, 2] -> Option A
  4. Quick Check:

    Keep highest score boxes without high overlap = [0, 2] [OK]
Hint: Keep highest score boxes, remove overlapping lower scores [OK]
Common Mistakes:
  • Keeping all boxes ignoring overlap
  • Removing box 0 instead of box 1
  • Keeping only one box
4. Identify the error in this PyTorch NMS usage and select the correct fix:
import torch
boxes = torch.tensor([[0, 0, 10, 10], [1, 1, 11, 11]], dtype=torch.float)
scores = torch.tensor([0.5, 0.6])
iou_threshold = 0.3
indices = torch.nms(boxes, scores, iou_threshold)
print(indices)
medium
A. Set iou_threshold to 1.0
B. Use torch.ops.torchvision.nms instead of torch.nms
C. Change boxes dtype to int
D. Sort scores before calling nms

Solution

  1. Step 1: Check function availability

    torch.nms is not a direct PyTorch function; NMS is accessed via torchvision ops as torch.ops.torchvision.nms.
  2. Step 2: Correct function call

    Replacing torch.nms with torch.ops.torchvision.nms fixes the error and runs NMS correctly.
  3. Final Answer:

    Use torch.ops.torchvision.nms instead of torch.nms -> Option B
  4. Quick Check:

    Correct NMS call = torch.ops.torchvision.nms [OK]
Hint: Use torchvision's nms via torch.ops.torchvision.nms [OK]
Common Mistakes:
  • Calling torch.nms directly
  • Changing box dtype unnecessarily
  • Adjusting IoU threshold without fixing function
5. You have detected multiple overlapping boxes with scores: [0.95, 0.9, 0.85, 0.6]. If you apply Non-maximum Suppression with a very low IoU threshold (e.g., 0.1), what is the expected effect on the number of boxes kept?
hard
A. Most boxes will be removed because even slight overlaps are suppressed
B. All boxes will be kept because the threshold is low
C. Only the box with the lowest score will be kept
D. Boxes will be randomly removed regardless of overlap

Solution

  1. Step 1: Understand IoU threshold meaning

    A low IoU threshold means boxes with even small overlaps are considered duplicates and suppressed.
  2. Step 2: Predict effect on boxes

    Because boxes overlap slightly, most will be removed except the highest scoring box, reducing the number kept.
  3. Final Answer:

    Most boxes will be removed because even slight overlaps are suppressed -> Option A
  4. Quick Check:

    Low IoU threshold = strict filtering = fewer boxes [OK]
Hint: Lower IoU threshold means stricter overlap removal [OK]
Common Mistakes:
  • Thinking low threshold keeps more boxes
  • Assuming random removal
  • Believing lowest score box is kept
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard