Main Content

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

Erste Schritte mit Deep Network Designer

Das folgende Beispiel veranschaulicht, wie Sie mithilfe von Deep Network Designer ein vortrainiertes GoogLeNet-Netz für die Klassifizierung einer neuen Bildersammlung anpassen können. Dieser Prozess wird „Transfer Learning“ genannt und ist in der Regel wesentlich schneller und einfacher als das Trainieren eines neuen Netzes, da Sie erlernte Merkmale mithilfe einer geringeren Anzahl an Trainingsbildern auf eine neue Aufgabe anwenden können. Bereiten Sie ein Netz mithilfe von Deep Network Designer interaktiv auf Transfer Learning vor.

Extrahieren von Daten für das Training

Entpacken Sie die Daten im Arbeitsbereich.

unzip('MerchData.zip');

Auswählen eines vortrainierten Netzes

Öffnen Sie Deep Network Designer.

deepNetworkDesigner

Laden Sie ein vortrainiertes GoogLeNet-Netz, indem Sie es auf der Startseite von Deep Network Designer auswählen. Wenn Sie das Netz herunterladen müssen, klicken Sie auf Install, um den Add-on-Explorer zu öffnen.

Deep Network Designer zeigt eine verkleinerte Ansicht des gesamten Netzes an. Untersuchen Sie das Netzdiagramm. Wenn Sie die Ansicht mithilfe der Maus vergrößern möchten, halten Sie die Strg-Taste gedrückt und bewegen Sie das Mausrad.

Laden des Datensatzes

Zum Laden der Daten in Deep Network Designer klicken Sie auf der Registerkarte Data auf Import Data > Import Image Classification Data.

Wählen Sie aus der Liste Data source (Datenquelle) den Eintrag Folder (Ordner) aus. Klicken Sie auf Browse, und wählen Sie den extrahierten Ordner „MerchData“ aus.

Sie können die Validierungsdaten im Dialogfenster auch innerhalb der App unterteilen. Unterteilen Sie die Daten in 70% Trainingsdaten und 30% Validierungsdaten.

Geben Sie Augmentationsvorgänge an, die für die Trainingsbilder ausgeführt werden sollen. Wenden Sie in diesem Beispiel eine zufällige Reflexion in der x-Achse, eine zufällige Drehung aus dem Bereich [-90,90] Grad und eine zufällige Neuskalierung aus dem Bereich [1,2] an.

Klicken Sie auf Import, um die Daten in Deep Network Designer zu importieren.

Wenn Sie Deep Network Designer verwenden, können Sie die Verteilung der Trainings- und Validierungsdaten auf der Registerkarte Data visuell überprüfen. Sie werden feststellen, dass der Datensatz in diesem Beispiel fünf Klassen enthält. Sie können außerdem zufällige Beobachtungen aus jeder Klasse ansehen.

Deep Network Designer legt die Größen der Bilder während des Trainings neu fest, damit diese der Netzeingangsgröße entsprechen. Zum Anzeigen der Netzeingangsgröße klicken Sie auf der Registerkarte Designer auf imageInputLayer. Dieses Netz hat eine Eingangsgröße von 224x224.

Bearbeiten des Netzes für Transfer Learning

Zum Neutrainieren eines vortrainierten Netzes für die Klassifizierung neuer Bilder passen Sie die letzte erlernbare Schicht und die endgültige Klassifizierungsschicht an den neuen Datensatz an. In GoogLeNet haben diese Schichten die Namen 'loss3-classifier' bzw. 'output'.

Klicken Sie auf der Registerkarte Designer auf die letzte vollständig verbundene Schicht, 'loss3-classifier'. Klicken Sie am unteren Rand des Fensterbereichs Properties auf Unlock Layer (Schicht entsperren). Klicken Sie im daraufhin angezeigten Dialogfeld mit der Warnung auf Unlock Anyway (Trotzdem entsperren). Auf diese Weise werden die Schichteigenschaften entsperrt, damit Sie diese an Ihre neue Aufgabe anpassen können.

