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 Erste Schritte in der Bildklassifizierung.
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");
Sehen Sie sich die Klassennamen an.
classNames = categories(imdsTrain.Labels)
classNames = 10x1 cell
{'0'}
{'1'}
{'2'}
{'3'}
{'4'}
{'5'}
{'6'}
{'7'}
{'8'}
{'9'}
Definieren der Netzarchitektur
Definieren Sie die Architektur des Convolutional Neural Network. Geben Sie die Größe der Bilder in der Eingabeschicht des Netzes und die Anzahl der Klassen in der vollständig verbundenen Schicht 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];
Weitere Informationen zu Deep-Learning-Schichten finden Sie unter List of Deep Learning Layers.
Festlegen von Trainingsoptionen
Legen Sie die Trainingsoptionen fest. Die Auswahl aus diesen Optionen erfordert eine empirische Analyse. Um verschiedene Konfigurationen von Trainingsoptionen durch Experimente zu untersuchen, können Sie die App Experiment Manager verwenden.
options = trainingOptions("sgdm", ... MaxEpochs=4, ... ValidationData=imdsValidation, ... ValidationFrequency=30, ... Plots="training-progress", ... Metrics="accuracy", ... Verbose=false);
Trainieren von neuronalen Netzen
Trainieren Sie das neuronale Netz mit der Funktion trainnet
. Verwenden Sie zur Klassifizierung den Kreuzentropieverlust. Standardmäßig verwendet die trainnet
-Funktion eine GPU, sofern vorhanden. Die Verwendung einer GPU erfordert eine Parallel Computing Toolbox™-Lizenz und ein unterstütztes GPU-Gerät. Informationen zu unterstützten Geräten finden Sie unter GPU Computing Requirements (Parallel Computing Toolbox). Andernfalls verwendet die Funktion die CPU. Um die Ausführungsumgebung festzulegen, verwenden Sie die Trainingsoption ExecutionEnvironment
.
net = trainnet(imdsTrain,layers,"crossentropy",options);
Testen von neuronalen Netzen
Um das neuronale Netz zu testen, klassifizieren Sie die Validierungsdaten und berechnen die Klassifizierungsgenauigkeit.
Machen Sie Vorhersagen mit der Funktion minibatchpredict
und wandeln Sie die Ergebnisse mit der Funktion scores2label
in Bezeichnungen um. Standardmäßig verwendet die minibatchpredict
-Funktion eine GPU, sofern vorhanden.
scores = minibatchpredict(net,imdsValidation); YValidation = scores2label(scores,classNames);
Berechnen Sie die Klassifizierungsgenauigkeit. Die Genauigkeit ist der Prozentsatz der richtig vorhergesagten Bezeichnungen.
TValidation = imdsValidation.Labels; accuracy = mean(YValidation == TValidation)
accuracy = 0.9896
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
trainnet
| trainingOptions
| dlnetwork
Verwandte Themen
- Start Deep Learning Faster Using Transfer Learning
- Erste Schritte in der Bildklassifizierung
- 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
- Get Started with Time Series Forecasting