

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan file manifes untuk mengimpor gambar
<a name="md-create-dataset-ground-truth"></a>

Anda dapat membuat kumpulan data menggunakan file manifes format Amazon SageMaker AI Ground Truth. Anda dapat menggunakan file manifes dari pekerjaan Amazon SageMaker AI Ground Truth. Jika gambar dan label Anda tidak dalam format file manifes SageMaker AI Ground Truth, Anda dapat membuat file manifes format SageMaker AI dan menggunakannya untuk mengimpor gambar berlabel. 

`CreateDataset`Operasi diperbarui untuk memungkinkan Anda menentukan tag secara opsional saat membuat kumpulan data baru. Tag adalah pasangan nilai kunci yang dapat Anda gunakan untuk mengkategorikan dan mengelola sumber daya Anda. 

**Topics**
+ [Membuat kumpulan data dengan file manifes SageMaker AI Ground Truth (Console)](#md-create-dataset-ground-truth-console)
+ [Membuat kumpulan data dengan file manifes SageMaker AI Ground Truth (SDK)](#md-create-dataset-ground-truth-sdk)
+ [Buat permintaan dataset](#create-dataset-ground-truth-request)
+ [Memberi label gambar dengan pekerjaan Amazon SageMaker AI Ground Truth](md-create-dataset-ground-truth-job.md)
+ [Membuat file manifes](md-create-manifest-file.md)
+ [Mengimpor label tingkat gambar dalam file manifes](md-create-manifest-file-classification.md)
+ [Lokalisasi objek dalam file manifes](md-create-manifest-file-object-detection.md)
+ [Aturan validasi untuk file manifes](md-create-manifest-file-validation-rules.md)
+ [Mengonversi format dataset lain ke file manifes](md-converting-to-sm-format.md)

## Membuat kumpulan data dengan file manifes SageMaker AI Ground Truth (Console)
<a name="md-create-dataset-ground-truth-console"></a>

Prosedur berikut menunjukkan cara membuat kumpulan data dengan menggunakan file manifes format SageMaker AI Ground Truth. 

1. Buat file manifes untuk kumpulan data pelatihan Anda dengan melakukan salah satu hal berikut:
   + Buat file manifes dengan SageMaker AI GroundTruth Job dengan mengikuti petunjuk di[Memberi label gambar dengan pekerjaan Amazon SageMaker AI Ground Truth](md-create-dataset-ground-truth-job.md). 
   + Buat file manifes Anda sendiri dengan mengikuti petunjuk di[Membuat file manifes](md-create-manifest-file.md). 

   Jika Anda ingin membuat kumpulan data pengujian, ulangi langkah 1 untuk membuat kumpulan data pengujian.

1. Buka konsol Amazon Rekognition di. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Pilih **Gunakan Label Kustom**.

1. Pilih **Mulai**. 

1. Di panel navigasi kiri, pilih **Proyek**.

1. Di halaman **Proyek**, pilih proyek yang ingin Anda tambahkan dataset. Halaman detail untuk proyek Anda ditampilkan.

1. Pilih **Buat kumpulan data**. Halaman **Buat dataset** ditampilkan.

1. Dalam **konfigurasi Mulai**, pilih **Mulai dengan satu set data** atau **Mulai dengan kumpulan data pelatihan**. Untuk membuat model berkualitas lebih tinggi, kami sarankan memulai dengan kumpulan data pelatihan dan pengujian terpisah.

------
#### [ Single dataset ]

   1. Di bagian **Detail kumpulan data Pelatihan**, pilih **Impor gambar berlabel SageMaker Ground Truth**.

   1. Di **lokasi file.manifest masukkan lokasi file** manifes yang Anda buat di langkah 1.

   1. Pilih **Buat Dataset**. Halaman kumpulan data untuk proyek Anda terbuka.

------
#### [ Separate training and test datasets ]

   1. Di bagian **Detail kumpulan data Pelatihan**, pilih **Impor gambar berlabel SageMaker Ground Truth**.

   1. Di lokasi **file.manifest masukkan lokasi file manifes** kumpulan data pelatihan yang Anda buat di langkah 1.

   1. Di bagian **Test dataset details**, pilih **Impor gambar berlabel SageMaker Ground Truth**.
**catatan**  
Kumpulan data pelatihan dan pengujian Anda dapat memiliki sumber gambar yang berbeda.

   1. Di lokasi **file.manifest masukkan lokasi file manifes** kumpulan data pengujian yang Anda buat di langkah 1.

   1. Pilih **Buat Kumpulan Data**. Halaman kumpulan data untuk proyek Anda terbuka.

------

1. Jika Anda perlu menambahkan atau mengubah label, lakukan[Pelabelan gambar](md-labeling-images.md).

1. Ikuti langkah-langkah [Melatih model (Konsol)](training-model.md#tm-console) untuk melatih model Anda.

## Membuat kumpulan data dengan file manifes SageMaker AI Ground Truth (SDK)
<a name="md-create-dataset-ground-truth-sdk"></a>

Prosedur berikut menunjukkan cara membuat kumpulan data pelatihan atau pengujian dari file manifes menggunakan API. [CreateDataset](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateDataset)

Anda dapat menggunakan file manifes yang ada, seperti output dari [pekerjaan SageMaker AI Ground Truth](md-create-dataset-ground-truth-job.md), atau membuat [file manifes](md-create-manifest-file.md) Anda sendiri. 

1. Jika Anda belum melakukannya, instal dan konfigurasikan AWS CLI dan AWS SDKs. Untuk informasi selengkapnya, lihat [Langkah 4: Mengatur AWS CLI and AWS SDK](su-awscli-sdk.md).

1. Buat file manifes untuk kumpulan data pelatihan Anda dengan melakukan salah satu hal berikut:
   + Buat file manifes dengan SageMaker AI GroundTruth Job dengan mengikuti petunjuk di[Memberi label gambar dengan pekerjaan Amazon SageMaker AI Ground Truth](md-create-dataset-ground-truth-job.md). 
   + Buat file manifes Anda sendiri dengan mengikuti petunjuk di[Membuat file manifes](md-create-manifest-file.md). 

   Jika Anda ingin membuat kumpulan data pengujian, ulangi langkah 2 untuk membuat kumpulan data pengujian.

1. Gunakan kode contoh berikut untuk membuat kumpulan data pelatihan dan pengujian.

------
#### [ AWS CLI ]

   Gunakan kode berikut untuk membuat kumpulan data. Ganti yang berikut ini:
   + `project_arn`— ARN dari proyek yang ingin Anda tambahkan dataset pengujian.
   + `type`— jenis dataset yang ingin Anda buat (TRAIN atau TEST)
   + `bucket`— bucket yang berisi file manifes untuk dataset.
   + `manifest_file`— jalur dan nama file dari file manifes.

   ```
   aws rekognition create-dataset --project-arn {{project_arn}} \
     --dataset-type {{type}} \
     --dataset-source '{ "GroundTruthManifest": { "S3Object": { "Bucket": "{{bucket}}", "Name": "{{manifest_file}}" } } }' \
     --profile custom-labels-access
     --tags '{"key1": "value1", "key2": "value2"}'
   ```

------
#### [ Python ]

   Gunakan nilai berikut untuk membuat kumpulan data. Sediakan parameter baris perintah berikut:
   + `project_arn`— ARN dari proyek yang ingin Anda tambahkan dataset pengujian.
   + `dataset_type`— jenis dataset yang ingin Anda buat (`train`atau`test`).
   + `bucket`— bucket yang berisi file manifes untuk dataset.
   + `manifest_file`— jalur dan nama file dari file manifes.

   ```
   #Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-custom-labels-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   
   import argparse
   import logging
   import time
   import json
   import boto3
   from botocore.exceptions import ClientError
   
   logger = logging.getLogger(__name__)
   
   def create_dataset(rek_client, project_arn, dataset_type, bucket, manifest_file):
       """
       Creates an Amazon Rekognition Custom Labels dataset.
       :param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
       :param project_arn: The ARN of the project in which you want to create a dataset.
       :param dataset_type: The type of the dataset that you want to create (train or test).
       :param bucket: The S3 bucket that contains the manifest file.
       :param manifest_file: The path and filename of the manifest file.
       """
   
       try:
           #Create the project
           logger.info("Creating %s dataset for project %s",dataset_type, project_arn)
   
           dataset_type = dataset_type.upper()
   
           dataset_source = json.loads(
               '{ "GroundTruthManifest": { "S3Object": { "Bucket": "'
               + bucket
               + '", "Name": "'
               + manifest_file
               + '" } } }'
           )
   
           response = rek_client.create_dataset(
               ProjectArn=project_arn, DatasetType=dataset_type, DatasetSource=dataset_source
           )
   
           dataset_arn=response['DatasetArn']
   
           logger.info("dataset ARN: %s",dataset_arn)
   
           finished=False
           while finished is False:
   
               dataset=rek_client.describe_dataset(DatasetArn=dataset_arn)
   
               status=dataset['DatasetDescription']['Status']
               
               if status == "CREATE_IN_PROGRESS":
                   logger.info("Creating dataset: %s ",dataset_arn)
                   time.sleep(5)
                   continue
   
               if status == "CREATE_COMPLETE":
                   logger.info("Dataset created: %s", dataset_arn)
                   finished=True
                   continue
   
               if status == "CREATE_FAILED":
                   error_message = f"Dataset creation failed: {status} : {dataset_arn}"
                   logger.exception(error_message)
                   raise Exception (error_message)
                   
               error_message = f"Failed. Unexpected state for dataset creation: {status} : {dataset_arn}"
               logger.exception(error_message)
               raise Exception(error_message)
               
           return dataset_arn
      
       
       except ClientError as err:
           logger.exception("Couldn't create dataset: %s",err.response['Error']['Message'])
           raise
   
   def add_arguments(parser):
       """
       Adds command line arguments to the parser.
       :param parser: The command line parser.
       """
   
       parser.add_argument(
           "project_arn", help="The ARN of the project in which you want to create the dataset."
       )
   
       parser.add_argument(
           "dataset_type", help="The type of the dataset that you want to create (train or test)."
       )
   
       parser.add_argument(
           "bucket", help="The S3 bucket that contains the manifest file."
       )
       
       parser.add_argument(
           "manifest_file", help="The path and filename of the manifest file."
       )
   
   
   def main():
   
       logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
   
       try:
   
           #Get command line arguments.
           parser = argparse.ArgumentParser(usage=argparse.SUPPRESS)
           add_arguments(parser)
           args = parser.parse_args()
   
           print(f"Creating {args.dataset_type} dataset for project {args.project_arn}")
   
           #Create the dataset.
           session = boto3.Session(profile_name='custom-labels-access')
           rekognition_client = session.client("rekognition")
   
           dataset_arn=create_dataset(rekognition_client, 
               args.project_arn,
               args.dataset_type,
               args.bucket,
               args.manifest_file)
   
           print(f"Finished creating dataset: {dataset_arn}")
   
   
       except ClientError as err:
           logger.exception("Problem creating dataset: %s", err)
           print(f"Problem creating dataset: {err}")
   
   
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ Java V2 ]

   Gunakan nilai berikut untuk membuat kumpulan data. Sediakan parameter baris perintah berikut:
   + `project_arn`— ARN dari proyek yang ingin Anda tambahkan dataset pengujian.
   + `dataset_type`— jenis dataset yang ingin Anda buat (`train`atau`test`).
   + `bucket`— bucket yang berisi file manifes untuk dataset.
   + `manifest_file`— jalur dan nama file dari file manifes.

   ```
   /*
      Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
      SPDX-License-Identifier: Apache-2.0
   */
   
   package com.example.rekognition;
   
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.CreateDatasetRequest;
   import software.amazon.awssdk.services.rekognition.model.CreateDatasetResponse;
   import software.amazon.awssdk.services.rekognition.model.DatasetDescription;
   import software.amazon.awssdk.services.rekognition.model.DatasetSource;
   import software.amazon.awssdk.services.rekognition.model.DatasetStatus;
   import software.amazon.awssdk.services.rekognition.model.DatasetType;
   import software.amazon.awssdk.services.rekognition.model.DescribeDatasetRequest;
   import software.amazon.awssdk.services.rekognition.model.DescribeDatasetResponse;
   import software.amazon.awssdk.services.rekognition.model.GroundTruthManifest;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import software.amazon.awssdk.services.rekognition.model.S3Object;
   
   import java.util.logging.Level;
   import java.util.logging.Logger;
   
   public class CreateDatasetManifestFiles {
   
       public static final Logger logger = Logger.getLogger(CreateDatasetManifestFiles.class.getName());
   
       public static String createMyDataset(RekognitionClient rekClient, String projectArn, String datasetType,
               String bucket, String name) throws Exception, RekognitionException {
   
           try {
   
               logger.log(Level.INFO, "Creating {0} dataset for project : {1} from s3://{2}/{3} ",
                       new Object[] { datasetType, projectArn, bucket, name });
   
               DatasetType requestDatasetType = null;
   
               switch (datasetType) {
               case "train":
                   requestDatasetType = DatasetType.TRAIN;
                   break;
               case "test":
                   requestDatasetType = DatasetType.TEST;
                   break;
               default:
                   logger.log(Level.SEVERE, "Could not create dataset. Unrecognized dataset type: {0}", datasetType);
                   throw new Exception("Could not create dataset. Unrecognized dataset type: " + datasetType);
   
               }
   
               GroundTruthManifest groundTruthManifest = GroundTruthManifest.builder()
                       .s3Object(S3Object.builder().bucket(bucket).name(name).build()).build();
   
               DatasetSource datasetSource = DatasetSource.builder().groundTruthManifest(groundTruthManifest).build();
   
               CreateDatasetRequest createDatasetRequest = CreateDatasetRequest.builder().projectArn(projectArn)
                       .datasetType(requestDatasetType).datasetSource(datasetSource).build();
   
               CreateDatasetResponse response = rekClient.createDataset(createDatasetRequest);
   
               boolean created = false;
   
               do {
   
                   DescribeDatasetRequest describeDatasetRequest = DescribeDatasetRequest.builder()
                           .datasetArn(response.datasetArn()).build();
                   DescribeDatasetResponse describeDatasetResponse = rekClient.describeDataset(describeDatasetRequest);
   
                   DatasetDescription datasetDescription = describeDatasetResponse.datasetDescription();
   
                   DatasetStatus status = datasetDescription.status();
   
                   logger.log(Level.INFO, "Creating dataset ARN: {0} ", response.datasetArn());
   
                   switch (status) {
   
                   case CREATE_COMPLETE:
                       logger.log(Level.INFO, "Dataset created");
                       created = true;
                       break;
   
                   case CREATE_IN_PROGRESS:
                       Thread.sleep(5000);
                       break;
   
                   case CREATE_FAILED:
                       String error = "Dataset creation failed: " + datasetDescription.statusAsString() + " "
                               + datasetDescription.statusMessage() + " " + response.datasetArn();
                       logger.log(Level.SEVERE, error);
                       throw new Exception(error);
   
                   default:
                       String unexpectedError = "Unexpected creation state: " + datasetDescription.statusAsString() + " "
                               + datasetDescription.statusMessage() + " " + response.datasetArn();
                       logger.log(Level.SEVERE, unexpectedError);
                       throw new Exception(unexpectedError);
                   }
   
               } while (created == false);
   
               return response.datasetArn();
   
           } catch (RekognitionException e) {
               logger.log(Level.SEVERE, "Could not create dataset: {0}", e.getMessage());
               throw e;
           }
   
       }
   
       public static void main(String[] args) {
   
           String datasetType = null;
           String bucket = null;
           String name = null;
           String projectArn = null;
           String datasetArn = null;
   
           final String USAGE = "\n" + "Usage: " + "<project_arn> <dataset_type> <dataset_arn>\n\n" + "Where:\n"
                   + "   project_arn - the ARN of the project that you want to add copy the datast to.\n\n"
                   + "   dataset_type - the type of the dataset that you want to create (train or test).\n\n"
                   + "   bucket - the S3 bucket that contains the manifest file.\n\n"
                   + "   name - the location and name of the manifest file within the bucket.\n\n";
   
           if (args.length != 4) {
               System.out.println(USAGE);
               System.exit(1);
           }
   
           projectArn = args[0];
           datasetType = args[1];
           bucket = args[2];
           name = args[3];
   
           try {
   
               // Get the Rekognition client
               RekognitionClient rekClient = RekognitionClient.builder()
                   .credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access"))
                   .region(Region.US_WEST_2)
                   .build();
   
   
                // Create the dataset
               datasetArn = createMyDataset(rekClient, projectArn, datasetType, bucket, name);
   
               System.out.println(String.format("Created dataset: %s", datasetArn));
   
               rekClient.close();
   
           } catch (RekognitionException rekError) {
               logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage());
               System.exit(1);
           } catch (Exception rekError) {
               logger.log(Level.SEVERE, "Error: {0}", rekError.getMessage());
               System.exit(1);
           }
   
       }
   
   }
   ```

------

1. Jika Anda perlu menambahkan atau mengubah label, lihat[Mengelola Label (SDK)](md-labels.md#md-labels-sdk).

1. Ikuti langkah-langkah [Melatih model (SDK)](training-model.md#tm-sdk) untuk melatih model Anda.

## Buat permintaan dataset
<a name="create-dataset-ground-truth-request"></a>

 Berikut ini adalah foramt permintaan CreateDataset operasi: 

```
{
"DatasetSource": {
"DatasetArn": "string",
"GroundTruthManifest": {
"S3Object": {
"Bucket": "string",
"Name": "string",
"Version": "string"
}
}
},
"DatasetType": "string",
"ProjectArn": "string",
"Tags": {
"string": "string"
}
}
```