from fastapi import FastAPI, UploadFile, File from transformers import AutoModelForImageClassification, AutoProcessor from PIL import Image import torch app = FastAPI() # Carga el modelo y el preprocesador desde Hugging Face model_name = "jazzmacedo/fruits-and-vegetables-detector-36" model = AutoModelForImageClassification.from_pretrained(model_name) processor = AutoProcessor.from_pretrained(model_name) @app.post("/predict") async def predict(file: UploadFile = File(...)): # Procesa la imagen recibida image = Image.open(file.file).convert("RGB") inputs = processor(images=image, return_tensors="pt") # Realiza la predicción with torch.no_grad(): outputs = model(**inputs) # Obtiene la predicción con mayor probabilidad logits = outputs.logits predicted_class_idx = logits.argmax(-1).item() predicted_class_name = model.config.id2label[predicted_class_idx] return {"prediction": predicted_class_name}