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

Classificare una foto.

Una tazza, un mazzo di chiavi e il tavolo vuoto. Segui una foto dentro MobileNet, dal quadrato di pixel alla risposta, e scopri perché ti bastano venti foto per classe.

Cosa impari
  1. Come una rete che lavora sulle immagini passa dai pixel alle forme
  2. Cosa sono il corpo e la testa di un modello, e quale si addestra
  3. Cosa vuol dire la percentuale accanto alla risposta, e cosa non vuol dire
Come vuoi seguirla
Preparo la scena…
  1. 01 La domanda

    Una foto, e una risposta tra poche.

    Metti sul tavolo una tazza e un mazzo di chiavi. Vuoi che il telefono, inquadrandoli, dica quale dei due vede. È una classificazione01.04. Il modello conosce poche risposte possibili, le classi01.03, e per ogni foto ne sceglie una. Qui le classi sono tre, tazza, chiavi e niente.

    In pratica. Prima di raccogliere le foto scrivi le classi su un foglio. Se due classi le confondi anche tu guardandole, il modello le confonderà di più.

01 / 07
(Approfondisci)

Qualche numero in più.


(01)

MobileNet, una rete fatta per il telefono

Le reti che vincevano le gare sulle immagini nel 2015 avevano decine di milioni di pesi. MobileNet, presentata da Google nel 2017, divide ogni convoluzione in due passi più leggeri. Prima un filtro separato per ogni canale, poi un filtro di un solo pixel che li mescola. Il risultato è quasi lo stesso e costa da otto a nove volte meno calcoli.

La versione 2, del 2018, ha 3,4 milioni di pesi e fa 300 milioni di moltiplicazioni per foto. Su ImageNet, che ha mille classi, indovina al primo colpo il 72 per cento delle volte. ResNet-50, sette volte più pesante, arriva al 76.

  • 3,4 Mpesi di MobileNet v2
  • 300 Mmoltiplicazioni per ogni foto
  • 72 %risposte giuste al primo colpo su ImageNet
(02)

Dai punteggi alle percentuali

La testa dà a ogni classe un punteggio, che può essere negativo o grande quanto vuole. Per farne delle percentuali si usa una funzione che si chiama softmax. Prima rende tutti i punteggi positivi con l'esponenziale, poi divide ciascuno per la somma di tutti. Così le percentuali sommano sempre a cento.

Scritta per la classe i, con z i punteggi, la formula è quella qui sotto. Il difetto è lo stesso del capitolo sulla confidenza. Le percentuali si spartiscono tra le classi che il modello conosce, anche quando la foto non contiene nessuna di loro.

p(i) = exp(z_i) / ( exp(z_1) + exp(z_2) + … + exp(z_n) )
(03)

Il codice, per chi programma

Nel browser tutto questo si scrive in poche righe con TensorFlow.js, la libreria che usa anche il laboratorio. Il corpo è un MobileNet già addestrato che restituisce i 1280 numeri. La testa è un solo strato denso con tre uscite e la softmax.

Si calcolano una volta i 1280 numeri di ogni foto, poi si addestra solo la testa. Per questo sul telefono l'addestramento dura secondi e non ore.

const numeri = corpo.predict(foto);             // 1280 numeri per foto
const testa = tf.sequential({ layers: [
  tf.layers.dense({ inputShape: [1280], units: 3, activation: "softmax" }),
] });
testa.compile({ optimizer: "adam", loss: "categoricalCrossentropy" });
await testa.fit(tuttiINumeri, etichette, { epochs: 20 });
(Prova sul telefono)

Il tuo primo modello


Nel laboratorio addestri il modello di questa lezione con le tue foto. Servono dieci minuti, una tazza, un mazzo di chiavi e un tavolo.

  1. Apri il laboratorio con il pulsante qui sotto. Parte già con l'ingresso Foto.
  2. Crea tre classi e chiamale tazza, chiavi e niente.
  3. Tieni premuto per scattare 20 foto per classe, girando intorno all'oggetto. Per niente inquadra il tavolo vuoto.
  4. Premi Addestra e guarda le due curve che scendono.
  5. In Usa prova con un'altra luce e un altro tavolo, e segna quando sbaglia.
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)

    Perché bastano una ventina di foto per classe e non migliaia?

  2. (02)

    Un modello conosce solo tazza e chiavi. Inquadri una banana. Cosa succede?

  3. (03)

    Cosa fa un filtro del primo strato?

  4. (04)

    Perché conviene tenere l'oggetto al centro quando scatti?

Per chiudere la lezione rispondi alla verifica

← Il metodo in sette passi Torna alla mappa
(Prossima lezione · 02.02) Un buon dataset di immagini