Bildklassifikationsalgorithmus - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bildklassifikationsalgorithmus

Der Amazon SageMaker Bildklassifikationsalgorithmus ist ein überwachter Lernalgorithmus, der die Multi-Label-Klassifizierung unterstützt. Ein Bild wird als Eingabe herangezogen und es werden eine oder mehrere Kennzeichnungen ausgegeben, die diesem Bild zugewiesen sind. Er verwendet ein Convolutional Neural Network (CNN, faltendes neuronales Netzwerk) (ResNet), das von Grund auf neu oder mithilfe von Transferlernen trainiert werden kann, wenn keine große Anzahl von Trainingsbildern verfügbar ist.

Das empfohlene Format für die Amazon SageMaker Algorithmen für die Bildklassifizierung ist Apache MXNetRecordIOaus. Sie können jedoch auch unpräparierte Bilder im JPEG- oder PNG-Format verwenden. In dieser Diskussion finden Sie einen umfassenden Überblick über die effiziente Datenaufbereitung und das Laden für Machine Learning-Systeme.

Anmerkung

Um eine bessere Interoperabilität mit vorhandenen Deep Learning-Frameworks zu erhalten, unterscheidet sich dies von den protobuf-Datenformaten, die generell von anderen Amazon SageMaker-Algorithmen verwendet werden.

Weitere Informationen zu Faltungsnetzwerken finden Sie unter:

E/A-Schnittstelle für den Bildklassifikationsalgorithmus

Der SageMaker Image Classification Algorithmus unterstützt sowohl RecordIO (application/x-recordio) und Bild (image/png,image/jpeg, undapplication/x-image) -Inhaltstypen für das Training im Dateimodus und unterstützt die RecordIO (application/x-recordio) -Inhaltstyp für das Training im Pipe-Modus. Sie können jedoch das Training mithilfe der Bilddateien (image/png, image/jpeg und application/x-image) auch im Pipe-Modus ausführen, ohne RecordIO-Dateien zu erstellen, indem Sie das augmentierte Manifestformat verwenden.

Verteilte Trainings werden für den Dateimodus und den Pipe-Modus unterstützt. Wenn Sie den Inhaltstyp RecordIO im Pipe-Modus verwenden, müssen Sie den S3DataDistributionType von S3DataSource auf FullyReplicated festlegen. Der Algorithmus unterstützt ein vollständig repliziertes Modell, bei dem Ihre Daten auf jede Maschine kopiert werden.

Der Algorithmus unterstützt image/png, image/jpeg und application/x-image für Inferenzen.

Trainieren mit dem RecordIO-Format

Wenn Sie das RecordIO-Format für das Training verwenden, geben Sie sowohl den train- als auch den und validation-Kanal als Werte für den InputDataConfig-Parameter der CreateTrainingJob-Anforderung an. Geben Sie eine RecordIO-Datei (.rec) im train-Kanal und eine RecordIO-Datei im validation-Kanal an. Legen Sie den Inhaltstyp für beide Kanäle auf application/x-recordio fest.

Trainieren mit dem Bildformat

Wenn Sie zum Training das Bildformat verwenden, geben Sie train-, validation-, train_lst- und validation_lst-Kanäle als Werte für den InputDataConfig-Parameter der CreateTrainingJob-Anforderung an. Geben Sie die einzelnen Bilddaten (.jpg- oder .png-Dateien) für die Kanäle train und validation an. Geben Sie eine .lst-Datei im train_lst- und im validation_lst-Kanal an. Legen Sie den Inhaltstyp für alle vier Kanäle auf application/x-image fest.

Anmerkung

SageMaker liest die Trainings- und Validierungsdaten getrennt von verschiedenen Kanälen. Die Trainings- und Validierungsdaten müssen daher in unterschiedlichen Ordnern gespeichert werden.

Eine .lst-Datei ist eine tabulatorgetrennte Datei mit drei Spalten, die eine Liste mit Bilddateien enthält. Die erste Spalte gibt den Bildindex an, die zweite Spalte gibt den Klassenbezeichnungsindex für das Bild an und die dritte Spalte gibt den relativen Pfad der Bilddatei an. Der Bildindex in der ersten Spalte muss über alle Bilder hinweg eindeutig sein. Die Klassenbezeichnungsindizes sind aufeinanderfolgend nummeriert und die Nummerierung sollte mit 0 beginnen. Beispiel: 0 für die Klasse "cat", 1 für die Klasse "dog" und so weiter für zusätzliche Klassen.

Im Folgenden wird ein Beispiel für eine .lst-Datei dargestellt:

5 1 your_image_directory/train_img_dog1.jpg 1000 0 your_image_directory/train_img_cat1.jpg 22 1 your_image_directory/train_img_dog2.jpg

