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.

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.
No Comment