81 lines
4.3 KiB
JavaScript
81 lines
4.3 KiB
JavaScript
import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';
|
|
import { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';
|
|
import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';
|
|
import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';
|
|
import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';
|
|
import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';
|
|
import { TinyYolov2 } from '../tinyYolov2';
|
|
export const nets = {
|
|
tinyFaceDetector: new TinyFaceDetector(),
|
|
tinyYolov2: new TinyYolov2(),
|
|
faceLandmark68Net: new FaceLandmark68Net(),
|
|
faceLandmark68TinyNet: new FaceLandmark68TinyNet(),
|
|
faceRecognitionNet: new FaceRecognitionNet(),
|
|
faceExpressionNet: new FaceExpressionNet(),
|
|
ageGenderNet: new AgeGenderNet()
|
|
};
|
|
/**
|
|
* Attempts to detect all faces in an image using the Tiny Face Detector.
|
|
*
|
|
* @param input The input image.
|
|
* @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).
|
|
* @returns Bounding box of each face with score.
|
|
*/
|
|
export const tinyFaceDetector = (input, options) => nets.tinyFaceDetector.locateFaces(input, options);
|
|
/**
|
|
* Detects the 68 point face landmark positions of the face shown in an image.
|
|
*
|
|
* @param inputs The face image extracted from the bounding box of a face. Can
|
|
* also be an array of input images, which will be batch processed.
|
|
* @returns 68 point face landmarks or array thereof in case of batch input.
|
|
*/
|
|
export const detectFaceLandmarks = (input) => nets.faceLandmark68Net.detectLandmarks(input);
|
|
/**
|
|
* Detects the 68 point face landmark positions of the face shown in an image
|
|
* using a tinier version of the 68 point face landmark model, which is slightly
|
|
* faster at inference, but also slightly less accurate.
|
|
*
|
|
* @param inputs The face image extracted from the bounding box of a face. Can
|
|
* also be an array of input images, which will be batch processed.
|
|
* @returns 68 point face landmarks or array thereof in case of batch input.
|
|
*/
|
|
export const detectFaceLandmarksTiny = (input) => nets.faceLandmark68TinyNet.detectLandmarks(input);
|
|
/**
|
|
* Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,
|
|
* which uniquely represents the features of that persons face. The computed face descriptor can
|
|
* be used to measure the similarity between faces, by computing the euclidean distance of two
|
|
* face descriptors.
|
|
*
|
|
* @param inputs The face image extracted from the aligned bounding box of a face. Can
|
|
* also be an array of input images, which will be batch processed.
|
|
* @returns Face descriptor with 128 entries or array thereof in case of batch input.
|
|
*/
|
|
export const computeFaceDescriptor = (input) => nets.faceRecognitionNet.computeFaceDescriptor(input);
|
|
/**
|
|
* Recognizes the facial expressions from a face image.
|
|
*
|
|
* @param inputs The face image extracted from the bounding box of a face. Can
|
|
* also be an array of input images, which will be batch processed.
|
|
* @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.
|
|
*/
|
|
export const recognizeFaceExpressions = (input) => nets.faceExpressionNet.predictExpressions(input);
|
|
/**
|
|
* Predicts age and gender from a face image.
|
|
*
|
|
* @param inputs The face image extracted from the bounding box of a face. Can
|
|
* also be an array of input images, which will be batch processed.
|
|
* @returns Predictions with age, gender and gender probability or array thereof in case of batch input.
|
|
*/
|
|
export const predictAgeAndGender = (input) => nets.ageGenderNet.predictAgeAndGender(input);
|
|
export const loadTinyFaceDetectorModel = (url) => nets.tinyFaceDetector.load(url);
|
|
export const loadTinyYolov2Model = (url) => nets.tinyYolov2.load(url);
|
|
export const loadFaceLandmarkModel = (url) => nets.faceLandmark68Net.load(url);
|
|
export const loadFaceLandmarkTinyModel = (url) => nets.faceLandmark68TinyNet.load(url);
|
|
export const loadFaceRecognitionModel = (url) => nets.faceRecognitionNet.load(url);
|
|
export const loadFaceExpressionModel = (url) => nets.faceExpressionNet.load(url);
|
|
export const loadAgeGenderModel = (url) => nets.ageGenderNet.load(url);
|
|
// backward compatibility
|
|
export const loadFaceDetectionModel = loadTinyFaceDetectorModel;
|
|
export const locateFaces = TinyFaceDetector;
|
|
export const detectLandmarks = detectFaceLandmarks;
|
|
//# sourceMappingURL=nets.js.map
|