Che cos'è il rilevamento delle obiezioni con Tensorflow? e come funziona [esempi]

Pubblicato: 2021-06-18

Sommario

Rilevamento oggetti: cosa significa?

Il rilevamento di oggetti è un processo in cui un oggetto può essere identificato o localizzato in un'immagine o in un video attraverso l'aiuto della visione artificiale. Se abbiamo un'immagine con un gatto e una persona e dobbiamo classificare gli oggetti all'interno di un'immagine, allora è possibile applicare la tecnica di rilevamento degli oggetti, ovvero il rilevamento di oggetti, e si possono localizzare gli oggetti richiesti, ovvero il gatto e la persona. Ciò può essere ottenuto attraverso riquadri di delimitazione disegnati attorno agli oggetti rilevati. Quindi è nota la posizione degli oggetti desiderati.

La maggior parte delle persone si confonde ancora con il riconoscimento di oggetti e il riconoscimento di immagini. La differenza tra i due sta nel fatto che nel caso del riconoscimento dell'immagine, un'intera immagine viene etichettata mentre nel riconoscimento dell'oggetto, gli oggetti all'interno dell'immagine vengono etichettati.

La classe dell'oggetto, come una persona, un tavolo, ecc., e le coordinate della posizione degli oggetti in una data immagine possono essere identificate attraverso la tecnica del rilevamento degli oggetti. Le prestazioni di un algoritmo di rilevamento degli oggetti dipendono dalla sua capacità di individuare gli oggetti all'interno di un'immagine. Uno di questi esempi di rilevamento di oggetti è il rilevamento dei volti.

Perché il rilevamento di oggetti?

A causa delle capacità uniche appartenenti al rilevamento degli oggetti, il processo può essere applicato in molte attività importanti, come ad esempio:

  • Conteggio delle persone in mezzo alla folla.
  • Guida nel caso di auto a guida autonoma.
  • Video sorveglianza.
  • Rilevamento del volto.
  • Rilevamento di anomalie

Approcci di rilevamento di oggetti

Gli algoritmi utilizzati per il metodo di rilevamento degli oggetti potrebbero essere addestrati prima del suo utilizzo o senza supervisione.

Per il rilevamento degli oggetti vengono utilizzati due approcci, ovvero gli approcci basati sull'apprendimento automatico e l'apprendimento approfondito.

  • Varie caratteristiche di un'immagine come l'istogramma del colore o i bordi, ecc. Vengono prese in considerazione dagli approcci basati su ML. Vengono quindi generati modelli di regressione basati su queste caratteristiche e viene prevista la posizione dell'oggetto.
  • Le reti neurali convoluzionali (CNN) sono impiegate nel caso di approcci basati sul deep learning per rilevare un oggetto attraverso metodi non supervisionati.

Utilizzo di un metodo di rilevamento di oggetti

L'attività di rilevamento degli oggetti può essere eseguita attraverso i seguenti passaggi:

  • L'immagine di input è suddivisa in diversi piccoli segmenti. Vengono creati insiemi di riquadri legati insieme che coprono l'intera immagine.
  • Ogni area segmentata è sottoposta al processo di estrazione delle caratteristiche. Quindi prevede la presenza di oggetti validi all'interno della scatola. Il processo determina se sono presenti caratteristiche visive nella scatola.
  • Viene costruita un'unica scatola per le scatole sovrapposte.

Rilevamento di oggetti tramite TensorFlow

TensorFlow può essere definito come una libreria open source per l'apprendimento automatico ed è stata ampiamente utilizzata in diverse applicazioni come riconoscimento di immagini, ricerca vocale, riconoscimento di oggetti, ecc. Sia le API Python che C++ sono fornite da TensorFlow.

  • All'interno di TensorFlow sono presenti sia algoritmi di deep learning che algoritmi di machine learning.
  • Python è impiegato come linguaggio front-end e funziona anche in modo efficiente in C++.
  • Un grafico di calcolo viene creato dagli sviluppatori utilizzando TensorFlow.
  • Le operazioni matematiche sono rappresentate da nodi in un grafico ei dati sono rappresentati attraverso le connessioni.

