Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

142
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda