MobileNet ed EfficientNet per il deployment su dispositivi edge
Architetture leggere, conversione in TFLite, compromesso tra dimensioni del modello e accuratezza
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.
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
- Concetti e strategie del transfer learning
- Utilizzo di VGG16 e ResNet50 come modelli di base
- Fine-tuning: scongelamento e riaddestramento
- MobileNet ed EfficientNet per il deployment su dispositivi edge