UNPKG

teachable-machine.js

Version:

A robust and optimized JavaScript library for integrating Google's Teachable Machine models, supporting various image sources and providing efficient classification capabilities.

87 lines (74 loc) 3.16 kB
// TypeScript type definitions for teachable-machine.js export interface CreateOptions { modelUrl?: string; modelDir?: string; loadFrom?: 'auto' | 'dir'; saveToDir?: string; warmup?: boolean; ioMode?: 'ram' | 'disk'; backend?: 'tfjs' | 'tfjs-node'; preprocessUseWorkers?: boolean; } export interface TimingInfo { downloadMs?: number; decodeResizeMs?: number; inferenceMs?: number; postprocessMs?: number; totalMs?: number; endToEndMs?: number; } export interface IOInfo { mode?: 'ram' | 'disk'; fallbackToDisk?: boolean; tempCleaned?: boolean; sizeBytes?: number; maxBytes?: number; } export interface ImageResult { input: { imageUrl: any }; backend: string; modelInfo?: { classesCount: number }; preprocess?: { target: { width: number; height: number }; centerCrop?: boolean; resizeOnCPU?: boolean }; timings: TimingInfo; predictions?: Array<{ class: string; score: number; rank: number }>; error?: string; } export interface BatchImageResult { backend: string; count: number; modelInfo?: { classesCount: number }; timings: { endToEndMs: number }; results: ImageResult[]; } export interface FramePrediction { frameIndex: number; timestampSec: number | null; predictions: Array<{ class: string; score: number; rank: number }>; } export interface VideoResult { input: { videoUrl: any; frames: number; turboMode?: boolean }; backend: string; modelInfo?: { classesCount: number }; timings: Record<string, number>; frames?: FramePrediction[]; aggregate: { predictions: Array<{ class: string; score: number; rank: number }> }; io?: IOInfo; error?: string; } export default class TeachableMachine { static create(options?: CreateOptions): Promise<TeachableMachine>; constructor(model: any); backend: 'tfjs' | 'tfjs-node'; ioMode: 'ram' | 'disk'; classify(options: { input: any | any[] | { images?: any[]; videos?: any[] }; mediaType?: 'auto' | 'image' | 'video'; frames?: number; topK?: number; centerCrop?: boolean; resizeOnCPU?: boolean; turboMode?: boolean; extractionConcurrency?: number; preprocessConcurrency?: number; maxConcurrent?: number; maxBytes?: number; batchSize?: number; }): Promise<BatchImageResult | VideoResult | { images: BatchImageResult | ImageResult; videos: VideoResult[] | VideoResult | null } | ImageResult>; classifyImages(options: { images: any | any[]; topK?: number; centerCrop?: boolean; resizeOnCPU?: boolean; batchSize?: number }): Promise<ImageResult | BatchImageResult>; classifyBatch(options: { imageUrls: any[]; topK?: number; centerCrop?: boolean; resizeOnCPU?: boolean; batchSize?: number }): Promise<BatchImageResult>; batchImageClassify(options: { imageUrls: any[]; topK?: number; centerCrop?: boolean; resizeOnCPU?: boolean; batchSize?: number }): Promise<BatchImageResult>; classifyVideos(options: { videos: any | any[]; frames?: number; topK?: number; centerCrop?: boolean; resizeOnCPU?: boolean; turboMode?: boolean; extractionConcurrency?: number; preprocessConcurrency?: number; maxConcurrent?: number; maxBytes?: number }): Promise<VideoResult | VideoResult[]>; dispose(): void; }