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.
Objekterkennung - MXNet
Der Amazon SageMaker Object Detection — MXNet Algorithmus erkennt und klassifiziert Objekte in Bildern mithilfe eines einzigen tiefen neuronalen Netzwerks. 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. Er verwendet das Single Shot Multibox Detector (SSD)
Themen
- E/A-Schnittstelle für den Objekterkennungsalgorithmus
- EC2Instanzempfehlung für den Objekterkennungsalgorithmus
- Beispiel-Notebooks für die Objekterkennung
- So funktioniert die Objekterkennung
- Objekterkennungshyperparameter
- Optimieren eines Objekterkennungsmodells
- Anforderungs- und Antwortformate für die Objekterkennung
E/A-Schnittstelle für den Objekterkennungsalgorithmus
Der SageMaker Objekterkennungsalgorithmus unterstützt sowohl die Inhaltstypen RecordIO (application/x-recordio
) als auch image (image/png
image/jpeg
, undapplication/x-image
) für das Training im Dateimodus und RecordIO (application/x-recordio
) für das Training im Pipe-Modus. Allerdings können Sie das Training 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 Eingabeformat für die SageMaker Amazon-Objekterkennungsalgorithmen ist Apache MXNet RecordIOapplication/x-image
für Inferenzen.
Anmerkung
Um eine bessere Interoperabilität mit bestehenden Deep-Learning-Frameworks aufrechtzuerhalten, unterscheidet sich dies von den Protobuf-Datenformaten, die üblicherweise von anderen SageMaker Amazon-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 Trainings 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 Tools von GluonCV
Schulen mit dem Bildformat
Wenn Sie das Bildformat für Trainings 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 Annotationsdaten können Sie das Format verwenden. JSON 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 Datensatz 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. Zum Beispiel, wenn Ihre Trainingsbilder und die entsprechenden .json-Dateien in s3://gespeichert sindyour_bucket
/train/sample_image und s3://your_bucket
/train_annotation, gib den Pfad für deine train- und train_annotation-Kanäle als s3://anyour_bucket
/train und s3://your_bucket
/train_annotation jeweils.
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 Trainings 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 das Format JSONLines'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"}}
Beim Training 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 also "source-ref"
zuerst mit 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 Erweiterte Manifestdateien für Schulungsjobs.
Inkrementelles Training
Sie können das Training eines neuen Modells auch anhand der Artefakte eines Modells starten, mit dem Sie zuvor trainiert haben SageMaker. Inkrementelles Training spart Trainingszeit, wenn Sie ein neues Modell mit denselben oder ähnlichen Daten trainieren möchten. SageMaker Objekterkennungsmodelle können nur erstellt werden, wenn ein anderes integriertes Objekterkennungsmodell trainiert wird. SageMaker
Um ein vortrainiertes Modell zu verwenden, geben Sie in der CreateTrainingJob
-Anforderung den ChannelName
als "model" 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 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 ausgegeben werden. SageMaker Sie können entweder RecordIO- oder Bildformate als Eingabedaten verwenden.
Weitere Informationen zum inkrementellen Training und Anweisungen zu dessen Verwendung finden Sie unter Verwenden Sie inkrementelles Training in Amazon SageMaker.
EC2Instanzempfehlung für den Objekterkennungsalgorithmus
Der Objekterkennungsalgorithmus unterstützt die Instanzfamilien P2, P3, G4dn und GPU G5. Wir empfehlen, GPU Instances mit mehr Speicher für das Training mit großen Batch-Größen zu verwenden. Für verteiltes Training können Sie den Objekterkennungsalgorithmus auf Einstellungen für mehrere GPU und mehrere Computer ausführen.
Sie können sowohl CPU (wie C5 und M5) als auch GPU (wie P3 und G4dn) Instanzen für Inferenzen verwenden.
Beispiel-Notebooks für die Objekterkennung
Für ein Beispielnotizbuch, das zeigt, wie der SageMaker Objekterkennungsalgorithmus verwendet wird, um ein Modell zu trainieren und zu hosten
Datensatz von Caltech Birds (CUB200 2011)
Weitere Informationen zum Amazon SageMaker Object Detection-Algorithmus finden Sie in den folgenden Blogbeiträgen: