UNPKG

@vladmandic/face-api

Version:

FaceAPI: AI-powered Face Detection & Rotation Tracking, Face Description & Recognition, Age & Gender & Emotion Prediction for Browser and NodeJS using TensorFlow/JS

40 lines (30 loc) 915 B
import { Box } from '../classes/Box'; import { iou } from './iou'; export function nonMaxSuppression( boxes: Box[], scores: number[], iouThreshold: number, isIOU = true, ): number[] { let indicesSortedByScore = scores .map((score, boxIndex) => ({ score, boxIndex })) .sort((c1, c2) => c1.score - c2.score) .map((c) => c.boxIndex); const pick: number[] = []; while (indicesSortedByScore.length > 0) { const curr = indicesSortedByScore.pop() as number; pick.push(curr); const indices = indicesSortedByScore; const outputs: number[] = []; for (let i = 0; i < indices.length; i++) { const idx = indices[i]; const currBox = boxes[curr]; const idxBox = boxes[idx]; outputs.push(iou(currBox, idxBox, isIOU)); } indicesSortedByScore = indicesSortedByScore.filter( (_, j) => outputs[j] <= iouThreshold, ); } return pick; }