

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.

# Bildklassifizierung - MXNet
<a name="image-classification"></a>

Der SageMaker Amazon-Bildklassifizierungsalgorithmus ist ein überwachter Lernalgorithmus, der die Klassifizierung mehrerer Labels unterstützt. Ein Bild wird als Eingabe herangezogen und es werden eine oder mehrere Kennzeichnungen ausgegeben, die diesem Bild zugewiesen sind. Er verwendet ein neuronales Faltungsnetzwerk, das von Grund auf trainiert werden kann oder mittels Transfer Learning, wenn keine große Anzahl von Trainings-Images zur Verfügung steht. 

Das empfohlene Eingabeformat für die Amazon SageMaker AI-Bildklassifizierungsalgorithmen ist Apache MXNet [RecordIO](https://mxnet.apache.org/api/faq/recordio). Sie können jedoch auch unpräparierte Bilder im JPEG- oder PNG-Format verwenden. In [dieser Diskussion](https://mxnet.apache.org/api/architecture/note_data_loading) finden Sie einen umfassenden Überblick über die effiziente Datenaufbereitung und das Laden für Machine-Learning-Systeme. 

**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 Informationen zu Faltungsnetzwerken finden Sie unter: 
+ [Deep residual learning for image recognition](https://arxiv.org/abs/1512.03385) Kaiming He, et al., 2016 IEEE Conference on Computer Vision and Pattern Recognition
+ [ImageNet Bilddatenbank](http://www.image-net.org/)
+ [Bildklassifizierung mit Gluon-CV und MXNet](https://gluon-cv.mxnet.io/build/examples_classification/index.html)

**Topics**
+ [E/A-Schnittstelle für den Bildklassifikationsalgorithmus](#IC-inputoutput)
+ [EC2-Instance-Empfehlung für den Bildklassifikationsalgorithmus](#IC-instances)
+ [Beispiel-Notebooks für die Bildklassifizierung](#IC-sample-notebooks)
+ [So funktioniert Bildklassifizierung](IC-HowItWorks.md)
+ [Bildklassifizierungs-Hyperparameter](IC-Hyperparameter.md)
+ [Optimieren eines Bildklassifizierungsmodells](IC-tuning.md)

## E/A-Schnittstelle für den Bildklassifikationsalgorithmus
<a name="IC-inputoutput"></a>

Der SageMaker AI Image Classification-Algorithmus 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 unterstützt den Inhaltstyp RecordIO (`application/x-recordio`) 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 jeden Computer kopiert werden.

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

### Trainieren mit dem RecordIO-Format
<a name="IC-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. 

### Trainieren mit dem Bildformat
<a name="IC-image-training"></a>

Wenn Sie das Image-Format für Trainings verwenden, geben Sie `train`-, `validation`-, – `train_lst`und `validation_lst`-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 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 KI liest die Trainings- und Validierungsdaten getrennt von verschiedenen Kanälen, sodass Sie die Trainings- und Validierungsdaten in verschiedenen Ordnern speichern müssen.

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 Trainings-Imageer 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
<a name="IC-augmented-manifest-training"></a>

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 [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 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"}}
```

Die Reihenfolge `"AttributeNames"` der Eingabedateien spielt beim Training des ImageClassification Algorithmus eine Rolle. Er akzeptiert Daten, die in einer bestimmten Reihenfolge übergeben werden. Dabei kommt `image` zuerst, gefolgt von `label`. Die "AttributeNames" in diesem Beispiel werden also `"source-ref"` zuerst mit angegeben, gefolgt von`"class"`. Wenn Sie den ImageClassification Algorithmus mit Augmented Manifest verwenden, muss der Wert des `RecordWrapperType` Parameters sein`"RecordIO"`.

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://amzn-s3-demo-bucket/sample01/image1.jpg", "class": "[1, 0, 1]"}
{"image-ref": "s3://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/sample01/image1.jpg", "class": "[0, 2]"}
{"image-ref": "s3://amzn-s3-demo-bucket/sample02/image2.jpg", "class": "[2]"}
```

Das Multi-Hot-Format ist die Standardeinstellung, kann aber im Inhaltstyp mit dem folgenden `label-format` Parameter explizit festgelegt werden: `"application/x-recordio; label-format=multi-hot".` Das Klassen-ID-Format, das das Format ist, von dem ausgegeben wird GroundTruth, muss explizit festgelegt werden: `"application/x-recordio; label-format=class-id".`

Weitere Informationen zu erweiterten Manifestdateien finden Sie unter [Erweiterte Manifestdateien für Trainingsjobs](augmented-manifest.md).

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

Sie können das Training eines neuen Modells auch mit den Artefakten eines Modells beginnen, das Sie zuvor mit KI trainiert haben. SageMaker Inkrementelles Training spart Trainingszeit, wenn Sie ein neues Modell mit denselben oder ähnlichen Daten trainieren möchten. SageMaker KI-Bildklassifizierungsmodelle können nur mit einem anderen integrierten, in SageMaker KI trainierten Bildklassifizierungsmodell erstellt werden.

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 `num_layers`, `image_shape` 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.

### Inferenz mit dem Bildklassifizierungsalgorithmus
<a name="IC-inference"></a>

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](http://jsonlines.org/) 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 Bildklassifizierung, auf die in der Einführung verwiesen wurde.

## EC2-Instance-Empfehlung für den Bildklassifikationsalgorithmus
<a name="IC-instances"></a>

Für die Bildklassifizierung unterstützen wir P2-, P3-, G4dn- und G5-Instances. 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. Sowohl CPU-Instances (wie C4) als auch GPU-Instances (P2, P3, G4dn oder G5) können für Inferenzen verwendet werden.

## Beispiel-Notebooks für die Bildklassifizierung
<a name="IC-sample-notebooks"></a>

Ein Beispielnotizbuch, das den SageMaker KI-Algorithmus zur Bildklassifizierung verwendet, finden Sie unter [Erstellen und Registrieren eines MXNet Bildklassifizierungsmodells](https://github.com/aws-samples/amazon-sagemaker-pipelines-mxnet-image-classification/blob/main/image-classification-sagemaker-pipelines.ipynb) über Pipelines. SageMaker Anweisungen zum Erstellen und Zugreifen auf Jupyter-Notebook-Instanzen, mit denen Sie das Beispiel in SageMaker KI ausführen können, finden Sie unter. [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 Die Beispiel-Notebooks für die Bildklassifizierung 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.