Wenn beispielsweise Ihre Trainingsbilder unter s3://<your_bucket>/train/class_dog, s3://<your_bucket>/train/class_cat usw. gespeichert sind, geben Sie den Pfad für Ihren train-Kanal als s3://<your_bucket>/train an, das oberste Verzeichnis für Ihre Daten. Geben Sie in der .lst-Datei den relativen Pfad für eine einzelne Datei mit dem Namen train_image_dog1.jpg im class_dog-Klassenverzeichnis als class_dog/train_image_dog1.jpg an. Sie können auch all Ihre Bilddateien in einem Unterverzeichnis innerhalb des train-Verzeichnisses speichern. In diesem Fall verwenden Sie dieses Unterverzeichnis für den relativen Pfad. Beispiel, s3://<your_bucket>/train/your_image_directory.

Trainieren mit dem erweiterten Manifest-Image-Format

Im erweiterten Manifestformat können Sie das Training mit den Bilddateien im Pipe-Modus vornehmen, ohne RecordIO-Dateien erstellen zu müssen. Sie müssen sowohl den train- als auch den und validation-Kanal als Werte für den InputDataConfig-Parameter der CreateTrainingJob-Anforderung angeben. Beim Verwenden dieses Formats muss eine S3-Manifestdatei generiert werden, die die Liste der Bilder und der entsprechenden Anmerkungen enthält. Das Manifestdateiformat sollte im JSON Lines-Format vorliegen, bei dem jede Zeile ein Muster darstellt. Die Bilder werden mithilfe des 'source-ref'-Tags, das auf den S3-Speicherort der Bilder zeigt, angegeben. Die Anmerkungen werden unter dem Parameterwert "AttributeNames" bereitgestellt, wie in der Anforderung CreateTrainingJob angegeben. Es können auch zusätzliche Metadaten unter dem metadata-Tag enthalten sein. Diese werden jedoch vom Algorithmus ignoriert. Im folgenden Beispiel sind die "AttributeNames" in der Liste der Bild- und Anmerkungsreferenzen ["source-ref", "class"] enthalten. Der entsprechende Bezeichnungswert ist "0" für das erste Bild und “1” für das zweite Bild:

{"source-ref":"s3://image/filename1.jpg", "class":"0"} {"source-ref":"s3://image/filename2.jpg", "class":"1", "class-metadata": {"class-name": "cat", "type" : "groundtruth/image-classification"}}

Beim Training mit dem Bildklassifikationsalgorithmus muss die Reihenfolge der "AttributeNames" in den Eingabedateien beachtet werden. Er akzeptiert Daten, die in einer bestimmten Reihenfolge übergeben werden. Dabei kommt image zuerst, gefolgt von label. Die "AttributeNames" in diesem Beispiel werden daher mit "source-ref" an erster Stelle angegeben, gefolgt von "class". Bei Verwendung des Bildklassifikationsalgorithmus mit dem erweiterten Manifest muss der Wert des RecordWrapperType-Parameters "RecordIO" sein.

Multi-Label-Training wird auch durch die Angabe eines JSON-Arrays von Werten unterstützt. Der num_classes-Hyperparameter muss so eingestellt werden, dass er der Gesamtzahl der Klassen entspricht. Es gibt zwei gültige Beschriftungsformate: multi-hot und class-id.

Im Multi-Hot-Format ist jede Beschriftung ein Multi-Hot-codierter Vektor aller Klassen, wobei jede Klasse den Wert 0 oder 1 annimmt. Im folgenden Beispiel werden drei Klassen beschrieben. Das erste Bild ist mit den Klassen 0 und 2 beschriftet, während das zweite Bild nur mit Klasse 2 beschriftet ist:

{"image-ref": "s3://mybucket/sample01/image1.jpg", "class": "[1, 0, 1]"} {"image-ref": "s3://mybucket/sample02/image2.jpg", "class": "[0, 0, 1]"}

Im Klassen-ID-Format ist jede Beschriftung eine Liste der Klassen-IDs aus [0, num_classes), die für den Datenpunkt gelten. Das vorherige Beispiel würde stattdessen wie folgt aussehen:

{"image-ref": "s3://mybucket/sample01/image1.jpg", "class": "[0, 2]"} {"image-ref": "s3://mybucket/sample02/image2.jpg", "class": "[2]"}

Das Multi-Hot-Format ist die Standardeinstellung, kann aber explizit im Inhaltstyp mit demlabel-formatParameter:Parameter"application/x-recordio; label-format=multi-hot". Das Klassen-ID-Format, das das von GroundTruth ausgegebene Format ist, muss explizit gesetzt werden:"application/x-recordio; label-format=class-id".

Weitere Informationen zu erweiterten Manifestdateien finden Sie unter Bereitstellen von Dataset-Metadaten für Schulungsaufträge mit einer erweiterten Manifestdatei.

Inkrementelles Training

Sie können die Schulung eines neuen Modells auch mit den Artefakten aus einem Modell vornehmen, das Sie zuvor mit SageMaker geschult haben. Bei inkrementellen Schulungen verkürzt die Schulungsdauer, wenn Sie ein neues Modell mit denselben oder ähnlichen Daten schulen möchten. -Bildklassifizierungsmodelle von SageMaker können nur mit einem anderen in SageMaker geschulten integrierten Bildklassifizierungsmodell gespeist werden.

Um ein vortrainiertes Modell zu verwenden, geben Sie in der CreateTrainingJob-Anforderung den ChannelName als „Modell“ im InputDataConfig-Parameter an. Legen Sie den ContentType für den Modellkanal auf application/x-sagemaker-model fest. Die Eingabehyperparameter des neuen und des vortrainierten Modells, die Sie in den Modellkanal hochladen, müssen die gleichen Einstellungen für die Eingabeparameter num_layers, image_shape und num_classes besitzen. Diese Parameter definieren die Netzwerkarchitektur. Verwenden Sie für die vortrainierte Modelldatei die komprimierten Modellartefakte (im .tar.gz-Format), die von SageMaker ausgegeben werden. Sie können entweder RecordIO- oder Bildformate als Eingabedaten verwenden.

Ein Beispiel-Notebook, das zeigt, wie Sie inkrementelle Schulungen mit dem SageMaker Bildklassifizierungsalgorithmus verwenden, finden Sie im AbschnittBeispiel für eine durchgängige Inkrementelle Schulungaus. Weitere Informationen zum inkrementellen Training und Anweisungen zu dessen Verwendung finden Sie unter in Amazon SageMaker inkrementelle Schulung.

Inferenzieren mit dem Bildklassifikationsalgorithmus

Die generierten Modelle können zum Inferieren gehostet werden und unterstützen kodierte .jpg- und .png-Bildformate als image/png, image/jpeg- und application/x-image-Inhaltstyp. Die Größe des Eingabebilds wird automatisch geändert. Bei Stapeltransformationen werden für alle Klassen die Wahrscheinlichkeitswerte ausgegeben, im JSON-Format oder im JSON Lines-Textformat kodiert. Das Bildklassifizierungsmodell verarbeitet ein Bild pro Anforderung und gibt daher nur eine Zeile im JSON- oder JSON Lines-Format aus. Nachfolgend finden Sie ein Beispiel für eine Antwort im JSON Lines-Format:

accept: application/jsonlines {"prediction": [prob_0, prob_1, prob_2, prob_3, ...]}

Weitere Details zu Training und Inferenz finden Sie in den Beispiel-Notebook-Instances zur Bildklassifikation, auf die in der Einführung verwiesen wurde.

EC2-Instance-Empfehlung für den Bildklassifikationsalgorithmus

Für die Bildklassifikation unterstützen wir die folgenden GPU-Instances für das Training: ml.p2.xlarge, ml.p2.8xlarge, ml.p2.16xlarge, ml.p3.2xlarge, ml.p3.8xlarge und ml.p3.16xlarge. Wir empfehlen die Verwendung von GPU-Instances mit mehr Arbeitsspeicher zum Training mit großen Stapelgrößen. Es können jedoch sowohl CPU-Instances wie C4 als auch GPU-Instances wie P2 und P3 zum Inferieren verwendet werden. Sie können den Algorithmus auch in Multi-GPU- und Multi-Maschinen-Umgebungen für verteiltes Training ausführen.

Sowohl P2- als auch P3-Instances werden im Bildklassifikationsalgorithmus unterstützt.

Beispiel-Notebooks für die Bildklassifikation

Für ein Beispiel-Notizbuch, das den SageMaker Bildklassifizierungsalgorithmus verwendet, um ein Modell auf dercaltech-256-Datensatzund dann, um es für die Durchführung von Schlussfolgerungen bereitzustellen, finden Sie in derEnd-to-End-Bild-Klassifizierung von -to-End-Bildernaus. Anweisungen zum Erstellen von und Zugreifen auf Jupyter-Notebook-Instances, die Sie verwenden können, um das Beispiel in SageMaker auszuführen, finden Sie unter.Verwenden von Amazon SageMaker Notebook-Instancesaus. Sobald Sie eine Notebook-Instance erstellt und geöffnet haben, wählen Sie die RegisterkarteSageMaker Beispiele, um eine Liste aller SageMaker Beispiele anzusehen. Die Beispiel-Notebooks für die Bildklassifikation befinden sich im Abschnitt Einführung in die Amazon-Algorithmen. Zum Öffnen eines Notebooks klicken Sie auf die Registerkarte Use (Verwenden) und wählen Sie Create copy (Kopie erstellen) aus.