Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Reti neurali deep preaddestrate

È possibile prendere una rete di classificazione delle immagini preaddestrata, che ha già imparato a estrarre feature potenti e informative dalle immagini naturali e utilizzarla come punto di partenza per apprendere una nuova attività. La maggior parte delle reti preaddestrate viene addestrata su un sottoinsieme del database ImageNet [1], utilizzato nell’ImageNet Large-Scale Visual Recognition Challenge (ILSVRC) [2]. Queste reti sono state addestrate su oltre un milione di immagini e sono in grado di classificare le immagini in 1000 categorie di oggetti, come tastiera, tazza di caffè, matita e molti animali. Utilizzare una rete preaddestrata con il transfer learning è tipicamente molto più rapido e semplice rispetto all'addestramento di una rete da zero.

È possibile utilizzare le reti precedentemente addestrate per le seguenti attività:

ScopoDescrizione
Classificazione

Applicazione di reti preaddestrate direttamente ai problemi di classificazione. Classificazione di una nuova immagine utilizzando classify. Per un esempio di utilizzo di una rete preaddestrata per la classificazione, vedere Classificazione di immagini utilizzando GoogLeNet.

Estrazione di feature

Utilizzo di una rete preaddestrata per l’estrazione di feature, utilizzando le attivazioni dei livelli come feature. È possibile utilizzare queste attivazioni come feature per addestrare un altro modello di Machine Learning, come una macchina a vettori di supporto (SVM). Per ulteriori informazioni, vedere Estrazione di feature. Per un esempio, vedere Extract Image Features Using Pretrained Network.

Transfer learning

Acquisizione di livelli da una rete addestrata su un insieme di dati di grandi dimensioni e perfezionamento su un nuovo insieme di dati. Per ulteriori informazioni, vedere Transfer learning. Per un semplice esempio, vedere Come iniziare a utilizzare il transfer learning. Per provare ulteriori reti preaddestrate, vedere Addestramento della rete di Deep Learning per classificare nuove immagini.

Confronto di reti preaddestrate

Le reti preaddestrate possiedono caratteristiche diverse che sono importanti al momento della scelta della rete da applicare al problema. Le caratteristiche più importanti sono la precisione, la velocità e la dimensione della rete. La scelta di una rete è generalmente un compromesso tra queste caratteristiche. Utilizzare il grafico sottostante per confrontare la precisione della convalida di ImageNet con il tempo necessario per fare una previsione utilizzando la rete.

Suggerimento

Per iniziare con il transfer learning, provare a scegliere una delle reti più veloci, come SqueezeNet o GoogLeNet. In questo modo è possibile iterare rapidamente e provare diverse impostazioni, come le fasi di pre-elaborazione dei dati e le opzioni di addestramento. Una volta individuate le impostazioni che funzionano bene, provare una rete più accurata, come Inception-v3 o una ResNet e controllare se si verifica un miglioramento dei risultati.

Comparison of the accuracy and relative prediction time of the pretrained networks. As the accuracy of the pretrained networks increases, so does the relative prediction time.

Nota

Il grafico qui sopra mostra solo un'indicazione delle velocità relative delle diverse reti. I tempi esatti di previsione e di iterazione dell'addestramento dipendono dall'hardware e dalla dimensione del mini-batch utilizzato.

Una buona rete ha un'elevata precisione ed è veloce. Il grafico mostra la precisione della classificazione rispetto al tempo di previsione quando si utilizza una GPU moderna (una NVIDIA® Tesla® P100) e un mini-batch con dimensione 128. Il tempo di previsione è misurato rispetto alla rete più veloce. L'area di ogni marcatore è proporzionale alla dimensione della rete sul disco.

La precisione della classificazione sull’insieme di convalida ImageNet è il modo più comune per misurare la precisione delle reti addestrate su ImageNet. Le reti che sono precise su ImageNet sono spesso precise anche quando vengono applicate ad altri insiemi di dati delle immagini naturali utilizzando il transfer learning o l’estrazione di feature. Questa generalizzazione è possibile in quanto le reti hanno imparato a estrarre feature potenti e informative dalle immagini naturali e tali feature divengono generali per altri insiemi di dati simili. Tuttavia, un'elevata precisione su ImageNet non sempre si trasferisce direttamente ad altre attività ed è quindi opportuno provare più reti.

