Learn AI with Python · Lezione

MobileNet ed EfficientNet per il deployment su dispositivi edge

Architetture leggere, conversione in TFLite, compromesso tra dimensioni del modello e accuratezza

Lezione 4 di 413 passaggi

MobileNet ed EfficientNet per il deployment su dispositivi edge è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.

Perché i modelli edge sono diversi

Su telefoni e dispositivi embedded si sacrifica un po' di accuratezza in cambio di dimensioni minime, bassa latenza e consumi ridotti. MobileNet ed EfficientNet sono progettati proprio per questo scopo e usano blocchi costruttivi efficienti invece di convoluzioni dense pesanti.

Convoluzioni depthwise di MobileNet

MobileNet sostituisce le convoluzioni standard con convoluzioni separabili depthwise: un filtro spaziale per canale seguito da una combinazione pointwise 1x1. In questo modo riduce il calcolo e il numero di parametri di circa 8-9 volte, con una perdita minima di accuratezza.

MobileNetV3Small

MobileNetV3Small è ottimizzato per i dispositivi mobili: occupa circa 2.5MB per i pesi, quindi è ideale quando lo spazio di archiviazione e la RAM sono limitati.

from tensorflow.keras.applications import MobileNetV3Small

base = MobileNetV3Small(
    weights="imagenet",
    include_top=False,
    input_shape=(224, 224, 3)
)

EfficientNetB0

EfficientNetB0 usa uno scaling composto per bilanciare profondità, larghezza e risoluzione. Offre un'accuratezza elevata rispetto alle sue dimensioni ed è un ottimo compromesso tra le reti mobili più piccole e i pesanti modelli per server.

from tensorflow.keras.applications import EfficientNetB0

base = EfficientNetB0(
    weights="imagenet",
    include_top=False,
    input_shape=(224, 224, 3)
)

Scegliere tra i due

  • MobileNetV3Small (~2.5MB): il più piccolo, veloce e con l'accuratezza più bassa. Ideale per applicazioni mobili in tempo reale.
  • EfficientNetB0: offre un buon equilibrio tra accuratezza e dimensioni. Ideale quando è possibile dedicare un po' più di potenza di calcolo.

Scelga in base al budget di latenza del dispositivo e all'accuratezza desiderata.

Costruire la head di transfer learning

Lo schema del transfer learning è identico: congeli la base, esegua il pooling e aggiunga una head Dense.

from tensorflow.keras import layers, Model

base.trainable = False
x = layers.GlobalAveragePooling2D()(base.output)
x = layers.Dropout(0.2)(x)
out = layers.Dense(num_classes, activation="softmax")(x)
model = Model(base.input, out)

Che cos'è TFLite?

TensorFlow Lite è un runtime per l'inferenza direttamente sul dispositivo. Consente di convertire un modello Keras addestrato in un flatbuffer .tflite compatto, eseguito in modo efficiente su CPU, GPU e NPU mobili.

Conversione in TFLite

Usi TFLiteConverter per convertire il modello salvato.

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

with open("model.tflite", "wb") as f:
    f.write(tflite_model)

La quantizzazione riduce ulteriormente le dimensioni

La quantizzazione post-addestramento memorizza i pesi in int8 anziché in float32, riducendo le dimensioni di circa 4 volte e accelerando l'inferenza sull'hardware mobile, con una perdita minima di accuratezza.

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant = converter.convert()

Benchmark della latenza

Sull'hardware mobile tipico, MobileNetV3Small spesso elabora un'immagine in da una sola cifra a poche decine di millisecondi, con prestazioni comodamente in tempo reale. EfficientNetB0 è più pesante e lento, ma più accurato.

Esegua sempre il benchmark sul dispositivo realmente utilizzato; i tempi dell'emulatore non sono affidabili. Usi TFLite Benchmark Tool oppure misuri il tempo di invoke() dell'interprete.

Eseguire l'inferenza con TFLite

Carichi il modello con Interpreter, imposti il tensore di input, esegua l'inferenza e legga l'output.

interpreter = tf.lite.Interpreter(model_path="model.tflite")
interpreter.allocate_tensors()
inp = interpreter.get_input_details()[0]
out = interpreter.get_output_details()[0]
interpreter.set_tensor(inp["index"], image)
interpreter.invoke()
print(interpreter.get_tensor(out["index"]))

Verifica rapida

Verifichi le Sue conoscenze sul deployment edge.

Riepilogo

Ha confrontato MobileNetV3Small (~2.5MB, il più veloce) ed EfficientNetB0 (equilibrato) per l'uso su dispositivi edge, ha creato head di transfer learning su entrambi, li ha convertiti in TFLite, ha applicato la quantizzazione int8 e ha misurato la latenza su hardware reale. In questo modo ha completato il corso di transfer learning. Prossimo corso: analisi delle serie temporali.

Gratis per iniziare

Impara Python con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
53
Lezioni
225

Domande Frequenti

La lezione «MobileNet ed EfficientNet per il deployment su dispositivi edge» è gratuita?

Sì — il testo completo di «MobileNet ed EfficientNet per il deployment su dispositivi edge» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.

Cosa imparerò in «MobileNet ed EfficientNet per il deployment su dispositivi edge»?

Architetture leggere, conversione in TFLite, compromesso tra dimensioni del modello e accuratezza Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Learn AI with Python?

Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «MobileNet ed EfficientNet per il deployment su dispositivi edge»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?

Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Concetti e strategie del transfer learning
  2. Utilizzo di VGG16 e ResNet50 come modelli di base
  3. Fine-tuning: scongelamento e riaddestramento
  4. MobileNet ed EfficientNet per il deployment su dispositivi edge
← Torna a Learn AI with Python