2D Object Detection | pred 와 gt pair 찾기

2023. 11. 8. 00:23DL

2D 객체 검출(2D object detection)에서 예측(prediction)과 실제 탐지 결과(ground truth, GT)를 매칭하는 일반적인 방법 중 하나는 최소 거리를 기반으로 하는 것입니다. 아래는 Python을 사용한 예제 코드로, 예측된 객체와 GT 객체 간의 최소 거리를 계산하여 일치하는 것을 찾는 방법을 보여줍니다.

import numpy as np

# 가상의 예측(prediction) 및 실제 탐지 결과(ground truth)를 생성합니다.
predictions = [(1, 2), (4, 5), (7, 8)]
ground_truth = [(2, 3), (6, 7), (8, 9)]

# 일치 여부를 저장할 변수 초기화
matches = []

for pred in predictions:
    min_distance = float('inf')
    matched_gt = None

    for gt in ground_truth:
        # 두 객체 간의 거리 계산
        distance = np.linalg.norm(np.array(pred) - np.array(gt))

        # 현재 최소 거리보다 작으면 업데이트
        if distance < min_distance:
            min_distance = distance
            matched_gt = gt

    # 최소 거리가 일정 임계값 이하인 경우, 예측과 GT를 일치시킴
    if min_distance < 2.0:  # 예제에서 임계값을 2.0으로 설정
        matches.append((pred, matched_gt))

print("매칭된 예측과 GT:", matches)

위 코드에서 matches는 예측된 객체와 GT 객체 간의 일치하는 것을 저장하는 리스트입니다. 먼저 모든 예측과 GT 객체 간의 거리를 계산하고, 거리가 일정 임계값 (이 예제에서는 2.0) 이하인 경우에 일치하는 것으로 간주합니다.

실제로 사용하는 경우, 데이터 형식과 임계값을 예제와 일치하도록 조정해야 합니다. 또한 이 코드는 간단한 매칭 알고리즘을 보여주기 위한 예제일 뿐이며, 더 정교한 매칭 방법이 필요할 수 있습니다.