Se si desidera eseguire la previsione utilizzando hardware limitato o distribuendo le reti su Internet, è necessario considerare anche la dimensione della rete sul disco e nella memoria.

Precisione della rete

Esistono diversi modi per calcolare la precisione della classificazione sull’insieme di convalida di ImageNet e diverse sorgenti utilizzano metodi diversi. A volte viene utilizzato un insieme di più modelli mentre, altre volte, ciascuna immagine viene valutata più volte utilizzando più ritagli. A volte viene indicata la precisione top-5 anziché la precisione standard (top-1). A causa di queste differenze, spesso non è possibile confrontare direttamente le precisioni dalle diverse sorgenti. Le precisioni delle reti preaddestrate nel Deep Learning Toolbox™ sono le precisioni standard (top-1) che utilizzano un singolo modello e un singolo ritaglio dell’immagine centrale.

Caricamento di reti preaddestrate

Per caricare la rete SqueezeNet, digitare squeezenet nella riga di comando.

net = squeezenet;

Per altre reti, utilizzare le funzioni come googlenet per ottenere i link e scaricare le reti preaddestrate dall’Add-On Explorer.

La tabella seguente elenca le reti disponibili preaddestrate che sono state addestrate su ImageNet e alcune delle loro proprietà. La profondità della rete è definita come il maggior numero di livelli convoluzionali sequenziali o completamente connessi su un percorso, dal livello di input al livello di output. Gli ingressi di tutte le reti sono immagini RGB.

ReteProfonditàDimensioneParametri (milioni)Dimensione dell'immagine di input
squeezenet18

5,2 MB

1.24

227x227

googlenet22

27 MB

7.0

224x224

inceptionv348

89 MB

23.9

299x299

densenet201201

77 MB

20.0

224x224

mobilenetv253

13 MB

3.5

224x224

resnet1818

44 MB

11.7

224x224

resnet5050

96 MB

25.6

224x224

resnet101101

167 MB

44.6

224x224

xception71

85 MB

22.9299x299
inceptionresnetv2164

209 MB

55.9

299x299

shufflenet505,4 MB1.4224x224
nasnetmobile*20 MB 5.3224x224
nasnetlarge*332 MB88.9331x331
darknet191978 MB20.8256x256
darknet5353155 MB41.6256x256
efficientnetb08220 MB5.3

224x224

alexnet8

227 MB

61.0

227x227

vgg1616

515 MB

138

224x224

vgg1919

535 MB

144

224x224

*Le reti NASNet-Mobile e NASNet-Large non consistono in una sequenza lineare di moduli.

GoogLeNet addestrato su Places365

La rete GoogLeNet standard è addestrata sull’insieme di dati di ImageNet, ma è anche possibile caricare una rete addestrata sull’insieme di dati di Places365 [3] [4]. La rete addestrata su Places365 classifica le immagini in 365 diverse categorie di luoghi, come campi, parchi, piste e atri. Per caricare una rete GoogLeNet preaddestrata, che è stata addestrata sull’insieme di dati di Places365, utilizzare googlenet('Weights','places365'). Quando si esegue il transfer learning per eseguire una nuova attività, l'approccio più comune è quello di utilizzare reti preaddestrate su ImageNet. Se la nuova attività è simile alla classificazione di scene, l’utilizzo della rete addestrata su Places365 potrebbe fornire una precisione maggiore.

Per informazioni sulle reti preaddestrate adatte ad attività audio, vedere Reti preaddestrate per applicazioni audio.

Visualizzazione di reti preaddestrate

È possibile caricare e visualizzare le reti preaddestrate utilizzando Deep Network Designer.

deepNetworkDesigner(squeezenet)

Deep Network Designer displaying a pretrained SqueezeNet network

Selezionare un livello per visualizzare e modificare le sue proprietà. Fare clic sull'icona di aiuto accanto al nome del livello per ottenere le informazioni sulle sue proprietà.

Cross channel normalization layer selected in Deep Network Designer. The PROPERTIES pane shows the properties of the layer.

Scoprire altre reti preaddestrate in Deep Network Designer facendo clic su New.

Deep Network Designer start page showing available pretrained networks

