Bird
Raised Fist0
PyTorchml~10 mins

Non-maximum suppression in PyTorch - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the PyTorch function for non-maximum suppression.

PyTorch
from torchvision.ops import [1]
Drag options to blanks, or click blank then click option'
Arelu
Bnms
Csoftmax
Ddropout
Attempts:
3 left
💡 Hint
Common Mistakes
Importing unrelated functions like relu or softmax.
Trying to import from torch.nn instead of torchvision.ops.
2fill in blank
medium

Complete the code to call the non-maximum suppression function with boxes, scores, and threshold.

PyTorch
keep_indices = nms(boxes, scores, [1])
Drag options to blanks, or click blank then click option'
A-0.5
B1.5
C0.5
D2.0
Attempts:
3 left
💡 Hint
Common Mistakes
Using values greater than 1 or negative values for the threshold.
Confusing threshold with score values.
3fill in blank
hard

Fix the error in the code by choosing the correct tensor device for boxes and scores before calling nms.

PyTorch
boxes = boxes.to([1])
scores = scores.to([1])
keep = nms(boxes, scores, 0.5)
Drag options to blanks, or click blank then click option'
A'cuda'
B'memory'
C'disk'
D'cpu'
Attempts:
3 left
💡 Hint
Common Mistakes
Using invalid device names like 'disk' or 'memory'.
Not moving tensors to the same device before calling nms.
4fill in blank
hard

Fill both blanks to create a dictionary of filtered boxes and scores after applying nms.

PyTorch
filtered = {
    'boxes': boxes[[1]],
    'scores': scores[[2]]
}
Drag options to blanks, or click blank then click option'
Akeep
Bindices
Crange(len(boxes))
Dtorch.arange(len(scores))
Attempts:
3 left
💡 Hint
Common Mistakes
Using unrelated variables like 'indices' or ranges that do not correspond to nms output.
Indexing boxes and scores with different variables.
5fill in blank
hard

Fill all three blanks to compute the final selected boxes and their labels after nms.

PyTorch
keep = nms([1], [2], [3])
selected_boxes = boxes[keep]
selected_labels = labels[keep]
Drag options to blanks, or click blank then click option'
Aboxes
Bscores
C0.4
D0.9
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping boxes and scores arguments.
Using threshold values outside the 0-1 range.

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