Coursera не принимает разумно правильный код - PullRequest
0 голосов
/ 13 июня 2019

Coursera не передает этот код IoU как правильный, хотя и дает правильные результаты.Помогите, пожалуйста,

РАСПРЕДЕЛЕННАЯ ФУНКЦИЯ: iou

def iou (box1, box2): "" "Реализация пересечения по объединению (IoU) между box1 и box2

Arguments:
box1 -- first box, list object with coordinates (x1, y1, x2, y2)
box2 -- second box, list object with coordinates (x1, y1, x2, y2)
"""

# Calculate the (y1, x1, y2, x2) coordinates of the intersection of box1 and box2. Calculate its Area.
### START CODE HERE ### (≈ 5 lines)
xi1 = np.max([box1[0], box2[0]])
yi1 = np.max([box1[1], box2[1]])
xi2 = np.min([box1[2], box2[2]])
yi2 = np.min([box1[3], box2[3]])
inter_area = (yi2 - yi1) * (xi2 - xi1)
### END CODE HERE ###    

# Calculate the Union area by using Formula: Union(A,B) = A + B - Inter(A,B)
### START CODE HERE ### (≈ 3 lines)
box1_area = max(box1[3] - box1[1],0) * max(box1[2] - box1[0],0)
box2_area = max(box2[3] - box2[1],0) * max(box2[2] - box2[0],0)
union_area = box1_area + box2_area - inter_area
### END CODE HERE ###

# compute the IoU
### START CODE HERE ### (≈ 1 line)
iou = inter_area / union_area
### END CODE HERE ###

return iou

1 Ответ

0 голосов
/ 16 июля 2019

Чтобы вычислить площадь пересечения, необходимо убедиться, что высота и ширина пересечения положительны, в противном случае область пересечения должна быть нулевой. Используйте max (высота, 0) и max (ширина, 0). вам нужно изменить свой код как inter_area = max ((xi2-xi1), 0) * max ((yi2-yi1), 0)

...