PyTorch로 배우는 이미지 딥러닝
Michal Oleszak
Machine Learning Engineer



bbox1 = [50, 50, 150, 150] bbox2 = [100, 100, 200, 200]bbox1 = torch.tensor(bbox1).unsqueeze(0) bbox2 = torch.tensor(bbox2).unsqueeze(0)
from torchvision.ops import box_iou
iou = box_iou(bbox1, bbox2)
print(iou)
tensor([[0.1429]])

model.eval() with torch.no_grad():output = model(input_image)print(output)
[{'boxes': tensor([[ 42.8553, 271.9481, 180.6003, 346.7082],
[191.6016, 80.4759, 247.8009, 387.5475], ....),
'scores': tensor([1.0000, 1.0000, 0.9998, ... ]),
'labels': tensor([18, 1, 20, 18, 18, 18 ...])
}]
boxes = output[0]["boxes"]scores = output[0]["scores"]


비최대 억제: 가장 관련성 높은 바운딩 박스를 선택하는 일반 기법
비최대: 객체일 확률(신뢰도)이 낮은 박스 제거
억제: IoU가 낮은 박스 제거
from torchvision.ops import nmsbox_indices = nms( boxes=boxes, scores=scores, iou_threshold=0.5, ) print(box_indices)
tensor([ 0, 1, 2, 8])
filtered_boxes = boxes[box_indices]
boxes: 형태 [N, 4]의 바운딩 박스 좌표 텐서
scores: 형태 [N]의 각 박스 신뢰도 점수 텐서
iou_threshold: 0.0~1.0 사이 임계값
출력: 필터링된 박스의 인덱스
PyTorch로 배우는 이미지 딥러닝