aboutsummaryrefslogtreecommitdiffstats
path: root/anime-face-detector/nms/cpu_nms.pyx
diff options
context:
space:
mode:
authorcarp <25677564+carp@users.noreply.github.com>2020-07-13 13:40:11 -0400
committercarp <25677564+carp@users.noreply.github.com>2020-07-13 13:40:11 -0400
commit50e411320563894d411b0c37d37cb16105a908af (patch)
tree01e1a43e11f9e51cf6a46d9a3d40814b76ad6d7b /anime-face-detector/nms/cpu_nms.pyx
parentf457064bb15a00010959e664492d87f3bfe82537 (diff)
downloadyaoi-communism-50e411320563894d411b0c37d37cb16105a908af.tar.gz
yaoi-communism-50e411320563894d411b0c37d37cb16105a908af.zip
removing submodule
Diffstat (limited to 'anime-face-detector/nms/cpu_nms.pyx')
-rw-r--r--anime-face-detector/nms/cpu_nms.pyx68
1 files changed, 0 insertions, 68 deletions
diff --git a/anime-face-detector/nms/cpu_nms.pyx b/anime-face-detector/nms/cpu_nms.pyx
deleted file mode 100644
index 71fbab1..0000000
--- a/anime-face-detector/nms/cpu_nms.pyx
+++ /dev/null
@@ -1,68 +0,0 @@
-# --------------------------------------------------------
-# Fast R-CNN
-# Copyright (c) 2015 Microsoft
-# Licensed under The MIT License [see LICENSE for details]
-# Written by Ross Girshick
-# --------------------------------------------------------
-
-import numpy as np
-cimport numpy as np
-
-cdef inline np.float32_t max(np.float32_t a, np.float32_t b):
- return a if a >= b else b
-
-cdef inline np.float32_t min(np.float32_t a, np.float32_t b):
- return a if a <= b else b
-
-def cpu_nms(np.ndarray[np.float32_t, ndim=2] dets, np.float thresh):
- cdef np.ndarray[np.float32_t, ndim=1] x1 = dets[:, 0]
- cdef np.ndarray[np.float32_t, ndim=1] y1 = dets[:, 1]
- cdef np.ndarray[np.float32_t, ndim=1] x2 = dets[:, 2]
- cdef np.ndarray[np.float32_t, ndim=1] y2 = dets[:, 3]
- cdef np.ndarray[np.float32_t, ndim=1] scores = dets[:, 4]
-
- cdef np.ndarray[np.float32_t, ndim=1] areas = (x2 - x1 + 1) * (y2 - y1 + 1)
- cdef np.ndarray[np.int64_t, ndim=1] order = scores.argsort()[::-1]
-
- cdef int ndets = dets.shape[0]
- cdef np.ndarray[np.int_t, ndim=1] suppressed = \
- np.zeros((ndets), dtype=np.int)
-
- # nominal indices
- cdef int _i, _j
- # sorted indices
- cdef int i, j
- # temp variables for box i's (the box currently under consideration)
- cdef np.float32_t ix1, iy1, ix2, iy2, iarea
- # variables for computing overlap with box j (lower scoring box)
- cdef np.float32_t xx1, yy1, xx2, yy2
- cdef np.float32_t w, h
- cdef np.float32_t inter, ovr
-
- keep = []
- for _i in range(ndets):
- i = order[_i]
- if suppressed[i] == 1:
- continue
- keep.append(i)
- ix1 = x1[i]
- iy1 = y1[i]
- ix2 = x2[i]
- iy2 = y2[i]
- iarea = areas[i]
- for _j in range(_i + 1, ndets):
- j = order[_j]
- if suppressed[j] == 1:
- continue
- xx1 = max(ix1, x1[j])
- yy1 = max(iy1, y1[j])
- xx2 = min(ix2, x2[j])
- yy2 = min(iy2, y2[j])
- w = max(0.0, xx2 - xx1 + 1)
- h = max(0.0, yy2 - yy1 + 1)
- inter = w * h
- ovr = inter / (iarea + areas[j] - inter)
- if ovr >= thresh:
- suppressed[j] = 1
-
- return keep