Rilevamento in tempo reale degli oggetti con SSD Rilevatori Single Shot MultiBox

Rilevamento in tempo reale degli oggetti con SSD Rilevatori Single Shot MultiBox La tecnologia all'avanguardia per una precisione senza precedenti

Introduzione

Nella rilevazione in tempo reale degli oggetti, il paradigma prevalente ha tradizionalmente abbracciato metodologie a più passaggi, che includono la proposta di bounding box, il campionamento di pixel o feature e l’applicazione di classificatori di alta qualità. Sebbene questo approccio abbia raggiunto una elevata accuratezza, le sue esigenze computazionali hanno spesso ostacolato la sua adattabilità per le applicazioni in tempo reale. Tuttavia, il Single Shot MultiBox Detector (SSD) rappresenta un importante passo avanti nella rilevazione degli oggetti basata sull’apprendimento profondo. SSD mantiene un’eccezionale accuratezza migliorando notevolmente la velocità di rilevazione eliminando la necessità di campionare pixel o feature nella fase di proposta di bounding box. Invece, SSD predice direttamente le categorie degli oggetti e gli offset delle bounding box utilizzando filtri convoluzionali di piccole dimensioni su mappe di feature.

I ricercatori hanno tentato di creare rilevatori più veloci ottimizzando diverse fasi di questo processo, ma di solito ciò comporta una diminuzione dell’accuratezza. Tuttavia, questo articolo introduce un innovativo rilevatore di oggetti basato sull’apprendimento profondo chiamato SSD (Single Shot MultiBox Detector) che mantiene l’accuratezza migliorando significativamente la velocità. SSD raggiunge questo risultato eliminando la necessità di campionare nuovamente pixel o feature per le proposte di bounding box. Invece, predice direttamente le categorie degli oggetti e gli offset delle bounding box utilizzando piccoli filtri convoluzionali applicati alle mappe di feature.

Obiettivi di Apprendimento

  • Comprendere i principi e l’architettura di SSD per la rilevazione degli oggetti in immagini e video.
  • Esplorare i vantaggi di SSD rispetto ai modelli tradizionali di rilevazione degli oggetti in termini di velocità e accuratezza.
  • Capire il concetto di bounding box predefinite e il loro ruolo nella rilevazione degli oggetti a più scale con SSD.
  • Acquisire conoscenze sulle diverse applicazioni e settori che beneficiano delle efficienti capacità di rilevamento degli oggetti di SSD.

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Che cos’è un Single Shot Detector (SSD)?

Un Single Shot Detector (SSD) è un innovativo algoritmo di rilevazione degli oggetti nell’ambito della visione artificiale. Si distingue per la sua capacità di rilevare e localizzare rapidamente e accuratamente gli oggetti nelle immagini o nei fotogrammi video. Ciò che differenzia SSD è la sua capacità di realizzare tutto ciò in un unico passaggio di una rete neurale profonda, rendendolo eccezionalmente efficiente ed ideale per le applicazioni in tempo reale.

SSD raggiunge questo risultato utilizzando bounding box predefinite (anchor box) di diverse proporzioni in diverse posizioni nelle mappe delle caratteristiche. Queste bounding box consentono di gestire efficacemente oggetti di diverse dimensioni e forme. Inoltre, SSD utilizza mappe delle caratteristiche a più scale per rilevare oggetti di varie dimensioni, garantendo una corretta identificazione di oggetti piccoli e grandi nell’immagine. Con la sua capacità di rilevare contemporaneamente multiple classi di oggetti, SSD è uno strumento prezioso per compiti che coinvolgono numerose categorie di oggetti in un’unica immagine. Il suo equilibrio tra velocità e accuratezza lo ha reso una scelta popolare in applicazioni come il rilevamento di pedoni e veicoli, nonché la più ampia rilevazione di oggetti nei campi dell’automazione dei veicoli, della sorveglianza e della robotica.

SSD è noto per la sua capacità di eseguire la rilevazione degli oggetti in tempo reale ed è stato ampiamente adottato in diverse applicazioni, tra cui l’automazione dei veicoli, la sorveglianza e la realtà aumentata.