TensorFlow è stato sviluppato per condurre ricerche sull'apprendimento automatico e sulle reti neurali profonde dal team di Google Brain all'interno dell'organizzazione Machine Intelligence Research di Google.

Un'API (Application Programming Interface) impedisce agli sviluppatori di scrivere codici da zero fornendo un insieme di operazioni comuni. L'API di rilevamento degli oggetti TensorFlow viene applicata per addestrare i modelli per il rilevamento degli oggetti. Il framework è costruito su TensorFlow. Le caratteristiche appartenenti al rilevamento di oggetti TensorFlow sono:

  • I modelli già formati sono chiamati "Zoo modello" e sono disponibili nel framework.
  • I dataset utilizzati per addestrare i vari modelli addestrati sono:
  • set di dati COCO.
  • set di dati KITTI.
  • Set di dati di immagini aperte

Il framework TensorFlow per il rilevamento di oggetti è costituito da vari modelli con un'architettura varia e quindi diverse precisioni di previsione. I tipi di architettura dei modelli già formati sono:

1. MobileNet-SSD

Una rete di singola convoluzione identifica la posizione del riquadro di delimitazione in un singolo passaggio. L'architettura è costituita da un livello di base (MobileNet) con diversi livelli di convoluzione. Le posizioni dei riquadri di delimitazione vengono previste tramite l'operazione sulle mappe delle caratteristiche. Le informazioni presenti con ogni riquadro di delimitazione sono elencate di seguito:

  • Posizioni di offset del riquadro di delimitazione nei quattro angoli (cx, cy, w, h).
  • Probabilità di classe C (c1, c2, …cp)

La forma della scatola non è prevista da SSD, ma le posizioni della scatola sono previste. Il numero K di riquadri di delimitazione è determinato per ciascuna posizione della mappa delle caratteristiche. La forma del rettangolo di selezione k è già impostata prima dell'allenamento vero e proprio.

La seguente equazione calcola la perdita.

L=1/N (classe L + scatola L)

Dove, N: numero di scatole abbinate, classe L: perdita softmax, scatola L: errore associato alle scatole abbinate.

2. Rete mobile

Una convoluzione standardizzata è fattorizzata in una convoluzione e una convoluzione che è puntuale, cioè 1*1 convoluzioni. Il calcolo viene ridotto con la riduzione della dimensione del modello attraverso la fattorizzazione.

3. Inception-SSD

Inception-SSD ha la stessa architettura di MobileNet-SSD, tuttavia, la base dell'architettura nel caso di MobileNet-SSD era MobileNet, e qui è il modello Inception.

4. RCNN più veloce

La previsione della posizione dell'oggetto si basa su algoritmi di proposta della regione. Le reti di rilevamento hanno ridotto il loro tempo di esecuzione grazie all'avanzamento in SSPnet e Fast R-CNN. Una mappa delle caratteristiche convoluzionali viene generata quando un'immagine di input viene inserita nella rete neurale nel caso di Faster RCNN.

La proposta di regione viene quindi identificata attraverso la mappa delle caratteristiche convoluzionali e deformata in quadrati. I quadrati vengono quindi rimodellati in una dimensione che viene fissata tramite uno strato di pooling ROL (Region Of Interest Layer). Viene quindi utilizzato come input per un livello completamente connesso.

Il livello softmax viene utilizzato per prevedere la classe della proposta di regione dal vettore di caratteristiche ROL. Sono previsti anche i valori di offset del riquadro di delimitazione.

Selezione del modello TensorFlow di rilevamento oggetti

Il modello TensorFlow di rilevamento oggetti corretto può essere scelto dall'API TensorFlow in base ai requisiti specifici dell'utente. La rete di rilevamento single-shot, ovvero la rete SSD può essere utilizzata se l'utente richiede un modello ad alta velocità. Il modello è abbastanza più veloce e può rilevare feed video a fps elevati.

Tuttavia, se è necessaria una maggiore precisione, FasterRCNN potrebbe essere una scelta migliore poiché la precisione del modello è elevata ma ha una velocità relativamente più bassa. Pertanto, l'utente può esplorare le varie opportunità disponibili secondo le sue esigenze.

