Dietro le quinte: Cognitive Services come funzionano e a cosa servono

Dietro le quinte: Cognitive Services come funzionano e a cosa servono

In questo post abbiamo fatto un operazione di “riciclaggio”, sbobinando un podcast realizzato da  DotNetPodcast che ha realizzato una intervista su un tema nuovo e dagli sviluppo interessanti i Cognitive Services  , aldilà del nome estremamente tecnico, scoprirete da questa intervista che invece questi servizi aprono le porte ad un utilizzo “emozionale” del web, dai confini ancora tutti da definire.

Questi sono i protagonisti del podcast che ringraziamo.

L’intervistatore
Antonio Giglio

antoniogiglio

 

 

 

 

Gli intervistati

Riccardo Cappello                                          Marco Dal Pino                                                 Marco Minerva

RiccardoCappello                                  marcodalpino                                             marcominerva

 

Ascolta o scarica il podcast

 

 

Un saluto ai nostri ascoltatori da Antonio Giglio e dal team di DotNetPodcast e benvenuti a questa nuova puntata durante la quale faremo una introduzione ad una novità introdotta a Build 2016, parleremo dei Cognitive Services.
Ai nostri microfoni abbiamo Marco Dal Pino, Marco Minerva e Riccardo Cappello.
Benvenuti ragazzi.

Marco Dal Pino e  Marco Minerva sono già stati nostri ospiti e non hanno certo bisogno di presentazioni, ma Riccardo tu sei nuovo qui a DotNetPodcast, parlaci un po’ di te.

 

Riccardo Cappello:
Con molto piacere. Ciao a tutti sono Riccardo Cappello e lavoro nel mondo IT da più di 15 anni, ho iniziato come sviluppatore, come un po’ tutti, e adesso invece ricopro il ruolo di Responsabile Tecnico per l’azienda nella quale lavoro , di Firenze, che si chiama Vivido.
Da un paio di anni sono membro dello staff di DotNetToscana e ho il piacere di condividere questa esperienza con tutti i ragazzi che ne fanno parte e sono molto contento di abbracciare completamente la tecnologia Microsoft in tutti suoi aspetti.

 

Antonio Giglio:
Grazie Riccardo.
Prima ho anticipato che a Build 2016 sono stati presentati i Cognitive Services, possiamo dare un maggior dettaglio ai nostri ascoltatori, ci potete spiegare di cosa parliamo esattamente?

 

Marco Minerva:
Dunque, brevemente si tratta di una serie di servizi che consentono a noi sviluppatori di realizzare applicazioni che sono in grado di analizzare e interpretare la realtà, usando in questi casi si dice Metodi di Comunicazione Naturale.
Al momento questi servizi sono disponibili in Preview e vengono fornite 22 API ovvero 22 funzionalità diverse che noi abbiamo a disposizione e che possiamo integrare nelle nostra applicazioni, che sono divise in 5 categorie, che rappresentano ognuna un’area dove possiamo concentrarci, che sono:

  • Vision
  • Speech
  • Language
  • Knowledge
  • Search

Ognuna di queste rappresenta un’area di servizi della piattaforma Cognitive.
Giusto per fare un esempio abbiamo la parte Vision che racchiude tutta quella che è l’analisi, rappresentazione di immagini e video.
Mentre abbiamo una parte di Language che ci fornisce strumenti per capire che cosa l’utente vuole per interpretare proprio quello che ha scritto, per capire che sta cercando all’interno della nostra applicazione e così via.

 

Riccardo Cappello:
Aggiungo solamente che il fatto che i Services sono il risultato di anni di ricerca in diversi settori dell’Intelligenza Artificiale.
Più che altro l’obbiettivo di Microsoft è quello di offrire dei servizi che possono dare un cosiddetto “lato umano” alle applicazioni e per far questo vengono sfruttate delle combinazioni di Vision, piuttosto che di Natural Language Processing piuttosto che Image Recognition , Machine Learning e Deep Neural Network

 

Marco Dal Pino:
Tra l’altro proprio a partire da Build e nei mesi precedenti ci sono stati già numerosi esempi in giro per il web ed in particolare sui siti di Microsoft che ha cominciato a tirar fuori una serie di servizi che all’epoca si chiamavano Project Oxford, e in questi siti permetteva, in maniera giocosa, di realizzare operazioni del tipo riconoscere l’età delle persone oppure associare una razza di cani ad una immagine di una persona.
Dicevamo che questi esempi sono già delle applicazioni che probabilmente sono servite da traino, da introduzione, anche per farceli provare questo Cognitive Service, anche se non abbiamo fatto o utilizzato applicazioni che effettivamente li usano, già con questi giochetti ci abbiamo potuto mettere le mani sopra.

 

