翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
モデルのトレーニング
データセットを作成して画像にラベル付けしたら、モデルをトレーニングできます。トレーニングプロセスの一環として、テストデータセットが使用されます。単一データセットプロジェクトがある場合、データセット内の画像は、トレーニングプロセスの一部として、テストデータセットとトレーニングデータセットに自動的に分割されます。プロジェクトにトレーニングデータセットとテストデータセットがある場合は、データセットを個別にトレーニングおよびテストするために使用されます。
トレーニングが完了したら、モデルのパフォーマンスを評価し、必要な改善を行うことができます。詳細については、「Amazon Lookout for Vision モデルの改善」を参照してください。
モデルをトレーニングするために、Amazon Lookout for Vision はソーストレーニングとテスト画像のコピーを作成します。デフォルトでは、コピーされたイメージは、 がAWS所有および管理するキーで暗号化されます。独自の Key Management Service (KMS) AWS キーを使用することもできます。詳細については、AWS「 Key Management Service の概念」を参照してください。ソース画像には影響がありません。
モデルには、タグという形でメタデータを付与することができます。詳細については、「モデルのタグ付け」を参照してください。
モデルをトレーニングするたびに、モデルの新しいバージョンが作成されます。モデルのバージョンが不要になった場合には、それを削除することができます。詳細については、「モデルの削除」を参照してください。
モデルを正常にトレーニングするのにかかる時間に対して課金されます。詳細については、「トレーニング時間」を参照してください。
プロジェクト内の既存のモデルを表示するには、「モデルの表示」に進んでください。
モデルのトレーニング (コンソール)
次の手続きでは、 コンソールを使用したモデルのトレーニング方法を示します。
モデルをトレーニングするには (コンソール)
-
で Amazon Lookout for Vision コンソールを開きます https://console.aws.amazon.com/lookoutvision/。
-
In the left navigation pane, choose Projects.
-
「プロジェクト」 ページで、トレーニングしたいモデルを含むプロジェクトを選択します。
-
On the project details page, choose Train model. The Train model button is available if you have enough labeled images to train the model. ボタンがない場合は、十分なラベル付き画像が揃うまで画像を追加してください。
-
(オプション) 独自のAWSKMS暗号化キーを使用する場合は、次の操作を行います。
-
In Image data encryption choose Customize encryption settings (advanced).
-
encryption.aws_kms_key で、キーの Amazon リソースネーム (ARN) を入力するか、既存のAWSKMSキーを選択します。新しいキーを作成するには、AWSIMSキーの作成 を選択します。
-
(オプション) モデルにタグを追加する場合は、次の操作を行います。
-
In the Tags section, choose Add new tag.
-
次のように入力します。
-
The name of the key in Key.
-
The value of the key in Value.
-
タグをさらに追加するには、手順 6a と 6b を繰り返します。
-
(Optional) If you want to remove a tag, choose Remove next to the tag that you want to remove. 以前に保存したタグを削除する場合、変更を保存するとそのタグが削除されます。
-
Choose Train model.
-
In the Do you want to train your model? dialog box, choose Train model.
-
In the Models view, you can see that training has started and you can check the current status by viewing the Status
column for the model version. モデルのトレーニングは、完了までに時間がかかります。
-
トレーニングが終了したら、そのパフォーマンスを評価できます。詳細については、「Amazon Lookout for Vision モデルの改善」を参照してください。
モデルのトレーニング (SDK)
CreateModel オペレーションを使用して、モデルのトレーニング、テスト、評価を開始します。Amazon Lookout for Vision は、プロジェクトに関連付けられたトレーニングおよびテストデータセットを使用してモデルをトレーニングします。詳細については、「プロジェクトの作成 (SDK)」を参照してください。
CreateModel
を呼び出すたびに、モデルの新しいバージョンが作成されます。CreateModel
からの応答には、モデルのバージョンが含まれます。
モデルトレーニングが成功するごとに課金されます。ClientToken
入力パラメータを使用することで、ユーザーによる不要なモデルトレーニングの繰り返しによる課金を防止することができます。ClientToken
は冪等の入力パラメータで、CreateModel
が特定のパラメータセットに対して一度だけ完了するようにします。― 同じ ClientToken
値で CreateModel
を繰り返し呼び出すと、トレーニングが繰り返されないようにします。に値を指定しない場合ClientToken
、使用している AWSSDKによって値が挿入されます。これにより、ネットワークエラー後の再試行が複数のトレーニングジョブを開始することを防ぎますが、ご自身のユースケースに合わせて独自の値を用意する必要があります。詳細については、「」を参照してくださいCreateModel。
トレーニングが完了するまで少し時間がかかります。現在の状態を確認するには、DescribeModel
を呼び出し、プロジェクト名(CreateProject
への呼び出しで指定)とモデルのバージョンを渡します。status
フィールドは、モデルトレーニングの現在のステータスを示します。サンプルコードについては、「モデルの表示 (SDK)」を参照してください。
トレーニングが成功すれば、モデルを評価できます。詳細については、「Amazon Lookout for Vision モデルの改善」を参照してください。
プロジェクトで作成したモデルを表示するには、ListModels
を呼び出します。サンプルコードについては、「モデルの表示」を参照してください。
モデルをトレーニングするには (SDK)
-
まだインストールしていない場合は、 と をインストール AWS CLI して設定します AWS SDKs。詳細については、「ステップ 4: AWS CLI と AWS SDKsを設定する」を参照してください。
-
次のサンプルコードを使用して、モデルをトレーニングします。
- CLI
-
以下の値を変更します:
aws lookoutvision create-model --project-name "project name
"\
--output-config '{ "S3Location": { "Bucket": "output bucket
", "Prefix": "output folder
" } }'\
--tags '[{"Key":"Key
","Value":"Value
"}]' \
--profile lookoutvision-access
- Python
-
このコードは、 AWS ドキュメントSDKサンプル GitHub リポジトリから取得されます。詳しい事例はこちらです。
@staticmethod
def create_model(
lookoutvision_client,
project_name,
training_results,
tag_key=None,
tag_key_value=None,
):
"""
Creates a version of a Lookout for Vision model.
:param lookoutvision_client: A Boto3 Lookout for Vision client.
:param project_name: The name of the project in which you want to create a
model.
:param training_results: The Amazon S3 location where training results are stored.
:param tag_key: The key for a tag to add to the model.
:param tag_key_value - A value associated with the tag_key.
return: The model status and version.
"""
try:
logger.info("Training model...")
output_bucket, output_folder = training_results.replace("s3://", "").split(
"/", 1
)
output_config = {
"S3Location": {"Bucket": output_bucket, "Prefix": output_folder}
}
tags = []
if tag_key is not None:
tags = [{"Key": tag_key, "Value": tag_key_value}]
response = lookoutvision_client.create_model(
ProjectName=project_name, OutputConfig=output_config, Tags=tags
)
logger.info("ARN: %s", response["ModelMetadata"]["ModelArn"])
logger.info("Version: %s", response["ModelMetadata"]["ModelVersion"])
logger.info("Started training...")
print("Training started. Training might take several hours to complete.")
# Wait until training completes.
finished = False
status = "UNKNOWN"
while finished is False:
model_description = lookoutvision_client.describe_model(
ProjectName=project_name,
ModelVersion=response["ModelMetadata"]["ModelVersion"],
)
status = model_description["ModelDescription"]["Status"]
if status == "TRAINING":
logger.info("Model training in progress...")
time.sleep(600)
continue
if status == "TRAINED":
logger.info("Model was successfully trained.")
else:
logger.info(
"Model training failed: %s ",
model_description["ModelDescription"]["StatusMessage"],
)
finished = True
except ClientError:
logger.exception("Couldn't train model.")
raise
else:
return status, response["ModelMetadata"]["ModelVersion"]
- Java V2
-
このコードは、 AWS ドキュメントSDKサンプル GitHub リポジトリから取得されます。詳しい例はこちらで参照できます。
/**
* Creates an Amazon Lookout for Vision model. The function returns after model
* training completes. Model training can take multiple hours to complete.
* You are charged for the amount of time it takes to successfully train a model.
* Returns after Lookout for Vision creates the dataset.
*
* @param lfvClient An Amazon Lookout for Vision client.
* @param projectName The name of the project in which you want to create a
* model.
* @param description A description for the model.
* @param bucket The S3 bucket in which Lookout for Vision stores the
* training results.
* @param folder The location of the training results within the S3
* bucket.
* @return ModelDescription The description of the created model.
*/
public static ModelDescription createModel(LookoutVisionClient lfvClient, String projectName,
String description, String bucket, String folder)
throws LookoutVisionException, InterruptedException {
logger.log(Level.INFO, "Creating model for project: {0}.", new Object[] { projectName });
// Setup input parameters.
S3Location s3Location = S3Location.builder()
.bucket(bucket)
.prefix(folder)
.build();
OutputConfig config = OutputConfig.builder()
.s3Location(s3Location)
.build();
CreateModelRequest createModelRequest = CreateModelRequest.builder()
.projectName(projectName)
.description(description)
.outputConfig(config)
.build();
// Create and train the model.
CreateModelResponse response = lfvClient.createModel(createModelRequest);
String modelVersion = response.modelMetadata().modelVersion();
boolean finished = false;
DescribeModelResponse descriptionResponse = null;
// Wait until training finishes or fails.
do {
DescribeModelRequest describeModelRequest = DescribeModelRequest.builder()
.projectName(projectName)
.modelVersion(modelVersion)
.build();
descriptionResponse = lfvClient.describeModel(describeModelRequest);
switch (descriptionResponse.modelDescription().status()) {
case TRAINED:
logger.log(Level.INFO, "Model training completed for project {0} version {1}.",
new Object[] { projectName, modelVersion });
finished = true;
break;
case TRAINING:
logger.log(Level.INFO,
"Model training in progress for project {0} version {1}.",
new Object[] { projectName, modelVersion });
TimeUnit.SECONDS.sleep(60);
break;
case TRAINING_FAILED:
logger.log(Level.SEVERE,
"Model training failed for for project {0} version {1}.",
new Object[] { projectName, modelVersion });
finished = true;
break;
default:
logger.log(Level.SEVERE,
"Unexpected error when training model project {0} version {1}: {2}.",
new Object[] { projectName, modelVersion,
descriptionResponse.modelDescription()
.status() });
finished = true;
break;
}
} while (!finished);
return descriptionResponse.modelDescription();
}
-
トレーニングが終了したら、そのパフォーマンスを評価できます。詳細については、「Amazon Lookout for Vision モデルの改善」を参照してください。