Embryo-One's picture
Upload 49 files
ed9f15f verified
/**
* Model Loading - Load and initialize ONNX models
*/
import * as ort from 'https://cdn.jsdelivr.net/npm/onnxruntime-web@1.17.0/dist/esm/ort.min.js';
import { MODEL_PATHS, ONNX_CONFIG, LABEL_MAPPINGS } from '../config.js';
import { setModel, appState } from '../state.js';
import { updateLoadingStatus } from '../ui/loading.js';
/**
* Initialize ONNX Runtime
*/
export async function initONNXRuntime() {
ort.env.wasm.wasmPaths = ONNX_CONFIG.wasmPaths;
ort.env.wasm.numThreads = ONNX_CONFIG.numThreads;
}
/**
* Load label mappings from config files
*/
export async function loadLabelMappings() {
try {
const graderConfig = await fetch('./models/grader_model_compressed/config.json');
const graderData = await graderConfig.json();
LABEL_MAPPINGS.grader = graderData.id2label || {};
console.log('Label mappings loaded:', LABEL_MAPPINGS);
} catch (error) {
console.warn('Could not load label mappings, using defaults:', error);
}
}
/**
* Load all ONNX models
*/
export async function loadAllModels() {
try {
updateLoadingStatus('Loading Classifier Model...', 25);
const classifier = await ort.InferenceSession.create(MODEL_PATHS.classifier);
setModel('classifier', classifier);
updateLoadingStatus('Loading Quality Assessment Model...', 50);
const poorGood = await ort.InferenceSession.create(MODEL_PATHS.poorGood);
setModel('poorGood', poorGood);
updateLoadingStatus('Loading Grader Model...', 75);
const grader = await ort.InferenceSession.create(MODEL_PATHS.grader);
setModel('grader', grader);
updateLoadingStatus('Loading YOLO Detection Model...', 90);
try {
const yolo = await ort.InferenceSession.create(MODEL_PATHS.yolo);
setModel('yolo', yolo);
} catch (error) {
console.warn('YOLO model not available:', error);
}
updateLoadingStatus('Models loaded successfully!', 100);
} catch (error) {
throw new Error(`Model loading failed: ${error.message}`);
}
}
/**
* Get model status for UI display
*/
export function getModelStatus() {
return {
classifier: !!appState.models.classifier,
poorGood: !!appState.models.poorGood,
grader: !!appState.models.grader,
yolo: !!appState.models.yolo
};
}