Antonio Giglio :
Davvero interessante sotto molti punti di vista. Possiamo spiegare brevemente ai nostri ascoltatori come funzionano e come si utilizzano i Cognitive Services?

 

Marco Dal Pino:
Questi Cognitive Services sono sostanzialmente implementati in questo modo.
Sono stati creati degli EndPoint http, quindi sostanzialmente facendo delle chiamate REST, possono passare delle immagini o video o un audio che stiamo registrando oppure che abbiamo già registrato, e il servizio nel web, tramite questi EndPoint ci restituisce un risultato in base al servizio che noi siamo andati a richiamare e quindi, ad esempio, se abbiamo mandato una foto per il servizio legato alle emozioni noi riceveremo indietro quelle che sono le emozioni sulla faccia della foto che abbiamo inviato.

 

Riccardo Cappello:
Dietro le quinte di questi servizi si basa una infrastruttura cloud molto molto complessa. Ad esempio viene sfruttato pienamente il Machine Learning di Azure, ma tutti questi servizi sono comunque completamente trasparenti agli sviluppatori, poiché come dice il nome stesso Cognitive è un servizio e quindi, e questa è un’altra nota positiva, gli aggiornamenti e le migliorie al servizio arrivano gratis a chi lo utilizza.

 

Antonio Giglio :
Immagino che dietro questi servizi ci sia un vero e proprio mondo.
Ma andiamo con ordine. Potete dirci su quali piattaforme sono supportati i Cognitive Services?

 

Riccardo Cappello:
Poiché i Cognitive Services sono accessibili a normali chiamate http, virtualmente sono quindi accessibili da qualsiasi piattaforma, chiunque è in grado di collegarsi alla rete, può fare chiamate http, quindi può utilizzarli.
Tuttavia per renderne ancora più semplice l’adozione e l’utilizzo Microsoft ha realizzato per molte piattaforme degli SDK.
Questi ci permettono di utilizzarle in maniera ancora più semplice e rapida.
Possiamo quindi lavorare con applicazioni Windows piuttosto che con applicazioni Universal oppure con applicazioni Xamarin.
Se poi la mia piattaforma non ha un SDK appropriato possiamo fare delle chiamate REST in http e accedere alle varie funzionalità.

 

Marco Minerva:
E da questo punto di vista aggiungo una cosa che secondo me è molto importante, soprattutto al giorno d’oggi.
Questi SDK sono naturalmente completamente Open Source , come detto sono disponibili su GitHub e quindi danno una possibilità molto interessante che è quella di offrirci la possibilità di comprendere come esattamente funzionano, cosa c’è dietro le quinte nell’interazione con il servizio, ma anche di proporre correzioni e nuove funzionalità agli SDK stessi, che quindi al giorno d’oggi, per come è l’evoluzione di questi tipi di strumenti è sicuramente un aspetto da non trascurare.

 

Antonio Giglio:
Parlando proprio di aspetti da non trascurare, qual è il costo di questi servizi?

 

Marco Minerva:
Allora se noi vogliamo iniziare ad utilizzare i Cognitive Services possiamo farlo in modo completamente gratuito.
Ogni servizio fornito infatti ci dà la possibilità di utilizzarlo, fino ad una certa soglia ,in modo completamente gratuito, quindi Vision per l’immagini , piuttosto che Speech o Language, possiamo utilizzarli fino ad un certo numero di chiamate senza dover spendere un euro.
Per chiamata in questo caso intendiamo , ad esempio, la richiesta della descrizione di una immagine, piuttosto che il riconoscimento delle emozioni dei volti in una foto e così via.
Quindi questo ci permette di sperimentare effettivamente le potenzialità dei servizi senza spendere nulla, dandoci la possibilità di lavorare in modo libero da ogni vincolo economico.
Naturalmente se abbiamo delle applicazioni che devono effettuare un numero di transazioni oltre queste soglie, come ormai ci ha abituato il tipico approccio di Azure, abbiamo a disposizione dei piani a pagamento dipendente dall’effettivo consumo che facciamo dei servizi.
Essenzialmente abbiamo una quota per ogni transazione effettivamente eseguita e quindi per ogni chiamata che viene fatta al servizio.

 