Caratteristiche Chiave di SSD

  • Singolo Passaggio: A differenza di alcuni modelli tradizionali di rilevazione degli oggetti che utilizzano un approccio a due fasi (prima proponendo regioni di interesse e poi classificando tali regioni), SSD esegue la rilevazione degli oggetti in un unico passaggio attraverso la rete. Predice direttamente la presenza degli oggetti e le coordinate delle bounding box in un solo passaggio, rendendolo più veloce ed efficiente.
  • MultiBox: SSD utilizza un insieme di bounding box predefinite (anchor box) di diverse dimensioni e proporzioni in diverse posizioni nell’immagine di input. Queste bounding box predefinite forniscono informazioni preliminari su dove gli oggetti sono suscettibili di apparire. SSD predice le regolazioni di queste bounding box predefinite per localizzare gli oggetti con precisione.
  • Rilevazione Multi-scala: SSD opera su mappe delle caratteristiche con diverse risoluzioni, consentendo di rilevare oggetti di varie dimensioni. Le predizioni vengono effettuate a diverse scale per catturare oggetti a diversi livelli di granularità.
  • Punteggi delle Classi: SSD non solo predice le coordinate delle bounding box, ma assegna anche punteggi alle classi per ciascuna bounding box predefinita, indicando la probabilità che un oggetto appartenga a una specifica categoria (ad esempio, auto, pedone, bicicletta).
  • Hard Negative Mining: Durante l’addestramento, SSD utilizza il mining negativo per concentrarsi su esempi difficili, migliorando l’accuratezza del modello.

Quali sono i concetti chiave di SSD?

Il Single Shot MultiBox Detector (SSD) è un modello complesso di rilevamento degli oggetti con diversi concetti chiave che consentono una performance efficiente e accurata. Ecco i concetti chiave in SSD:

  • Scatole delimitatrici predefinite (Anchor Boxes): SSD utilizza un insieme predefinito di scatole delimitatrici predefinite, anche note come anchor boxes. Queste scatole hanno diverse scale e rapporti di aspetto, fornendo una conoscenza preliminare su dove gli oggetti sono probabilmente situati nell’immagine. SSD predice gli aggiustamenti a queste scatole predefinite per localizzare accuratamente gli oggetti.

  • Mappe delle caratteristiche multi-scala: SSD opera su più mappe delle caratteristiche a diverse risoluzioni. Ottenere queste mappe delle caratteristiche applicando livelli convoluzionali all’immagine di input in diverse fasi. Utilizzare mappe delle caratteristiche a numerose scale permette a SSD di rilevare oggetti di diverse dimensioni.
  • Predizioni a scale multiple: Per ogni scatola delimitatrice predefinita, SSD effettua predizioni su vari livelli di mappe delle caratteristiche con diverse risoluzioni. Ciò consente al modello di rilevare oggetti di varie dimensioni. Queste predizioni includono punteggi di classe per diverse categorie di oggetti e offset per regolare le scatole predefinite per corrispondere alle posizioni degli oggetti.
  • Gestione dei rapporti di aspetto: SSD utilizza predittori separati (filtri convoluzionali) per diversi rapporti di aspetto delle scatole delimitatrici. Ciò consente di adattarsi a oggetti di forme e rapporti di aspetto diversi.

Architettura di SSD

L’architettura del Single Shot MultiBox Detector è una rete neurale convoluzionale (CNN) profonda per il rilevamento degli oggetti in tempo reale. Combina vari strati per effettuare la localizzazione (predizione delle scatole delimitatrici) e la classificazione (predizione della categoria degli oggetti) in un singolo passaggio in avanti.

Il Single Shot MultiBox Detector (SSD) è un robusto framework di rilevamento degli oggetti basato su una rete neurale convoluzionale feed-forward (CNN). Progettare l’architettura SSD per generare un insieme fisso di scatole delimitatrici e punteggi associati, che indicano la presenza di istanze di classi di oggetti in quelle scatole.

Componenti e funzionalità critiche

Ecco una spiegazione dei componenti e delle funzionalità critiche dell’approccio SSD:

