nonMaxSuppression.js 1.2 KB

123456789101112131415161718192021222324252627282930
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var iou_1 = require("./iou");
  4. function nonMaxSuppression(boxes, scores, iouThreshold, isIOU) {
  5. if (isIOU === void 0) { isIOU = true; }
  6. var indicesSortedByScore = scores
  7. .map(function (score, boxIndex) { return ({ score: score, boxIndex: boxIndex }); })
  8. .sort(function (c1, c2) { return c1.score - c2.score; })
  9. .map(function (c) { return c.boxIndex; });
  10. var pick = [];
  11. var _loop_1 = function () {
  12. var curr = indicesSortedByScore.pop();
  13. pick.push(curr);
  14. var indices = indicesSortedByScore;
  15. var outputs = [];
  16. for (var i = 0; i < indices.length; i++) {
  17. var idx = indices[i];
  18. var currBox = boxes[curr];
  19. var idxBox = boxes[idx];
  20. outputs.push(iou_1.iou(currBox, idxBox, isIOU));
  21. }
  22. indicesSortedByScore = indicesSortedByScore.filter(function (_, j) { return outputs[j] <= iouThreshold; });
  23. };
  24. while (indicesSortedByScore.length > 0) {
  25. _loop_1();
  26. }
  27. return pick;
  28. }
  29. exports.nonMaxSuppression = nonMaxSuppression;
  30. //# sourceMappingURL=nonMaxSuppression.js.map