Tutti noi del team Firebase ci siamo divertiti a giocare con il progetto CoreML-in-ARKit di Hanley Weng. Consente di visualizzare le etichette 3D sulle immagini rilevate in una scena. Anche se il rilevamento su dispositivo fornisce risposte rapide, abbiamo voluto creare una soluzione che offrisse la velocità del modello su dispositivo abbinata all'accuratezza delle soluzioni basate su cloud. Questo è esattamente ciò che abbiamo ottenuto con il progetto MLKit-ARKit. Continua a leggere per sapere nel dettaglio come abbiamo raggiunto questo risultato!
ML Kit for Firebase è un SDK per dispositivi mobili che sfrutta l'esperienza di machine learning (ML) Google Cloud nelle app per Android e iOS grazie a un pacchetto potente, ma facile da usare. Include API Base di semplice utilizzo e offre anche la possibilità di adoperare i propri modelli TFLite personalizzati.
ARKit è il framework Apple che combina il motion tracking del dispositivo, l'acquisizione della scena della telecamera, l'elaborazione avanzata delle scene e la convenienza del display per semplificare la creazione di un'esperienza AR. Puoi utilizzare queste tecnologie per creare molti tipi di esperienze AR sfruttando la fotocamera posteriore o frontale di un dispositivo iOS.
In questo progetto i frame ARKit passano dalla fotocamera posteriore a una coda. ML Kit li elabora per rilevare gli oggetti presenti in quel frame.
Quando l'utente tocca lo schermo, ML Kit restituisce l'etichetta rilevata con la massima confidenza. Quindi viene creato il testo in un fumetto 3D e aggiunto alla scena dell'utente.
ML Kit rende il machine learning facile per tutti gli sviluppatori di dispositivi mobili, indipendentemente dal loro livello di esperienza. All'interno di ML Kit è possibile adoperare i propri modelli TFLite per i casi d'uso più avanzati, ma per quelli più comuni è sufficiente implementare una delle API Base di semplice utilizzo. Queste API sono ideali per casi d'uso come il riconoscimento del testo, l'etichettatura delle immagini, il rilevamento dei volti e altro, e sono supportate dai modelli addestrati da Google Cloud. Nel nostro esempio utilizzeremo l'etichettatura delle immagini.
Le API Base sono disponibili in due versioni: su dispositivo e basate su cloud. Le API su dispositivo possono essere adoperate gratuitamente ed essere eseguite localmente, mentre quelle basate su cloud offrono una precisione maggiore e risposte più accurate. Le API Vision basate su cloud sono gratuite per le prime 1000 chiamate all'API, dopodiché sono a pagamento. Forniscono la potenza dei grandi modelli delle API di Google Cloud Vision.
Utilizziamo l'API di etichettatura delle immagini su dispositivo ML Kit per ottenere un feed live dei risultati che consenta di mantenere una frequenza costante di fotogrammi a 60 fps. Se l'utente tocca lo schermo, viene attivata una chiamata asincrona all'API di etichettatura delle immagini Cloud con l'immagine corrente. Quando riceviamo una risposta da questo modello più accurato, aggiorniamo immediatamente l'etichetta 3D. Pertanto, anche se eseguiamo in modo continuativo l'API su dispositivo e ne utilizziamo i risultati come fonte iniziale di informazioni, l'API Cloud, dotata di maggiore accuratezza, viene chiamata on-demand e i risultati che fornisce eventualmente sostituiscono l'etichetta su dispositivo.
Mentre l'API su dispositivo è in tempo reale con tutte le elaborazioni che avvengono localmente, l'API Cloud Vision effettua una richiesta di rete nel backend di Google Cloud sfruttando un modello più grande e più accurato. Dato che consideriamo questa risposta più precisa, nella nostra app sostituiamo l'etichetta fornita dall'API su dispositivo con il risultato dell'API Cloud Vision appena ricevuto.
1. Clonare il progetto
$ git clone https://github.com/FirebaseExtended/MLKit-ARKit.git
2. Installare i pod e aprire il file .xcworkspace per vedere il progetto in Xcode
$ cd MLKit-ARKit
$ pod install --repo-update
$ open MLKit-ARKit.xcworkspace
GoogleService-Info.plist
Info.plist
A questo punto l'app dovrebbe funzionare utilizzando il riconoscimento su dispositivo.
★ La funzione di rilevamento delle etichette Cloud è ancora gratuita per i primi 1000 utilizzi mensili. Fai clic qui per ulteriori dettagli sui prezzi.
A questo punto, l'app dovrebbe aggiornare le etichette con risultati più precisi ottenuti dall'API Cloud Vision.