| # 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 | |
| --- | |