es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo probar mi propia imagen en mi modelo CNN?

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en formato markdown.

Soy un programador principiante que prueba la clasificación de imágenes utilizando CNN. Mi objetivo es construir un modelo que clasifique si una imagen es una lata de aluminio o no, y quiero probarlo con mi propia imagen.

He redimensionado las imágenes con el siguiente código:

Redimensionando a 128,128

files = os.listdir(“../input/aluminum-can-image-data/Aluminum Cans”)

for f in files:
img = Image.open(“../input/aluminum-can-image-data/Aluminum Cans/” + f)
img = img.resize((128,128))

ds_train = image_dataset_from_directory(
‘../input/aluminum-can-image-data’,
labels=’inferred’,
image_size=[128, 128],
interpolation=’nearest’,
batch_size=64,
)
ds_valid_ = image_dataset_from_directory(
‘../input/aluminum-can-image-data’,
labels=’inferred’,
image_size=[128, 128],
interpolation=’nearest’,
batch_size=64,
)

ds_train, ds_valid = train_test_split(files, test_size=0.2, random_state=1)

Quiero construir un código que muestre el porcentaje de probabilidad de que una imagen sea una lata de aluminio cuando ha recibido una sola imagen. ¡Cualquier ayuda con los códigos para construir esta función será muy apreciada~!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para construir un modelo que clasifique si una imagen es una lata de aluminio o no, puedes utilizar una Red Neuronal Convolucional (CNN), que es un tipo de red neuronal especializada en reconocimiento de imágenes.

    Para entrenar el modelo, puedes utilizar las imágenes redimensionadas que has preparado como datos de entrada, y etiquetarlas manualmente como latas de aluminio o no. Luego puedes ajustar el modelo a los datos etiquetados utilizando una función de pérdida adecuada, un optimizador y métricas.

    Una vez entrenado el modelo, puedes utilizarlo para predecir la probabilidad de que una imagen de entrada sea una lata de aluminio o no. Para ello, primero necesitas preprocesar la imagen redimensionándola al mismo tamaño que las imágenes de entrenamiento (128×128 píxeles en este caso), y luego pasarla a través del modelo. La salida del modelo será un vector de probabilidades, donde cada elemento representa la probabilidad de que la imagen de entrada pertenezca a una cierta clase (lata de aluminio o no).

    Para calcular el porcentaje de probabilidad de que una imagen sea una lata de aluminio, simplemente necesitas extraer la probabilidad de la clase de lata de aluminio del vector de salida y convertirla a un porcentaje. Aquí tienes un ejemplo de fragmento de código que demuestra cómo hacerlo:

    import tensorflow as tf
    
    # Cargar el modelo guardado
    model = tf.keras.models.load_model('ruta/al/modelo/guardado')
    
    # Preprocesar la imagen de entrada
    img = Image.open('ruta/a/la/imagen').resize((128, 128))
    img_array = tf.keras.preprocessing.image.img_to_array(img)
    img_tensor = tf.expand_dims(img_array, axis=0)
    
    # Predecir el vector de probabilidades
    prob_vector = model.predict(img_tensor)[0]
    aluminum_can_prob = prob_vector[1]  # Probabilidad de la clase de lata de aluminio
    
    # Calcular el porcentaje de probabilidad de que la imagen sea una lata de aluminio
    aluminum_can_percent = round(aluminum_can_prob * 100, 2)
    print(f'La imagen tiene un {aluminum_can_percent}% de probabilidad de ser una lata de aluminio.')
    

    Ten en cuenta que el código asume que ya has entrenado y guardado el modelo. Si no lo has hecho, primero necesitas entrenar el modelo utilizando el conjunto de datos preparado, y luego guardar el modelo entrenado utilizando el método model.save().

Comments are closed.