facezk-core
Version:
ZKP-AI Proof of Humanity: Live Selfie Check with Biometric Template Extraction and Fuzzy Hashing
217 lines • 5.43 kB
TypeScript
/**
* Human Library Integration
* ZK-AI Proof of Humanity: Real Face Detection and Analysis
*/
import { Human } from '@vladmandic/human';
import type { BiometricTemplate } from '../types';
/** Enhanced face detection result with all Human features */
export interface HumanFaceResult {
/** Face detection result */
face: any;
/** Face mesh points (468 points) */
mesh: number[][];
/** Face bounding box */
box: [number, number, number, number];
/** Confidence score */
confidence: number;
/** Emotion analysis */
emotion?: {
emotion: string;
confidence: number;
scores?: any;
};
/** Age and gender prediction */
ageGender?: {
age: number;
ageConfidence: number;
gender: string;
genderConfidence: number;
};
/** Iris analysis */
iris?: {
left: any;
right: any;
confidence: number;
};
/** Anti-spoofing result */
antispoof?: {
isReal: boolean;
confidence: number;
score: number;
};
/** Face angles (3D pose) */
angles?: {
yaw: number;
pitch: number;
roll: number;
};
/** Face landmarks */
landmarks: number[][];
}
/** Human library configuration */
export interface HumanConfig {
/** Enable face detection */
face: {
enabled: boolean;
detector: {
rotation: boolean;
return: boolean;
maxDetected: number;
minConfidence: number;
iouThreshold: number;
skipFrames: number;
skipTime: number;
};
mesh: {
enabled: boolean;
maxDetected: number;
minConfidence: number;
return: boolean;
};
iris: {
enabled: boolean;
maxDetected: number;
minConfidence: number;
return: boolean;
};
emotion: {
enabled: boolean;
maxDetected: number;
minConfidence: number;
return: boolean;
};
antispoof: {
enabled: boolean;
maxDetected: number;
minConfidence: number;
return: boolean;
};
ageGender: {
enabled: boolean;
maxDetected: number;
minConfidence: number;
return: boolean;
};
};
/** Enable body detection */
body: {
enabled: boolean;
maxDetected: number;
minConfidence: number;
return: boolean;
};
/** Enable hand detection */
hand: {
enabled: boolean;
maxDetected: number;
minConfidence: number;
return: boolean;
};
/** Enable gesture recognition */
gesture: {
enabled: boolean;
maxDetected: number;
minConfidence: number;
return: boolean;
};
/** Backend configuration */
backend: string;
/** Model base path */
modelBasePath: string;
/** Debug mode */
debug: boolean;
}
/** Default Human configuration */
export declare const defaultHumanConfig: HumanConfig;
/** Human library integration class */
export declare class HumanIntegration {
private human;
private config;
private isInitialized;
constructor(config?: Partial<HumanConfig>);
/**
* Initialize Human library
*/
initialize(): Promise<void>;
/**
* Detect faces and extract all features
*/
detectFaces(input: ImageData | HTMLImageElement | HTMLVideoElement | HTMLCanvasElement): Promise<HumanFaceResult[]>;
/**
* Extract comprehensive face result from Human detection
*/
private extractFaceResult;
/**
* Extract face mesh points (468 points)
*/
private extractFaceMesh;
/**
* Extract face angles (3D pose)
*/
private extractFaceAngles;
/**
* Extract face landmarks
*/
private extractLandmarks;
/**
* Extract emotion analysis
*/
private extractEmotion;
/**
* Extract age and gender prediction
*/
private extractAgeGender;
/**
* Extract iris analysis
*/
private extractIris;
/**
* Extract anti-spoofing result
*/
private extractAntispoof;
/**
* Convert Human.js face result to biometric template
*/
convertToBiometricTemplate(faceResult: HumanFaceResult): BiometricTemplate;
/**
* Extract face descriptor from mesh points
*/
private extractDescriptor;
/**
* Calculate face width from mesh
*/
private calculateFaceWidth;
/**
* Calculate face height from mesh
*/
private calculateFaceHeight;
/**
* Extract key facial features
*/
private extractKeyFeatures;
/**
* Normalize descriptor vector
*/
private normalizeDescriptor;
/**
* Calculate Euclidean distance between two points
*/
private euclideanDistance;
/**
* Get Human library instance
*/
getHuman(): Human;
/**
* Check if Human library is initialized
*/
isReady(): boolean;
/**
* Clean up resources
*/
dispose(): Promise<void>;
/**
* Draw face mesh and attributes overlay on a canvas context
*/
drawOverlay(ctx: CanvasRenderingContext2D, faceResult: HumanFaceResult): void;
}
//# sourceMappingURL=human-integration.d.ts.map