Un esempio di TensorFlow per il rilevamento di oggetti

L'utilizzo dell'API TensorFlow per il rilevamento degli oggetti non richiede una conoscenza preliminare dell'apprendimento automatico o delle reti neurali. I file forniti dall'API verranno utilizzati principalmente. L'unico requisito è conoscere i fondamenti di Python.

1. Download di TensorFlow

  • TensorFlow può essere scaricato tramite git o scaricato manualmente.
  • Il download di TensorFlow tramite git è uno dei modi più semplici per il download. Per il download tramite git, il sistema dovrebbe già avere git preinstallato al suo interno. Una volta installato git, è necessario digitare il seguente comando nel terminale.
  • È necessario visitare il seguente collegamento e fare clic sul pulsante verde. I file zippati devono essere scaricati ed estratti.
  • La cartella deve essere rinominata in modelli da models-master.
  • Un ambiente deve essere creato virtualmente. Uno degli obiettivi principali della creazione di un ambiente virtuale Python è la creazione di un ambiente Python isolato. Deve essere utilizzato per progetti in Python. Pertanto, le dipendenze di ogni progetto saranno diverse.
  • I seguenti comandi devono essere utilizzati nel prompt di anaconda:

In questo caso, l'ambiente virtuale è denominato obj_detection

conda create -n obj_detection -> per configurare virtualmente l'ambiente

condaactivate obj_detection -> per attivare l'ambiente virtuale

2. Installazione delle dipendenze

  • Le dipendenze richieste dall'API devono essere installate sul PC locale.
  • Le dipendenze possono essere installate dopo aver attivato l'ambiente virtuale.
  • È necessario digitare il comando seguente

pip install tensorflow

  • Se è presente una GPU, è necessario il comando seguente

pip installa tensorflow-gpu

  • Le altre dipendenze devono essere installate tramite il comando seguente

pip install pillow Cython lxml jupyter matplotlib contextlib2 tf_slim

3. Download dei buffer di protocollo (Protobuff)

  • I buffer di protocollo sono alcuni meccanismi per strutturare i dati in serie come l'XML.
  • 'Protobuff' deve essere scaricato dal link .
  • Estrarre i file e copiare i file nella sottocartella denominata "ricerca" nella cartella "modelli" già scaricati.
  • È necessario navigare nella cartella contenente i file protobuf ed eseguire il comando seguente

protoc oggetto_rilevamento/protos/*.proto –python_out=.

  • L'esecuzione riuscita del comando creerà un file python su ciascuno dei file proto nella cartella protos sotto il rilevamento degli oggetti nella cartella modelli.

Conclusione

Il rilevamento di oggetti è una tecnica ampiamente applicata in varie applicazioni in tempo reale. Abbiamo imparato che la tecnica può essere raggiunta attraverso l'applicazione di algoritmi di machine learning o deep learning.

Inoltre, con l'applicazione di un'API, ovvero TensorFlow, gli utenti devono avere una conoscenza preliminare del concetto di programmazione Python. Solo allora i metodi di rilevamento degli oggetti che utilizzano l'API TensorFlow potrebbero essere compresi correttamente. TensorFlow è una piattaforma open source per l'apprendimento automatico. Pertanto, per comprendere il meccanismo di funzionamento di TensorFlow e la sua applicazione, è meglio acquisire conoscenza dei concetti di machine learning.

Se sei un professionista di medio livello che vuole imparare la programmazione Python, distribuire modelli ML insieme al cloud computing, puoi dare un'occhiata al corso " Master of Science in Machine Learning & Artificial Intelligence " fornito da upGrad . Il corso certificato congiuntamente da IIIT Bangalore e LJMU allineerà i tuoi obiettivi con la formazione degli esperti e ti preparerà per l'ingresso nelle aziende dei tuoi sogni. Tutto ciò che serve è avere una laurea. Il nostro team di assistenza è a disposizione per risponderti in caso di domande relative al corso di upGrad.

Guida la rivoluzione tecnologica guidata dall'intelligenza artificiale

PROGRAMMA EXECUTIVE PG IN MACHINE LEARNING E INTELLIGENZA ARTIFICIALE
Applica ora