Erstellen eines einfachen Netzes zur Bildklassifizierung
Dieses Beispiel veranschaulicht, wie Sie ein einfaches Convolutional Neural Network für die Deep-Learning-Klassifizierung erstellen und trainieren können. Convolutional Neural Networks sind wichtige Werkzeuge für das Deep Learning und eignen sich vor allem für die Bilderkennung.
Das Beispiel veranschaulicht, wie Sie vorgehen müssen:
Laden von Bilddaten.
Definieren der Netzarchitektur.
Angeben der Trainingsoptionen.
Trainieren des Netzes.
Vorhersage der Bezeichnungen neuer Daten und Berechnung der Klassifizierungsgenauigkeit.
Ein Beispiel für das interaktive Erstellen und Trainieren eines einfachen Bildklassifizierungsnetzes finden Sie unter Erstellen eines einfachen Netzes zur Bildklassifizierung mithilfe von Deep Network Designer.
Laden der Daten
Entpacken Sie die Zahlenbeispieldaten und erstellen Sie einen „Image Datastore“ (Bilddatenspeicher). Die Funktion imageDatastore
benennt die Bilder automatisch basierend auf den Ordnernamen.
unzip("DigitsData.zip") imds = imageDatastore("DigitsData", ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames');
Unterteilen Sie die Daten in Trainings- und Validierungsdatensätze, sodass jede Kategorie in der Trainingsmenge 750 Bilder enthält, während die Validierungsmenge die verbleibenden Bilder der einzelnen Bezeichnungen enthält. splitEachLabel
unterteilt den Image Datastore in zwei neue Datastores für das Training und die Validierung.
numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomized');
Definieren der Netzarchitektur
Definieren Sie die Architektur des Convolutional Neural Network. Geben Sie die Größe der Bilder in der Eingangsschicht des Netzes und die Anzahl der Klassen in der vollständig verbundenen Schicht vor der Klassifizierungsschicht an. Jedes Bild besteht aus 28x28x1 Pixeln und es gibt 10 Klassen.
inputSize = [28 28 1]; numClasses = 10; layers = [ imageInputLayer(inputSize) convolution2dLayer(5,20) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];
Weitere Informationen zu Deep-Learning-Schichten finden Sie unter List of Deep Learning Layers.
Trainieren des Netzes
Geben Sie die Trainingsoptionen an und trainieren Sie das Netz.
Standardmäßig verwendet trainNetwork
eine Grafikkarte, sofern verfügbar, anderenfalls wird ein Prozessor verwendet. Das Training mit einer Grafikkarte erfordert die Parallel Computing Toolbox™ und eine unterstützte Grafikkarte. Informationen zu unterstützten Geräten finden Sie unter GPU Computing Requirements (Parallel Computing Toolbox). Sie können auch die Ausführungsumgebung angeben, indem Sie das Name-Wert-Paar-Argument 'ExecutionEnvironment'
von trainingOptions
verwenden.
options = trainingOptions('sgdm', ... 'MaxEpochs',4, ... 'ValidationData',imdsValidation, ... 'ValidationFrequency',30, ... 'Verbose',false, ... 'Plots','training-progress'); net = trainNetwork(imdsTrain,layers,options);
Weitere Informationen zu Trainingsoptionen finden Sie unter Set Up Parameters and Train Convolutional Neural Network.
Testen des Netzes
Klassifizieren Sie die Validierungsdaten und berechnen Sie die Klassifizierungsgenauigkeit.
YPred = classify(net,imdsValidation); YValidation = imdsValidation.Labels; accuracy = mean(YPred == YValidation)
accuracy = 0.9888
In den nächsten Schritten des Deep Learning können Sie versuchen, das vortrainierte Netz für andere Aufgaben zu verwenden. Lösen Sie neue Klassifizierungsprobleme für Ihre Bilddaten mithilfe von Transfer Learning oder Merkmalsextraktion. Beispiele finden Sie unter Start Deep Learning Faster Using Transfer Learning und Train Classifiers Using Features Extracted from Pretrained Networks. Weitere Informationen zu vortrainierten Netzen finden Sie unter Pretrained Deep Neural Networks.
Siehe auch
trainNetwork
| trainingOptions
Verwandte Themen
- Start Deep Learning Faster Using Transfer Learning
- Erstellen eines einfachen Netzes zur Bildklassifizierung mithilfe von Deep Network Designer
- Ausprobieren von Deep Learning mit 10 Zeilen MATLAB-Programmcode
- Klassifizierung eines Bilds mithilfe eines vortrainierten Netzes
- Erste Schritte mit Transfer Learning
- Prepare Network for Transfer Learning Using Deep Network Designer
- Erstellen eines einfachen Netzes zur Sequenzklassifizierung mithilfe von Deep Network Designer