標記用於機器學習的訓練資料

教學

概觀

在本教學中,了解如何在 Amazon SageMaker Ground Truth 中設定標記任務,以標註機器學習 (ML) 模型的訓練資料。

經過標記的資料集對於 ML 模型的監督式訓練至關重要。許多組織擁有龐大的資料集,但缺乏這些資料的標籤。您可以使用 Amazon SageMaker Ground Truth 輕鬆標記資料,並可選擇透過 Amazon Mechanical Turk、第三方供應商或您自己的人力進行人工標記。 

在本教學中,您將使用 SageMaker Ground Truth 標記一組車輛影像,影像中包含飛機、汽車、渡船、直升機和摩托車。由於本教學使用非敏感資料集,因此您可以使用 Amazon Mechanical Turk 選項。

要完成的內容

在本指南中,您將:

  • 建立和設定資料標記任務
  • 檢視標記任務的結果

先決條件

在開始本指南之前,您需要具備:

  • AWS 帳戶:如果您還沒有,請按照設定您的環境快速入門指南進行操作。 

 AWS 經驗

初階

 完成時間

30 分鐘

 完成成本

請參閱 SageMaker 定價以估算本教學的成本。

 要求

您必須登入 AWS 帳戶。

 使用的服務

Amazon SageMaker Ground Truth

 上次更新日期

2022 年 7 月 6 日

實作

步驟 1:設定 Amazon SageMaker 筆記本執行個體

在 AWS Console 搜尋列中,輸入 SageMaker,然後選擇 Amazon SageMaker 開啟 SageMaker 主控台。

在左側導覽窗格中,按一下 Notebook (筆記本)。  選擇 Notebook instances (筆記本執行個體),然後選擇 Create notebook instance (建立筆記本執行個體)。

Create notebook instance (建立筆記本執行個體) 頁面的 Notebook instance settings (筆記本執行個體設定) 方塊下,對於 Notebook instance name (筆記本執行個體名稱),輸入 SageMaker-Ground-Truth-Tutorial。對於 Notebook instance type (筆記本執行個體類型),選取 ml.t2.medium。 

Permissions and encryption (許可與加密) 區段,對於 IAM role (IAM 角色),選擇 Create a new role (建立新的角色)。 在 Create an IAM role (建立 IAM 角色) 對話方塊中,選取 Any S3 bucket (任何 S3 儲存貯體),然後選擇 Create role (建立角色)。在生產環境中,最佳實務是將 S3 儲存貯體的存取許可限制為僅為具有最低所需許可的特定 IAM 角色提供。請記下此角色名稱,以便在最後進行清除時使用。

SageMaker 會建立 AmazonSageMaker-ExecutionRole-<角色 ID> 角色。保留其餘設定的預設值,並選擇 Create notebook instance (建立筆記本執行個體)。

Notebook instances (筆記本執行個體) 區段,新建立的 SageMaker-Ground-Truth-Tutorial 筆記本執行個體的狀態顯示為 Pending (擱置中)。當 Status (狀態) 變更為 InService (服務中) 時,該筆記本便準備就緒。

步驟 2:建立標記任務

本教學中要標記的影像樣本來自公開可用的 Caltech 101 資料集 (Li, F.-F.、Andreeto, M.、Ranzato, M. A.、和 Perona, P.(2022)。Caltech 101 (1.0 版) [資料集]。CaltechDATA),其中包含 101 個物件類別的圖片。為了盡量減少本教學的成本,您將使用包含 10 張影像的樣本集;下列類別每個各兩張:飛機、汽車、渡船、直升機和摩托車。但是為更大的資料集啟動標記任務的步驟與本教學中的步驟並無差別。包含 10 張影像的這個樣本集在 Amazon S3 儲存貯體 sagemaker-sample-files 中已提供。

在此步驟中,您將使用 SageMaker 筆記本執行個體編寫 python 程式碼,將影像樣本從 sagemaker-sample-files S3 儲存貯體上傳到您的預設 S3 儲存貯體 sagemaker-<您的區域>-<您的 AWS 帳戶 ID>SageMaker-Ground-Truth-Tutorial 筆記本執行個體狀態變更為 InService (服務中) 後,選擇 Open Jupyter (開啟 Jupyter)。

Jupyter 筆記本中,對於 New (新增),選取 conda_python3

按一下 Untitled.ipynb 開啟筆記本。在該 Jupyter 筆記本的新程式碼儲存格中,複製並貼上以下程式碼並執行該儲存格。

import sagemaker

sess = sagemaker.Session()
bucket = sess.default_bucket()

