Vai a Mappa Corsi Laboratorio Glossario Come funziona Problemi comuni Inizia →
ITEN
← Corso 02 · Vedere (Lezione 02.05 · 22 minuti · Fotocamera · Primo modello)

Mani, corpo, volto.

Un modello già pronto trasforma la tua mano in 21 punti. Da lì insegni al telefono i gesti che vuoi tu con pochi esempi, e con un po' di geometria misuri angoli senza addestrare niente.

Cosa impari
  1. Come un modello trova i punti di mani, corpo e volto
  2. Perché un modello che impara dai punti è piccolo e veloce
  3. Cosa vuol dire normalizzare i punti prima di usarli
  4. Quando basta una regola sui punti al posto di un modello
Ti serve sapere

Se non ti ricordi una di queste cose, il link ti porta al capitolo che la spiega.

Come vuoi seguirla
Preparo la scena…
  1. 01 La mano

    Una mano diventa 21 punti.

    Apri la mano davanti alla fotocamera. Un modello già pronto di Google, MediaPipe, trova 21 punti chiave01.04. Il polso, poi quattro punti per ogni dito, dalla base alla punta. Per ogni punto dà tre numeri, la posizione nella foto e una stima di quanto è vicino. In tutto sono 63 numeri al posto di milioni di pixel.

    In pratica. I 21 punti hanno sempre lo stesso ordine. Il 4 è la punta del pollice, l'8 la punta dell'indice. Con questi due trovi già il gesto del pizzico.

01 / 07
(Approfondisci)

Qualche numero in più.


(01)

MediaPipe, i modelli pronti di Google

MediaPipe raccoglie modelli già addestrati per mani, corpo, volto, oggetti e altro, pronti per Android, iOS e browser. Il modello delle mani è un unico file di circa 8 MB che contiene i due modelli, quello del palmo e quello dei punti. Gira in tempo reale anche su telefoni di fascia media.

Per addestrarlo Google ha segnato a mano i 21 punti su circa 30.000 foto vere. Poi ha aggiunto mani disegnate al computer in tante pose e luci, perché lì la posizione esatta di ogni punto si conosce senza doverla segnare.

  • 21punti della mano
  • 33punti del corpo
  • 478punti del volto
(02)

Perché 63 numeri battono 150.000 pixel

Un modello che classifica i gesti dai pixel deve imparare da capo cos'è una mano, e per farlo servono migliaia di foto. Uno che parte dai punti riceve il lavoro già fatto. Due gesti diversi sono lontani tra loro nei 63 numeri anche se le foto si somigliano, e bastano 20 o 30 esempi per gesto.

C'è anche un vantaggio di privacy. Nel dataset dei gesti puoi salvare solo i punti, senza volti, stanze o persone sullo sfondo. Per il corpo e soprattutto per il volto i punti restano però dati personali, e vanno trattati come tali.

(03)

La normalizzazione in codice

Chi programma la trova in poche righe. Si sottrae il polso da ogni punto, si cerca il punto più lontano dal polso e si divide tutto per quella distanza. Il risultato sono 63 numeri tra meno uno e uno, pronti per il modello dei gesti.

Gli stessi numeri vanno salvati nel dataset e usati dal vivo. Se normalizzi gli esempi in un modo e i fotogrammi nuovi in un altro, il modello vede due mondi diversi e sbaglia senza motivo apparente.

const polso = punti[0];
const spostati = punti.map(p => [p.x - polso.x, p.y - polso.y, p.z - polso.z]);
const scala = Math.max(...spostati.map(([x, y]) => Math.hypot(x, y)));
const numeri = spostati.flat().map(v => v / scala);   // 63 numeri
(Prova sul telefono)

Tre gesti tuoi


Nel laboratorio insegni al telefono tre gesti scelti da te, partendo dai 21 punti della mano. Servono dieci minuti e una stanza con una luce normale.

  1. Apri il laboratorio con il pulsante qui sotto. Parte già con l'ingresso Mano.
  2. Crea tre classi, per esempio pollice su, pugno e mano aperta, più una classe niente per la mano che non fa nessuno dei tre gesti.
  3. Per ogni gesto registra 20 esempi, con tutte e due le mani e a distanze diverse.
  4. Premi Addestra. Con i punti ci vogliono pochi secondi.
  5. In Usa prova i gesti in controluce e con una mano mezza nascosta, e guarda la confidenza.
Apri il laboratorio →
(Verifica)

4 domande per chiudere la lezione.

Quando rispondi a tutte, la lezione risulta fatta e sulla mappa la sua pietra diventa gialla. Conta rispondere, non il punteggio.


  1. (01)

    Quanti numeri arrivano al tuo modello dei gesti per ogni fotogramma?

  2. (02)

    Il tuo modello riconosce il pugno solo quando la mano è in alto a sinistra. Cosa manca?

  3. (03)

    Vuoi contare gli squat. Qual è la strada più semplice?

  4. (04)

    Metà della mano è nascosta dietro una tazza. Cosa fa il modello dei punti?

Per chiudere la lezione rispondi alla verifica

← Ritagliare ai pixel Il ripasso del corso Torna alla mappa
(Prossima lezione · 03.01) Il suono diventa un'immagine