File size: 1,926 Bytes
3b9167e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# 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
---
|