

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
<a name="object-detection"></a>

Der Amazon SageMaker AI 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)](https://arxiv.org/pdf/1512.02325.pdf) -Framework und unterstützt zwei Basisnetzwerke: [VGG](https://arxiv.org/pdf/1409.1556.pdf) und. [ResNet](https://arxiv.org/pdf/1603.05027.pdf) Das Netzwerk kann von Grund auf neu trainiert oder mit Modellen trainiert werden, die anhand des Datensatzes vorab trainiert wurden. [ImageNet](http://www.image-net.org/)

**Topics**
+ [E/A-Schnittstelle für den Objekterkennungsalgorithmus](#object-detection-inputoutput)
+ [EC2-Instance-Empfehlung für den Objekterkennungsalgorithmus](#object-detection-instances)
+ [Beispiel-Notebooks für die Objekterkennung](#object-detection-sample-notebooks)
+ [So funktioniert die Objekterkennung](algo-object-detection-tech-notes.md)
+ [Objekterkennungshyperparameter](object-detection-api-config.md)
+ [Optimieren eines Objekterkennungsmodells](object-detection-tuning.md)
+ [Anforderungs- und Antwortformate für die Objekterkennung](object-detection-in-formats.md)

## E/A-Schnittstelle für den Objekterkennungsalgorithmus
<a name="object-detection-inputoutput"></a>

Der SageMaker KI-Objekterkennungsalgorithmus unterstützt sowohl die Inhaltstypen RecordIO (`application/x-recordio`) als auch image (`image/png``image/jpeg`, und`application/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 Amazon SageMaker AI-Objekterkennungsalgorithmen ist [Apache MXNet RecordIO](https://mxnet.apache.org/api/architecture/note_data_loading). 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 bestehenden Deep-Learning-Frameworks aufrechtzuerhalten, unterscheidet sich dies von den Protobuf-Datenformaten, die üblicherweise von anderen Amazon SageMaker AI-Algorithmen verwendet werden.

Weitere Details zu Datenformaten finden Sie unter [Beispiel-Notebooks für die Objekterkennung](#object-detection-sample-notebooks).

### Schulen mit dem RecordIO-Format
<a name="object-detection-recordio-training"></a>

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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)-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](https://gluon-cv.mxnet.io/build/examples_datasets/recordio.html) verwenden, um RecordIo-Dateien für beliebte Datensätze wie die [PASCAL Visual Object Classes](http://host.robots.ox.ac.uk/pascal/VOC/) und [Common Objects in](http://cocodataset.org/#home) Context (COCO) zu generieren. MXNet

### Schulen mit dem Bildformat
<a name="object-detection-image-training"></a>

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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)-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 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\$1image1.json" lauten. Es gibt vier Eigenschaften in der .json-Anmerkungsdatei. Die Eigenschaft "file" gibt den relativen Pfad der Bilddatei an. Wenn Ihre Trainingsbilder und die entsprechenden .json-Dateien beispielsweise in s3://*your\$1bucket*/train/sample\$1image und s3://*your\$1bucket*/train\$1annotation gespeichert sind, geben Sie den Pfad für Ihre Train- und train\$1annotation-Kanäle jeweils als s3://*your\$1bucket*/train und s3://*your\$1bucket*/train\$1annotation an. 

In der .json-Datei sollte der relative Pfad für ein Bild mit dem Namen "/sample\$1image1.jpg" "sample\$1image/sample\$1image1.jpg" lauten. Die `"image_size"`-Eigenschaft gibt die allgemeinen Bildabmessungen an. SageMaker Der KI-Algorithmus zur Objekterkennung 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
<a name="object-detection-augmented-manifest-training"></a>

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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)-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](http://jsonlines.org/)-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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) 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 versehen, 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 Trainingsjobs](augmented-manifest.md).

### Inkrementelles Training
<a name="object-detection-incremental-training"></a>

Sie können das Training eines neuen Modells auch anhand der Artefakte eines Modells starten, das Sie zuvor mit SageMaker KI trainiert haben. Inkrementelles Training spart Trainingszeit, wenn Sie ein neues Modell mit denselben oder ähnlichen Daten trainieren möchten. SageMaker KI-Objekterkennungsmodelle können nur mit einem anderen integrierten Objekterkennungsmodell erstellt werden, das in SageMaker KI trainiert wurde.

Um ein vortrainiertes Modell zu verwenden, geben Sie in der [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)-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 Format .tar.gz), die von AI 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 AI SageMaker](incremental-training.md). 

## EC2-Instance-Empfehlung für den Objekterkennungsalgorithmus
<a name="object-detection-instances"></a>

Der Objekterkennungsalgorithmus unterstützt die GPU-Instance-Familien P2, P3, G4dn und G5. Wir empfehlen die Verwendung von GPU-Instances mit mehr Arbeitsspeicher zum Training mit großen Stapelgrößen. Sie können den Objekterkennungsalgorithmus in Multi-GPU- und Multi-Maschinen-Umgebungen für verteiltes Training ausführen.

Sie können entweder CPU-Instances (z. B. „C5“ und „M5“) und GPU-Instances (z. B. P3 und G4dn) verwenden.

## Beispiel-Notebooks für die Objekterkennung
<a name="object-detection-sample-notebooks"></a>

Für ein Beispiel-Notizbuch, das zeigt, wie der SageMaker KI-Objekterkennungsalgorithmus verwendet wird, um ein Modell auf dem zu trainieren und zu hosten 

Datensatz von [Caltech Birds (CUB 200 2011)](http://www.vision.caltech.edu/datasets/cub_200_2011/), der den Single Shot Multibox Detector-Algorithmus verwendet, siehe [Amazon SageMaker AI Object Detection for](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/object_detection_birds/object_detection_birds.html) Bird Species. Anweisungen zum Erstellen und Zugreifen auf Jupyter-Notebook-Instances, mit denen Sie das Beispiel in KI ausführen können, finden Sie unter. SageMaker [SageMaker Amazon-Notebook-Instanzen](nbi.md) Nachdem Sie eine Notebook-Instanz erstellt und geöffnet haben, wählen Sie den Tab **SageMaker KI-Beispiele** aus, um eine Liste aller KI-Beispiele zu sehen. SageMaker 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.

Weitere Informationen zum Amazon SageMaker AI Object Detection-Algorithmus finden Sie in den folgenden Blogbeiträgen:
+ [Trainieren und Ausführen des Amazon SageMaker AI-Objekterkennungsmodells AWS IoT Greengrass — Teil 1 von 3: Vorbereiten von Trainingsdaten](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-1-of-3/)
+ [Trainieren des Amazon SageMaker AI-Objekterkennungsmodells und dessen Ausführung AWS IoT Greengrass — Teil 2 von 3: Trainieren eines benutzerdefinierten Objekterkennungsmodells](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-2-of-3/)
+ [Trainieren des Amazon SageMaker KI-Objekterkennungsmodells und dessen Ausführung AWS IoT Greengrass — Teil 3 von 3: Einsatz am Edge](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-3-of-3/)

# So funktioniert die Objekterkennung
<a name="algo-object-detection-tech-notes"></a>

Der Objekterkennungsalgorithmus identifiziert und sucht alle Instances von Objekten in einem Bild aus einer bekannten Sammlung von Objektkategorien. Der Algorithmus akzeptiert ein Bild als Eingabe und gibt die Kategorie, der das Objekt angehört, zusammen mit einem Zuverlässigkeitswert aus, der zeigt, dass es der Kategorie angehört. Der Algorithmus prognositiziert außerdem den Speicherort und die Größe des Objekts mit einem rechteckigen Begrenzungsrahmen. Amazon SageMaker AI Object Detection verwendet den [Single Shot Multibox Detector (SSD)](https://arxiv.org/pdf/1512.02325.pdf) -Algorithmus, der ein für Klassifizierungsaufgaben vortrainiertes Convolutional Neural Network (CNN) als Basisnetzwerk verwendet. SSD verwendet die Ausgabe von intermediären Ebenen als Funktionen zur Erkennung. 

Verschiedene, CNNs wie [VGG](https://arxiv.org/pdf/1409.1556.pdf), [ResNet](https://arxiv.org/pdf/1603.05027.pdf)haben bei der Bildklassifizierung eine hervorragende Leistung erzielt. Die Objekterkennung in Amazon SageMaker AI unterstützt sowohl VGG-16 als auch ResNet -50 als Basisnetzwerk für SSD. Der Algorithmus kann im vollständigen Trainingsmodus oder im Transferlern-Modus trainiert werden. Im vollständigen Trainingsmodus wird das Basisnetzwerk mit zufälligen Gewichtungen initialisiert und anschließend mit Benutzerdaten trainiert. Im Transferlernmodus werden die Gewichtungen des Basisnetzwerks aus den vortrainierten Modellen geladen.

Der Objekterkennungsalgorithmus verwendet während des Betriebs intern Standard-Operationen zur Datenaugmentierung, wie z. B. Flip, Rescale und Jitter, um Overfitting-Probleme zu vermeiden.

# Objekterkennungshyperparameter
<a name="object-detection-api-config"></a>

In der [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)-Anforderung geben Sie den Trainingsalgorithmus an, den Sie verwenden möchten. Sie können auch algorithmusspezifische Hyperparameter angeben, die zur Unterstützung der Schätzung der Parameter des Modells aus einem Trainingsdatensatz verwendet werden. In der folgenden Tabelle sind die Hyperparameter aufgeführt, die von Amazon SageMaker AI für das Training des Objekterkennungsalgorithmus bereitgestellt werden. Weitere Informationen zur Funktionsweise der Objekterkennung finden Sie unter [So funktioniert die Objekterkennung](algo-object-detection-tech-notes.md).


| Name des Parameters | Description | 
| --- | --- | 
| num\$1classes |  die Anzahl der Ausgabeklassen. Dieser Parameter definiert die Dimensionen der Netzwerkausgabe und ist in der Regel auf die Anzahl der Klassen im Datensatz festgelegt. **Erforderlich** Gültige Werte: positive Ganzzahl  | 
| num\$1training\$1samples |  Die Anzahl der Trainingsbeispiele im Eingabedatensatz.  Wenn es keine Übereinstimmung zwischen diesem Wert und der Anzahl der Beispiele im Trainingsdatensatz gibt, dann ist das Verhalten des `lr_scheduler_step`-Parameters nicht definiert und die verteilte Trainingsgenauigkeit kann beeinträchtigt sein.  **Erforderlich** Gültige Werte: positive Ganzzahl  | 
| base\$1network |  Die Basisnetzwerkarchitektur, die verwendet werden soll. **Optional** Gültige Werte: "vgg-16" oder "resnet-50" Standardwert: "vgg-16"  | 
| early\$1stopping |  Mit `True` verwenden Sie die Logik zum frühzeitigen Beenden während des Trainings. Mit `False` wird die Logik nicht verwendet. **Optional** Gültige Werte: `True` oder `False`. Standardwert: `False`  | 
| early\$1stopping\$1min\$1epochs |  Die Mindestanzahl der Epochen, die ausgeführt werden müssen, bevor die Logik zum frühzeitigen Beenden aufgerufen werden kann. Sie wird nur verwendet, wenn `early_stopping` = `True`. **Optional** Gültige Werte: positive Ganzzahl Standardwert: 10  | 
| early\$1stopping\$1patience |  Die Anzahl der abzuwartenden Epochen, bevor das Training endet, wenn keine Verbesserung, wie vom `early_stopping_tolerance`-Hyperparameter definiert, in der entsprechenden Metrik erzielt wird. Sie wird nur verwendet, wenn `early_stopping` = `True`. **Optional** Gültige Werte: positive Ganzzahl Standardwert: 5  | 
| early\$1stopping\$1tolerance |  Der Toleranzwert, der für die relative Verbesserung in `validation:mAP`, die durchschnittliche Präzision (Mean Average Precision, mAP), überschritten werden muss, um ein frühzeitiges Beenden zu vermeiden. Wenn das Verhältnis der Änderung in der mAP dividiert durch die vorherige beste mAP kleiner als der festgelegte `early_stopping_tolerance`-Wert ist, betrachtet der Prozess zum frühzeitigen Beenden die Verbesserung als null. Sie wird nur verwendet, wenn `early_stopping` = `True`. **Optional** Gültige Werte: 0 ≤ Float ≤ 1 Standardwert: 0.0  | 
| image\$1shape |  Die Bildgröße für Eingabebilder. Wir skalieren das Eingangsbild auf ein quadratisches Bild mit dieser Größe neu. Wir empfehlen die Verwendung von 300 und 512, um eine bessere Leistung zu erzielen. **Optional** Gültige Werte: positive Ganzzahl ≥300 Standard: 300  | 
| epochs |  Die Anzahl der Trainingsepochen.  **Optional** Gültige Werte: positive Ganzzahl Standard: 30  | 
| freeze\$1layer\$1pattern |  Der reguläre Ausdruck (Regex) für einfrierende Layer im Basisnetzwerk. Beispiel: Wenn wir `freeze_layer_pattern` = `"^(conv1_\|conv2_).*"` festlegen, werden alle Layer mit einem Namen, der `"conv1_"` oder `"conv2_"` enthält, eingefroren. Dies bedeutet, dass die Gewichtungen für diese Layer während des Trainings nicht aktualisiert werden. Die Layer-Namen sind in den Netzwerksymboldateien [vgg16-symbol.json](http://data.mxnet.io/models/imagenet/vgg/vgg16-symbol.json ) und [resnet-50-symbol.json](http://data.mxnet.io/models/imagenet/resnet/50-layers/resnet-50-symbol.json) enthalten. Das Einfrieren eines Layers bedeutet, dass seine Gewichtungen nicht geändert werden können. Dies kann dazu führen, dass die Trainingszeit erheblich sinkt, allerdings bei leichten Einbußen bei der Genauigkeit. Diese Technik wird häufig beim Transferlernen verwendet, wobei die unteren Layers im Basisnetzwerk nicht neu trainiert werden müssen. **Optional** Gültige Werte: Zeichenfolge Standard: Keine Layer eingefroren.  | 
| kv\$1store |  Der Synchronisierungsmodus der Gewichtungsaktualisierungen, der für das verteilte Training verwendet wird. Die Gewichtungen können entweder synchron oder asynchron über mehrere Maschinen hinweg aktualisiert werden. Synchrone Aktualisierungen bieten in der Regel eine bessere Genauigkeit als asynchrone Aktualisierungen, können aber langsamer sein. Einzelheiten finden Sie im MXNet Tutorial [Distributed Training](https://mxnet.apache.org/api/faq/distributed_training).  Dieser Parameter gilt nicht für das Einzel-Maschinen-Training.  **Optional** Gültige Werte: `'dist_sync'` oder `'dist_async'`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/object-detection-api-config.html) Standardeinstellung: –  | 
| label\$1width |  Die Bezeichnungsbreite des Force Padding, die zum Synchronisieren der Trainings- und Validierungsdaten verwendet werden soll. Beispiel: Wenn ein Bild in den Daten maximal 10 Objekte enthält und die Anmerkung der einzelnen Objekte mit 5 Zahlen angegeben wird, [class\$1id, left, top, width, height], dann sollte `label_width` nicht kleiner als (10\$15\$1Header-Informationslänge) sein. Die Header-Informationslänge beträgt in der Regel 2. Wir empfehlen die Verwendung einer etwas größeren `label_width` für das Training, z. B. 60 für dieses Beispiel. **Optional** Gültige Werte: Positive Ganzzahl, die groß genug ist, um die größte Anmerkungsinformationslänge in den Daten aufzunehmen. Standard: 350  | 
| learning\$1rate |  Die anfängliche Lernrate. **Optional** Gültige Werte: Gleitkommazahl. in (0, 1] Standard: 0.001  | 
| lr\$1scheduler\$1factor |  Das Verhältnis zur Reduzierung der Lernrate. Verwendet in Verbindung mit dem Parameter `lr_scheduler_step`, der mit `lr_new` = `lr_old` \$1 `lr_scheduler_factor` definiert wird. **Optional** Gültige Werte: Gleitkommazahl. in (0, 1) Standard: 0.1  | 
| lr\$1scheduler\$1step |  Die Epochen für das Reduzieren der Lernrate. Die Lernrate wird um `lr_scheduler_factor` in Epochen reduziert, die in einer durch Komma getrennten Zeichenfolge aufgeführt werden: "epoch1, epoch2, ...". Wenn beispielsweise der Wert auf "10, 20" und der `lr_scheduler_factor` auf 1/2 festgelegt ist, wird die Lernrate nach der 10. Epoche halbiert und nach der 20. Epoche nochmals halbiert. **Optional** Gültige Werte: Zeichenfolge Standard: leere Zeichenfolge  | 
| mini\$1batch\$1size |  Die Batch-Größe für das Training. In einer Multi-GPU-Umgebung auf einer einzelnen Maschine verarbeitet jede GPU `mini_batch_size`/`num_gpu`-Trainingsbeispiele. Für Trainings auf mehreren Maschinen im `dist_sync`-Modus ist die tatsächliche Stapelgröße `mini_batch_size` \$1 der Anzahl der Maschinen. Eine große `mini_batch_size` beschleunigt in der Regel das Training, kann jedoch zu Speicherplatzproblemen führen. Die Speichernutzung steht im Zusammenhang mit der `mini_batch_size`-, – `image_shape`und `base_network`-Architektur. Beispiel: Auf einer p3.2xlarge-Instance beträgt die größte `mini_batch_size`, ohne dass ein Fehler wegen fehlendem Speicherplatz auftritt, 32, wobei base\$1network auf "resnet-50" und `image_shape` auf 300 festgelegt ist. Mit derselben Instance können Sie 64 als `mini_batch_size` mit dem Basisnetzwerk `vgg-16` und einem `image_shape`-Wert von 300 verwenden. **Optional** Gültige Werte: positive Ganzzahl Standard: 32  | 
| momentum |  Der Impulsfaktor für `sgd`. Wird für andere Optimierer ignoriert. **Optional** Gültige Werte: Gleitkommazahl. in (0, 1] Standard: 0.9  | 
| nms\$1threshold |  Der nicht maximale Unterdrückungsgrenzwert. **Optional** Gültige Werte: Gleitkommazahl. in (0, 1] Standard: 0.45  | 
| optimizer |  Die Optimierer-Typen. Einzelheiten zu Optimizer-Werten finden Sie unter [MXNetAPI](https://mxnet.apache.org/api/python/docs/api/). **Optional** Gültige Werte: ['sgd', 'adam', 'rmsprop', 'adadelta'] Standard: "sgd"  | 
| overlap\$1threshold |  Die Schwellenwert für die Auswertungsüberlappung. **Optional** Gültige Werte: Gleitkommazahl. in (0, 1] Standard: 0.5  | 
| use\$1pretrained\$1model |  Gibt an, ob ein vortrainiertes Modell für das Training verwendet werden soll. Wenn dieser Wert auf 1 festgelegt ist, wird das vorgeschulte Modell mit der entsprechenden Architektur geladen und für das Training verwendet. Andernfalls wird das Netzwerk von Grund auf neu trainiert. **Optional** Gültige Werte: 0 oder 1 Standard: 1  | 
| weight\$1decay |  Der Weight-Decay-Koeffizient für `sgd` und `rmsprop`. Wird für andere Optimierer ignoriert. **Optional** Gültige Werte: Gleitkommazahl. in (0, 1) Standard: 0.0005  | 

# Optimieren eines Objekterkennungsmodells
<a name="object-detection-tuning"></a>

Die *automatische Modelloptimierung*, auch bekannt als Hyperparameteroptimierung, sucht die beste Version eines Modells, indem viele Aufträge ausgeführt werden, die einen Bereich von Hyperparametern in Ihrem Datensatz testen. Sie wählen die optimierbaren Hyperparameter, eine Reihe von Werten für jeden Parameter und eine objektive Metrik aus. Sie wählen die objektive Metrik aus den Metriken aus, die der Algorithmus berechnet. Die automatische Modelloptimierung durchsucht die ausgewählten Hyperparameter nach der Kombination von Werten, die das Modell ergeben, das die objektive Metrik optimiert.

Mehr Informationen über die Modelloptimierung finden Sie unter [Automatische Modelloptimierung mit KI SageMaker](automatic-model-tuning.md).

## Vom Objekterkennungsalgorithmus berechnete Metriken
<a name="object-detection-metrics"></a>

Der Objekterkennungsalgorithmus meldet eine einzelne Metrik während des Trainings: `validation:mAP`. Wählen Sie beim Optimieren eines Modells diese Metrik als objektive Metrik aus.


| Metrikname | Description | Optimierungsrichtung | 
| --- | --- | --- | 
| validation:mAP |  Mittlere durchschnittliche Präzision (Mean Average Precision, mAP), die anhand des Validierungsdatensatzes berechnet wird.  |  Maximieren  | 



## Optimierbare Objekterkennungshyperparameter
<a name="object-detection-tunable-hyperparameters"></a>

Optimieren Sie das Amazon SageMaker AI-Objekterkennungsmodell mit den folgenden Hyperparametern. Die Hyperparameter mit den größten Auswirkungen auf objektive Objekterkennungsmetrik sind: `mini_batch_size`, `learning_rate` und `optimizer`.


| Name des Parameters | Parametertyp | Empfohlene Bereiche | 
| --- | --- | --- | 
| learning\$1rate |  ContinuousParameterRange  |  MinValue: 1e-6,: 0,5 MaxValue  | 
| mini\$1batch\$1size |  IntegerParameterRanges  |  MinValue: 8, MaxValue: 64  | 
| momentum |  ContinuousParameterRange  |  MinValue: 0,0, MaxValue: 0,99  | 
| optimizer |  CategoricalParameterRanges  |  ['sgd', 'adam', 'rmsprop', 'adadelta']  | 
| weight\$1decay |  ContinuousParameterRange  |  MinValue: 0,0, MaxValue: 0,99  | 

# Anforderungs- und Antwortformate für die Objekterkennung
<a name="object-detection-in-formats"></a>

Auf der folgenden Seite werden die Formate für Inferenzanfragen und Antworten für das Amazon SageMaker AI Object Detection — MXNet Modell beschrieben.

## Anforderungsformat
<a name="object-detection-json"></a>

Führen Sie die Abfrage eines trainierten Modells über dessen Endpunkt aus. Der Endpunkt benötigt JPG- oder PNG-Bildformate mit den Inhaltstypen `image/jpeg` und `image/png`.

## Antwortformate
<a name="object-detection-recordio"></a>

Die Antwort ist der Klassenindex mit einem Zuverlässigkeitswert und Koordinaten des Begrenzungsrahmens für alle Objekte innerhalb des Bildes, das im JSON-Format codiert ist. Nachfolgend finden Sie ein Beispiel für eine .json-Antwortdatei:

```
{"prediction":[
  [4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],
  [0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475],
  [4.0, 0.32643985450267792, 0.3677481412887573, 0.034883320331573486, 0.6318609714508057, 0.5967587828636169],
  [8.0, 0.22552496790885925, 0.6152569651603699, 0.5722782611846924, 0.882301390171051, 0.8985623121261597],
  [3.0, 0.42260299175977707, 0.019305512309074402, 0.08386176824569702, 0.39093565940856934, 0.9574796557426453]
]}
```

Jede Zeile in dieser .json-Datei enthält ein Array, das ein erkanntes Objekt darstellt. Jedes dieser Objekt-Arrays besteht aus einer Liste mit sechs Zahlen. Die erste Zahl ist die vorhergesagte Klassenbezeichnung. Die zweite Zahl ist der zugehörige Zuverlässigkeitswert für die Erkennung. Die letzten vier Zahlen geben die Koordinaten des Begrenzungsrahmens [xmin, ymin, ymax, xmax,] an. Diese Ausgabeindizes für die Begrenzungsrahmenecke werden durch die gesamte Bildgröße normalisiert. Beachten Sie, dass diese Codierung von der vom .json-Eingabeformat verwendeten Codierung abweicht. Beispiel: Im ersten Eintrag des Erkennungsergebnisses ist 0,3088374733924866 die linke Koordinate (x-Koordinate der oberen linken Ecke) des Begrenzungsrahmens als Verhältnis der gesamten Bildbreite. 0,07030484080314636 ist die obere Koordinate (y-Koordinate der oberen linken Ecke) des Begrenzungsrahmens als Verhältnis der gesamten Bildhöhe. 0,7110607028007507 ist die rechte Koordinate (x-Koordinate der unteren rechten Ecke) des Begrenzungsrahmens als Verhältnis der gesamten Breite des Bildes und 0,9345266819000244 ist die untere Koordinate (y-Koordinate der unteren rechten Ecke) des Begrenzungsrahmens als Verhältnis der gesamten Bildhöhe. 

Um unzuverlässige Erkennungsergebnisse zu vermeiden, können Sie die Erkennungsergebnisse mit niedrigen Zuverlässigkeitswerten herausfiltern. Im [Beispiel-Notebook zur Objekterkennung](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/object_detection_birds/object_detection_birds.ipynb) finden Sie Beispiele für Skripte, die einen Schwellenwert verwenden, um Erkennungen mit geringer Zuverlässigkeit zu entfernen und Begrenzungsrahmen auf den Originalbildern einzuzeichnen.

Für die Stapeltransformation liegt die Antwort im JSON-Format vor, wobei das Format identisch mit dem oben beschriebenen JSON-Format identisch ist. Die Erkennungsergebnisse jedes Bilds werden als JSON-Datei dargestellt. Beispiel:

```
{"prediction": [[label_id, confidence_score, xmin, ymin, xmax, ymax], [label_id, confidence_score, xmin, ymin, xmax, ymax]]}
```

Weitere Informationen zu Trainings und Inferenz finden Sie unter [Beispiel-Notebooks für die Objekterkennung](object-detection.md#object-detection-sample-notebooks).

## AUSGABE: JSON-Antwortformat
<a name="object-detection-output-json"></a>

Akzeptiert: application/json;annotation=1

```
{
   "image_size": [
      {
         "width": 500,
         "height": 400,
         "depth": 3
      }
   ],
   "annotations": [
      {
         "class_id": 0,
         "score": 0.943,
         "left": 111,
         "top": 134,
         "width": 61,
         "height": 128
      },
      {
         "class_id": 0,
         "score": 0.0013,
         "left": 161,
         "top": 250,
         "width": 79,
         "height": 143
      },
      {
         "class_id": 1,
         "score": 0.0133,
         "left": 101,
         "top": 185,
         "width": 42,
         "height": 130
      }
   ]
}
```