bharatsingh430 / soft-nms

Object Detection
778 stars 226 forks source link

Whether I can use this code on windows7/10? #8

Open xdsonglinliu opened 7 years ago

xdsonglinliu commented 7 years ago

Wonderful work. My platform is Windows 10+caffe+py-R-FCN and it works well. In order to use soft-nms, I added the code in nms_wrapper.py, cpu_nms.py and config.py following your guide. Then compile the lib folder. But when I test the caffemodel using soft_nms, I gotted error below. 'ImportError: cannot import name cpu_soft_nms' Is there anyone has test soft-nms successfully on Windows?

niuniu111 commented 6 years ago

Hello, I was also executed on windows. I haven't succeeded yet. If you solve it, can you give me some experience? Thank you.

bharatsingh430 commented 6 years ago

you can use the python code

def rescore(overlap, scores, thresh, type='gaussian'): assert overlap.shape[0] == scores.shape[0] if type == 'linear': inds = np.where(overlap >= thresh)[0] scores[inds] = scores[inds] (1 - overlap[inds]) else: scores = scores np.exp(- overlap**2 / thresh) return scores

def soft_nms(dets, thresh, max_dets): if dets.shape[0] == 0: return np.zeros((0, 5)) 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]
scores = scores[order]

if max_dets == -1:
    max_dets = order.size

keep = np.zeros(max_dets, dtype=np.intp)
keep_cnt = 0

while order.size > 0 and keep_cnt < max_dets:
    i = order[0]
    dets[i, 4] = scores[0]
    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)

    order = order[1:]
    scores = rescore(ovr, scores[1:], thresh)

    tmp = scores.argsort()[::-1]
    order = order[tmp]
    scores = scores[tmp]

    keep[keep_cnt] = i
    keep_cnt += 1

keep = keep[:keep_cnt]
dets = dets[keep, :]
return dets
niuniu111 commented 6 years ago

Thank you for your reply. I have another question. Max_dets = max (dets)? @bharatsingh430

bharatsingh430 commented 6 years ago

Should be length, check the msra repo, I pasted from there

On Mon, May 21, 2018 at 9:28 AM niuniu111 notifications@github.com wrote:

Thank you for your reply. I have another question. Max_dets = max (dets)? @bharatsingh430 https://github.com/bharatsingh430

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/bharatsingh430/soft-nms/issues/8#issuecomment-390653722, or mute the thread https://github.com/notifications/unsubscribe-auth/AFpAgq3BAuDr7bpNCaDlIPLQ1D-dHD-Qks5t0sERgaJpZM4OnizH .

-- Regards, Bharat

lofyol commented 4 years ago

Thank you for your reply. I have another question. Max_dets = max (dets)? @bharatsingh430

请问你解决了吗?Have you solved it yet?