Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Melatih model Label Kustom Rekognition Amazon
Anda dapat melatih model dengan menggunakan konsol Amazon Rekognition Custom Labels, atau dengan Amazon Rekognition Custom Labels API. Jika pelatihan model gagal, gunakan informasi Mendebug pelatihan model yang gagal untuk menemukan penyebab kegagalan.
Anda dikenakan biaya untuk jumlah waktu yang diperlukan untuk berhasil melatih model. Biasanya pelatihan membutuhkan waktu 30 menit hingga 24 jam untuk diselesaikan. Untuk informasi selengkapnya, lihat Jam pelatihan.
Versi baru model dibuat setiap kali model dilatih. Amazon Rekognition Custom Labels membuat nama untuk model yang merupakan kombinasi dari nama proyek dan stempel waktu ketika model dibuat.
Untuk melatih model Anda, Label Kustom Amazon Rekognition membuat salinan pelatihan sumber dan tes citra Anda. Secara default, gambar yang disalin dienkripsi saat istirahat dengan kunci yang dimiliki dan dikelola AWS. Anda juga dapat memilih untuk menggunakan sendiri AWS KMS key. Jika Anda menggunakan kunci KMS Anda sendiri, Anda memerlukan izin berikut pada kunci KMS.
km: CreateGrant
km: DescribeKey
Untuk informasi selengkapnya, lihat Konsep AWS Key Management Service. Citra sumber Anda tidak terpengaruh.
Anda dapat menggunakan enkripsi sisi server KMS (SSE-KMS) untuk mengenkripsi pelatihan dan menguji gambar di bucket Amazon S3 Anda, sebelum disalin oleh Label Kustom Rekognition Amazon. Untuk mengizinkan Label Kustom Amazon Rekognition mengakses gambar Anda, akun AWS Anda memerlukan izin berikut pada kunci KMS.
km: GenerateDataKey
kms:Decrypt
Untuk informasi selengkapnya, lihat Melindungi Data Menggunakan Enkripsi Sisi Server dengan kunci KMS yang Disimpan di AWS Key Management Service (SSE-KMS).
Setelah melatih model, Anda dapat mengevaluasi kinerjanya dan melakukan perbaikan. Untuk informasi selengkapnya, lihat Meningkatkan model Label Kustom Amazon Rekognition yang terlatih.
Untuk tugas model lainnya, seperti menandai model, lihatMengelola model Label Kustom Amazon Rekognition.
Melatih model (Konsol)
Anda dapat menggunakan konsol Amazon Rekognition Custom Labels untuk melatih model.
Pelatihan membutuhkan proyek dengan dataset pelatihan dan dataset pengujian. Jika project Anda tidak memiliki kumpulan data pengujian, konsol Amazon Rekognition Custom Labels akan membagi kumpulan data pelatihan selama pelatihan untuk membuatnya untuk project Anda. Gambar yang dipilih adalah pengambilan sampel yang representatif dan tidak digunakan dalam kumpulan data pelatihan. Sebaiknya pisahkan kumpulan data pelatihan Anda hanya jika Anda tidak memiliki kumpulan data pengujian alternatif yang dapat Anda gunakan. Memisahkan kumpulan data pelatihan mengurangi jumlah gambar yang tersedia untuk pelatihan.
Anda dikenakan biaya untuk jumlah waktu yang diperlukan untuk melatih model. Untuk informasi selengkapnya, lihat Jam pelatihan.
Untuk melatih model Anda (konsol)
Buka konsol Amazon Rekognition di https://console.aws.amazon.com/rekognition/.
Pilih Gunakan Label Kustom.
Di panel navigasi kiri, pilih Proyek.
Di halaman Proyek, pilih proyek yang berisi model yang ingin Anda latih.
Pada halaman Proyek, pilih Model kereta.
(Opsional) Jika Anda ingin menggunakan kunci enkripsi AWS KMS Anda sendiri, lakukan hal berikut:
Di Enkripsi data gambar pilih Sesuaikan pengaturan enkripsi (lanjutan).
Di encryption.aws_kms_key masukkan Nama Sumber Daya Amazon (ARN) kunci Anda, atau pilih kunci AWS KMS yang ada. Untuk membuat kunci baru, pilih Buat kunci AWS IMS.
(Opsional) jika Anda ingin menambahkan tag ke model Anda lakukan hal berikut:
Di bagian Tag, pilih Tambahkan tag baru.
Masukkan yang berikut ini:
Nama kunci di Key.
Nilai kunci dalam Nilai.
Untuk menambahkan lebih banyak tag, ulangi langkah 6a dan 6b.
(Opsional) Jika Anda ingin menghapus tag, pilih Hapus di samping tag yang ingin Anda hapus. Jika Anda menghapus tag yang disimpan sebelumnya, tag tersebut akan dihapus saat Anda menyimpan perubahan.
Pada halaman model Kereta, Pilih model Kereta. Nama Sumber Daya Amazon (ARN) untuk proyek Anda harus ada di kotak Pilih edit proyek. Jika tidak, masukkan ARN untuk proyek Anda.
Di Apakah Anda ingin melatih model Anda? kotak dialog, pilih Model kereta.
Di bagian Model pada halaman proyek, Anda dapat memeriksa status saat ini di Model Status
kolom, tempat pelatihan sedang berlangsung. Pelatihan model membutuhkan waktu beberapa saat untuk diselesaikan.
Setelah pelatihan selesai, pilih nama model. Pelatihan selesai ketika status model adalah TRAINING_COMPLETED. Jika pelatihan gagal, bacaMendebug pelatihan model yang gagal.
Langkah selanjutnya: Evaluasi model Anda. Untuk informasi selengkapnya, lihat Meningkatkan model Label Kustom Amazon Rekognition yang terlatih.
Melatih model (SDK)
Anda melatih model dengan menelepon CreateProjectVersion. Untuk melatih model, informasi berikut diperlukan:
Nama — Nama unik untuk versi model.
Proyek ARN — Nama Sumber Daya Amazon (ARN) dari proyek yang mengelola model.
Lokasi hasil pelatihan — Lokasi Amazon S3 tempat hasil ditempatkan. Anda dapat menggunakan lokasi yang sama dengan bucket Amazon S3 konsol, atau Anda dapat memilih lokasi yang berbeda. Sebaiknya pilih lokasi yang berbeda karena ini memungkinkan Anda menyetel izin dan menghindari potensi konflik penamaan dengan output pelatihan menggunakan konsol Label Kustom Rekognition Amazon.
Pelatihan menggunakan kumpulan data pelatihan dan pengujian yang terkait dengan proyek. Untuk informasi selengkapnya, lihat Mengelola set data.
Secara opsional, Anda dapat menentukan pelatihan dan menguji file manifes kumpulan data yang berada di luar proyek. Jika Anda membuka konsol setelah melatih model dengan file manifes eksternal, Label Kustom Rekognition Amazon akan membuat kumpulan data untuk Anda dengan menggunakan kumpulan file manifes terakhir yang digunakan untuk pelatihan. Anda tidak dapat lagi melatih versi model untuk proyek dengan menentukan file manifes eksternal. Untuk informasi lebih lanjut, lihat CreatePrjectVersion.
Tanggapan dari CreateProjectVersion
adalah ARN yang Anda gunakan untuk mengidentifikasi versi model dalam permintaan berikutnya. Anda juga dapat menggunakan ARN untuk mengamankan versi model. Untuk informasi selengkapnya, lihat Mengamankan proyek Label Kustom Amazon Rekognition.
Pelatihan versi model membutuhkan waktu beberapa saat untuk diselesaikan. Contoh Python dan Java dalam topik ini menggunakan pelayan untuk menunggu pelatihan selesai. Pelayan adalah metode utilitas yang melakukan polling untuk keadaan tertentu terjadi. Atau, Anda bisa mendapatkan status pelatihan saat ini dengan meneleponDescribeProjectVersions
. Pelatihan selesai ketika nilai Status
lapanganTRAINING_COMPLETED
. Setelah pelatihan selesai, Anda dapat mengevaluasi kualitas model dengan meninjau hasil evaluasi.
Melatih model (SDK)
Contoh berikut menunjukkan cara melatih model dengan menggunakan kumpulan data pelatihan dan pengujian yang terkait dengan proyek.
Untuk melatih model (SDK)
-
Jika Anda belum melakukannya, instal dan konfigurasikan AWS CLI dan AWS SDK. Untuk informasi selengkapnya, lihat Langkah 4: Siapkan AWS CLI and AWS SDKs.
Gunakan kode contoh berikut untuk melatih proyek.
- AWS CLI
-
Contoh berikut menciptakan model. Dataset pelatihan dibagi untuk membuat kumpulan data pengujian. Ganti yang berikut ini:
-
my_project_arn
dengan Nama Sumber Daya Amazon (ARN) proyek.
-
version_name
dengan nama versi unik yang Anda pilih.
-
output_bucket
dengan nama bucket Amazon S3 tempat Amazon Rekognition Custom Labels menyimpan hasil pelatihan.
-
output_folder
dengan nama folder tempat hasil pelatihan disimpan.
(parameter opsional) --kms-key-id
dengan pengenal untuk kunci master pelanggan AWS Key Management Service Anda.
aws rekognition create-project-version \
--project-arn project_arn
\
--version-name version_name
\
--output-config '{"S3Bucket":"output_bucket
", "S3KeyPrefix":"output_folder
"}' \
--profile custom-labels-access
- Python
-
Contoh berikut menciptakan model. Berikan argumen baris perintah berikut:
project_arn
— Nama Sumber Daya Amazon (ARN) dari proyek.
version_name
— Nama versi unik untuk model yang Anda pilih.
output_bucket
— nama ember Amazon S3 tempat Label Kustom Rekognition Amazon menyimpan hasil pelatihan.
output_folder
— nama folder tempat hasil pelatihan disimpan.
Secara opsional, berikan parameter baris perintah berikut untuk melampirkan tag ke model Anda:
#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 json
import boto3
from botocore.exceptions import ClientError
logger = logging.getLogger(__name__)
def train_model(rek_client, project_arn, version_name, output_bucket, output_folder, tag_key, tag_key_value):
"""
Trains an Amazon Rekognition Custom Labels model.
:param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
:param project_arn: The ARN of the project in which you want to train a model.
:param version_name: A version for the model.
:param output_bucket: The S3 bucket that hosts training output.
:param output_folder: The path for the training output within output_bucket
:param tag_key: The name of a tag to attach to the model. Pass None to exclude
:param tag_key_value: The value of the tag. Pass None to exclude
"""
try:
#Train the model
status=""
logger.info("training model version %s for project %s",
version_name, project_arn)
output_config = json.loads(
'{"S3Bucket": "'
+ output_bucket
+ '", "S3KeyPrefix": "'
+ output_folder
+ '" } '
)
tags={}
if tag_key is not None and tag_key_value is not None:
tags = json.loads(
'{"' + tag_key + '":"' + tag_key_value + '"}'
)
response=rek_client.create_project_version(
ProjectArn=project_arn,
VersionName=version_name,
OutputConfig=output_config,
Tags=tags
)
logger.info("Started training: %s", response['ProjectVersionArn'])
# Wait for the project version training to complete.
project_version_training_completed_waiter = rek_client.get_waiter('project_version_training_completed')
project_version_training_completed_waiter.wait(ProjectArn=project_arn,
VersionNames=[version_name])
# Get the completion status.
describe_response=rek_client.describe_project_versions(ProjectArn=project_arn,
VersionNames=[version_name])
for model in describe_response['ProjectVersionDescriptions']:
logger.info("Status: %s", model['Status'])
logger.info("Message: %s", model['StatusMessage'])
status=model['Status']
logger.info("finished training")
return response['ProjectVersionArn'], status
except ClientError as err:
logger.exception("Couldn't create model: %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 train a model"
)
parser.add_argument(
"version_name", help="A version name of your choosing."
)
parser.add_argument(
"output_bucket", help="The S3 bucket that receives the training results."
)
parser.add_argument(
"output_folder", help="The folder in the S3 bucket where training results are stored."
)
parser.add_argument(
"--tag_name", help="The name of a tag to attach to the model", required=False
)
parser.add_argument(
"--tag_value", help="The value for the tag.", required=False
)
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"Training model version {args.version_name} for project {args.project_arn}")
# Train the model.
session = boto3.Session(profile_name='custom-labels-access')
rekognition_client = session.client("rekognition")
model_arn, status=train_model(rekognition_client,
args.project_arn,
args.version_name,
args.output_bucket,
args.output_folder,
args.tag_name,
args.tag_value)
print(f"Finished training model: {model_arn}")
print(f"Status: {status}")
except ClientError as err:
logger.exception("Problem training model: %s", err)
print(f"Problem training model: {err}")
except Exception as err:
logger.exception("Problem training model: %s", err)
print(f"Problem training model: {err}")
if __name__ == "__main__":
main()
- Java V2
-
Contoh berikut melatih model. Berikan argumen baris perintah berikut:
project_arn
— Nama Sumber Daya Amazon (ARN) dari proyek.
version_name
— Nama versi unik untuk model yang Anda pilih.
output_bucket
— nama ember Amazon S3 tempat Label Kustom Rekognition Amazon menyimpan hasil pelatihan.
output_folder
— nama folder tempat hasil pelatihan disimpan.
/*
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.core.waiters.WaiterResponse;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.rekognition.RekognitionClient;
import software.amazon.awssdk.services.rekognition.model.CreateProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.CreateProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsResponse;
import software.amazon.awssdk.services.rekognition.model.OutputConfig;
import software.amazon.awssdk.services.rekognition.model.ProjectVersionDescription;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
import software.amazon.awssdk.services.rekognition.waiters.RekognitionWaiter;
import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
public class TrainModel {
public static final Logger logger = Logger.getLogger(TrainModel.class.getName());
public static String trainMyModel(RekognitionClient rekClient, String projectArn, String versionName,
String outputBucket, String outputFolder) {
try {
OutputConfig outputConfig = OutputConfig.builder().s3Bucket(outputBucket).s3KeyPrefix(outputFolder).build();
logger.log(Level.INFO, "Training Model for project {0}", projectArn);
CreateProjectVersionRequest createProjectVersionRequest = CreateProjectVersionRequest.builder()
.projectArn(projectArn).versionName(versionName).outputConfig(outputConfig).build();
CreateProjectVersionResponse response = rekClient.createProjectVersion(createProjectVersionRequest);
logger.log(Level.INFO, "Model ARN: {0}", response.projectVersionArn());
logger.log(Level.INFO, "Training model...");
// wait until training completes
DescribeProjectVersionsRequest describeProjectVersionsRequest = DescribeProjectVersionsRequest.builder()
.versionNames(versionName)
.projectArn(projectArn)
.build();
RekognitionWaiter waiter = rekClient.waiter();
WaiterResponse<DescribeProjectVersionsResponse> waiterResponse = waiter
.waitUntilProjectVersionTrainingCompleted(describeProjectVersionsRequest);
Optional<DescribeProjectVersionsResponse> optionalResponse = waiterResponse.matched().response();
DescribeProjectVersionsResponse describeProjectVersionsResponse = optionalResponse.get();
for (ProjectVersionDescription projectVersionDescription : describeProjectVersionsResponse
.projectVersionDescriptions()) {
System.out.println("ARN: " + projectVersionDescription.projectVersionArn());
System.out.println("Status: " + projectVersionDescription.statusAsString());
System.out.println("Message: " + projectVersionDescription.statusMessage());
}
return response.projectVersionArn();
} catch (RekognitionException e) {
logger.log(Level.SEVERE, "Could not train model: {0}", e.getMessage());
throw e;
}
}
public static void main(String args[]) {
String versionName = null;
String projectArn = null;
String projectVersionArn = null;
String bucket = null;
String location = null;
final String USAGE = "\n" + "Usage: " + "<project_name> <version_name> <output_bucket> <output_folder>\n\n" + "Where:\n"
+ " project_arn - The ARN of the project that you want to use. \n\n"
+ " version_name - A version name for the model.\n\n"
+ " output_bucket - The S3 bucket in which to place the training output. \n\n"
+ " output_folder - The folder within the bucket that the training output is stored in. \n\n";
if (args.length != 4) {
System.out.println(USAGE);
System.exit(1);
}
projectArn = args[0];
versionName = args[1];
bucket = args[2];
location = args[3];
try {
// Get the Rekognition client.
RekognitionClient rekClient = RekognitionClient.builder()
.credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access"))
.region(Region.US_WEST_2)
.build();
// Train model
projectVersionArn = trainMyModel(rekClient, projectArn, versionName, bucket, location);
System.out.println(String.format("Created model: %s for Project ARN: %s", projectVersionArn, projectArn));
rekClient.close();
} catch (RekognitionException rekError) {
logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage());
System.exit(1);
}
}
}
Jika pelatihan gagal, bacaMendebug pelatihan model yang gagal.