!aws s3 sync s3://sagemaker-sample-files/datasets/image/caltech-101/inference/ s3://{bucket}/ground-truth-demo/images/

print('Copy and paste the below link into a web browser to confirm the ten images were successfully uploaded to your bucket:')
print(f'https://s3.console.aws.amazon.com/s3/buckets/{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to enter the S3 location for input datasets, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to Specify a new location, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/labeled-data/')

該程式碼成功執行後,開啟 Amazon S3 主控台並導覽到 sagemaker-<您的區域>-<您的 AWS 帳戶 ID>/ground-truth-demo/images 位置,以確認十張影像已上傳。

開啟 SageMaker 主控台。在左側導覽面板上,選擇 Ground Truth,再選擇 Labeling jobs (標記任務)。然後選擇 Create labeling job (建立標記任務)。

Specify job details (指定任務詳細資訊) 頁面的 Job Overview (任務概觀) 下,在 Job name (任務名稱) 方塊中輸入 vehicle-labeling-demo。在 Input data setup (輸入資料設定) 下,選取 Automated data setup (自動化資料設定)。 

您可以使用自動化資料設定,在 SageMaker Ground Truth 主控台中使用儲存在 Amazon S3 中的影像、影片、影片畫面、文字 (.txt) 檔案和逗號分隔值 (.csv) 檔案為標記任務建立清單檔案。當您使用自動化資料設定時,您需要指定儲存輸入資料的 Amazon S3 位置並指定輸入資料類型,SageMaker Ground Truth 會在您指定的位置尋找與該類型匹配的檔案。

Data setup (資料設定) 區段:對於 S3 location for input datasets (輸入資料的 S3 位置),選擇 Browse S3 (瀏覽 S3),然後選取 S3 位置 s3://sagemaker-<您的區域>-<您的 AWS 帳戶 ID>/ground-truth-demo/images/ (這是您在上一步中上傳影像的位置。 對於 S3 location for output datasets (輸出資料集的 S3 位置),選取 Specify a new location (指定新的位置)。然後,指定儲存經標記影像的路徑:s3://sagemaker-<您的區域>-<您的 AWS 帳戶 ID>/ground-truth-demo/labeled-data/。 對於 Data type (資料類型),選取 Image (影像)。 對於 IAM Role (IAM 角色),選取 Create a new role (建立新的角色)。 您也可以使用我們之前執行的 Jupyter 筆記本中 print 語句的相應值。

Create an IAM role (建立 IAM 角色) 快顯中,選取 Any S3 bucket (任何 S3 儲存貯體),然後選擇 Create (建立)。

SageMaker Ground Truth 會自動建立 IAM 角色並將其輸入到 IAM Role (IAM 角色) 方塊中。 選擇 Complete data setup (完成資料設定)。確認訊息 Input data connection was successful (輸入資料連線成功) 隨即出現。

Task type (任務類型) 區段,對於 Task category (任務類別) ,選取 Image (影像)。對於 Task selection (任務選取),選取 Image Classification (Single Label) (影像分類 (單標籤)),然後選擇 Next (下一步)。

Select workers and configure tool (選取工作者並設定工具) 頁面上,對於 Worker types (工作者類型),選取 Amazon Mechanical Turk。

選取 The dataset does not contain adult content (資料集不包含成人內容)。 

選取 You understand and agree that the Amazon Mechanical Turk workforce consists of independent contractors located worldwide and that you should not share confidential information, personal information or protected health information with this workforce (您了解並同意 Amazon Mechanical Turk 員工由位於世界各地的獨立承包商組成,並且您不共享機密資訊、個人資訊或受保護的健康資訊)。

 

Image classification (Single Label) labeling tool (影像分類 (單標記) 標記工具) 區段,輸入以下資訊:

對於 Brief description of task (任務的簡要描述),輸入 Please select the label that best matches the image below.You can choose only 1 label per image. (請選取與下圖最匹配的標籤。每張影像只能選擇 1 個標籤。)

對於 Select an option (選取一個選項),在單獨的方塊中輸入以下標籤:Airplane (飛機)、Car (汽車)、Ferry (渡船)、Helicopter (直升機)、Motorbike (摩托車)。

展開 Additional instructions (額外說明),並將以下文字附加到步驟 3:If there are multiple vehicles in a single image, choose the most prominent vehicle in the image. (如果一張影像中有多輛車輛,請選擇影像中最顯眼的車輛。)

若要查看標記工具對標記者的顯示方式,請選擇 Preview (預覽)。 

選擇 Create (建立)。

