< >

Riconoscimento oggetti in tempo reale

Da TED.com un video che illustra un sistema di riconoscimento oggetti nelle immagini in tempo reale

Trascrizione testo video dal sito TED.com eseguita da Elisabetta Siagri Reviewed by Maria Carmina Distratto


Dieci anni fa, i ricercatori di visione artificiale pensavano che fare in modo che un computer riuscisse a differenziare un gatto e un cane sarebbe stato quasi impossibile, nonostante il progresso significativo nel campo dell'intelligenza artificiale. Ora possiamo farlo a un livello di precisione superiore al 99 per cento. Questa è chiamata classificazione d'immagini -- dategli un'immagine, etichettate quell'immagine -- e i computer riconoscono anche migliaia di altre categorie. 


Sono un dottorando della University of Washington, e lavoro su un progetto chiamato Darknet, che è un framework di rete neurale per sviluppare e testare i modelli di visione artificiale. Quindi vediamo cosa ne pensa Darknet di quest'immagine. Quando eseguiamo il nostro classificatore su quest'immagine, vediamo che non otteniamo solo la previsione di un cane o di un gatto, ma la previsione della razza specifica. Questo è il livello di precisione attuale. Ed è corretto. Infatti, il mio cane è un Alaskan Malamute. 


Abbiamo fatto dei passi da gigante nella classificazione di immagini, ma cosa succede quando passiamo il nostro classificatore su un'immagine come questa? Beh... Vediamo che il classificatore ritorna con una predizione abbastanza simile. Ed è corretto, c'è un Alaskan Malamute sull'immagine, ma con questa sola etichetta, non ne sappiamo poi molto di quello che succede nell'immagine. Abbiamo bisogno di qualcosa di più potente. Io lavoro su un problema chiamato riconoscimento di oggetti, dove guardiamo un'immagine e cerchiamo di trovare gli oggetti, li delimitiamo con dei "bounding boxes" e definiamo quegli oggetti. Questo è quello che succede quando passiamo un rilevatore su quest'immagine. 


Ora, con questo tipo di risultato, possiamo fare molto di più con i nostri algoritmi di visione artificiale. Vediamo che riconosce che ci sono un gatto e un cane. Conosce la loro posizione, la loro taglia. Potrebbe addirittura conoscere informazioni extra. C'è un libro sullo sfondo. Se vuoi costruire un sistema basato sulla visione artificiale, diciamo un'auto senza pilota o un sistema robotico, questo è il tipo di informazione che vuoi. Vuoi qualcosa per poter interagire con il mondo fisico. Quando ho iniziato a lavorare sul riconoscimento di oggetti, servivano 20 secondi per processare una sola immagine. E per capire quanto è importante la velocità in questo settore, ecco un esempio di un rilevatore di oggetti che impiega due secondi per processare un'immagine. Quindi questo è 10 volte più veloce del rilevatore a 20 secondi a immagine, e potete vedere che nel momento in cui fa le sue predizioni l'aspetto del mondo è cambiato, e questo non sarebbe utile per un'applicazione. 


Se velocizziamo di un altro fattore 10, questo è un rilevatore che funziona a cinque immagini al secondo. È molto meglio, ma, ad esempio, se c'è un qualsiasi movimento significativo, non vorrei un sistema come questo mentre guido. 


Questo è il nostro sistema di riconoscimento in funzione in tempo reale sul mio computer. Quindi mi identifica senza problemi mentre mi muovo sull'immagine, ed è efficace anche quando cambiano la taglia, la posa, avanti, indietro. È fantastico. Questo è ciò di cui abbiamo davvero bisogno se vogliamo costruire sistemi basati sulla visione artificiale. 


Quindi in pochi anni, siamo passati da 20 secondi a immagine a 20 millisecondi a immagine, mille volte più veloce. Come ci siamo riusciti? In passato, i sistemi di riconoscimento di oggetti avrebbero preso un'immagine come questa e l'avrebbero divisa in un insieme di regioni e poi passato un classificatore su ognuna di queste regioni, e punteggi elevati per quel classificatore sarebbero stati considerati come riconoscimenti nell'immagine. Ma questo voleva dire passare un classificatore migliaia di volte su un'immagine, migliaia di valutazioni di rete neurale per produrre il riconoscimento. Invece, abbiamo allenato una singola rete a fare tutto il riconoscimento per noi. Produce tutti i bounding boxes e ordina le probabilità simultaneamente. Con il nostro sistema, invece di guardare un'immagine migliaia di volte per ottenere il riconoscimento, guardi una volta sola, ed è per questo che lo chiamiamo il metodo YOLO del riconoscimento d'oggetti. Con questa velocità possiamo quindi non limitarci alle immagini; ma possiamo processare video in tempo reale. E ora, invece di vedere solo il cane e il gatto, possiamo vederli muovere e interagire tra loro. 


Questo è un rilevatore che abbiamo allenato su 80 classi diverse nel dataset COCO di Microsoft. Contiene di tutto come cucchiaio e forchetta, ciotola, oggetti comuni come questi. Ma anche una varietà di cose più esotiche: animali, auto, zebre, giraffe. E adesso facciamo qualcosa di divertente. Ci metteremo in mezzo al pubblico per vedere che tipo di oggetti possiamo identificare. Qualcuno vuole un peluche? Ci sono degli orsacchiotti lì in mezzo. E possiamo abbassare un po' la nostra soglia di riconoscimento, così possiamo riconoscervi meglio in mezzo al pubblico. Vediamo se riusciamo a trovare dei segnali di stop. Troviamo degli zaini. Facciamo uno zoom. Ed è fantastico. E tutto il processo avviene in tempo reale sul computer. 


Ed è importante ricordare che questo è un sistema di riconoscimento di oggetti di uso generale, quindi lo possiamo allenare per qualsiasi settore di immagini. Lo stesso codice che usiamo per trovare segnali di stop o pedoni, biciclette in un veicolo con pilota automatico, può essere usato per trovare cellule cancerose durante una biopsia. E ci sono ricercatori in tutto il mondo che stanno già usando questa tecnologia per fare passi avanti in campi come la medicina, la robotica. Questa mattina, ho letto un articolo in cui si parlava di un censimento degli animali al Nairobi National Park con YOLO integrato nel sistema di riconoscimento. Ed è perché Darknet è open source ed è di dominio pubblico, e chiunque può utilizzarlo liberamente. 


Ma volevamo rendere il riconoscimento ancora più accessibile e fruibile, e attraverso una combinazione di ottimizzazione del modello, binarizzazione di rete e approssimazione, abbiamo un riconoscimento di oggetti che funziona su un telefono. 


E sono davvero contento perché abbiamo una soluzione piuttosto efficace a questo problema di visione di computer di basso livello, e chiunque può prenderlo e costruirci qualcosa. Quindi il resto è nelle vostre mani e in quelle delle persone nel mondo che hanno accesso a questo software, e sono impaziente di vedere cosa le persone faranno con questa tecnologia.