Este repositorio contiene una tubería de extremo a extremo para clasificar las imágenes animales en una de las 90 especies y realizar búsquedas de similitud de imagen. El proyecto aprovecha una red neuronal convolucional profunda (ResNet-50) como un extractor de características, combinado con una capa de incrustación personalizada y un cabezal de clasificación final. Además, incluye una interfaz frontend para que los usuarios carguen una imagen y reciban una clase predicha y imágenes visualmente similares del conjunto de datos.
Arquitectura de modelo:
Conjunto de datos:
Conjunto de datos de imágenes de animales - 90 animales diferentes
Este conjunto de datos cubre una amplia variedad de especies animales, asegurando una amplia representación en 90 clases.
Detalles de capacitación:
Métricas de rendimiento:
Estas métricas indican un fuerte rendimiento de clasificación en el conjunto de datos.
Se incluye una matriz de confusión ( confusion_matrix.png ) para visualizar el rendimiento de clase por clase. 
Además de la clasificación, esta solución proporciona una función de búsqueda de similitud de imagen:
Extracción de características:
Cada imagen del conjunto de datos se pasa a través del modelo (capa de incrustación ResNet-50 +) para producir un vector de características de 256 dimensiones.
Almacenamiento de la base de datos (SQLite):
Todos los vectores de características de 256 dimensiones se almacenan en una base de datos SQLite.
Consulta de similitud:
Cuando se carga una nueva imagen, se calcula su incrustación y se consulta la base de datos para encontrar las imágenes más similares basadas en la similitud vectorial.
Esto le permite no solo predecir la clase de una imagen cargada, sino también recuperar imágenes visualmente similares del conjunto de datos existente.
Se incluye una frontend simple para facilitar la interacción:
.
├── requirements.txt # Python dependencies
├── README.md # This README file
├── .gitignore # Git ignore file
├── LICENSE # License file for the project
├── main.py # Entry point for the Flask application
├── model.py # Model definition, loading, and inference utilities
├── similarity.py # Functions for similarity search and confusion matrix creation
└── train.py # Training script for the model
├── templates/
│ ├── index.html # Frontend template
└── confusion_matrix.png # Confusion matrix visualization git clone https://github.com/git-khandelwal/image-similarity
cd image-similarity pip install -r requirements.txtDescargar y preparar el conjunto de datos:
Entrenamiento del modelo: para volver a entrenar el modelo y crear características vector DB:
python train.py python main.pyEste proyecto tiene licencia bajo la licencia MIT.