支援終止通知:在 2025 年 10 月 31 日, AWS 將停止對 Amazon Lookout for Vision 的支援。2025 年 10 月 31 日後,您將無法再存取 Lookout for Vision 主控台或 Lookout for Vision 資源。如需詳細資訊,請造訪此部落格文章 。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用資訊清單檔案 (SDK) 建立資料集
您可以使用 CreateDataset操作建立與 Amazon Lookout for Vision 專案相關聯的資料集。
如果您想要使用單一資料集進行訓練和測試,請建立將DatasetType
值設定為 的單一資料集train
。在訓練期間,資料集會在內部分割,以建立訓練和測試資料集。您無法存取分割訓練和測試資料集。如果您想要單獨的測試資料集,請對 進行第二次呼叫,CreateDataset
並將DatasetType
值設定為 test
。在訓練期間,訓練和測試資料集會用來訓練和測試模型。
您可以選擇性地使用 DatasetSource
參數來指定用來填入資料集的 SageMaker Ground Truth 格式資訊清單檔案的位置。在此情況下, 呼叫CreateDataset
為非同步。若要檢查目前狀態,請呼叫 DescribeDataset
。如需詳細資訊,請參閱檢視資料集。如果在匯入期間發生驗證錯誤,則 的值Status
會設為 CREATE_FAILED,且狀態訊息 (StatusMessage
) 會設為 。
如果您要使用入門範例資料集建立資料集,請使用指令碼在 中建立的資訊清單檔案 (getting-started/dataset-files/manifests/train.manifest
)步驟 1:建立清單檔案並上傳圖片。
如果您要使用電路板範例映像建立資料集,有兩個選項:
-
使用程式碼建立資訊清單檔案。Amazon Lookout for Vision Lab Python Notebook 示範如何為電路板範例映像建立資訊清單檔案。或者,使用 Code Example Repository 中的資料集範例程式碼。 AWS
-
如果您已使用 Amazon Lookout for Vision 主控台建立具有電路板範例影像的資料集,請重複使用 Amazon Lookout for Vision 為您建立的資訊清單檔案。訓練和測試清單檔案位置為 s3://bucket
/datasets/project name
/train or test
/manifests/output/output.manifest
。
如果您未指定 DatasetSource
,則會建立空的資料集。在此情況下, 的呼叫CreateDataset
會同步。稍後,您可以透過呼叫 將影像標記為資料集UpdateDatasetEntries。如需範例程式碼,請參閱 新增更多影像 (SDK)。
如果您想要取代資料集,請先使用 刪除現有資料集,DeleteDataset然後呼叫 以建立新的相同資料集類型的資料集CreateDataset
。如需詳細資訊,請參閱刪除資料集。
建立資料集後,您可以建立模型。如需詳細資訊,請參閱訓練模型 (SDK)。
您可以透過呼叫 來檢視資料集內已標記的影像 (JSON 行)ListDatasetEntries。您可以呼叫 來新增已標記的影像UpdateDatasetEntries
。
若要檢視測試和訓練資料集的相關資訊,請參閱 檢視資料集。
建立資料集 (SDK)
-
如果您尚未這麼做,請安裝並設定 AWS CLI 和 AWS SDKs。如需詳細資訊,請參閱步驟 4:設定 AWS CLI 和 AWS SDKs。
-
使用下列範例程式碼來建立資料集。
- CLI
-
變更下列值:
-
project-name
您想要與資料集建立關聯之專案的名稱。
-
dataset-type
您想要建立的資料集類型 (train
或 test
)。
-
dataset-source
清單檔案的 Amazon S3 位置。
-
Bucket
包含資訊清單檔案的 Amazon S3 儲存貯體名稱。
-
Key
到 Amazon S3 儲存貯體中資訊清單檔案的路徑和檔案名稱。
aws lookoutvision create-dataset --project-name project
\
--dataset-type train or test
\
--dataset-source '{ "GroundTruthManifest": { "S3Object": { "Bucket": "bucket
", "Key": "manifest file
" } } }' \
--profile lookoutvision-access
- Python
-
此程式碼取自 AWS 文件SDK範例 GitHub 儲存庫。請參閱此處的完整範例。
@staticmethod
def create_dataset(lookoutvision_client, project_name, manifest_file, dataset_type):
"""
Creates a new Lookout for Vision dataset
:param lookoutvision_client: A Lookout for Vision Boto3 client.
:param project_name: The name of the project in which you want to
create a dataset.
:param bucket: The bucket that contains the manifest file.
:param manifest_file: The path and name of the manifest file.
:param dataset_type: The type of the dataset (train or test).
"""
try:
bucket, key = manifest_file.replace("s3://", "").split("/", 1)
logger.info("Creating %s dataset type...", dataset_type)
dataset = {
"GroundTruthManifest": {"S3Object": {"Bucket": bucket, "Key": key}}
}
response = lookoutvision_client.create_dataset(
ProjectName=project_name,
DatasetType=dataset_type,
DatasetSource=dataset,
)
logger.info("Dataset Status: %s", response["DatasetMetadata"]["Status"])
logger.info(
"Dataset Status Message: %s",
response["DatasetMetadata"]["StatusMessage"],
)
logger.info("Dataset Type: %s", response["DatasetMetadata"]["DatasetType"])
# Wait until either created or failed.
finished = False
status = ""
dataset_description = {}
while finished is False:
dataset_description = lookoutvision_client.describe_dataset(
ProjectName=project_name, DatasetType=dataset_type
)
status = dataset_description["DatasetDescription"]["Status"]
if status == "CREATE_IN_PROGRESS":
logger.info("Dataset creation in progress...")
time.sleep(2)
elif status == "CREATE_COMPLETE":
logger.info("Dataset created.")
finished = True
else:
logger.info(
"Dataset creation failed: %s",
dataset_description["DatasetDescription"]["StatusMessage"],
)
finished = True
if status != "CREATE_COMPLETE":
message = dataset_description["DatasetDescription"]["StatusMessage"]
logger.exception("Couldn't create dataset: %s", message)
raise Exception(f"Couldn't create dataset: {message}")
except ClientError:
logger.exception("Service error: Couldn't create dataset.")
raise
- Java V2
-
此程式碼取自 AWS 文件SDK範例 GitHub 儲存庫。請參閱此處的完整範例。
/**
* Creates an Amazon Lookout for Vision dataset from a manifest file.
* 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
* dataset.
* @param datasetType The type of dataset that you want to create (train or
* test).
* @param bucket The S3 bucket that contains the manifest file.
* @param manifestFile The name and location of the manifest file within the S3
* bucket.
* @return DatasetDescription The description of the created dataset.
*/
public static DatasetDescription createDataset(LookoutVisionClient lfvClient,
String projectName,
String datasetType,
String bucket,
String manifestFile)
throws LookoutVisionException, InterruptedException {
logger.log(Level.INFO, "Creating {0} dataset for project {1}",
new Object[] { projectName, datasetType });
// Build the request. If no bucket supplied, setup for empty dataset creation.
CreateDatasetRequest createDatasetRequest = null;
if (bucket != null && manifestFile != null) {
InputS3Object s3Object = InputS3Object.builder()
.bucket(bucket)
.key(manifestFile)
.build();
DatasetGroundTruthManifest groundTruthManifest = DatasetGroundTruthManifest.builder()
.s3Object(s3Object)
.build();
DatasetSource datasetSource = DatasetSource.builder()
.groundTruthManifest(groundTruthManifest)
.build();
createDatasetRequest = CreateDatasetRequest.builder()
.projectName(projectName)
.datasetType(datasetType)
.datasetSource(datasetSource)
.build();
} else {
createDatasetRequest = CreateDatasetRequest.builder()
.projectName(projectName)
.datasetType(datasetType)
.build();
}
lfvClient.createDataset(createDatasetRequest);
DatasetDescription datasetDescription = null;
boolean finished = false;
// Wait until dataset is created, or failure occurs.
while (!finished) {
datasetDescription = describeDataset(lfvClient, projectName, datasetType);
switch (datasetDescription.status()) {
case CREATE_COMPLETE:
logger.log(Level.INFO, "{0}dataset created for project {1}",
new Object[] { datasetType, projectName });
finished = true;
break;
case CREATE_IN_PROGRESS:
logger.log(Level.INFO, "{0} dataset creating for project {1}",
new Object[] { datasetType, projectName });
TimeUnit.SECONDS.sleep(5);
break;
case CREATE_FAILED:
logger.log(Level.SEVERE,
"{0} dataset creation failed for project {1}. Error {2}",
new Object[] { datasetType, projectName,
datasetDescription.statusAsString() });
finished = true;
break;
default:
logger.log(Level.SEVERE, "{0} error when creating {1} dataset for project {2}",
new Object[] { datasetType, projectName,
datasetDescription.statusAsString() });
finished = true;
break;
}
}
logger.log(Level.INFO, "Dataset info. Status: {0}\n Message: {1} }",
new Object[] { datasetDescription.statusAsString(),
datasetDescription.statusMessage() });
return datasetDescription;
}
依照 的步驟訓練模型訓練模型 (SDK)。