import { Metadata as ImageMetadata } from './gtm-image'; import { TrainingParameters as ImageTrainingParams } from './gtm-image/teachable-mobilenet'; import * as tf from '@tensorflow/tfjs'; import { TeachableModel, ExplainedPredictionsOutput, TMType } from './TeachableModel'; import { ExposedMobileNet } from './gtm-image/exposed-mobilenet'; interface TrainingParameters extends ImageTrainingParams { } interface BaseMetadata { modelBaseUrl?: string; } export declare type Metadata = BaseMetadata & ImageMetadata; export default class ImageModel implements TeachableModel { protected model?: ExposedMobileNet; protected _ready?: Promise; protected trained: boolean; protected busy: boolean; protected imageSize: number; protected _disposed: boolean; variant: TMType; explained?: HTMLCanvasElement; modelBaseUrl: string; private transferLearningExplainer; private readonly trainingLayerName; constructor(type: TMType, metadata?: Metadata, model?: tf.io.ModelJSON, weights?: ArrayBuffer); getVariant(): TMType; estimate(image: HTMLCanvasElement): Promise; setXAICanvas(canvas: HTMLCanvasElement): void; protected load(metadata?: ImageMetadata, model?: tf.io.ModelJSON, weights?: ArrayBuffer): Promise; ready(): Promise; predict(image: HTMLCanvasElement): Promise; train(params: TrainingParameters, callbacks: tf.CustomCallbackArgs): Promise; /** * Adds one training sample to a class. * Extracts the backbone embedding once from the already-loaded TeachableMobileNet * and accumulates it into the per-class ImageNet stats used for XAI explanation, * avoiding a redundant full-model forward pass. */ addExample(className: number, image: HTMLCanvasElement): Promise; dispose(): void; setName(name: string): void; getModel(): ExposedMobileNet | undefined; getImageSize(): number; isTrained(): boolean; isReady(): boolean; setSeed(seed: string): void; getMetadata(): ImageMetadata; save(handler: tf.io.IOHandler): Promise; /** * If a pose is available, draw the keypoints and skeleton. * * @param image Image to draw the pose into. */ draw(image: HTMLCanvasElement): HTMLCanvasElement; setLabels(labels: string[]): void; getLabels(): string[]; getLabel(ix: number): string; getNumExamples(): number; getExamplesPerClass(): number[]; getNumValidation(): number; calculateAccuracy(): Promise<{ reference: any; predictions: any; }>; } export {};