Se è necessario scaricare una rete, fermarsi sulla rete desiderata e fare clic su Install per aprire l’Add-On Explorer.

Estrazione di feature

L'estrazione di feature è un modo semplice e veloce per utilizzare la potenza del Deep Learning senza investire tempo e fatica nell'addestramento di una rete completa. Considerando che richiede un solo passaggio sulle immagini di addestramento, è particolarmente utile se non si dispone di una GPU. Si estraggono le feature apprese dell’immagine utilizzando una rete preaddestrata e le si utilizzano per addestrare un classificatore, come una macchina a vettori di supporto utilizzando fitcsvm (Statistics and Machine Learning Toolbox).

Provare l'estrazione di feature quando il nuovo insieme di dati è molto piccolo. Poiché si addestra solo un classificatore semplice sulle feature estratte, l'addestramento è veloce. È anche improbabile che il perfezionamento dei livelli più profondi della rete migliori la precisione, poiché i dati da cui apprendere sono pochi.

  • Se i dati sono molto simili a quelli originali, è probabile che le feature più specifiche estratte in profondità nella rete siano utili per la nuova attività.

  • Se i dati sono molto diversi da quelli originali, le feature estratte più in profondità nella rete potrebbero essere meno utili per l’attività. Provare ad addestrare il classificatore finale su feature più generali, estratte da un livello di rete precedente. Se il nuovo insieme di dati è ampio, si può anche provare ad addestrare una rete da zero.

Spesso le ResNet sono ottimi estrattori di feature. Per un esempio che mostra come utilizzare una rete preaddestrata per l'estrazione di feature, vedere Extract Image Features Using Pretrained Network.

Transfer learning

È possibile eseguire il perfezionamento dei livelli più profondi della rete addestrando la rete sul nuovo insieme di dati, utilizzando la rete preaddestrata come punto di partenza. Solitamente, eseguire il perfezionamento di una rete tramite il transfer learning è molto più veloce e semplice che costruire e addestrare una nuova rete. La rete ha già appreso un ricco insieme di feature dell'immagine, ma tramite il suo perfezionamento può apprendere feature specifiche per il nuovo insieme di dati. Se si dispone di un insieme di dati molto ampio, il transfer learning potrebbe non essere più veloce dell’addestramento da zero.

Suggerimento

Il perfezionamento di una rete spesso offre la massima precisione. Per gli insiemi di dati molto piccoli (meno di circa 20 immagini per classe), è preferibile provare l'estrazione di feature.

Il perfezionamento di una rete è più lento e richiede uno sforzo maggiore rispetto alla semplice estrazione di feature ma, poiché la rete può imparare a estrarre un insieme diverso di feature, la rete finale è spesso maggiormente precisa. Solitamente, il perfezionamento funziona meglio dell'estrazione di feature, a condizione che il nuovo insieme di dati non sia troppo piccolo, in modo che la rete disponga di dati da cui apprendere nuove feature. Per esempi che mostrano come eseguire il transfer learning, vedere Transfer Learning with Deep Network Designer e Addestramento della rete di Deep Learning per classificare nuove immagini.

Transfer learning workflow

Importazione ed esportazione di reti

È possibile importare reti e grafici di livello da TensorFlow™ 2, TensorFlow-Keras, PyTorch® e dal formato di modello ONNX™ (Open Neural Network Exchange). È inoltre possibile esportare reti e grafici di livello Deep Learning Toolbox su TensorFlow 2 e nel formato di modello ONNX.

Funzioni di importazione

Piattaforma esterna di Deep Learning e formato di modelloImportazione del modello come reteImportazione del modello come grafico di livello
Rete TensorFlow in formato SavedModelimportTensorFlowNetworkimportTensorFlowLayers
Rete TensorFlow-Keras in formato HDF5 o JSONimportKerasNetworkimportKerasLayers
Modello PyTorch tracciato in un file .ptimportNetworkFromPyTorchNon applicabile
Rete in formato di modello ONNXimportONNXNetworkimportONNXLayers

Le funzioni importTensorFlowNetwork e importTensorFlowLayers sono consigliate rispetto alle funzioni importKerasNetwork e importKerasLayers. Per ulteriori informazioni, vedere Recommended Functions to Import TensorFlow Models.