Rete di base (troncata per la classificazione): SSD inizia con un’architettura CNN standard, che viene tipicamente utilizzata per compiti di classificazione di immagini di alta qualità. Tuttavia, in SSD, questa rete di base viene troncata prima di qualsiasi livello di classificazione. La rete di base è responsabile dell’estrazione delle caratteristiche essenziali dall’immagine di input.

  • Mappe delle caratteristiche multi-scala: Vengono aggiunti strati convoluzionali alla rete di base troncata. Questi strati riducono progressivamente le dimensioni spaziali aumentando il numero di canali (canali di caratteristiche). Questo design consente a SSD di produrre mappe delle caratteristiche a diverse scale. La mappa delle caratteristiche di ogni scala è adatta per rilevare oggetti di diverse dimensioni.
  • Scatole delimitatrici predefinite (Anchor Boxes): SSD associa un insieme predefinito di scatole delimitatrici predefinite (anchor boxes) a ogni cella della mappa delle caratteristiche. Queste scatole predefinite hanno diverse scale e rapporti di aspetto. La posizione delle scatole predefinite rispetto alla loro cella corrispondente è fissa e segue un pattern di griglia convoluzionale. Per ogni cella della mappa delle caratteristiche, SSD predice gli offset necessari per regolare queste scatole predefinite per adattarle agli oggetti e i punteggi di classe che indicano la presenza di specifiche categorie di oggetti.

  • Rapporti di aspetto e mappe delle caratteristiche multiple: SSD utilizza scatole delimitatrici predefinite con diversi rapporti di aspetto e le utilizza su mappe delle caratteristiche multiple a diverse risoluzioni. Questo approccio cattura efficientemente una gamma di possibili forme e dimensioni degli oggetti. A differenza di altri modelli, SSD non si basa su uno strato fully connected intermedio per le predizioni ma usa filtri convoluzionali direttamente.

Come funziona SSD?

  1. Apri il Notebook: Vai su Google Colab (colab.research.google.com) e apri il notebook.
  2. Vai al menu Runtime: Clicca sull’opzione “Runtime” nel menu in alto.
  3. Seleziona Cambia tipo di runtime: Clicca su “Cambia tipo di runtime” dal menu a discesa.
  4. Scegli L’Acceleratore Hardware: Una finestra si aprirà. In questa finestra, seleziona “GPU” dal menu a discesa “Acceleratore hardware”.
  5. Salva le modifiche: Clicca su “SALVA” per applicare le modifiche.
%%bashpip install numpy scipy scikit-image matplotlib

Output:

Modello Pretrain: caricare un modello SSD (Single Shot Multibox Detector) preaddestrato sul dataset COCO utilizzando un framework di deep learning come TensorFlow o PyTorch richiede l’implementazione di codice specifico e l’accesso alle rispettive librerie e repository di modelli.

import torchssd_model = torch.hub.load('NVIDIA/DeepLearningExamples:torchhub', 'nvidia_ssd')utils = torch.hub.load('NVIDIA/DeepLearningExamples:torchhub', 'nvidia_ssd_processing_utils')

Output:

ssd_model.to('cuda')ssd_model.eval()

Caricamento immagine: Per preparare le immagini di input per la rilevazione degli oggetti, è necessario caricarle, convertirle in un formato compatibile con il modello di rilevamento degli oggetti scelto e quindi eseguire l’inferenza su tali immagini.

urls =["https://farm5.staticflickr.com/4080/4951482119_0ecd88aa33_z.jpg"]inputs = [utils.prepare_input(uri) for uri in urls]tensor = utils.prepare_tensor(inputs)

Esecuzione del modello: Esegui la rete SSD per eseguire la rilevazione degli oggetti.

with torch.no_grad():    detections_batch = ssd_model(tensor)        results_per_input = utils.decode_results(detections_batch)best_results_per_input = [utils.pick_best(results, 0.40) for results in results_per_input]

Allenamento sull’immagine: Per accedere alle annotazioni del dataset COCO e mappare gli ID delle classi con i nomi degli oggetti, è possibile utilizzare l’API COCO. L’API COCO consente di ottenere informazioni sul dataset COCO, inclusi le categorie degli oggetti e le rispettive etichette.

classes_to_labels = utils.get_coco_object_dictionary()

Visualizzazione delle predizioni: Per visualizzare le rilevazioni sull’immagine utilizzando le etichette delle categorie del dataset COCO

