IoU 코드 구하기
def iou(boxes1, boxes2):
"""Computes IoU overlaps between two sets of boxes.
boxes1, boxes2: [N, (y1, x1, y2, x2)].
"""
# 1. Tile boxes2 and repeat boxes1. This allows us to compare
# every boxes1 against every boxes2 without loops.
# TF doesn't have an equivalent to np.repeat() so simulate it
# using tf.tile() and tf.reshape().
b1 = np.repeat(boxes1, np.shape(boxes2)[0], axis=0)
b2 = np.tile(boxes2, [np.shape(boxes1)[0], 1])
# 2. Compute intersections
b1_y1, b1_x1, b1_y2, b1_x2 = np.split(b1, 4, axis=1)
b2_y1, b2_x1, b2_y2, b2_x2 = np.split(b2, 4, axis=1)
y1 = np.maximum(b1_y1, b2_y1)
x1 = np.maximum(b1_x1, b2_x1)
y2 = np.minimum(b1_y2, b2_y2)
x2 = np.minimum(b1_x2, b2_x2)
intersection = np.maximum(x2 - x1, 0) * np.maximum(y2 - y1, 0)
# 3. Compute unions
b1_area = (b1_y2 - b1_y1) * (b1_x2 - b1_x1)
b2_area = (b2_y2 - b2_y1) * (b2_x2 - b2_x1)
union = b1_area + b2_area - intersection
# 4. Compute IoU and reshape to [boxes1, boxes2]
iou = intersection / union
overlaps = np.reshape(iou, [np.shape(boxes1)[0], np.shape(boxes2)[0]])
return overlaps
roi_iou_max = tf.reduce_max(overlaps, axis=1)
첫 번째 단계는 먼저 양자 형상을 통일시켜 하나하나 비교하기 편리하도록 한다.
boxes1 = [[0,0,3,3], [1,1,5,5], [9,9,11,11]]
boxes2 = [[0,0,2,2], [1,1,3,3], [4,4,6,6], [6,6,9,9], [11,11,13,13]]
[[ 0 0 3 3]
[ 0 0 3 3]
[ 0 0 3 3]
[ 0 0 3 3]
[ 0 0 3 3]
[ 1 1 5 5]
[ 1 1 5 5]
[ 1 1 5 5]
[ 1 1 5 5]
[ 1 1 5 5]
[ 9 9 11 11]
[ 9 9 11 11]
[ 9 9 11 11]
[ 9 9 11 11]
[ 9 9 11 11]]
[[ 0 0 2 2]
[ 1 1 3 3]
[ 4 4 6 6]
[ 6 6 9 9]
[11 11 13 13]
[ 0 0 2 2]
[ 1 1 3 3]
[ 4 4 6 6]
[ 6 6 9 9]
[11 11 13 13]
[ 0 0 2 2]
[ 1 1 3 3]
[ 4 4 6 6]
[ 6 6 9 9]
[11 11 13 13]]
이후의 교집합, 병집합, IoU는 모두 15x1의 행렬이고 마지막으로reshape는 3x5의 즉 [np.shape(boxes1)[0],np.shape(boxes2)[0]]는 boxes1의 각 항목을 하나하나 boxes2의 각 항목과 IoU를 비교하는 것을 의미하며, boxes1에서 같은 box가 얻은 결과는 같은 줄에 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.