Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memulai model Label Kustom Rekognition Amazon
Anda dapat mulai menjalankan model Amazon Rekognition Custom Labels dengan menggunakan konsol atau dengan menggunakan StartProject operasi Versi.
Memulai model mungkin membutuhkan waktu beberapa menit untuk menyelesaikannya. Untuk memeriksa status kesiapan model saat ini, periksa halaman detail untuk proyek atau gunakan DescribeProjectVersi.
Setelah model dimulai Anda menggunakan DetectCustomLabel, untuk menganalisis gambar menggunakan model. Untuk informasi selengkapnya, lihat Menganalisis gambar dengan model terlatih. Konsol juga menyediakan contoh kode untuk dipanggilDetectCustomLabels
.
Memulai model Label Kustom Rekognition Amazon (Konsol)
Gunakan prosedur berikut untuk mulai menjalankan model Amazon Rekognition Custom Labels dengan konsol. Anda dapat memulai model langsung dari konsol atau menggunakan kode AWS SDK yang disediakan oleh konsol.
Untuk memulai model (konsol)
Buka konsol Amazon Rekognition di https://console.aws.amazon.com/rekognition/.
Pilih Gunakan Label Kustom.
Pilih Mulai.
Di panel navigasi kiri, pilih Proyek.
Pada halaman Sumber daya proyek, pilih proyek yang berisi model terlatih yang ingin Anda mulai.
Di bagian Model, pilih model yang ingin Anda mulai.
Pilih tab Gunakan model.
Lakukan salah satu hal berikut ini:
- Start model using the console
-
Di bagian Mulai atau hentikan model lakukan hal berikut:
- Start model using the AWS SDK
-
Di bagian Gunakan model Anda lakukan hal berikut:
-
Untuk kembali ke halaman ikhtisar proyek, pilih nama proyek Anda di bagian atas halaman.
Di bagian Model, periksa status model. Saat status model sedang BERJALAN, Anda dapat menggunakan model untuk menganalisis gambar. Untuk informasi selengkapnya, lihat Menganalisis gambar dengan model terlatih.
Memulai model Label Kustom Rekognition Amazon (SDK)
Anda memulai model dengan memanggil API StartProjectVersi dan meneruskan Amazon Resource Name (ARN) model dalam parameter ProjectVersionArn
input. Anda juga menentukan jumlah unit inferensi yang ingin Anda gunakan. Untuk informasi selengkapnya, lihat Menjalankan model Label Kustom Rekognition Amazon yang terlatih.
Sebuah model mungkin membutuhkan waktu beberapa saat untuk memulai. Contoh Python dan Java dalam topik ini menggunakan pelayan untuk menunggu model dimulai. Pelayan adalah metode utilitas yang melakukan polling untuk keadaan tertentu terjadi. Atau, Anda dapat memeriksa status saat ini dengan memanggil DescribeProjectVersi.
Untuk memulai model (SDK)
-
Jika Anda belum melakukannya, instal dan konfigurasikan AWS CLI dan AWS SDK. Untuk informasi selengkapnya, lihat Langkah 4: Mengatur AWS CLI dan AWS SDKs.
Gunakan kode contoh berikut untuk memulai model.
- CLI
-
Ubah nilai project-version-arn
ke ARN model yang ingin Anda mulai. Ubah nilai --min-inference-units
ke jumlah unit inferensi yang ingin Anda gunakan. Secara opsional, ubah --max-inference-units
ke jumlah maksimum unit inferensi yang dapat digunakan Label Kustom Rekognition Amazon untuk menskalakan model secara otomatis.
aws rekognition start-project-version --project-version-arn model_arn
\
--min-inference-units minimum number of units \
--max-inference-units maximum number of units \
--profile custom-labels-access
- Python
-
Sediakan parameter baris perintah berikut:
project_arn
— ARN dari proyek yang berisi model yang ingin Anda mulai.
model_arn
— ARN dari model yang ingin Anda mulai.
min_inference_units
— jumlah unit inferensi yang ingin Anda gunakan.
(Opsional) --max_inference_units
Jumlah maksimum unit inferensi yang dapat digunakan Label Kustom Rekognition Amazon untuk menskalakan model secara otomatis.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Purpose
Shows how to start running an Amazon Lookout for Vision model.
"""
import argparse
import logging
import boto3
from botocore.exceptions import ClientError
logger = logging.getLogger(__name__)
def get_model_status(rek_client, project_arn, model_arn):
"""
Gets the current status of an Amazon Rekognition Custom Labels model
:param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
:param project_name: The name of the project that you want to use.
:param model_arn: The name of the model that you want the status for.
:return: The model status
"""
logger.info("Getting status for %s.", model_arn)
# Extract the model version from the model arn.
version_name = (model_arn.split("version/", 1)[1]).rpartition('/')[0]
models = rek_client.describe_project_versions(ProjectArn=project_arn,
VersionNames=[version_name])
for model in models['ProjectVersionDescriptions']:
logger.info("Status: %s", model['StatusMessage'])
return model["Status"]
error_message = f"Model {model_arn} not found."
logger.exception(error_message)
raise Exception(error_message)
def start_model(rek_client, project_arn, model_arn, min_inference_units, max_inference_units=None):
"""
Starts the hosting of an Amazon Rekognition Custom Labels model.
:param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
:param project_name: The name of the project that contains the
model that you want to start hosting.
:param min_inference_units: The number of inference units to use for hosting.
:param max_inference_units: The number of inference units to use for auto-scaling
the model. If not supplied, auto-scaling does not happen.
"""
try:
# Start the model
logger.info(f"Starting model: {model_arn}. Please wait....")
if max_inference_units is None:
rek_client.start_project_version(ProjectVersionArn=model_arn,
MinInferenceUnits=int(min_inference_units))
else:
rek_client.start_project_version(ProjectVersionArn=model_arn,
MinInferenceUnits=int(
min_inference_units),
MaxInferenceUnits=int(max_inference_units))
# Wait for the model to be in the running state
version_name = (model_arn.split("version/", 1)[1]).rpartition('/')[0]
project_version_running_waiter = rek_client.get_waiter(
'project_version_running')
project_version_running_waiter.wait(
ProjectArn=project_arn, VersionNames=[version_name])
# Get the running status
return get_model_status(rek_client, project_arn, model_arn)
except ClientError as err:
logger.exception("Client error: Problem starting model: %s", err)
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 that contains that the model you want to start."
)
parser.add_argument(
"model_arn", help="The ARN of the model that you want to start."
)
parser.add_argument(
"min_inference_units", help="The minimum number of inference units to use."
)
parser.add_argument(
"--max_inference_units", help="The maximum number of inference units to use for auto-scaling the model.", 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()
# Start the model.
session = boto3.Session(profile_name='custom-labels-access')
rekognition_client = session.client("rekognition")
status = start_model(rekognition_client,
args.project_arn, args.model_arn,
args.min_inference_units,
args.max_inference_units)
print(f"Finished starting model: {args.model_arn}")
print(f"Status: {status}")
except ClientError as err:
error_message = f"Client error: Problem starting model: {err}"
logger.exception(error_message)
print(error_message)
except Exception as err:
error_message = f"Problem starting model:{err}"
logger.exception(error_message)
print(error_message)
if __name__ == "__main__":
main()
- Java V2
-
Sediakan parameter baris perintah berikut:
project_arn
— ARN dari proyek yang berisi model yang ingin Anda mulai.
model_arn
— ARN dari model yang ingin Anda mulai.
min_inference_units
— jumlah unit inferensi yang ingin Anda gunakan.
(Opsional) max_inference_units
— jumlah maksimum unit inferensi yang dapat digunakan Label Kustom Rekognition Amazon untuk menskalakan model secara otomatis. Jika Anda tidak menentukan nilai, penskalaan otomatis tidak akan terjadi.
/*
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.DescribeProjectVersionsRequest;
import software.amazon.awssdk.services.rekognition.model.DescribeProjectVersionsResponse;
import software.amazon.awssdk.services.rekognition.model.ProjectVersionDescription;
import software.amazon.awssdk.services.rekognition.model.ProjectVersionStatus;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
import software.amazon.awssdk.services.rekognition.model.StartProjectVersionRequest;
import software.amazon.awssdk.services.rekognition.model.StartProjectVersionResponse;
import software.amazon.awssdk.services.rekognition.waiters.RekognitionWaiter;
import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
public class StartModel {
public static final Logger logger = Logger.getLogger(StartModel.class.getName());
public static int findForwardSlash(String modelArn, int n) {
int start = modelArn.indexOf('/');
while (start >= 0 && n > 1) {
start = modelArn.indexOf('/', start + 1);
n -= 1;
}
return start;
}
public static void startMyModel(RekognitionClient rekClient, String projectArn, String modelArn,
Integer minInferenceUnits, Integer maxInferenceUnits
) throws Exception, RekognitionException {
try {
logger.log(Level.INFO, "Starting model: {0}", modelArn);
StartProjectVersionRequest startProjectVersionRequest = null;
if (maxInferenceUnits == null) {
startProjectVersionRequest = StartProjectVersionRequest.builder()
.projectVersionArn(modelArn)
.minInferenceUnits(minInferenceUnits)
.build();
}
else {
startProjectVersionRequest = StartProjectVersionRequest.builder()
.projectVersionArn(modelArn)
.minInferenceUnits(minInferenceUnits)
.maxInferenceUnits(maxInferenceUnits)
.build();
}
StartProjectVersionResponse response = rekClient.startProjectVersion(startProjectVersionRequest);
logger.log(Level.INFO, "Status: {0}", response.statusAsString() );
// Get the model version
int start = findForwardSlash(modelArn, 3) + 1;
int end = findForwardSlash(modelArn, 4);
String versionName = modelArn.substring(start, end);
// wait until model starts
DescribeProjectVersionsRequest describeProjectVersionsRequest = DescribeProjectVersionsRequest.builder()
.versionNames(versionName)
.projectArn(projectArn)
.build();
RekognitionWaiter waiter = rekClient.waiter();
WaiterResponse<DescribeProjectVersionsResponse> waiterResponse = waiter
.waitUntilProjectVersionRunning(describeProjectVersionsRequest);
Optional<DescribeProjectVersionsResponse> optionalResponse = waiterResponse.matched().response();
DescribeProjectVersionsResponse describeProjectVersionsResponse = optionalResponse.get();
for (ProjectVersionDescription projectVersionDescription : describeProjectVersionsResponse
.projectVersionDescriptions()) {
if(projectVersionDescription.status() == ProjectVersionStatus.RUNNING) {
logger.log(Level.INFO, "Model is running" );
}
else {
String error = "Model training failed: " + projectVersionDescription.statusAsString() + " "
+ projectVersionDescription.statusMessage() + " " + modelArn;
logger.log(Level.SEVERE, error);
throw new Exception(error);
}
}
} catch (RekognitionException e) {
logger.log(Level.SEVERE, "Could not start model: {0}", e.getMessage());
throw e;
}
}
public static void main(String[] args) {
String modelArn = null;
String projectArn = null;
Integer minInferenceUnits = null;
Integer maxInferenceUnits = null;
final String USAGE = "\n" + "Usage: " + "<project_name> <version_name> <min_inference_units> <max_inference_units>\n\n" + "Where:\n"
+ " project_arn - The ARN of the project that contains the model that you want to start. \n\n"
+ " model_arn - The ARN of the model version that you want to start.\n\n"
+ " min_inference_units - The number of inference units to start the model with.\n\n"
+ " max_inference_units - The maximum number of inference units that Custom Labels can use to "
+ " automatically scale the model. If the value is null, automatic scaling doesn't happen.\n\n";
if (args.length < 3 || args.length >4) {
System.out.println(USAGE);
System.exit(1);
}
projectArn = args[0];
modelArn = args[1];
minInferenceUnits=Integer.parseInt(args[2]);
if (args.length == 4) {
maxInferenceUnits = Integer.parseInt(args[3]);
}
try {
// Get the Rekognition client.
RekognitionClient rekClient = RekognitionClient.builder()
.credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access"))
.region(Region.US_WEST_2)
.build();
// Start the model.
startMyModel(rekClient, projectArn, modelArn, minInferenceUnits, maxInferenceUnits);
System.out.println(String.format("Model started: %s", modelArn));
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);
}
}
}