import { pipeline, env, RawImage } from '@huggingface/transformers'; import sharp from 'sharp'; import { readFileSync } from 'fs'; env.localModelPath = './'; // Path to your ONNX model env.allowRemoteModels = false; // Disable remote models // Load the ONNX model const imageClassifier = await pipeline('image-classification', 'saved-model/bk'); // Load and preprocess the image const imageBuffer = readFileSync('./training_images/shirt/00e745c9-97d9-429d-8c3f-d3db7a2d2991.jpg'); const image = await sharp(imageBuffer).resize(128, 128).raw().toBuffer(); // Run inference const results = await imageClassifier(image); console.log(results); // import { pipeline, env, RawImage } from '@huggingface/transformers'; // import sharp from 'sharp'; // // Configure environment // env.localModelPath = './'; // Path to your ONNX model // env.allowRemoteModels = false; // Disable remote models // async function preprocessImage(imagePath) { // const imageBuffer = await sharp(imagePath) // .resize(128, 128) // Resize to model's expected dimensions // .raw() // Get raw pixel data // .toBuffer(); // const array = new Float32Array(imageBuffer.length).map((_, i) => imageBuffer[i] / 255.0); // Normalize to [0, 1] // // RawImage expects data as Uint8ClampedArray, convert and reshape accordingly // return new RawImage( // Uint8ClampedArray.from(array.map(v => v * 255)), // Rescale back for RawImage // 128, // 128, // 3 // Channels // ); // } // async function classifyImage(imagePath) { // const classifier = await pipeline('image-classification', 'saved-model/'); // // Preprocess the image // const preprocessedImage = await preprocessImage(imagePath); // // Run the model inference // const results = await classifier(preprocessedImage); // console.log(results); // return results[0]?.label || 'Unknown'; // } // // Example usage // classifyImage('./training_images/shirt/00e745c9-97d9-429d-8c3f-d3db7a2d2991.jpg') // .then(partNumber => { // console.log(`Predicted Part Number: ${partNumber}`); // }) // .catch(error => console.error(error));