Modelo-Animales / README.md
IABD12's picture
Create README.md
3b9167e verified
# Modelo CNN para Clasificación de Perros vs Gatos
Este modelo de red neuronal convolucional (CNN) ha sido entrenado para clasificar imágenes de perros y gatos. Se trata de una tarea de clasificación binaria donde la salida es `0` (gato) o `1` (perro). Fue construido utilizando `TensorFlow` y `Keras`, entrenado desde cero con un dataset personalizado.
---
## Dataset
- **Nombre**: Cats vs Dogs Dataset
- **Origen**: Carpeta local `train/`
- **Cantidad**: 25,000 imágenes
- Etiquetado automático por nombre de archivo (`cat` o `dog`)
- **Tamaño de imagen**: 150x150 píxeles
- **Preprocesamiento**:
- Reescalado: todos los valores de píxel normalizados a `[0, 1]`
- División en entrenamiento y validación: `80% / 20%`
---
## Arquitectura del modelo
Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
MaxPooling2D(2, 2),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D(2, 2),
Conv2D(128, (3, 3), activation='relu'),
MaxPooling2D(2, 2),
Flatten(),
Dense(512, activation='relu'),
Dropout(0.5),
Dense(1, activation='sigmoid')
])
model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val))
---
## Como usar
from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing import image
import numpy as np
model = load_model("dogs_vs_cats_cnn.h5")
def predict_image(img_path):
img = image.load_img(img_path, target_size=(150, 150))
img_array = image.img_to_array(img) / 255.0
img_array = np.expand_dims(img_array, axis=0)
prediction = model.predict(img_array)[0][0]
return "Perro 🐶" if prediction > 0.5 else "Gato 🐱"
---
## Guardado del modelo
model.save("dogs_vs_cats_cnn.h5")
---
## Requisitos
- Python >= 3.8
- TensorFlow >= 2.9
- NumPy
- scikit-learn
---