Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

141
Vistas
Etiquetas de retorno al clasificar imágenes en FastAPI

Estoy clasificando las imágenes según sus tipos. En el último paso, devuelvo la clase que tiene la probabilidad más alta. Funciona bien, pero cuando intento mapear las etiquetas, me muestra este error:

 value is not a valid integer (type=type_error.integer)

modelo guardado: https://gofile.io/d/myfFjR

imagen de muestra: https://gofile.io/d/myfFjR

 from fastapi import FastAPI, File, UploadFile, HTTPException from PIL import Image from pydantic import BaseModel from tensorflow.keras.models import load_model from typing import List import io import numpy as np import sys # Load the model filepath = 'C://Users//subhr//model.h5' model = load_model(filepath, compile = True) # Get the input shape for the model layer input_shape = model.layers[0].input_shape # Define the FastAPI app app = FastAPI() # Define the Response class Prediction(BaseModel): filename: str contenttype: str prediction: List[float] = [] likely_class: int # Define the main route @app.get('/') def root_route(): return { 'error': 'Use GET /prediction instead of the root route!' } # Define the /prediction route @app.post('/prediction/', response_model=Prediction) async def prediction_route(file: UploadFile = File(...)): # Ensure that this is an image if file.content_type.startswith('image/') is False: raise HTTPException(status_code=400, detail=f'File \'{file.filename}\' is not an image.') try: # Read image contents contents = await file.read() pil_image = Image.open(io.BytesIO(contents)) # Resize image to expected input shape pil_image = pil_image.resize((input_shape[1], input_shape[2])) # Convert from RGBA to RGB *to avoid alpha channels* if pil_image.mode == 'RGBA': pil_image = pil_image.convert('RGB') # Convert image into grayscale *if expected* if input_shape[3] and input_shape[3] == 1: pil_image = pil_image.convert('L') # Convert image into numpy format numpy_image = np.array(pil_image).reshape((input_shape[1], input_shape[2], input_shape[3])) # Scale data (depending on your model) numpy_image = numpy_image / 255 # Generate prediction prediction_array = np.array([numpy_image]) predictions = model.predict(prediction_array) prediction = predictions[0] likely_class = np.argmax(prediction) return { 'filename': file.filename, 'contenttype': file.content_type, 'prediction': prediction.tolist(), 'likely_class': lambda x: 'Driving License' if likely_class == 0 else ('Pancard' if likely_class == 1 else('Passport' if likely_class == 2 else 'Voter Id')) #this is where I am getting an error } except: e = sys.exc_info()[1] raise HTTPException(status_code=500, detail=str(e))

¿Qué estoy haciendo mal?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

class Prediction(BaseModel): filename: str contenttype: str prediction: List[float] = [] likely_class: int

Está diciendo que likely_class es un int, y luego en su función likely_class asume un valor de cadena:

 'likely_class': lambda x: 'Driving License' if likely_class == 0 else ('Pancard' if likely_class == 1 else('Passport' if likely_class == 2 else 'Voter Id'))

Simplemente modifique su Prediction para aceptar una cadena o la salida de su función.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda