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
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.
Membuat kumpulan data dengan file manifes SageMaker AI Ground Truth (Console)
Prosedur berikut menunjukkan cara membuat kumpulan data dengan menggunakan file manifes format SageMaker AI Ground Truth.
-
Buat file manifes untuk kumpulan data pelatihan Anda dengan melakukan salah satu hal berikut:
Jika Anda ingin membuat kumpulan data pengujian, ulangi langkah 1 untuk membuat kumpulan data pengujian.
Buka konsol Amazon Rekognition di. https://console.aws.amazon.com/rekognition/
-
Pilih Gunakan Label Kustom.
-
Pilih Mulai.
-
Di panel navigasi kiri, pilih Proyek.
-
Di halaman Proyek, pilih proyek yang ingin Anda tambahkan dataset. Halaman detail untuk proyek Anda ditampilkan.
-
Pilih Buat kumpulan data. Halaman Create dataset ditampilkan.
-
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
-
-
Di bagian Detail kumpulan data Pelatihan, pilih Impor gambar berlabel SageMaker Ground Truth.
-
Di lokasi file.manifest masukkan lokasi file manifes yang Anda buat di langkah 1.
-
Pilih Buat Dataset. Halaman kumpulan data untuk proyek Anda terbuka.
- Separate training and test datasets
-
-
Di bagian Detail kumpulan data Pelatihan, pilih Impor gambar berlabel SageMaker Ground Truth.
-
Di lokasi file.manifest masukkan lokasi file manifes kumpulan data pelatihan yang Anda buat di langkah 1.
-
Di bagian Test dataset details, pilih Impor gambar berlabel SageMaker Ground Truth.
Kumpulan data pelatihan dan pengujian Anda dapat memiliki sumber gambar yang berbeda.
-
Di lokasi file.manifest masukkan lokasi file manifes kumpulan data pengujian yang Anda buat di langkah 1.
-
Pilih Buat Dataset. Halaman kumpulan data untuk proyek Anda terbuka.
-
Jika Anda perlu menambahkan atau mengubah label, lakukanPelabelan gambar.
-
Ikuti langkah-langkah Melatih model (Konsol) untuk melatih model Anda.
Membuat kumpulan data dengan file manifes SageMaker AI Ground Truth () SDK
Prosedur berikut menunjukkan cara membuat kumpulan data pelatihan atau pengujian dari file manifes dengan menggunakan file. CreateDatasetAPI
Anda dapat menggunakan file manifes yang ada, seperti output dari pekerjaan SageMaker AI Ground Truth, atau membuat file manifes Anda sendiri.
-
Jika Anda belum melakukannya, instal dan konfigurasikan AWS CLI dan AWS SDKs. Untuk informasi selengkapnya, lihat Langkah 4: Mengatur AWS CLI dan AWS SDKs.
-
Buat file manifes untuk kumpulan data pelatihan Anda dengan melakukan salah satu hal berikut:
Jika Anda ingin membuat kumpulan data pengujian, ulangi langkah 2 untuk membuat kumpulan data pengujian.
-
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
— proyek ARN yang ingin Anda tambahkan dataset pengujian.
-
type
— jenis dataset yang ingin Anda buat (TRAINatauTEST)
-
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
— proyek ARN yang ingin Anda tambahkan dataset pengujian.
-
dataset_type
— jenis dataset yang ingin Anda buat (train
atautest
).
-
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
— proyek ARN yang ingin Anda tambahkan dataset pengujian.
-
dataset_type
— jenis dataset yang ingin Anda buat (train
atautest
).
-
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);
}
}
}
-
Jika Anda perlu menambahkan atau mengubah label, lihatMengelola Label (SDK).
-
Ikuti langkah-langkah Melatih model (SDK) untuk melatih model Anda.
Buat permintaan dataset
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"
}
}