from matplotlib import pyplot as pltimport matplotlib.patches as patchesfor image_idx in range(len(best_results_per_input)):    fig, ax = plt.subplots(1)    # Mostra l'immagine originale denormalizzata...    image = inputs[image_idx] / 2 + 0.5    ax.imshow(image)    # ...con le rilevazioni    bboxes, classes, confidences = best_results_per_input[image_idx]    for idx in range(len(bboxes)):        left, bot, right, top = bboxes[idx]        x, y, w, h = [val * 300 for val in [left, bot, right - left, top - bot]]        rect = patches.Rectangle((x, y), w, h, linewidth=1, edgecolor='r',\         facecolor='none')        ax.add_patch(rect)        ax.text(x, y, "{} {:.0f}%".format(classes_to_labels[classes[idx] - 1],\         confidences[idx]*100), bbox=dict(facecolor='white', alpha=0.5))plt.show()

Output:

Allenamento del metodo SSD

  • Assegnazione delle informazioni di ground truth: In SSD, assegniamo le informazioni delle ground truth, ossia le posizioni effettive degli oggetti e le categorie, a output specifici nell’insieme fisso di output del detector. Questo processo è cruciale per addestrare il modello a riconoscere correttamente gli oggetti.
  • Strategia di matching: Durante l’allenamento, SSD abbina ogni box di ground truth ai box predefiniti in base all’overlap di Jaccard migliore. L’overlap di Jaccard misura quanto il box previsto si sovrappone al box di ground truth. Qualsiasi box predefinito con un overlap di Jaccard superiore a una soglia (tipicamente 0.5) con un box di ground truth viene considerato una corrispondenza. A differenza di altri metodi, come MultiBox, SSD permette a più box predefiniti di essere abbinati a un singolo box di ground truth se il loro overlap di Jaccard supera la soglia. Questo semplifica il problema di apprendimento, poiché il modello può predire punteggi elevati per più box predefiniti sovrapposti invece di essere costretto a selezionare solo uno.
  • Obiettivo dell’allenamento: L’obiettivo dell’allenamento per SSD deriva dall’obiettivo MultiBox, ma viene esteso per gestire più categorie di oggetti. Include sia una perdita di localizzazione (loc) che una perdita di confidenza (conf):

Uscite del rilevatore

In SSD, le informazioni sulla ground truth (cioè la posizione effettiva degli oggetti e le categorie) devono essere assegnate a delle specifiche uscite nel set fisso delle uscite del rilevatore.

  • Perdita di localizzazione (Lloc): Questa perdita misura la differenza tra i parametri della scatola previsti (ad esempio le coordinate della scatola) e i parametri della scatola ground truth. Utilizza una funzione di perdita Smooth L1.
  • Perdita di confidenza (Lconf): Calcola la perdita di confidenza per l’utilizzo di una perdita softmax su più classi. Misura la differenza tra i punteggi di classe previsti e le etichette di classe effettive. La funzione di perdita complessiva è una somma ponderata delle perdite di localizzazione e confidenza.
  • Data Mining a negativi difficili: Per affrontare l’imbilanciamento tra esempi positivi (corrispondenti) e esempi negativi (non corrispondenti) durante l’addestramento, SSD utilizza data mining a negativi difficili. Seleziona un sottoinsieme di esempi negativi in base alla perdita di confidenza più alta per ogni casella predefinita. L’obiettivo è mantenere un rapporto ragionevole tra negativi e positivi (tipicamente intorno a 3:1) per un addestramento più efficiente e stabile.
  • Aumento dei dati: Applicare l’aumento dei dati per rendere il modello robusto a varie dimensioni e forme oggetti in entrata. Durante l’addestramento, ciascuna immagine in ingresso può essere sottoposta a diverse trasformazioni, tra cui ritaglio, ridimensionamento e ribaltamento orizzontale. Questi aumenti aiutano il modello a generalizzare meglio in scenari reali.

In generale, il processo di addestramento di SSD prevede l’assegnazione di informazioni sulla ground truth alle caselle predefinite, la definizione di un obiettivo di addestramento che include sia perdite di localizzazione che di confidenza, la selezione attenta delle scale delle caselle predefinite e dei rapporti d’aspetto, la gestione di esempi positivi e negativi non bilanciati e l’aumento dei dati per migliorare la robustezza del modello.

