πŸš— 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:

  1. Normalizzazione: I valori dei pixel sono stati scalati nel range [0, 1] (dividendo per 255.0) per facilitare la convergenza del modello.
  2. 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 ReLU per introdurre non-linearitΓ .
    • MaxPooling2D per ridurre la dimensionalitΓ  e mantenere le feature piΓΉ rilevanti.
  • Classificatore (Fully Connected):
    • Strato Flatten per vettorizzare l'output delle convoluzioni.
    • 3 strati Dense (128, 64, 32 unitΓ ) con attivazione ReLU.
    • Output Layer: Strato Dense con 2 unitΓ  e attivazione Softmax per la classificazione finale.

image

πŸš€ 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.

image

image

πŸ’» 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
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Dataset used to train FlavioRubensOttaviani/autonomous-driving-object-detection-deepLearning