π Autonomous Driving Object Detection (Vehicle & Animal)
Questo repository contiene un modello di Deep Learning basato su Reti Neurali Convoluzionali (CNN), addestrato per riconoscere e distinguere veicoli da animali in immagini a bassa risoluzione. Il progetto simula un modulo di percezione visiva per sistemi di guida autonoma, utilizzando il dataset CIFAR-10.
π Descrizione del Progetto
Nei sistemi di guida autonoma, la capacitΓ di identificare rapidamente gli ostacoli Γ¨ fondamentale. Questo modello Γ¨ stato progettato per classificare gli oggetti in due macro-categorie critiche per la sicurezza stradale:
- Veicoli (Automobili, Camion, Aerei, Navi) - Oggetti da seguire o evitare secondo le regole del traffico.
- Animali (Uccelli, Gatti, Cervi, Cani, Rane, Cavalli) - Ostacoli imprevedibili che richiedono cautela immediata.
Il modello Γ¨ stato sviluppato utilizzando TensorFlow/Keras e addestrato su un sottoinsieme ri-etichettato del dataset CIFAR-10.
π Dataset & Preprocessing
Il modello utilizza il dataset CIFAR-10, composto da 60.000 immagini a colori 32x32 pixel. Le 10 classi originali sono state raggruppate in due classi binarie per questo task:
- Classe 0 (Veicoli): Automobile, Camion, Aereo, Nave.
- Classe 1 (Animali): Uccello, Gatto, Cervo, Cane, Rana, Cavallo.
Preprocessing applicato:
- Normalizzazione: I valori dei pixel sono stati scalati nel range [0, 1] (dividendo per 255.0) per facilitare la convergenza del modello.
- Flattening delle Label: Le etichette sono state convertite in vettori 1D per compatibilitΓ con la loss function.
π§ Architettura del Modello
La rete neurale Γ¨ una CNN (Convolutional Neural Network) sequenziale ottimizzata per immagini di piccole dimensioni:
- Input Layer: Immagini 32x32x3 (RGB).
- Blocchi Convoluzionali:
- 3 strati
Conv2D(con 32, 64, 128 filtri) per l'estrazione delle feature. - Attivazione
ReLUper introdurre non-linearitΓ . MaxPooling2Dper ridurre la dimensionalitΓ e mantenere le feature piΓΉ rilevanti.
- 3 strati
- Classificatore (Fully Connected):
- Strato
Flattenper vettorizzare l'output delle convoluzioni. - 3 strati
Dense(128, 64, 32 unitΓ ) con attivazioneReLU. - Output Layer: Strato
Densecon 2 unitΓ e attivazioneSoftmaxper la classificazione finale.
- Strato
π Performance
Il modello Γ¨ stato addestrato per 20 epoche con i seguenti risultati (basati sull'ultima epoca di training):
- Accuracy (Train): ~99%
- Accuracy (Validation): ~94%
- Loss: Molto bassa sul training set, indicando un ottimo apprendimento, con una buona generalizzazione sul validation set.
π» Come Usare il Modello
1)Potete scaricare l'intero codice dal file Notebook (si consiglia di applicare la denormalizzazione).
2)Per testare il modello direttamente in Python, utilizzate lo script di inferenza seguente:
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import requests
from io import BytesIO
import os
URL_MODELLO = "[https://huggingface.co/FlavioRubensOttaviani/autonomous-driving-object-detection-deepLearning/resolve/main/modello_guida_autonoma_cifar10.h5](https://huggingface.co/FlavioRubensOttaviani/autonomous-driving-object-detection-deepLearning/resolve/main/modello_guida_autonoma_cifar10.h5)"
NOME_FILE_LOCALE = "modello_scaricato.h5"
if not os.path.exists(NOME_FILE_LOCALE):
r = requests.get(URL_MODELLO, timeout=15)
with open(NOME_FILE_LOCALE, 'wb') as f:
f.write(r.content)
model = tf.keras.models.load_model(NOME_FILE_LOCALE, compile=False)
def esegui_inferenza(url_immagine):
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url_immagine, headers=headers, timeout=10)
img = Image.open(BytesIO(response.content)).convert('RGB')
img_resized = img.resize((32, 32))
img_array = np.array(img_resized).astype('float32') / 255.0
img_input = np.expand_dims(img_array, axis=0)
preds = model.predict(img_input, verbose=0)[0]
label = "VEICOLO π" if preds[0] > preds[1] else "ANIMALE π"
conf = max(preds) * 100
plt.imshow(img)
plt.title(f"{label} ({conf:.2f}%)")
plt.axis('off')
plt.show()
URL_TEST = "[https://raw.githubusercontent.com/YoongiKim/CIFAR-10-images/master/test/automobile/0001.jpg](https://raw.githubusercontent.com/YoongiKim/CIFAR-10-images/master/test/automobile/0001.jpg)"
esegui_inferenza(URL_TEST)
## π¨βπ» Autore
**Flavio Rubens Ottaviani**
Progetto sviluppato per il corso di Deep Learning e Reti Neurali Artificiali.
- Downloads last month
- -