Marco Dal Pino:
Esatto. E questi piani, queste quote, sia per i piani gratuiti che per quelli a pagamento sono disponibili già fin da oggi andando sul sito microsoft.com/cognitive e lì ci sono tutte le varie informazioni, spiega quali sono i piani e quali sono le limitazioni nei vari casi.
Tra l’altro c’è da dire una cosa molto importante che i servizi in questo momento sono in preview, e quindi io mi aspetterei come succede generalmente per i vari servizi di Azure, che questi quando vanno in general availability, cioè quando saranno disponibili in maniera definitiva, anche i costi e quello che si può avere a livello di piani, potrebbe quindi cambiare.
Stiamo a vedere cosa succede da qui ad allora, per adesso direi che un’ottima idea è quella di cominciare a sperimentarli.

 

Antonio Giglio:
Quali sono invece i principali scenari di utilizzo dei Cognitive Service?

 

Marco Dal Pino:
Il primo scenario, quello che ovviamente mi è venuto in mente, tra l’altro l’ho vissuto in prima persona perché ero proprio presente quando sono stati presentati questi servizi durante la keynote al Build 2016.
E’ arrivato in sala al keynote questo ingegnere che lavora in Microsoft Research in Inghilterra ipovedente , in questo momento credo sia cieco completo, ha perso la vista a 7 anni.
Ha presentato questa applicazione che toccando i suoi occhiali era in grado di ricevere le informazioni su quello che gli stava accadendo intorno a lui, quindi sapere se le persone con le quali sta parlando o interagendo sono maschi o femmina, che età hanno, che tipo di emozioni o in quel momento qual è il loro umore, quindi se sono felici , contenti, scontenti, arrabbiati, etc. , oppure se deve leggere il menù di un ristorante, nello stesso modo, questo servizio è in grado di dettargli il menù semplicemente toccando i suoi occhiali.
Quindi direi che questo è uno scenario molto interessante che ci ha, tra l’altro, lasciati tutti molto impressionati in sala, infatti c’è stata una standing ovation che è durata alcuni minuti, cosa che non succede spesso ad eventi di tipo tecnico.

 

Riccardo Cappello:
Un altro scenario che mi viene in mente può essere quello di utilizzare ad una conferenza, come ad esempio ad un evento come Build, un sistema di traduzione in tempo reale, quindi uno speaker che parla nella sua lingua, può parlare tranquillamente nella sua lingua ed il servizio di Cognitive traduce in real time, e quindi la platea può ascoltare e seguire in maniera molto piacevole.

 

Antonio Giglio:
Effettivamente sono molto interessanti questi scenari descritti. Qui il limite su queste tecnologie è veramente dato solo dalla fantasia. Ma voi avete avuto modo di utilizzarli concretamente in qualche progetto?

 

Marco Minerva:
Assolutamente si. Proprio dopo aver visto il video alla Build di cui parlavamo prima, abbiamo voluto provare in prima persona a realizzare un’applicazione analoga proprio come quella che abbiamo visto durante la keynote, con l’idea di capire la difficoltà nel creare uno strumento del genere, uno strumento utile che potesse aiutare persone non vedenti.
Ci siamo messi subito al lavoro ed abbiamo realizzato un progetto che abbiamo chiamato See4Me anch’esso completamente open source con i sorgenti pubblicati su GitHub, un applicazione che usa i servizi di Cognitive.
Al momento sfruttiamo i Vision ed Emotion ed ha in realtà un funzionamento molto semplice, abbiamo un applicazione per smartphone in cui toccando lo schermo del telefono l’immagine inquadrata viene analizzata , utilizzando i Cognitive Service,  ce ne viene restituita la descrizione ed eventualmente se sono state riconosciute delle persone della foto,  anche l’età e i loro stati emotivi.
Proprio perché abbiamo pensato ad una applicazione usabile dagli ipovedenti abbiamo fatto in modo che tutte le informazioni venissero lette nella lingua dell’utente, proprio per aiutarlo anche da questo punto di vista e tra l’altro se la persona non è di lingua inglese, perché al momento i servizi vengono dati soltanto in inglese, utilizziamo Bing Translator per fornire le informazioni nella lingua della persona, in modo da dare un vantaggio ulteriore nell’utilizzo di questo servizio.

 

