import type { DetectionConfig, ModelInfo } from './types'; /** * Configuration for different model variants. * I've used the models from the original repo and another one from TensorFlow Hub. */ export const MODEL_VARIANTS: Record<'quantized' | 'standard' | 'full', ModelInfo> = { quantized: { variant: 'quantized', url: '/models/model.json', size: 2 * 1024 * 1024, // ~2MB name: 'SSD-MobileNetV2 Quantized', description: 'Fastest, for continuous detection.' }, standard: { variant: 'standard', url: '/models/model.json', size: 2 * 1024 * 1024, // Same model, different configs name: 'SSD-MobileNetV2 Standard', description: 'Balanced speed and accuracy.' }, full: { variant: 'full', url: '/models/model.json', size: 2 * 1024 * 1024, // Same model, different configs name: 'SSD-MobileNetV2 Full', description: 'Most accurate, for on-demand scan.' } }; /** * Default detection configuration. */ export const DEFAULT_CONFIG: DetectionConfig = { frameSkip: 6, confidenceThreshold: 0.8, // Default to 80% confidence modelVariant: 'standard', maxDetections: 5, // Match the working implementation (process up to 5 detections) inputSize: [300, 300], // Match the working implementation enableContinuous: true, enableTrigger: true, }; /** * Class labels for the models. * IMPORTANT: This must match the order of the model's output classes. */ export const CLASS_LABELS = ['shoe']; /** * Rules to validate detections and reduce false positives. */ export const VALIDATION_RULES = { minBoundingBoxSize: 30, // Minimum pixel width/height of a bounding box aspectRatioRange: [0.5, 2.0], // Plausible aspect ratio (width / height) for a shoe temporalConsistencyFrames: 3, // Must be detected in N consecutive frames };