Confronti con altri modelli di rilevamento oggetti

SSD si distingue per le sue prestazioni in tempo reale, la semplicità e un buon equilibrio tra precisione e velocità. È adatto per molte applicazioni, specialmente quelle che richiedono un rilevamento oggetti efficiente in scenari in tempo reale o quasi in tempo reale. Tuttavia, per compiti che richiedono i più alti livelli di precisione, modelli come Faster R-CNN, RetinaNet o Cascade R-CNN possono essere più adatti nonostante i loro requisiti computazionali più elevati. La scelta del modello dipende dalle specifiche esigenze e vincoli dell’applicazione.

Applicazioni di SSD

  • Veicoli autonomi: Utilizzarlo per il rilevamento oggetti in tempo reale nelle auto a guida autonoma per identificare pedoni, veicoli e ostacoli sulla strada.
  • Sistemi di videosorveglianza: Impiegare sistemi di sicurezza e sorveglianza per rilevare e tracciare intrusi o attività sospette in un’area monitorata.
  • Analisi del settore al dettaglio: I rivenditori utilizzano SSD per monitorare gli scaffali dei negozi per la gestione dell’inventario, identificare il comportamento dei clienti e analizzare i modelli di acquisto.
  • Automazione industriale: Nei contesti di produzione, SSD aiuta nel controllo della qualità identificando difetti dei prodotti sulla linea di produzione.
  • Applicazioni per droni: I droni dotati di SSD possono svolgere compiti come operazioni di ricerca e soccorso, monitoraggio agricolo e ispezione delle infrastrutture, rilevando oggetti o anomalie dall’alto.

Sfide e limitazioni di SSD

La principale limitazione di SSD è la difficoltà nel rilevare con precisione oggetti piccoli, oggetti pesantemente occlusi o oggetti con rapporti d’aspetto estremi, ciò può influire sulle sue prestazioni in determinati scenari.

  • Rilevamento di oggetti piccoli: Una delle principali limitazioni di SSD è la sua efficacia nel rilevare oggetti piccoli. Gli oggetti piccoli possono presentare sfide di accuratezza nel rilevamento a causa delle caselle ancorate che non rappresentano efficacemente la loro dimensione e forma all’interno delle piramidi delle caratteristiche.
  • Sfondi complessi: Gli oggetti posizionati contro sfondi complessi o disordinati possono rappresentare delle sfide per SSD. Il modello potrebbe produrre falsi positivi o classificare erroneamente gli oggetti a causa di informazioni visive confuse nell’ambiente circostante.
  • Un compromesso tra velocità e accuratezza: Mentre SSD eccelle in velocità, raggiungere una precisione di alto livello può richiedere dei compromessi. In applicazioni in cui è critica la precisione, sacrificarne la velocità potrebbe portare a preferire metodi di rilevamento oggetti alternativi e più accurati. Se vogliamo una previsione rapida, si utilizza SSD, ma ha una minor precisione.
  • Costi di personalizzazione: Ottimizzare SSD per applicazioni specifiche può richiedere tempo e risorse. La personalizzazione e l’ottimizzazione per adattarsi a casi d’uso particolari potrebbero richiedere competenze nell’apprendimento profondo.

Progetto su SSD

Protezione delle mani per le macchine distruggi documenti: l’uso di SSD (Single Shot MultiBox Detector) nel progetto è significativo, in quanto costituisce la base del modello di rilevamento degli oggetti utilizzato per identificare e monitorare le mani vicino alle macchine distruggi documenti. Ecco come SSD viene utilizzato nel progetto:

Per ottenere il codice sorgente del progetto, clonare il repository:

