Erste Schritte in der Bildklassifizierung
In diesem Beispiel wird gezeigt, wie ein einfaches Convolutional Neural Network zur Deep-Learning-Klassifizierung mit der App Deep Network Designer erstellt wird. Convolutional Neural Networks sind wichtige Werkzeuge für das Deep Learning und eignen sich vor allem für die Bilderkennung.
Laden von Bilddaten
Laden Sie die Zahlenbeispieldaten als „Image Datastore“ (Bilddatenspeicher). Um auf diese Daten zuzugreifen, öffnen Sie das Beispiel als Live-Skript. Die Funktion imageDatastore
benennt die Bilder automatisch basierend auf den Ordnernamen. Der Datensatz besteht aus 10 Klassen und jedes Bild im Datensatz umfasst 28x28x1 Pixel.
unzip("DigitsData.zip") imds = imageDatastore("DigitsData", ... IncludeSubfolders=true, ... LabelSource="foldernames"); classNames = categories(imds.Labels);
Unterteilen Sie die Daten in Trainings-, Validierungs- und Testdatensätze. Verwenden Sie 70 % der Bilder für das Training, 15 % für die Validierung und 15 % für das Testen. Geben Sie "randomized"
an, um den angegebenen Anteil der Dateien aus jeder Klasse den neuen Datensätzen zuzuordnen. Die Funktion splitEachLabel
teilt den Bilddatenspeicher in drei neue Datastores auf.
[imdsTrain,imdsValidation,imdsTest] = splitEachLabel(imds,0.7,0.15,0.15,"randomized");
Definieren der Netzarchitektur
Verwenden Sie zum Erstellen des Netzes die App Deep Network Designer.
deepNetworkDesigner
Zum Erstellen eines leeren Netzes zeigen Sie mit der Maus auf Blank Network (Leeres Netz) und klicken Sie auf Neu.
Definieren Sie im Fensterbereich Designer die Architektur des Convolutional Neural Network. Ziehen Sie Schichten aus dem Fensterbereich Layer Library (Schichtbibliothek) und verbinden Sie diese. Um schnell nach Schichten zu suchen, verwenden Sie das Suchfeld Filter layers (Schichten filtern) im Fensterbereich Layer Library. Zum Bearbeiten der Eigenschaften einer Schicht klicken Sie auf die Schicht und bearbeiten Sie die Werte im Fensterbereich Properties (Eigenschaften).
Ziehen Sie diese Schichten in der richtigen Reihenfolge und verbinden Sie sie nacheinander. Ziehen Sie zunächst eine imageInputLayer auf die Leinwand und setzen Sie InputSize auf 28,28,1
.
Ziehen Sie diese Schichten anschließend auf die Leinwand und verbinden Sie sie der Reihe nach:
convolution2dLayer
batchNormalizationLayer
reluLayer
Verbinden Sie dann eine fullyConnectedLayer und setzen Sie OutputSize auf die Anzahl der Klassen in den Daten, in diesem Beispiel auf 10.
Fügen Sie schließlich eine softmaxLayer hinzu.
Klicken Sie auf Analyze (Analysieren), um zu prüfen, ob das Netz für das Training bereit ist. Der Deep Learning Network Analyzer meldet keine Fehler oder Warnungen, sodass das Netz für das Training bereit ist. Um das Netz zu exportieren, klicken Sie auf Export (Exportieren). Die App speichert das Netz als die Variable net_1
.
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
. Da das Ziel die Klassifizierung ist, verwenden Sie den Kreuzentropieverlust.
net = trainnet(imdsTrain,net_1,"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.9780
Visualisieren Sie einige der Vorhersagen.
numValidationObservations = numel(imdsValidation.Files); idx = randi(numValidationObservations,9,1); figure tiledlayout("flow") for i = 1:9 nexttile img = readimage(imdsValidation,idx(i)); imshow(img) title("Predicted Class: " + string(YValidation(idx(i)))) end
Für die nächsten Schritte beim Deep Learning können Sie vortrainierte Netze und Transfer Learning verwenden. Ein Beispiel finden Sie unter Erste Schritte mit Transfer Learning.
Siehe auch
trainingOptions
| Deep Network Designer
Verwandte Themen
- Erstellen eines einfachen Netzes zur Bildklassifizierung
- Start Deep Learning Faster Using Transfer Learning
- Ausprobieren von Deep Learning mit 10 Zeilen MATLAB-Programmcode
- Klassifizierung eines Bilds mithilfe eines vortrainierten Netzes
- Erste Schritte mit Transfer Learning
- Get Started with Time Series Forecasting