Main Content

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

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);

Figure Training Progress (03-Aug-2023 23:43:54) contains 2 axes objects and another object of type uigridlayout. Axes object 1 with xlabel Iteration, ylabel Loss contains 11 objects of type patch, text, line. Axes object 2 with xlabel Iteration, ylabel Accuracy (%) contains 11 objects of type patch, text, line.

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

|

Verwandte Themen