#yolov4 #non-maximum-suppression
Вопрос:
Я тренирую свои собственные наборы данных, используя Yolov4 от Alexeyab, но у меня есть несколько ограничивающих рамок, как на этом изображении ниже.
Я погуглил и поискал информацию о NMS(не максимальное подавление), но все, что я могу найти,-это как написать код в pytorch или tf…. я новичок в обнаружении объектов, поэтому понятия не имею, как это реализовать. Все, что я хотел сделать, это просто сделать только одну ограничивающую рамку для одного класса.
Пожалуйста, помогите мне. Спасибо.
Ответ №1:
Я думаю, что NMS-это ez для кода, вы могли бы увидеть объяснение здесь. Эти коды ниже я вижу в fast-rcnn для каждого класса.
import numpy as np
def nms(dets, thresh):
x1 = dets[:, 0]
y1 = dets[:, 1]
x2 = dets[:, 2]
y2 = dets[:, 3]
scores = dets[:, 4]
areas = (x2 - x1 1) * (y2 - y1 1)
order = scores.argsort()[::-1]
keep = []
while order.size > 0:
i = order[0]
keep.append(i)
xx1 = np.maximum(x1[i], x1[order[1:]])
yy1 = np.maximum(y1[i], y1[order[1:]])
xx2 = np.minimum(x2[i], x2[order[1:]])
yy2 = np.minimum(y2[i], y2[order[1:]])
w = np.maximum(0.0, xx2 - xx1 1)
h = np.maximum(0.0, yy2 - yy1 1)
inter = w * h
ovr = inter / (areas[i] areas[order[1:]] - inter)
inds = np.where(ovr <= thresh)[0]
order = order[inds 1]
return keep
Комментарии:
1. Что означает dets?
2. @Mogarbobac Обнаружены коробки