Vor R2023b: Zum Bearbeiten der Schichteigenschaften müssen Sie die Schichten ersetzen, anstatt sie zu entsperren.

Legen Sie OutputSize auf die Anzahl der Klassen in den neuen Daten fest, in diesem Beispiel also 5.

Ändern Sie die Lerngeschwindigkeit so, dass das Lernen in den neuen Schichten schneller erfolgt als in den transferierten Schichten. Legen Sie WeightLearnRateFactor und BiasLearnRateFactor auf 10 fest.

Wählen Sie die Klassifizierungsschicht, 'output', aus und klicken Sie auf Unlock Layer (Schicht entsperren) und anschließend auf Unlock Anyway (Trotzdem entsperren). Für die entsperrte Ausgangsschicht müssen Sie die Ausgangsgröße (OutputSize) nicht festlegen. Deep Network Designer legt zum Trainingszeitpunkt die Ausgangsklassen der Schicht automatisch anhand der Daten fest.

Überprüfen des Netzes

Überprüfen Sie Ihr Netz, indem Sie auf Analyze klicken. Das Netz ist für das Training bereit, wenn Deep Learning Network Analyzer null Fehler meldet.

Trainieren des Netzes

Zum Trainieren des Netzes mit den Standardeinstellungen klicken Sie auf der Registerkarte Training auf Train.

Wenn Sie mehr Kontrolle über das Training haben möchten, klicken Sie auf Training Options und wählen Sie die Einstellungen aus, mit denen das Training durchgeführt werden soll. Die Standardoptionen für das Training sind eher für große Datensätze geeignet. Verwenden Sie bei kleinen Datensätzen kleinere Werte für die Mini-Batch-Größe und die Validierungshäufigkeit. Weitere Informationen zum Auswählen von Trainingsoptionen finden Sie unter trainingOptions.

Legen Sie für dieses Beispiel InitialLearnRate auf 0.0001, MaxEpochs auf 8 und ValidationFrequency auf 5 fest. Da es 55 Beobachtungen gibt, legen Sie MiniBatchSize auf 11 fest, um die Trainingsdaten gleichmäßig zu unterteilen und sicherzustellen, dass die gesamte Trainingsmenge während jeder Epoche verwendet wird.

Zum Trainieren des Netzes mit den angegebenen Trainingsoptionen klicken Sie auf OK und anschließend auf Train.

Deep Network Designer ermöglicht Ihnen die Visualisierung und Überwachung des Trainingsfortschritts. Sie können anschließend die Trainingsoptionen bearbeiten und das Netz bei Bedarf neu trainieren.

Exportieren der Ergebnisse nach dem Training

Zum Exportieren der Ergebnisse nach dem Training wählen Sie auf der Registerkarte Training die Optionen Export > Export Trained Network and Results (Trainiertes Netz und Ergebnisse exportieren) aus. Deep Network Designer exportiert das trainierte Netz in Form der Variablen trainedNetwork_1 und die Trainingsinformationen in Form der Variablen trainInfoStruct_1.

Sie können auch MATLAB Programmcode generieren, mit dem das Netz und die verwendeten Trainingsoptionen erneut erstellt werden. Wählen Sie auf der Registerkarte Training die Optionen Export > Generate Code for Training (Code für Training generieren) aus.

Testen des trainierten Netzes

Wählen Sie ein neues Bild aus, das mithilfe des trainierten Netzes klassifiziert werden soll.

I = imread("MerchDataTest.jpg");

Legen Sie die Größe des Testbilds neu fest, damit diese der Netzeingangsgröße entspricht.

I = imresize(I, [224 224]);

Klassifizieren Sie das Testbild mithilfe des trainierten Netzes.

[YPred,probs] = classify(trainedNetwork_1,I);
imshow(I)
label = YPred;
title(string(label) + ", " + num2str(100*max(probs),3) + "%");

Weitere Informationen, auch zu anderen vortrainierten Netzen, finden Sie unter Deep Network Designer.

Siehe auch

Verwandte Themen