Riccardo Cappello:
Aggiungo che sviluppare questo progetto è stato interessante, molto interessante, anche perché lo abbiamo realizzato con Xamarin quindi in maniera cross platform , Xamarin che fra l’altro è stata oggetto di una recente acquisizione da parte di Microsoft.
Quindi noi possiamo eseguire il nostro progetto See4Me su tutte le piattaforme quindi su Windows 10, Android, iOS e quindi virtualmente su qualsiasi smartphone o tablet moderno.
E grazie ai due Marco abbiamo realizzato una versione per IoT Core, quindi con l’utilizzo di una Raspberry PI3 e un pulsante hardware , poi abbiamo messo una fotocamera ed un paio di cuffie, abbiamo dimostrato che è possibile creare un prototipo simile a quello presentato a Build, ovviamente non nel formato perché quelli erano un paio di occhiali , ma le funzionalità sono state completamente riportate all’interno del nostro prototipo.

 

Marco Dal Pino:
Poi c’è da dire anche questo, che ci terrei a puntualizzare,  abbiamo già detto che questi servizi sono in preview, e in preview vuol dire che giorno per giorno migliorano, però è anche vero che se li proviamo adesso qualche problemetto può venire fuori , quindi qualche riconoscimento non proprio fedele di quella che è la realtà oppure di qualche glitch , ad esempio abbiamo notato che dai primi di aprile, quando sono stati presentati a Build ad oggi, già ci sono stati dei miglioramenti veramente notevoli, proprio nella parte che abbiamo testato di più che è quella di Vision abbiamo potuto notare che fin dai primi esperimenti che facevamo nell’applicazione ad oggi ci sono stati dei miglioramenti nel riconoscimento che sono veramente veramente importanti.
Quindi questo vuol dire che la piattaforma viene effettivamente raffinata e probabilmente l’uso, ed i test che vengono fatti della piattaforma probabilmente aiutano il servizio stesso ad affinarsi nelle sue funzionalità e quindi a funzionare anche meglio.

 

Marco Minerva:
Per concludere il discorso aggiungo solo che come abbiamo già detto il progetto è disponibile su GitHub, per aggiungerlo basta cercare dotnettoscana/see4me per avere accesso a tutto il materiale che abbiamo pubblicato.
E quindi se qualcuno è interessato al progetto, vuole contribuire o semplicemente vuole prendere spunto da questo lavoro per avere un esempio concreto di come utilizzare i Cognitive Services può dare un’occhiata al repository, contattarci per domande dubbi, curiosità, e noi saremo più che felici di rispondere e magari aiutarci a vicenda e costruire qualcosa insieme.

 

Antonio Giglio:
Perfetto. In conclusione della puntata vi chiedo cosa consigliereste a chi vuole sperimentare questi servizi?

 

Marco Dal Pino:
La prima cosa da consigliare è provarli, direi che ognuno può provarli subito immediatamente, basta andare ad un indirizzo microsoft.com/cognitive , basta che prenda un immagine di se stesso , un immagine che comunque ha sul suo disco e può già ottenere la descrizione di ciò che contiene quella foto.
Oppure molto interessante è estrarre un testo da una foto, ad esempio ho una foto con dei cartelli stradali, delle indicazioni , un menù posso ritrovarmi il testo contenuto in quell’immagine automaticamente dato dalla funzionalità che ho sul sito. Quindi direi molto interessante. Questo è un primo passo

 

Riccardo Cappello:
Dallo stesso sito comunque abbiamo accesso a tutta la documentazione relativa, con descrizione molto dettagliata di ogni funzionalità e possiamo scaricare gli SDK direttamente da GitHub, dove all’interno troviamo anche degli esempi molto esplicativi della cosa. Quindi possiamo scaricarli, provarli e lanciarli. Gli esempi sono, come detto prima, non solo per Windows ma anche per altre piattaforme quindi verosimilmente chiunque può provarli.
L’unica cosa da fare in più è quella di registrarsi a questi servizi , come si fa su Azure , quindi registrarsi ai servizi Cognitive, scaricare e copiarsi le chiavi di collegamento e poi partire con l’inserimento del nostro codice nei servizi

 

Marco Minerva:
Esatto, direi mai come in questo caso arrivati a questo test iniziale, tutto quello che possiamo fare dopo dipende dalla nostra fantasia, perché abbiamo finalmente a disposizione degli strumenti che ci permettono di realizzare delle applicazioni che fino a poco tempo fa erano davvero impensabili.
Quindi ribadiamo il nostro consiglio che è quello assolutamente di provare, sperimentare le potenzialità di questo tipo di servizi per capire effettivamente fin dove ci possiamo spingere

 

Ascolta o scarica il podcast:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *