Bird
Raised Fist0
PyTorchml~20 mins

Non-maximum suppression in PyTorch - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
NMS Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of PyTorch NMS with overlapping boxes
Given the following bounding boxes and scores, what indices does PyTorch's non_max_suppression (NMS) return?
PyTorch
import torch
from torchvision.ops import nms

boxes = torch.tensor([[10, 10, 20, 20], [11, 11, 21, 21], [30, 30, 40, 40]], dtype=torch.float32)
scores = torch.tensor([0.9, 0.8, 0.7])
iou_threshold = 0.5

keep_indices = nms(boxes, scores, iou_threshold)
print(keep_indices.tolist())
A[0, 2]
B[1, 2]
C[0, 1, 2]
D[2]
Attempts:
2 left
💡 Hint
NMS keeps the highest scoring box and removes boxes with IoU above threshold.
🧠 Conceptual
intermediate
1:30remaining
Purpose of Non-Maximum Suppression in Object Detection
What is the main purpose of applying Non-Maximum Suppression (NMS) in object detection pipelines?
ATo remove duplicate detections of the same object by keeping only the highest scoring bounding box.
BTo increase the number of detected objects by adding more bounding boxes.
CTo randomly select bounding boxes to reduce computation.
DTo resize bounding boxes to a fixed size.
Attempts:
2 left
💡 Hint
Think about why multiple boxes might appear around the same object.
❓ Hyperparameter
advanced
1:30remaining
Effect of IoU Threshold on NMS Output
If you increase the IoU threshold parameter in NMS from 0.3 to 0.7, what is the expected effect on the number of bounding boxes kept?
AAll boxes will be removed.
BFewer boxes will be kept because the suppression is more strict.
CThe number of boxes kept will not change.
DMore boxes will be kept because the suppression is less strict.
Attempts:
2 left
💡 Hint
Higher IoU threshold means boxes need to overlap more to be suppressed.
🔧 Debug
advanced
2:00remaining
Identify the error in this NMS usage code
What error will this PyTorch code raise when running NMS?
PyTorch
import torch
from torchvision.ops import nms

boxes = torch.tensor([[10, 10, 20, 20], [15, 15, 25, 25]])
scores = [0.9, 0.8]
iou_threshold = 0.5

keep = nms(boxes, scores, iou_threshold)
print(keep)
ANo error, code runs fine.
BValueError because boxes have wrong shape.
CTypeError because scores is a list, not a tensor.
DRuntimeError because iou_threshold is not a tensor.
Attempts:
2 left
💡 Hint
Check the data types required by torchvision.ops.nms.
❓ Model Choice
expert
2:30remaining
Choosing NMS variant for crowded scenes
In a crowded scene with many overlapping objects, which NMS variant is best to reduce missed detections while controlling duplicates?
ARandom NMS, to randomly keep boxes and reduce duplicates.
BSoft-NMS, because it reduces scores of overlapping boxes instead of removing them outright.
CNo NMS, to keep all detections regardless of overlap.
DStandard NMS, because it strictly removes all overlapping boxes above threshold.
Attempts:
2 left
💡 Hint
Consider methods that soften suppression to keep more true positives.

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