위의 그림에서 좌표(250, 250)의 Anchor boxes 중 (s=0.75, r=1)가 개를 잘 덮는다고 표현합니다.
그러면 컴퓨터는 잘 덮는다는 것을 어떻게 판단할까요??
바로, IoU를 통해 판별하게 됩니다.
IoU란 합쳐진 곳 중 겹치는 곳을 의미하는 뜻이며,
2개의 bounding box의 유사성을 합친 전체 면적에서 겹치는 면적의 비율을 통해 측정합니다.
def box_iou(boxes1, boxes2):
"""Compute IOU between two sets of boxes of shape (N,4) and (M,4)."""
# Compute box areas
box_area = lambda boxes: ((boxes[:, 2] - boxes[:, 0]) *
(boxes[:, 3] - boxes[:, 1]))
area1 = box_area(boxes1)
area2 = box_area(boxes2)
lt = torch.max(boxes1[:, None, :2], boxes2[:, :2]) # [N,M,2]
rb = torch.min(boxes1[:, None, 2:], boxes2[:, 2:]) # [N,M,2]
wh = (rb - lt).clamp(min=0) # [N,M,2]
inter = wh[:, :, 0] * wh[:, :, 1] # [N,M]
unioun = area1[:, None] + area2 - inter
return inter / unioun
함수는 2개의 box의 IoU를 출력하는 함수입니다.
IoU의 범위는 [0, 1]이며, 1이면 2개의 bounding box가 일치한다는 의미이고
0이면 2개의 bounding box가 관련이 없다는 것입니다.
관습적으로 IoU가 0.5가 넘으면 맞다고 판단을 하게 됩니다.
ref. Dive into Deep Learning, Aston Zhang and Zachary C. Lipton and Mu Li and Alexander J. Smola, 2020
'인공지능 > DeepLearning' 카테고리의 다른 글
[Computer Vision] Single Shot Multi box Detection (SSD) (0) | 2021.01.20 |
---|---|
[Computer Vision] Multi scale Object Detection (0) | 2021.01.20 |
[Computer Vision] Anchor Boxes(앵커 박스) - 2 (0) | 2021.01.19 |
[Computer Vision] Anchor Boxes(앵커 박스) - 1 (0) | 2021.01.19 |
[Computer Vision] Object Detection and Bounding Boxes (0) | 2021.01.14 |