Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
xdsonglinliu opened this issue Jul 30, 2017 · 5 comments
Open

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

xdsonglinliu opened this issue Jul 30, 2017 · 5 comments

Comments

@xdsonglinliu
Copy link

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
Copy link

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
Copy link
Owner

bharatsingh430 commented May 21, 2018

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
Copy link

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

@bharatsingh430
Copy link
Owner

bharatsingh430 commented May 21, 2018 via email

@lofyol
Copy link

lofyol commented Dec 12, 2019

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants