Objekterkennungsalgorithmus - 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.

Objekterkennungsalgorithmus

Der Amazon SageMaker-Objekterkennungsalgorithmus erkennt und klassifiziert Objekte in Bildern mit einem einzelnen tiefen neuronalen Netzwerk. Es handelt sich um einen überwachten Lernalgorithmus, der Bilder als Eingabe akzeptiert und alle Instances von Objekten innerhalb der Bilderszene identifiziert. Das Objekt wird in eine der Klassen in einer bestimmten Sammlung mit einem Zuverlässigkeitswert, dass es dieser Klasse angehört, kategorisiert. Die Position und Skalierung im Bild werden durch einen rechteckigen Begrenzungsrahmen angegeben. Es verwendet dieSingle Shot Multibox-Detektor (SSD)Framework und unterstützt zwei Basisnetzwerke: VGGundResNetaus. Das Netzwerk kann von Grund auf neu geschult werden oder mit Modellen, die bereits mit dem ImageNet-Dataset vorgeschult wurden.

E/A-Schnittstelle für den Objekterkennungsalgorithmus

Der SageMaker Object Detection 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 RecordIO (application/x-recordio) für das Training im Pipe-Modus. Allerdings können Sie die Schulungen auch im Pipe-Modus mit den Bilddateien (image/png, image/jpeg, und application/x-image) vornehmen, ohne RecordIO-Dateien zu erstellen. Verwenden Sie dann das erweiterte Manifestformat. Das empfohlene Format für die Amazon SageMaker-Objekterkennungsalgorithmen ist Apache MXNet RecordIO. Sie können jedoch auch unpräparierte Bilder im JPEG- oder PNG-Format verwenden. Der Algorithmus unterstützt nur application/x-image für Inferenzen.

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 Details zu Datenformaten finden Sie unter Beispiel-Notebooks für die Objekterkennung.

Schulen mit dem RecordIO-Format

Wenn Sie das RecordIO-Format für Schulungen 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. Ein Beispiel dafür, wie Sie eine RecordIO-Datei generieren, finden Sie im Beispiel-Notebook für die Objekterkennung. Sie können auch Werkzeuge aus derGlucoNCV von MXNet, um RecordIO Dateien für gängige Datasets wie diePASCAL Visual ObjektklassenundGemeinsame Objekte im Kontext (COCO)aus.

Schulen mit dem Bildformat

Wenn Sie das Bildformat für Schulungen verwenden, geben Sie die train-, validation-, train_annotation- und validation_annotation-Kanäle als Werte für den InputDataConfig-Parameter der CreateTrainingJob-Anforderung an. Geben Sie die individuellen Bilddaten (.jpg- oder .png-Dateien) für die Kanäle train und validation an. Für Anmerkungsdaten können Sie das JSON-Format verwenden. Geben Sie die entsprechenden JSON-Dateien in den Kanälen train_annotation und validation_annotation an. Legen Sie den Inhaltstyp für alle vier Kanäle basierend auf dem Bildtyp auf image/png oder image/jpeg fest. Sie können auch den Inhaltstyp application/x-image verwenden, wenn Ihr Dataset sowohl JPG- als auch PNG-Bilder enthält. Nachfolgend finden Sie ein Beispiel für eine .json-Datei.

{ "file": "your_image_directory/sample_image1.jpg", "image_size": [ { "width": 500, "height": 400, "depth": 3 } ], "annotations": [ { "class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128 }, { "class_id": 0, "left": 161, "top": 250, "width": 79, "height": 143 }, { "class_id": 1, "left": 101, "top": 185, "width": 42, "height": 130 } ], "categories": [ { "class_id": 0, "name": "dog" }, { "class_id": 1, "name": "cat" } ] }

Jedes Bild benötigt eine .json-Datei für Anmerkungen. Die .json-Datei sollte denselben Namen haben wie das entsprechende Bild. Der Name der oben genannten .json-Datei sollte "sample_image1.json" lauten. Es gibt vier Eigenschaften in der .json-Anmerkungsdatei. Die Eigenschaft "file" gibt den relativen Pfad der Bilddatei an. Beispiel: Wenn Ihre Schulungsbilder und die entsprechenden JSON-Dateien im Verzeichnis "s3://your_bucket/train/sample_image" und "s3://your_bucket/train_annotation" gespeichert werden, geben Sie den Pfad für Ihre train- und train_annotation-Kanäle mit "s3://your_bucket&train" bzw. "s3://your_bucket/train_annotation an.

In der .json-Datei sollte der relative Pfad für ein Bild mit dem Namen "/sample_image1.jpg" "sample_image/sample_image1.jpg" lauten. Die "image_size"-Eigenschaft gibt die allgemeinen Bildabmessungen an. Der SageMaker-Objekterkennungsalgorithmus unterstützt derzeit nur 3-Kanal-Bilder. Die "annotations"-Eigenschaft gibt die Kategorien und Begrenzungsrahmen für Objekte innerhalb des Bildes an. Jedes Objekt wird von einem "class_id" Index mit Anmerkungen und vier Koordinaten des Begrenzungsrahmens ("left", "top", "width", "height") versehen. Die Werte "left" (x-Koordinate) und "top" (y-Koordinate) stellen die obere linke Ecke des Begrenzungsrahmens dar. Die Werte "width" (x-Koordinate) und "height" (y-Koordinate) stellen die Abmessungen des Begrenzungsrahmens dar. Der Ursprung (0, 0) ist die obere linke Ecke des gesamten Bildes. Wenn mehrere Objekte innerhalb eines Bildes vorliegen, werden alle Anmerkungen in einer einzelnen .json-Datei aufgeführt. Die "categories"-Eigenschaft speichert die Zuweisung zwischen dem Klassenindex und dem Klassennamen. Die Klassenindizes sollten aufeinanderfolgend nummeriert sein und die Nummerierung sollte mit 0 beginnen. Die "categories"-Eigenschaft ist für die .json-Anmerkungsdatei optional.

Trainieren mit dem erweiterten Manifest-Image-Format

Im erweiterten Manifestformat können Sie Schulungen im Pipe-Modus mit den Bilddateien 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 ["source-ref", "bounding-box"] enthalten:

{"source-ref": "s3://your_bucket/image1.jpg", "bounding-box":{"image_size":[{ "width": 500, "height": 400, "depth":3}], "annotations":[{"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 80, "height": 50}]}, "bounding-box-metadata":{"class-map":{"0": "dog", "5": "horse"}, "type": "groundtruth/object-detection"}} {"source-ref": "s3://your_bucket/image2.jpg", "bounding-box":{"image_size":[{ "width": 400, "height": 300, "depth":3}], "annotations":[{"class_id": 1, "left": 100, "top": 120, "width": 43, "height": 78}]}, "bounding-box-metadata":{"class-map":{"1": "cat"}, "type": "groundtruth/object-detection"}}

Bei der Schulung mit dem Objekterkennungsalgorithmus 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 annotations. Die "AttributeNames" in diesem Beispiel werden daher mit "source-ref" an erster Stelle angegeben, gefolgt von "bounding-box". Bei der Verwendung der Objekterkennung mit dem erweiterten Manifest muss für den Parameter RecordWrapperType der Wert "RecordIO" festgelegt werden.

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. -Objekterkennungsmodelle von SageMaker können nur mit einem anderen in geschulten, integrierten Objekterkennungsmodell gesSageMaker ist 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 vorgeschulten Modells, die Sie in den Modellkanal hochladen, müssen die gleichen Einstellungen für die Eingabeparameter base_network 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.

Weitere Informationen zum inkrementellen Training und Anweisungen zu dessen Verwendung finden Sie unter in Amazon SageMaker inkrementelle Schulung.

EC2-Instance-Empfehlung für den Objekterkennungsalgorithmus

Für die Objekterkennung unterstützen wir die folgenden GPU-Instances für Schulungen: 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. Sie können den Algorithmus auch in Multi-GPU- und Multi-Maschinen-Umgebungen für verteiltes Training ausführen. Es können jedoch sowohl CPU-Instances (wie C5 und M5) als auch GPU-Instances (wie P2 und P3) für die Interferenz verwendet werden. Alle unterstützten Instance-Typen für Inferenzen werden unter Amazon SageMaker-ML-Instance-Typen detailliert aufgeführt.

Beispiel-Notebooks für die Objekterkennung

Ein Beispiel-Notebook, das zeigt, wie der SageMaker Objekterkennungsalgorithmus zum Schulen und Hosten eines Modells auf der

Caltech Vögel (CUB 200 2011)-Dataset mit dem Multibox-Detector-Algorithmus von Single Shot finden Sie unterAmazon SageMaker Objekterkennung für Vogelartenaus. 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. Das Beispiel-Notebook zur Objekterkennung, das den Objekterkennungsalgorithmus verwendet, befindet sich im Abschnitt Einführung in Amazon-Algorithmen. Zum Öffnen eines Notebooks klicken Sie auf die Registerkarte Use (Verwenden) und wählen Sie Create copy (Kopie erstellen) aus.