Le funzioni importTensorFlowNetwork, importTensorFlowLayers, importNetworkFromPyTorch, importONNXNetwork e importONNXLayers creano livelli personalizzati generati automaticamente quando si importa un modello con i livelli TensorFlow, PyTorch o con gli operatori ONNX che le funzioni non possono convertire in livelli MATLAB® integrati. Le funzioni salvano i livelli personalizzati generati automaticamente in un pacchetto nella cartella corrente. Per ulteriori informazioni, vedere Autogenerated Custom Layers.

Funzioni di esportazione

Esportazione della rete o di un grafico di livelloPiattaforma esterna di Deep Learning e formato di modello
exportNetworkToTensorFlowModello TensorFlow 2 nel pacchetto Python®
exportONNXNetworkFormato di modello ONNX

La funzione exportNetworkToTensorFlow salva una rete o un grafico di livello Deep Learning Toolbox come un modello TensorFlow in un pacchetto Python. Per ulteriori informazioni su come caricare il modello esportato e salvarlo in un formato TensorFlow standard, vedere Load Exported TensorFlow Model e Save Exported TensorFlow Model in Standard Format.

Utilizzando ONNX come un formato intermedio, è possibile interoperare con altri framework di Deep Learning che supportano l’esportazione o l’importazione del modello ONNX.

Import networks from and export networks to external deep learning platforms.

Reti preaddestrate per applicazioni audio

Audio Toolbox™ fornisce le reti preaddestrate VGGish, YAMNet, OpenL3 e CREPE. Utilizzare le funzioni vggish (Audio Toolbox), yamnet (Audio Toolbox), openl3 (Audio Toolbox) e crepe (Audio Toolbox) in MATLAB o i blocchi VGGish (Audio Toolbox) e YAMNet (Audio Toolbox) in Simulink® per interagire direttamente con le reti preaddestrate. È inoltre possibile importare e visualizzare le reti preaddestrate per l’audio utilizzando Deep Network Designer.

La tabella seguente elenca le reti disponibili preaddestrate per l’audio e alcune delle loro proprietà.

ReteProfonditàDimensioneParametri (milioni)Dimensione di input
crepe (Audio Toolbox)7

89,1 MB

22.2

1024x1x1

openl3 (Audio Toolbox)8

18,8 MB

4.68

128x199x1

vggish (Audio Toolbox)9

289 MB

72.1

96x64x1

yamnet (Audio Toolbox)28

15,5 MB

3.75

96x64x1

Utilizzare VGGish e YAMNet per eseguire il transfer learning e l'estrazione di feature. Estrarre le inclusioni differenziali delle feature VGGish o OpenL3 per l’input in sistemi di Machine Learning e di Deep Learning. La funzione classifySound (Audio Toolbox) e il blocco Sound Classifier (Audio Toolbox) utilizzano YAMNet per individuare e classificare i suoni in una delle 521 categorie. La funzione pitchnn (Audio Toolbox) utilizza CREPE per eseguire la stima del tono nel Deep Learning.

Per esempi che mostrano come adattare le reti preaddestrate per l’audio a una nuova attività, vedere Transfer Learning with Pretrained Audio Networks (Audio Toolbox) e Transfer Learning with Pretrained Audio Networks in Deep Network Designer.

Per ulteriori informazioni sull’utilizzo del Deep Learning per le applicazioni audio, vedere Deep Learning for Audio Applications (Audio Toolbox).

Modelli preaddestrati su GitHub

Per trovare i modelli preaddestrati più recenti, vedere Hub del modello di Deep Learning di MATLAB.

Ad esempio:

Riferimenti

[1] ImageNet. http://www.image-net.org

[2] Russakovsky, O., Deng, J., Su, H., et al. “ImageNet Large Scale Visual Recognition Challenge.” International Journal of Computer Vision (IJCV). Vol 115, Issue 3, 2015, pp. 211–252

[3] Zhou, Bolei, Aditya Khosla, Agata Lapedriza, Antonio Torralba, and Aude Oliva. "Places: An image database for deep scene understanding." arXiv preprint arXiv:1610.02055 (2016).

[4] Places. http://places2.csail.mit.edu/

Vedi anche

| | | | | | | | | | | | | | | | | | | | | | | | |

Argomenti complementari

Siti web esterni