git clone https://github.com/NeHa77A/Shredder-Machine-Hand-Protection.git

  • Rilevamento oggetti: SSD viene utilizzato come framework di rilevamento oggetti per identificare e localizzare le mani in dati video in tempo reale. È particolarmente adatto per questa operazione in quanto offre elevate prestazioni di accuratezza e inferenza efficiente, fondamentali per individuare rapidamente le mani vicino al distruggi documenti.
  • Elaborazione in tempo reale: garantisce che il sistema possa reagire tempestivamente a potenziali rischi per la sicurezza. Consente una rapida e accurata identificazione delle mani, consentendo al sistema di emettere avvisi ed avviare arresti in millisecondi.
  • Personalizzazione: SSD può essere ottimizzato e personalizzato per i requisiti specifici del progetto. Addestrando il modello SSD su dati annotati di lavoratori che utilizzano le macchine distruggi documenti, può adattarsi alle diverse condizioni di lavoro e ai design delle macchine.
  • Accuratezza e precisione: SSD eccelle nel fornire un rilevamento oggetti accurato e preciso. Questo è fondamentale per distinguere le mani dagli altri oggetti o elementi di sfondo nell’alimentazione video, garantendo che le misure di sicurezza vengano attivate solo quando necessario.
  • Efficienza: L’efficienza di SSD è fondamentale per mantenere le prestazioni del sistema. È ottimizzato per funzionare su diverse piattaforme hardware, rendendolo una scelta ideale per il deployment in un contesto industriale.

In sintesi, SSD è fondamentale per il progetto in quanto costituisce la base del modello di rilevamento oggetti. La sua elaborazione in tempo reale, accuratezza e capacità di personalizzazione consentono al sistema di sicurezza di individuare ed intervenire in modo efficace in caso di potenziali lesioni alle mani vicino alle macchine distruggi documenti.

Studi di casi reali

  • Guida autonoma: Le auto a guida autonoma di Tesla utilizzano SSD e altre tecniche di computer vision per rilevare e classificare oggetti sulla strada, come pedoni, veicoli e segnali stradali. Questa tecnologia è fondamentale per ottenere sistemi di assistenza avanzati alla guida e capacità di guida completamente autonoma.
  • Sicurezza negli aeroporti: Gli aeroporti utilizzano sistemi di sorveglianza basati su SSD per monitorare passeggeri e bagagli. SSD aiuta a identificare oggetti sospetti, bagagli abbandonati e attività insolite, migliorando le misure di sicurezza.
  • Gestione dell’inventario al dettaglio: I rivenditori utilizzano SSD per la gestione dell’inventario, consentendo il conteggio rapido e accurato dei prodotti sugli scaffali dei negozi. Aiuta a tenere traccia dei livelli di stock e a prevenire discrepanze nell’inventario.
  • Automazione industriale: Controllo di qualità nella produzione: Le industrie manifatturiere utilizzano SSD per garantire la qualità dei prodotti. Viene impiegato per ispezionare i prodotti alla ricerca di difetti, verificare la posizione delle etichette e controllare la contaminazione nella linea di produzione.
  • Linee di assemblaggio robotizzate: Nell’ambito della robotica, SSD viene impiegato per identificare e localizzare oggetti in ambienti dinamici. Questo è particolarmente utile nelle operazioni di prelievo e posizionamento e in altre attività robotiche.

Questi esempi reali dimostrano la versatilità e l’importanza degli SSD in vari settori.

Conclusione

In conclusione, SSD è un modello di rilevamento oggetti rivoluzionario che unisce velocità e precisione. L’uso innovativo di predizioni di caselle di rilevamento multiscala consente a SSD di catturare oggetti di forme e dimensioni diverse in modo efficiente. L’introduzione di un numero maggiore di caselle di riferimento predefinite accuratamente selezionate migliora la sua adattabilità e prestazioni.

SSD è una soluzione versatile di rilevamento oggetti indipendente e una base per sistemi più ampi. Bilancia velocità e precisione, rendendolo prezioso per il rilevamento, il tracciamento e il riconoscimento oggetti in tempo reale. Nel complesso, SSD rappresenta un notevole avanzamento nella computer vision, affrontando in modo efficiente le sfide delle applicazioni moderne.

Punti chiave

  • I risultati empirici dimostrano che SSD spesso supera i modelli tradizionali di rilevamento oggetti in termini di accuratezza e velocità.
  • SSD utilizza un approccio multiscala, che consente di rilevare oggetti di varie dimensioni nella stessa immagine in modo efficiente.
  • SSD è uno strumento versatile per varie applicazioni di computer vision.
  • SSD è rinomato per la sua capacità di rilevamento oggetti in tempo reale o quasi in tempo reale.
  • L’uso di un numero maggiore di caselle predefinite consente a SSD di adattarsi meglio a scene complesse e variazioni oggetti sfidanti.

Domande frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.