Blog.

GitHub Machine Learning: 9 Pre-trained TensorFlow.js models


Autore
Andrea Provino
Data
Tempo di lettura
5 minuti
Categoria
AI, machine-learning

github-tensorflow-js-models-javascript-machine-learning-browser

Esploriamo 9 modelli di machine learning open source, disponibili su GitHub, per la creazione di sistemi AI in browser.

Abbiamo già osservato i pregi di Tensorflow Js nel nostro precedente post introduttivo.

Corri a leggerlo!

Adesso, è arrivato il momento di fare sul serio.

Accediamo a GitHub e rilasciamo tutta la spaventosa imponenza della community: 9 modelli open source a portata di mano!

GitHub: Pre-trained TensorFlow.js models

Devi sapere che GitHub, la più conosciuta e usata piattaforma di software development, è organizzata in repository (in gergo repo).

Puoi considerarle alla stregua di cartelle su Google Drive.

Per il momento, questa definizione di comodo è sufficiente.

In una di queste repo, accessibili da chiunque, il team di Tensorflow.js ha reso disponibile la bellezza di 9 modelli di machine learning:

  • 4 di image classification / analysis
  • 3 di NLP, suddivisi in due per l’analisi del testo e uno per quella vocale
  • 1 KNN Classifier

Il motivo?

Semplice: facilitare la diffusione del framework incentivandone l’utilizzo all’interno delle community di sviluppatori grazie all’open source.

Basta indugi, procediamo alla scoperta di questi 9 pre-trained tensorflow.js models!

MobileNet

I modelli della famiglia MobileNets sono leggeri, a bassa latenza e dalla mediocre potenza.

Sono state ideati per essere impiegati laddove le limitate risorse impediscono l’utilizzo di modelli più performanti, come ad esempio Incetpion.

Accettando il trade off tra latenza, dimensioni e accuratezza nelle previsioni si può avere accesso a un modello versatile e di facile utilizzo.

Non sono necessarie competenze di machine learning per il funzionamento del modello: prendilo, inseriscilo in una pagina web e potrai iniziare a identificare immagini, canvas e video.

Possiamo iniziare a impiegare questo modello attraverso script tag, oppure con NPM (un noto package manager)

Ecco a te il link alla repo per approfondire il discorso:

GitHub | MobileNet Tensorflow Js

PoseNet

Il secondo modello di Computer Vision è PoseNet, che permette l’analisi in tempo reale dei movimenti umani.

Può identificare pose singole o multiple, consentendo l’analisi di più persone contemporaneamente.

Per una più accurata descrizione sul funzionamento di PoseNet per il Real-time Human Pose Estimation ti consiglio di dare un occhiata a questo post su medium.

Qui invece trovi la repo di Github PoseNet, installabile sempre tramite NPM o utilizzabile con l’importazione tramite script tag.

Coco SSD

Coco… quanti ricordi. In passato abbiamo avuto modo di confrontarci con un modello allenato sullo stesso insieme d’immagini, un Log… quanti bei momenti…

Ricordi a parte, questo modello è di Object Detection: può cioè riconoscere e identificare diversi oggetti all’interno della stessa immagine, purché siano presenti nell’inventario del COCO dataset.

Un modello allenato su questo dataset riconsoce 90 classi di oggetti.

Il termine SSD invece fa riferimento a Single Shot MultiBox Detection: un’unica immagine, più oggetti individuati.

Come sempre, l’input è costituito da immagini, video o canvas, mentre l’ouput da rettangoli, i cosiddetti bounding box, che riportano il nome dell’oggetto e il livello di affidabilità della previsione.

Infine, qui il link alla repo.

BodyPix

Il BodyPix è tra gli ultimi modelli aggiunti a Tensorflow.js.

Supporta l’analisi in tempo reale e gestisce task di segmentazione semantica, permettendo di distinguere corpi umani dallo sfondo, tutto all’interno di Browser Web.

BodyPix

Qui puoi trovare una live demo di BodyPix.

Nella repo ufficiale, reperibile invece a questo link, sono presenti numerosi esempi, corredati di approfondite descrizioni sul funzionamento del sistema.

Davvero niente male: un ottimo punto d’inizio per future implementazioni.

DeepLab v3

Come il precedente, DeepLab v3 è un modello di segmentazione semantica che integra la pipeline d’inferenza di DeepLab rendendola compatibile con Tensorflow.Js

Dovremmo fare un articolo di approfondimento sul tema!

Per il momento, limitiamoci a comprendere seppur superficialmente le feature di questo modello.

Beh.. no non c’è nient’altro da dire.

Segmentazione semantica e basta.

Il prossimo modello?

Si passa all’audio!

Speech Command Recognizer

Hai sempre voluto classificare snippet audio di 1 secondo?

Come no?!

Manco io.

Solo perché non capiamo bene per quale motivo dovremmo compiere un simile task non significa che sia inutile.

Il modello di Speech Command Recogniser è in grado di riconoscere brevi frammenti di audio contenenti parole Inglese isolate di un piccolo vocabolario.

La rete neurale di fondo è stata allenata sul Tensorflow Speech Commands Dataset.

Le API del modello, cioè il sistema attraverso cui è possibile interfacciarsi a esso, consentono di utilizzarlo in due modalità:

  • Online streaming recognition
  • Offline recognition

Al solito, qui la repo di GitHub.

Chiusa la parentesi audio, inizia quella testuale.

Universal Sentence Encoder

L’Universal Sentence Encoder è un modello che encode il testo in un embedding a 512 dimensioni che può essere usato come input in molti task di natural language processing come un classificatore di sentimento o di analisi di similarità testuale.

Si…

Poco chiaro, hai ragione.

Andrà approfondito più avanti.

Qui, il link a GitHub.

Ne mancano due. Quali?

Text Toxicity

Questo modello consente di misurare l’impatto di un commento su una conversazione classificandolo in una scala di ‘tossicità’.

Insulti, oscenità, odio d’identità o linguaggio sessuale esplicito.

Ovviamente in lingua inglese.

Arriveremo anche a qualcosa in italiano.

La repo? Eccola qui.

KNN Classifier

Non è un vero e proprio modello, quanto piuttosto un utility per creare un classificatore usando l’algoritmo di K-Nearest Algorithm.

La nostra ultima, ma non ultima, repo.

Un caldo abbraccio, Andrea.

Taggeddata sciencemachine learningtensorflowweb development


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum