sanitize_bounding_boxes computes the wrong height for rotated boxes
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 88/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Ambito
- computer-vision
Direzione di ricerca
Inizia in torchvision/transforms/v2/functional/_misc.py, in _get_sanitize_bounding_boxes_mask, quindi esamina i test di sanitize esistenti. Esegui i test pertinenti e aggiungi una copertura di regressione per i box ruotati CXCYWHR, XYWHR e XYXYXYXY, preservando il comportamento esistente di XYXY.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
🐛 Describe the bug
sanitize_bounding_boxes (and SanitizeBoundingBoxes) don't filter rotated boxes correctly. Thin boxes survive min_size, and min_area sees an inflated area.
Looks like an off-by-one in _get_sanitize_bounding_boxes_mask in torchvision/transforms/v2/functional/_misc.py. After converting to XYXYXYXY it computes:
dx23 = bounding_boxes[..., 3] - bounding_boxes[..., 5] # y2 - y3
dy23 = bounding_boxes[..., 4] - bounding_boxes[..., 6] # x3 - x4
so the "height" mixes coordinates from different corners (for an axis-aligned box it ends up being the diagonal). It should be indices 2/4 and 3/5.
Repro:
import torch
from torchvision import tv_tensors
from torchvision.transforms.v2 import functional as F
boxes = tv_tensors.BoundingBoxes(
torch.tensor([[20, 20, 10, 0.5, 0], [20, 20, 10, 0.5, 30], [20, 20, 10, 10, 0]]),
format="CXCYWHR", canvas_size=(40, 40),
)
print(F.sanitize_bounding_boxes(boxes, min_size=1)[1])
# tensor([True, True, True]), expected tensor([False, False, True])
xyxy = tv_tensors.BoundingBoxes(torch.tensor([[15, 19.75, 25, 20.25]]), format="XYXY", canvas_size=(40, 40))
print(F.sanitize_bounding_boxes(xyxy, min_size=1)[1])
# tensor([False]), same box as the first one above, correctly removed
It hits CXCYWHR, XYWHR and XYXYXYXY. The existing sanitize tests only use XYXY, which is probably why it slipped through. Happy to send a PR with the fix and a test.
Versions
torch 2.14.0+cpu, torchvision 0.29.0+cpu, Python 3.14, Linux. The same code is on main (6da25ff).
- Lingua principale
- Python
- Stelle
- 18k
- Fork
- 7.3k
- Merge medio
- 4h 56m
- PR unite (30g)
- 9
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di pytorch/vision
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
vision_stable.cpp gets hipified into a duplicate copy under ROCm, causing "multiple definition of vision::cuda_version()"Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertamodule: rocm
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Clip samplers crash on iteration when no video clips are availableForse già presa @raunakpandey1 l’ha presa 6 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
complete_box_iou_loss / complete_box_iou: NaN gradients for zero-height boxes, NaN for point boxesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Support PIL images in v2.GaussianNoiseForse già presa @YeonwooSung l’ha presa 64 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
pytorch/vision#9652 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di pytorch/vision
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 91/100
marimo-team/marimo#11768 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
btclib-org/btclib-node#2358 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 87/100
I maintainer di solito rispondono entro 7 giorni
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
MTSWebServices/RecTools#330 ·