新的 vehicle-labeling-demo 標記任務列在 SageMaker 主控台的 Labeling jobs (標記任務) 區段下,Status (狀態) 為 In progress (進行中),並且 Task type (任務類型) 為 Image Classification (Single Label) (影像分類 (單標籤))。標記任務可能需要幾分鐘才能完成。 在 Amazon Mechanical Turk 公有人力為資料加上標籤後,任務 Status (狀態) 會變更為 Complete (完成)。

步驟 3:檢視標記任務結果

檢視標記任務結果對於評估標記品質和確定是否需要改進說明與資料非常重要。

在 SageMaker 主控台的左側導覽窗格中,選擇 Labeling jobs (標記任務),然後選擇 vehicle-labeling-demo

 

vehicle-labeling-demo 詳細資訊頁面上,Labeled dataset objects (經標記的資料集物件) 區段顯示資料集中影像的縮圖,並帶有相應的標籤作為標題。

 

若要存取標記任務的完整結果,在 Labeling job summary (標記任務摘要) 區段中,按一下 Output dataset location (輸出資料集位置) 連結。

選擇 manifestsoutput output.manifest

 

選擇 Open (開啟) 以下載 JSON Lines 格式的標記結果。JSON Lines 是一種用於儲存結構化資料的新行分隔格式,其中每一行都是有效的 JSON 值。

 

output.manifest 包含以下資料: 

source-ref:指定輸入清單檔案中影像項目的位置。由於您在第 2 步中選取了 Automated data setup (自動化資料設定),Amazon SageMaker Ground Truth 會自動建立這些項目和輸入清單檔案。

vehicle-labeling-demo:將目標標籤指定為以零為基底索引的數值。對於此範例中的五個影像類別,標籤為 0、1、2、3 和 4。

vehicle-labeling-demo-metadata:指定標記中繼資料,例如可信度分數、任務名稱、標籤字串名稱 (例如,飛機、汽車、渡船、直升機和摩托車),以及人工或機器標註 (主動式學習)。

您可以解析 output.manifest 檔案,為影像分類等下游應用程式建立經標記的資料集。如需了解如何透過 Amazon SageMaker 使用 output.manifest 檔案來訓練模型,請閱讀部落格文章 – 使用經過 Amazon SageMaker Ground Truth 標記的資料集輕鬆訓練模型

步驟 4:清除資源

最佳實務是刪除不再需要的資源,以免產生意外費用。

若要刪除 S3 儲存貯體,請執行以下操作: 

  • 開啟 Amazon S3 主控台。在導覽列上,選取 Buckets (儲存貯體)、sagemaker-<您的區域>-<您的帳戶 ID>,然後選取 ground-truth-demo 旁邊的核取方塊。然後選擇 Delete (刪除)。 
  • Delete objects (刪除物件) 對話方塊中,確認您已選取要刪除的物件,然後將 permanently delete (永久刪除) 輸入到 Permanently delete objects (永久刪除物件) 確認方塊。

透過在 AWS Console 的搜尋列中鍵入 IAM 並選取 IAM 開啟 AWS IAM 主控台。在 IAM 主控台左側導覽面板上,選擇 Roles (角色)。若要搜尋您在本教學中使用的 IAM 角色,在搜尋列中輸入 Amazon。在 Role name (角色名稱) 下,選取角色,然後選取 Delete (刪除)。請注意,此動作要求您的帳戶關聯管理員權限。

若要開啟 SageMaker 主控台,在 AWS Console 搜尋列中輸入 SageMaker,然後從搜尋結果中選擇 Amazon SageMaker。 在 SageMaker 主控台左窗格中,選擇 Notebook instances (筆記本執行個體),然後選取 SageMaker-Ground-Truth-Tutorial。對於 Actions (動作),選取 Stop (停止)。

再執行個體狀態變更為 Stopped (已停止) 後,選擇 Actions (動作),然後選取 Delete (刪除)。在確認快顯中選擇 Delete (刪除)。

結論

恭喜您! 您已完成標記用於機器學習的訓練資料教學。 

在本教學中,您使用了 Amazon SageMaker Ground Truth 和 Amazon Mechanical Turk 建置用於機器學習的訓練資料集。 

您可以按照下面的「後續步驟」部分繼續使用 Amazon SageMaker 進行機器學習之旅。

本頁對您是否有幫助?

自動建立 ML 模型

了解如何使用 AutoML 在不編寫程式碼的情況下開發 ML 模型。
下一步 »

部署經過訓練的模型

了解如何部署經過訓練的 ML 模型以進行推論。
下一步 »

尋找更多實作教學

探索其他機器學習教學以深入探究。
下一步 »