Il riconoscimento di oggetti è una tecnica di visione artificiale per l’identificazione di oggetti in immagini o video. Il riconoscimento di oggetti è un output chiave degli algoritmi di deep learning e machine learning. Quando guardiamo una fotografia o un video, riusciamo immediatamente a individuare persone, oggetti, scene e dettagli visivi. L’obiettivo è quello di insegnare a un computer a svolgere un’attività naturale per l’uomo: identificare e riconoscere il contenuto di un’immagine.
Il riconoscimento di oggetti è una tecnologia fondamentale alla base delle automobili senza conducente, poiché consente loro di riconoscere un segnale di stop o di distinguere un pedone da un lampione. Inoltre, è molto utile in una varietà di applicazioni, come l’identificazione di patologie nel bioimaging, l’ispezione industriale e la visione robotica.
Riconoscimento di oggetti vs. rilevazione di oggetti
La rilevazione di oggetti e il riconoscimento di oggetti sono tecniche simili per l’identificazione di oggetti, ma differiscono nell’esecuzione. La rilevazione di oggetti è il processo di individuazione di istanze di oggetti nelle immagini. Nel caso del deep learning, la rilevazione di oggetti è un sottogruppo del riconoscimento di oggetti, dove l’oggetto non viene solo identificato, ma anche localizzato in un’immagine. Ciò consente di identificare e localizzare più oggetti all’interno della stessa immagine.
È possibile utilizzare una varietà di approcci per il riconoscimento di oggetti. Recentemente, le tecniche di machine learning e deep learning sono diventate approcci comunemente utilizzati per risolvere problemi legati al riconoscimento di oggetti. Entrambe le tecniche imparano a identificare gli oggetti nelle immagini, ma differiscono nell’esecuzione.
La sezione seguente spiega le differenze tra il machine learning e il deep learning per il riconoscimento di oggetti e mostra come implementarle.
Tecniche di riconoscimento oggetti
Riconoscimento oggetti tramite deep learning
Le tecniche di deep learning sono diventate un metodo diffuso per effettuare il riconoscimento di oggetti. I modelli di deep learning, come le reti neurali convoluzionali o CNN, vengono utilizzati per imparare automaticamente le caratteristiche di un oggetto al fine di indentificarlo. Ad esempio, una CNN può imparare a identificare le differenze tra cani e gatti analizzando migliaia di immagini addestrate e imparando le caratteristiche che differenziano un cane da un gatto.
Esistono due approcci per effettuare il riconoscimento di oggetti utilizzando il deep learning:
- Addestrare un modello da zero: Per addestrare una rete profonda da zero, è necessario raccogliere un set di dati etichettati di grandi dimensioni e progettare un’architettura di rete in grado di apprendere le feature e costruire modello. I risultati possono essere sorprendenti, ma questo approccio richiede grandi quantità di dati di training ed è necessario impostare i layer e i pesi nella CNN.
- Utilizzo di un modello di deep learning pre-addestrato: La maggior parte delle applicazioni di deep learning utilizza l’approccio denominato transfer learning, un processo che consiste nell’affinamento di un modello precedentemente addestrato. Si parte da una rete esistente, come AlexNet o GoogLeNet, in cui si inseriscono nuovi dati contenenti classi precedentemente sconosciute. Questo metodo richiede meno tempo e fornisce un risultato più rapido, poiché il modello è già stato addestrato su migliaia o milioni di immagini.
Il deep learning garantisce un alto livello di precisione, ma richiede grandi quantità di dati per effettuare previsioni accurate.
Riconoscimento oggetti tramite machine learning
Anche le tecniche di machine learning vengono ampiamente utilizzate per il riconoscimento di oggetti e offrono approcci diversi rispetto al deep learning. Tra gli esempi più comuni di tecniche di machine learning figurano:
- L’estrazione di caratteristiche HOG con un modello di machine learning SVM.
- Modelli bag-of-words con caratteristiche come SURF e MSER
- L’algoritmo Viola-Jones, che può essere utilizzato per riconoscere una varietà di oggetti, inclusi volti e parti superiori del corpo
Flusso di lavoro di machine learning
Per eseguire il riconoscimento di oggetti utilizzando un approccio standard di machine learning, si parte da una raccolta di immagini (o video) e si selezionano le caratteristiche significative in ciascuna immagine. Ad esempio, un algoritmo di estrazione feature potrebbe estrarre caratteristiche dei contorni o degli angoli che possono essere utilizzate per differenziare le classi nei dati.
Queste caratteristiche vengono aggiunte a un modello di machine learning, che le separerà in categorie distinte, quindi utilizzerà queste informazioni per l’analisi e la classificazione dei nuovi oggetti.
È possibile utilizzare una varietà di algoritmi di machine learning e metodi di estrazione di feature, che offrono molte combinazioni per creare un modello accurato di riconoscimento oggetti.
L’utilizzo del machine learning per il riconoscimento di oggetti offre la flessibilità di scegliere la migliore combinazione di caratteristiche e classificatori per l’apprendimento. Consente di ottenere risultati precisi con una piccola quantità di dati.
Differenze tra machine learning e deep learning per il riconoscimento di oggetti
La scelta dell’approccio ottimale per il riconoscimento di oggetti dipende dall’applicazione utilizzata e dal problema che si sta cercando di risolvere. In molti casi, il machine learning può essere una tecnica efficace, in particolare se si conoscono le feature o caratteristiche dell’immagine più appropriate per differenziare classi di oggetti.
L’aspetto principale da tenere presente al momento della scelta tra machine learning e deep learning è se di dispone di una GPU potente e di una grande quantità di immagini etichettate. Se la risposta a una di queste domande è No, un approccio di machine learning potrebbe essere la scelta migliore. Le tecniche di deep learning sono tendenzialmente più efficaci se si dispone di più immagini e una GPU contribuisce a ridurre il tempo di addestramento del modello.
Per saperne di più
Altri metodi di riconoscimento oggetti
In base all’applicazione, possono essere sufficienti anche altri approcci più basilari di riconoscimento oggetti.
- Il confronto di modelli, che utilizza un’immagine di piccole dimensioni, o modello, per trovare le regioni corrispondenti in un’immagine più grande
- La segmentazione di immagini e l’analisi dei blob, che utilizza le proprietà degli oggetti semplici, come le dimensioni, il colore o la forma
Generalmente, se un oggetto può essere riconosciuto utilizzando un approccio semplice come la segmentazione di immagini, è meglio partire dall’approccio più semplice. Ciò può fornire una soluzione efficace che non richiede centinaia o migliaia di immagini addestrate o una soluzione eccessivamente complessa.
deep learning e machine learning con MATLAB
Con solo poche righe di codice MATLAB, puoi costruire modelli di machine learning e deep learning per il riconoscimento di oggetti senza essere un esperto.
Utilizzare MATLAB per il riconoscimento di oggetti consente di essere efficaci in meno tempo, poiché permette di:
- Utilizzare le competenze del proprio settore e scoprire il data science con MATLAB:
Puoi utilizzare MATLAB per apprendere e acquisire competenze nei settori del machine learning e deep learning. MATLAB rende l’apprendimento di questi campi pratico e accessibile. Inoltre, MATLAB consente agli esperti del settore di creare modelli di riconoscimento oggetti anziché affidare il compito ai data scientist, che potrebbero non conoscere il tuo settore o la tua applicazione.
- Utilizzare app per etichettare dati e costruire modelli:
MATLAB consente di costruire modelli di machine learning e deep learning utilizzando il codice in minima parte.
Con l’app Classification Learner, puoi costruire rapidamente modelli di machine learning e confrontare diversi algoritmi di machine learning senza dover scrivere il codice.
Utilizzando l’app Image Labeler, puoi etichettare interattivamente gli oggetti all’interno di immagini e automatizzare l’etichettatura sul campo all’interno di video per l’addestramento e il test di modelli di deep learning. Questo approccio interattivo e automatizzato consente di ottenere migliori risultati in meno tempo.
- Integrare il riconoscimento di oggetti in un unico flusso di lavoro:
MATLAB è in grado di unificare più domini in un unico flusso di lavoro. MATLAB consente di progettare e programmare nel medesimo ambiente. Offre strumenti e funzioni per il deep learning e il machine learning e per una serie di domini che si servono di questi algoritmi, come la robotica, la visione artificiale e l’analisi dati.
MATLAB consente di automatizzare la distribuzione dei modelli in sistemi aziendali, cluster, cloud e dispositivi embedded.
Come saperne di più sul riconoscimento oggetti
Per ulteriori informazioni, vedi MATLAB, Image Processing Toolbox, Computer Vision Toolbox, Statistics and Machine Learning Toolbox e Deep Learning Toolbox.
Videos
Riconoscimento oggetti: Deep Learning e Machine Learning per la visione artificiale (26:57)
Scarica: Puoi anche scaricare il codice demo utilizzato nella presentazione.
Deep Learning con MATLAB: Deep Learning con 11 righe di codice MATLAB (2:38)