import { TrainingParameters as PoseTrainingParams } from './gtm-pose/teachable-posenet'; import { TeachablePoseNet, Metadata as PoseMetadata } from './gtm-pose'; import * as tf from '@tensorflow/tfjs'; import type { TeachableModel, ExplainedPredictionsOutput, TMType } from './TeachableModel'; interface TrainingParameters extends PoseTrainingParams { } interface BaseMetadata { modelBaseUrl?: string; } export declare type Metadata = BaseMetadata & PoseMetadata; export default class PoseModel implements TeachableModel { protected model?: TeachablePoseNet; protected _ready?: Promise; protected trained: boolean; protected busy: boolean; protected imageSize: number; protected _disposed: boolean; variant: TMType; explained?: HTMLCanvasElement; modelBaseUrl: string; private lastPose?; constructor(type: TMType, metadata?: Metadata, model?: tf.io.ModelJSON, weights?: ArrayBuffer); getVariant(): TMType; setXAICanvas(canvas: HTMLCanvasElement): void; protected load(metadata?: PoseMetadata, model?: tf.io.ModelJSON, weights?: ArrayBuffer): Promise; ready(): Promise; /** * If a pose is available, draw the keypoints and skeleton. * * @param image Image to draw the pose into. */ draw(image: HTMLCanvasElement): HTMLCanvasElement; /** * Estimate pose if this is a PoseNet model, otherwise do nothing. * This caches the pose so draw() can use it without re-estimating. * * @param image Input image at correct resolution */ estimate(image: HTMLCanvasElement): Promise; predict(image: HTMLCanvasElement): Promise; /** * Predict directly from pose output data (for validation/internal use) */ predictFromPoseData(poseData: Float32Array): Promise; train(params: TrainingParameters, callbacks: tf.CustomCallbackArgs): Promise; addExample(className: number, image: HTMLCanvasElement): Promise; dispose(): void; setName(name: string): void; getModel(): TeachablePoseNet | undefined; getImageSize(): number; isTrained(): boolean; isReady(): boolean; setSeed(seed: string): void; getMetadata(): PoseMetadata; save(handler: tf.io.IOHandler): Promise; setLabels(labels: string[]): void; getLabels(): string[]; getLabel(ix: number): string; getNumExamples(): number; getExamplesPerClass(): number[]; getNumValidation(): number; calculateAccuracy(): Promise<{ reference: any; predictions: any; }>; } export {};