Questa applicazione è un sistema di riconoscimento di immagini sportive sviluppato per l'esame di Visual Information Processing and Management 2025-2026. L'applicativo utilizza modelli di deep learning per classificare immagini di sport diversi, eseguire ricerche di similarità, applicare augmentation e miglioramenti alle immagini. L'app è costruita con Streamlit e offre un'interfaccia web intuitiva per interagire con le varie funzionalità.
- Task 1 e 2: Classificazione di immagini sportive (sia in condizioni ottimali sia in condizioni degradate) tramite modelli addestrati su diversi training sets.
- Task 3: Classificazione di immagini sportive degradate partendo da un training set di ridotte dimensioni.
- Similarity Search: Ricerca di immagini simili nel dataset.
- Augmentation Playground: Playground per applicare e testare le tecniche di data augmentation per le immagini.
- Image Enhancement: Miglioramento della qualità delle immagini degradate.
- Python 3.13
- pip
-
Clona il repository:
git clone https://github.com/AlessandroIsceri/SportImageRecognitionSystem.git cd SportImageRecognitionSystem -
Crea un ambiente virtuale:
python -m venv venv venv\Scripts\activate # Su Windows
-
Installa le dipendenze:
pip install -r requirements.txt
-
Scarica la cartella data dal seguente dataset su Kaggle
-
Inserisci la cartella data nella root della repository
-
Avvia l'applicazione:
streamlit run app/main.py
L'app sarà accessibile su http://localhost:8501.
La cartella notebooks/ contiene vari Jupyter notebooks utilizzati per lo sviluppo, il training e il test dei modelli:
- augmentation/: Notebooks per l'augmentation delle immagini.
- training/Task1/ e training/Task3/: Notebooks per il training dei modelli, con varie versioni e configurazioni.
- test/Task1/ e test/Task3/: Notebooks per testare su Task 1 e Task 3 i modelli Baseline, Improved Baseline, InceptionV3 fine-tuned, VGG-Like, e VGG-Like-SURF (trainati in precedenza).
- SURF/: Estrazione di feature utilizzando SURF e concatenazione con VGG-Like.
- images-embeddings.ipynb: Generazione di embeddings per le immagini.
- profiler-macs-flops.ipynb: Profilazione delle prestazioni dei modelli (MACs e FLOPs).
Questi notebooks sono utili per comprendere il processo di sviluppo, riprodurre i risultati e sperimentare con i modelli.
app/: Codice principale dell'applicazione Streamlit.config/: File di configurazione.data/: Dataset, embeddings, modelli salvati.notebooks/: Jupyter notebooks per analisi e sviluppo.requirements.txt: Dipendenze Python.