제퍼넷 로고

Amazon SageMaker Ground Truth 및 AWS Step Functions를 사용하여 다중 모드, 병렬 데이터 레이블 지정 워크 플로 자동화

시간

이것은 두 부분으로 구성된 시리즈 중 첫 번째입니다. 아마존 세이지 메이커 그라운드 진실 계층 적 레이블 지정 워크 플로우 및 대시 보드. 1 부에서는 다음을 사용하여 계층 적 레이블 분류를위한 다단계 레이블 지정 워크 플로를 만드는 방법을 살펴 봅니다. AWS 단계 함수. 2 부 (출시 예정)에서는 복잡한 워크 플로의 출력으로 생성 된 데이터 레이크에 대한 데이터 세트 주석 및 작업자 성능 메트릭을 분석하고 통찰력을 도출하기위한 대시 보드를 구축하는 방법을 살펴 봅니다.

데이터 레이블링에는 종종 여러 유형의 주석을 포함하기 위해 단일 데이터 개체가 필요합니다. 다중 유형, 2D 상자 (경계 상자), 선, 분할 마스크 등이 모두 단일 이미지에 있습니다. 또한 레이블이 지정된 데이터를 사용하여 고품질 ML (머신 러닝) 모델을 생성하려면 레이블의 품질을 모니터링하는 방법이 필요합니다. 레이블이 지정된 데이터를 감사하고 필요에 따라 조정하는 워크 플로를 만들어이를 수행 할 수 있습니다. 이 게시물에서는 자동차 데이터 세트를 사용하여 이러한 라벨링 문제를 모두 해결하는 솔루션을 소개하고이 솔루션을 모든 유형의 데이터 세트와 함께 사용하도록 확장 할 수 있습니다.

사용 사례에서는 움직이는 차량에서 하나 이상의 각도에서 촬영 된 많은 양의 자동차 비디오 데이터가 있다고 가정합니다 (예 : 일부 MOT (Multi-Object Tracking) 장면) 여러 유형의 주석을 사용하여 데이터에 주석을 달고 싶습니다. 이 데이터를 사용하여 순항 제어, 차선 유지 ML 알고리즘을 훈련 할 계획입니다. 당면한 작업을 감안할 때 고품질 레이블을 사용하여 모델을 학습시키는 것이 필수적입니다.

먼저 비디오 프레임에 추가 할 주석 유형을 식별해야합니다. 이 사용 사례에서 레이블을 지정할 가장 중요한 개체 중 일부는 프레임, 도로 경계 및 차선에있는 다른 차량입니다. 이를 위해 계층 적 레이블 분류, 각 동영상에 추가 할 라벨 유형과 라벨을 추가 할 순서를 정의합니다. 그만큼 Ground Truth 비디오 추적 라벨링 작업 경계 상자, 폴리 라인, 다각형 및 키포인트 주석을 지원합니다. 이 사용 사례에서 차량은 2 차원 상자를 사용하여 주석을 달거나 경계 상자, 도로 경계 및 원 곡선에는라고하는 일련의 유연한 선 세그먼트로 주석이 추가됩니다. 폴리선.

둘째, 라벨 품질을 보장하기위한 워크 플로를 설정해야합니다. 이를 위해 파이프 라인에서 생성 된 레이블이 모델 학습에 유용 할만큼 충분히 높은지 확인하는 감사 워크 플로를 만들 수 있습니다. 이 감사 워크 플로에서 주석을 감사 할 수있는 다단계 검토 파이프 라인을 구축하고 필요한 경우 주제 전문가 일 수있는 두 번째 검토자가 조정하여 라벨 정확도를 크게 향상시킬 수 있습니다.

데이터 세트 및 데이터 개체의 크기에 따라이 파이프 라인을 만들고 유지하는 데 필요한 시간과 리소스도 고려해야합니다. 이상적으로는이 일련의 레이블 지정 작업이 자동으로 시작되기를 원하며 입력 데이터 및 워크 플로를 지정하는 데 사람의 조작 만 필요합니다.

이 게시물에 사용 된 솔루션은 Ground Truth를 사용합니다. AWS 클라우드 포메이션, 단계 기능 및 아마존 DynamoDB 병렬 및 계층 적 방식으로 실행되는 일련의 레이블 지정 작업을 만듭니다. 계층 적 레이블 분류를 사용하여 다양한 양식 (폴리 라인 및 경계 상자)의 레이블 지정 작업을 만들고 주석 품질 및 최종 결과를 개선하기 위해 XNUMX 차 사람 검토 단계를 추가합니다.

이 게시물에서는 자동차 공간의 맥락에서 솔루션을 시연하지만이 일반 파이프 라인을 이미지, 비디오, 텍스트 등을 포함하는 레이블링 파이프 라인에 쉽게 적용 할 수 있습니다. 또한 확장 가능한 워크 플로를 시연하여 자동화 된 품질 검사를 추가하고 대규모 데이터 품질을 유지함으로써 사람이 검토해야하는 총 프레임 수를 줄일 수 있습니다. 이 사용 사례에서는 이러한 검사를 사용하여 비디오 개체 추적 주석과 같은 MOT 시계열 데이터에서 이상을 찾습니다.

자동차 장면에 대해 여러 유형의 주석을 생성하는 사용 사례를 살펴 봅니다. 특히, 우리는 입력 비디오 클립 당 XNUMX 개의 라벨링 작업을 실행합니다 : 차량의 초기 라벨링, 차선의 초기 라벨링, 별도의 품질 보증 인력과 함께 초기 작업 당 조정 작업.

Step Function 워크 플로우에서 다양한 확장 점을 보여줍니다. 자동화 된 품질 보증 검사. 이를 통해 작업이 완료된 후 클립 필터링이 가능하므로 적은 비용으로 고품질 주석을 얻을 수 있습니다.

이 솔루션을 구현하는 데 사용 된 AWS 서비스

이 솔루션은 여러 유형의 주석을 사용하여 비디오 프레임에 레이블을 지정하는 Ground Truth 레이블 지정 작업을 생성하고 관리합니다. Ground Truth는 비디오 프레임을 통해 비디오 데이터 세트를 기본적으로 지원합니다. 개체 추적 작업 유형.

이 작업 유형을 사용하면 작업자가 일련의 비디오 프레임에 주석을 생성 할 수 있으며 후속 프레임에서 경계 상자의 다음 위치를 예측하는 도구를 제공합니다. 또한 경계 상자 또는 폴리 라인과 같은 여러 주석 유형을 지원합니다. 레이블 범주 구성 파일 일자리 창출 중에 제공됩니다. 이 튜토리얼에서는 이러한 도구를 사용하여 차량 경계 상자 작업과 차선 폴리 라인 작업을 실행합니다.

Step Functions를 사용하여 라벨링 작업을 관리합니다. 이 솔루션은 레이블 지정 작업 생성을 추상화하므로 계층 적 레이블 분류를 사용하여 실행하려는 전체 워크 플로를 지정하고 모든 작업 관리가 Step Functions에서 처리됩니다.

이 솔루션은 AWS 계정에 배포 할 수있는 CloudFormation 템플릿을 사용하여 구현됩니다. 솔루션에 대한 인터페이스는 다음에서 관리하는 API입니다. 아마존 API 게이트웨이, 솔루션에 주석 작업을 제출 한 다음 Ground Truth 레이블 지정 작업으로 변환되는 기능을 제공합니다.

예상 비용

이 솔루션을 배포하고 사용하면 온 디맨드로 완전 관리 형 컴퓨팅 리소스 만 사용하기 때문에 인적 라벨링 비용 외에 최대 약 $ 20의 비용이 발생합니다. 아마존 단순 스토리지 서비스 (아마존 S3), AWS 람다, 아마존 세이지 메이커, API 게이트웨이, 아마존 단순 알림 서비스 (아마존 SNS), 아마존 단순 대기열 서비스 (아마존 SQS), AWS 접착제, Step Functions는 AWS 프리 티어, 추가 사용시 요금이 부과됩니다. 자세한 내용은 다음 가격 페이지를 참조하십시오.

Ground Truth 가격은 사용하는 인력 유형에 따라 다릅니다. Ground Truth의 새로운 사용자 인 경우 개인 인력을 사용하고 자신을 작업자로 포함하여 레이블 지정 작업 구성을 테스트하는 것이 좋습니다. 자세한 내용은 Amazon SageMaker Ground Truth 요금.

솔루션 개요

XNUMX 부로 구성된이 시리즈에서는 작업자가 Ground Truth를 사용하여 서로 다른 유형의 주석을 병렬로 추가하는 다단계 데이터 레이블 지정 워크 플로를 조정하기위한 파이프 라인을 구축 할 수있는 아키텍처 패턴에 대해 설명합니다. 또한 워크 플로에서 생성 된 데이터 세트 주석과 작업자 성능을 분석하는 방법도 알아 봅니다. 첫 번째 게시물은 연결 및 계층 적 레이블 분류에 Ground Truth를 사용하여 고급 ML 데이터 레이블 지정 워크 플로를 자동화하는 Step Functions 워크 플로를 다룹니다. 두 번째 게시물에서는 Ground Truth 및 작업자 메트릭의 데이터 세트 주석에 데이터 레이크를 구축하고 이러한 데이터 레이크를 사용하여 인사이트를 도출하거나 고급 분석을 사용하여 작업자 및 데이터 세트 주석 품질을 분석하는 방법을 설명합니다.

다음 다이어그램은 순차적 단계에서 레이블 지정 작업 그룹을 실행하는 데 사용할 수있는 계층 적 워크 플로우를 보여줍니다. 레벨, 단일 레벨의 각 레이블 지정 작업이 병렬로 실행됩니다.

솔루션은 두 가지 주요 부분으로 구성됩니다.

  1. API를 사용하여 오케스트레이션 워크 플로를 트리거합니다.
  2. 워크 플로의 개별 단계를 실행하여 라벨링 파이프 라인을 달성합니다.

API를 사용하여 오케스트레이션 워크 플로 트리거

이 솔루션에서 시작된 CloudFormation 템플릿은 API Gateway를 사용하여 배치 레이블 지정 작업을 트리거 할 엔드 포인트를 노출합니다. API Gateway 엔드 포인트에 게시 요청을 보낸 후 Lambda 함수를 실행하여 워크 플로를 트리거합니다.

다음 표에는 다중 레벨 레이블 지정 작업을 나타내는 배치 실행과 관련된 두 가지 주요 사용자 용 API가 포함되어 있습니다.

URL 요청 유형 상품 설명
{endpointUrl} / 배치 / 만들기 POST API는 새로운 라벨 작업 배치를 트리거합니다.
{endpointUrl} / batch / show 바로 API는 일괄 작업 실행의 현재 상태를 설명합니다.

워크 플로 실행

단계 조정을 위해 Step Functions를 관리 형 솔루션으로 사용합니다. 배치 작업 생성 API가 트리거되면 Lambda 함수가 다음과 같은 Step Functions 워크 플로를 트리거합니다. 주석 입력 처리가 시작됩니다.

단계를 더 자세히 논의하겠습니다.

변환 단계

첫 번째 단계는 데이터를 전처리하는 것입니다. 현재 구현은 노트북 입력을 내부 매니페스트 파일 데이터 유형 여러 단계에서 공유됩니다. 이 단계는 현재 복잡한 처리를 수행하지 않지만이 함수에 사용자 지정 데이터 전처리 논리를 추가하여이 단계를 추가로 사용자 지정할 수 있습니다. 예를 들어 데이터 세트가 원시 비디오로 인코딩 된 경우 별도의 노트북이 아닌 변환 내에서 프레임 분할 및 매니페스트 생성을 수행 할 수 있습니다. 또는이 솔루션을 사용하여 3D 포인트 클라우드 라벨링 파이프 라인을 생성하는 경우 카메라 및 LiDAR 외부 행렬을 사용하여 세계 좌표계에서 포즈 데이터를 추출하는 로직을 추가 할 수 있습니다.

TriggerLabelingFirstLevel

데이터 전처리가 완료되면 Ground Truth API 작업이 라벨링 작업 생성 레이블 지정 작업을 시작하는 데 사용됩니다. 이러한 라벨 지정 작업은 첫 번째 수준에 연결된 데이터 세트에 주석을 추가합니다.

CheckForFirstLevelComplete

이 단계는 FIRST_LEVEL 에서 트리거 된 Ground Truth 라벨링 작업 TriggerLabelingFirstStep. 작업 트리거가 완료되면이 단계는 생성 된 모든 레이블 지정 작업이 완료 될 때까지 기다립니다. 외부 리스너 Lambda 함수는 레이블 지정 작업의 상태를 모니터링하고 모든 보류중인 레이블 지정 작업이 완료되면 sendTokenSucess 다음 단계로 진행하기 위해이 상태에 신호를 보내는 API입니다. 실패 사례는 단계 정의에서 적절한 오류 절 및 시간 초과를 사용하여 처리됩니다.

SendSecondLevelSNSAndCheckResponse

이 단계는 첫 번째 수준 작업의 출력에 대해 후 처리를 수행합니다. 예를 들어, 프레임의 10 % 만 조정 작업에 보내는 것이 요구 사항 인 경우 첫 번째 작업의 출력 집합을 필터링하여 여기에서이 논리를 구현할 수 있습니다.

TriggerLabelingSecondLevel

XNUMX 단계 데이터 후 처리가 완료되면 CreateLabelingJobs 레이블링 작업을 시작하여 두 번째 수준에서 주석을 완료하는 데 사용됩니다. 이 단계에서 개인 인력은 XNUMX 단계 레이블 지정 작업의 주석 품질을 검토하고 필요에 따라 주석을 업데이트합니다.

CheckForSecondLevelComplete

이 단계는 다음과 같은 대기 단계입니다. CheckForFirstLevelComplete, 그러나이 단계는 단순히 두 번째 수준에서 생성 된 작업을 기다립니다.

SendThirdLevelSNSAndCheckResponse

이 단계는 다음과 같은 후 처리 단계입니다. SendSecondLevelSNSAndCheckResponse, 그러나이 단계는 두 번째 수준 출력의 후 처리를 수행하고 세 번째 수준 레이블 작업에 대한 입력으로 공급합니다.

TriggerLabelingThirdLevel

이것은 다음과 같은 논리입니다. TriggerLabelingSecondLevel, 그러나 세 번째 수준으로 주석이 달린 레이블 지정 작업이 트리거됩니다. 이 단계에서 개인 인력은 XNUMX 단계 레이블 지정 작업의 품질을 위해 주석을 업데이트합니다.

CopyLogsAndSendBatch완료됨

이 Lambda 함수는 배치가 완료되었음을 사용자에게 알리기 위해 SNS 메시지를 기록하고 전송합니다. 또한 실행할 수있는 사후 처리 논리에 대한 자리 표시 자이기도합니다. 일반적인 사후 처리에는 레이블이 지정된 데이터를 고객 별 데이터 형식과 호환되는 형식으로 변환하는 작업이 포함됩니다.

사전 조건

시작하기 전에 다음 전제 조건이 있는지 확인하십시오.

  • An AWS 계정.
  • 공책 AWS 자격 증명 및 액세스 관리 이 연습을 완료하는 데 필요한 권한이있는 (IAM) 역할. IAM 역할에는 필요한 권한이 연결되어 있어야합니다. 세분화 된 권한이 필요하지 않은 경우 다음 AWS 관리 형 정책을 연결하십시오.
    • AmazonS3FullAccess
    • AmazonAPIGatewayInvokeFullAccess
    • AmazonSageMakerFullAccess
  • Ground Truth, AWS CloudFormation 및 Step Functions에 대한 지식.
  • SageMaker 인력. 이 게시물에서는 개인 인력을 사용합니다. SageMaker 콘솔에서 인력을 생성 할 수 있습니다. 참고 아마존 코 그니 토 인력이 생성 된 후 사용자 풀 식별자 및 앱 클라이언트 식별자. 이러한 값을 사용하여 레이블 지정자 그룹을 나타내는 작업 팀을 생성 할 인력을 CloudFormation 스택 배포에 알립니다. 이러한 값은 개인 인력 요약 직원을 만든 후 또는 전화를 걸면 콘솔의 설명작업팀.

다음 GIF는 개인 인력을 생성하는 방법을 보여줍니다. 단계별 지침은 다음을 참조하십시오. 인력 레이블 지정 페이지를 사용하여 Amazon Cognito 인력 생성.

CloudFormation 스택 시작

이제 솔루션의 구조를 확인 했으므로 예제 워크 플로를 실행할 수 있도록 계정에 배포합니다. 모든 배포 단계는 AWS CloudFormation에서 관리하며 Lambda, Step Functions, DynamoDB 및 API Gateway에 리소스를 생성합니다.

AWS 리전에서 스택을 시작할 수 있습니다. us-east-1 CloudFormation 콘솔에서 발사 스택:

CloudFormation 콘솔에서 다음으로, 다음 템플릿 매개 변수를 수정하여 솔루션을 사용자 지정합니다.

SageMaker 콘솔에서 CognitoUserPoolClientId 및 CognitoUserPoolId를 찾을 수 있습니다.

  • CognitoUserPoolClientId : 개인 인력의 앱 클라이언트 ID입니다.
  • CognitoUserPoolId : 개인 인력과 연관된 사용자 풀의 ID입니다.

콘솔에서 이러한 값을 찾으려면 다음을 수행하십시오.

  1. SageMaker 콘솔을 엽니 다. https://console.aws.amazon.com/sagemaker/
  2. 선택 라벨링 인력 탐색 창에서
  3. 선택 프라이빗 투어
  4. 값을 사용하십시오. 개인 작업 팀 요약 사용 앱 클라이언트 CognitoUserPoolClientId 및 사용 Amazon Cognito 사용자 풀 위한 CognitoUserPoolId.

이 자습서에서는 다음 매개 변수에 기본값을 사용할 수 있습니다.

  • GlueJobTriggerCron : 보고 AWS Glue cron 작업을 예약 할 때 사용할 Cron 표현식입니다. SageMaker Ground Truth 및 작업자 성능 지표로 생성 된 주석의 결과는 Amazon QuickSight에서 대시 보드를 생성하는 데 사용됩니다. 이에 대해서는 두 번째 부분에서 자세히 설명합니다. SageMaker 주석 및 작업자 성능 지표의 출력은 AWS Glue로 데이터를 처리 한 후 Athena 쿼리에 표시됩니다. 기본적으로 AWS Glue 크론 작업은 XNUMX 시간마다 실행됩니다.
  • JobCompletionTimeout : 레이블 지정 작업을 실패한 것으로 처리하고 BatchError 상태로 이동하기 전에 대기하는 시간 (초)입니다.
  • 로깅 수준 : 내부적으로 사용되며 무시할 수 있습니다. 로그의 상세도를 변경하기위한 로깅 수준입니다. DEBUG 및 PROD 값을 허용합니다.

접두사: 라벨 지정 작업 및 작업자 측정 항목을 만들고 관리하는 데 사용되는 리소스의 이름을 지정할 때 사용할 접두사입니다.

다른 AWS 리전에서 스택을 시작하려면의 README에있는 지침을 사용하십시오. GitHub 저장소.

솔루션을 배포 한 후 두 개의 새로운 작업 팀이 이전에 생성 한 개인 인력에 있습니다. smgt-workflow-first-levelsmgt-workflow-second-level. 재정의가 지정되지 않은 경우 솔루션에서 사용하는 기본 작업 팀입니다. smgt-workflow-second-level 작업 팀은 XNUMX 단계 및 XNUMX 단계 작업에 레이블을 지정하는 데 사용됩니다. 솔루션에서 만든 레이블 지정 작업을 보려면 두 작업 팀에 자신을 추가해야합니다. 개인 작업 팀에 자신을 추가하는 방법을 알아 보려면 작업자 추가 또는 제거.

또한 API Gateway 콘솔로 이동하여 접두사가 붙은 배포 된 API를 찾아야합니다. smgt-workflow ID를 기록해 둡니다. 노트북은 호출 할 API URL을 결정할 수 있도록이 ID를 참조해야합니다.

노트북 시작

솔루션을 계정에 배포 한 후 노트북을 시작하여 상호 작용하고 새 워크 플로를 시작할 준비가 된 것입니다. 이 섹션에서는 다음 단계를 안내합니다.

  1. 노트북 인스턴스를 설정하고 액세스합니다.
  2. 예제 데이터 세트를 가져옵니다.
  3. Ground Truth 입력 파일을 준비합니다.

SageMaker 노트북 인스턴스 설정

이 예제 노트북에서는 차량 클래스와 차선 클래스로 구성된 간단한 분류를 Ground Truth 레이블 범주 구성 파일에 매핑하는 방법을 알아 봅니다. 라벨 카테고리 구성 파일은 작업자가 이미지에 주석을 추가하는 데 사용하는 라벨을 정의하는 데 사용됩니다. 다음으로 CloudFormation 템플릿을 사용하여 파이프 라인을 실행하는 솔루션을 시작하고 구성하는 방법을 알아 봅니다. 예를 들어 작업 유형의 다른 조합에 대한 레이블 지정을 실행하도록 일괄 생성 API 호출을 사용자 지정하여이 코드를 추가로 사용자 지정할 수도 있습니다.

노트북 인스턴스를 생성하고이 게시물에 사용 된 노트북에 액세스하려면 다음 단계를 완료하십시오.

  1. 노트북 인스턴스 생성 다음 매개 변수를 사용하십시오.
    1. ml.t2.medium을 사용하여 노트북 인스턴스를 시작합니다.
    2. ML 스토리지 볼륨 크기를 10GB 이상으로 늘리십시오.
    3. 사전 요구 사항에 설명 된 노트북 IAM 역할을 선택합니다. 이 역할을 통해 노트북은 데이터 세트를 Amazon S3에 업로드하고 솔루션 API를 호출 할 수 있습니다.
  2. Jupyter Lab 또는 Jupyter를 열어 노트북 인스턴스에 액세스.
  3. Jupyter에서 SageMaker 예제 Jupyter Lab에서 SageMaker 아이콘을 선택합니다.
  4. 왼쪽 메뉴에서 Ground Truth Labeling 채용 정보 그런 다음 직업을 선택하십시오 sagemaker_ground_truth_workflows.ipynb.
  5. Jupyter를 사용하는 경우 노트북을 인스턴스에 복사하고 실행합니다. Jupyter Lab에있는 경우 사본 만들기.

예제 데이터 세트 얻기

데이터 세트를 설정하려면 다음 단계를 완료하세요.

  1. 다음을 사용하여 MOT17.zip을 다운로드하십시오. 데이터 세트 다운로드 노트북의 섹션.

이 다운로드는 약 5GB이며 몇 분 정도 걸립니다.

  1. 노트북을 사용하여 MOT17.zip의 압축을 풉니 다. 데이터 세트 압축 해제
  2. 아래의 S3에 데이터 복사 헤더에서 셀을 실행하여 비디오 프레임 데이터 세트 한 세트를 Amazon S3에 복사합니다.

Ground Truth 입력 파일 준비

솔루션을 사용하려면 매니페스트 파일을 만들어야합니다. 이 파일은 데이터 세트가 어디에 있는지 Ground Truth에 알려줍니다. 또한 레이블 이름을 설명하는 두 개의 레이블 범주 구성 파일과 각각에 사용할 레이블 지정 도구 (경계 상자 또는 폴리 라인)가 필요합니다.

  1. 아래에서 세포 실행 매니페스트 생성 데이터 세트에서 비디오의 프레임 목록을 가져옵니다. 비디오 프레임 속도의 절반으로 150 프레임을 예로 들었습니다.
  2. 아래에서 셀 계속 실행 매니페스트 생성 비디오 프레임을 설명하는 시퀀스 파일을 만든 다음 시퀀스 파일을 참조하는 매니페스트 파일을 만듭니다.
  3. 아래에서 셀 실행 레이블 범주 구성 파일 생성 두 개의 새 파일, 즉 경계 상자 도구를 사용하는 차량 레이블 구성 파일과 폴리 라인 도구를 사용하는 차선 레이블 구성 파일을 만듭니다.
  4. 매니페스트 파일을 복사하고 범주 구성 파일에 레이블을 지정합니다. S3로 데이터 보내기

이제 라벨링 작업에 대한 모든 입력을 준비했으며 솔루션 작동을 시작할 준비가되었습니다.

Ground Truth 비디오 프레임 레이블 지정 작업 및 체인에 대한 자세한 내용은 다음 참조를 참조하십시오.

예제 워크 플로 실행

이 섹션에서는 자동차 데이터 세트에서 예제 워크 플로를 실행하는 단계를 안내합니다. 다중 양식 워크 플로우를 생성하고 초기 및 감사 라벨링을 모두 수행 한 다음 완성 된 주석을 확인합니다.

워크 플로 배치 만들기

이 솔루션은 Ground Truth 라벨링 작업의 워크 플로를 조정하여 비디오 개체 추적 경계 상자 작업과 폴리 라인 작업을 모두 실행하고 초기 라벨링 후 자동으로 조정 작업을 생성합니다. 이 워크 플로 배치는 batch_create 솔루션에 사용 가능한 API.

아래에서 셀 실행 배치 생성 데모 노트북에서. 그러면 입력 매니페스트 및 레이블 범주 구성 S3 URI가 새 워크 플로 배치로 전달됩니다.

셀은 새로 생성 된 워크 플로 배치의 ID를 출력해야합니다. 예를 들면 다음과 같습니다.

Batch processor successfully triggered with BatchId : nb-ccb0514c

라벨링 작업의 첫 번째 라운드 완료

작업자가 라벨링을 완료하는 것을 시뮬레이션하기 위해 XNUMX 단계 Ground Truth 작업 팀의 작업자로 로그인하고 라벨링 작업을 완료합니다.

  1. 아래에서 셀 실행 작업자 포털에 로그인 작업자 포털에 로그인 할 수있는 링크를 가져옵니다.

솔루션에서 생성 된 XNUMX 단계 및 XNUMX 단계 작업 팀에 자신을 초대 한 경우 이미 이메일 주소로 초대가 발송되었을 것입니다.

  1. 로그인하고 작업자 포털에 작업이 나타날 때까지 기다립니다.

두 개의 작업을 사용할 수 있어야합니다. 하나는 vehicle 그리고 하나는 lane, 워크 플로 일괄 생성 중에 생성 한 두 가지 작업에 해당합니다.

  1. 각 작업을 열고 이미지 프레임을 선택하고 끌어서 더미 레이블을 추가합니다.
  2. 왼쪽 메뉴에서 문의하기 각 작업에.

XNUMX 차 라벨링 작업 완료

워크 플로는 각 첫 번째 수준 작업에 대해 조정 작업이 자동으로 실행되도록 지정했습니다. 이제 두 번째 라벨링 작업을 완료했습니다.

  1. 여전히 작업자 포털에서 작업을 기다립니다. vehicle-auditlane-audit 표시하는.
  2. 작업자 포털에서 각 작업을 열고 이전 수준의 레이블이 계속 표시되는지 확인합니다.

이러한 조정 작업은 다른 작업 팀의보다 고도로 훈련 된 품질 보증 그룹에서 수행 할 수 있습니다.

  1. 원하는대로 조정하고 패스 or 실패 각 주석에.
  2. 완료되면 문의하기.

완성 된 주석보기

batch show API를 실행하여 완료된 워크 플로우 배치에 대한 세부 정보를 볼 수 있습니다.

  1. 아래에서 셀 실행 배치 쇼 데모.

이렇게하면 전체 워크 플로 실행 일괄 처리에 대한 솔루션의 데이터베이스를 쿼리하고 일괄 처리가 완료되면 일괄 ID를 출력해야합니다.

  1. 아래에서 셀을 실행하여 배치에 대한보다 구체적인 세부 정보를 얻을 수 있습니다. 배치 세부 쇼 데모.

이는 시스템에서 배치의 ID를 가져 와서 생성 된 각 작업에 대한 상태 정보와 모든 입력 및 출력 매니페스트의 위치를 ​​반환합니다.

  1. 필드 복사 및 입력 jobOutputS3Url 작업에 대해 확인하고 해당 작업에 대한 매니페스트 파일이 다운로드되었는지 확인합니다.

이 파일에는 입력 데이터 시퀀스에 대한 참조와 각 시퀀스에 대한 출력 주석의 S3 URI가 포함되어 있습니다.

최종 결과

파이프 라인의 모든 레이블 지정 작업이 완료되면 SNS 메시지가 기본 상태 SNS 주제. 당신 SNS 주제 구독 가능 솔루션의 기능을 확인하기 위해 이메일 주소를 사용합니다. 메시지에는 배치 생성 중에 사용 된 배치 ID, 배치 완료에 대한 메시지 및 동일한 정보가 포함됩니다. batch/show API는 batchInfo 키. 이 메시지를 구문 분석하여 파이프 라인의 두 번째 수준에서 완료된 레이블 지정 작업에 대한 메타 데이터를 추출 할 수 있습니다.

{ "batchId": "nb-track-823f6d3e", "message": "Batch processing has completed successfully.", "batchInfo": { "batchId": "nb-track-823f6d3e", "status": "COMPLETE", "inputLabelingJobs": [ { "jobName": "nb-track-823f6d3e-vehicle", "taskAvailabilityLifetimeInSeconds": "864000", "inputConfig": { "inputManifestS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-input/tracking_manifests/MOT17-13-SDP.manifest" }, "jobModality": "VideoObjectTracking", "taskTimeLimitInSeconds": "604800", "maxConcurrentTaskCount": "100", "workteamArn": "arn:aws:sagemaker:us-west-2:322552456788:workteam/private-crowd/smgt-workflow-1-first-level", "jobType": "BATCH", "jobLevel": "1", "labelCategoryConfigS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-input/tracking_manifests/vehicle_label_category.json" }, { "jobName": "nb-track-823f6d3e-lane", "taskAvailabilityLifetimeInSeconds": "864000", "inputConfig": { "inputManifestS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-input/tracking_manifests/MOT17-13-SDP.manifest" }, "jobModality": "VideoObjectTracking", "taskTimeLimitInSeconds": "604800", "maxConcurrentTaskCount": "100", "workteamArn": "arn:aws:sagemaker:us-west-2:322552456788:workteam/private-crowd/smgt-workflow-1-first-level", "jobType": "BATCH", "jobLevel": "1", "labelCategoryConfigS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-input/tracking_manifests/lane_label_category.json" }, { "jobName": "nb-track-823f6d3e-vehicle-audit", "taskAvailabilityLifetimeInSeconds": "864000", "inputConfig": { "chainFromJobName": "nb-track-823f6d3e-vehicle" }, "jobModality": "VideoObjectTrackingAudit", "taskTimeLimitInSeconds": "604800", "maxConcurrentTaskCount": "100", "workteamArn": "arn:aws:sagemaker:us-west-2:322552456788:workteam/private-crowd/smgt-workflow-1-first-level", "jobType": "BATCH", "jobLevel": "2" }, { "jobName": "nb-track-823f6d3e-lane-audit", "taskAvailabilityLifetimeInSeconds": "864000", "inputConfig": { "chainFromJobName": "nb-track-823f6d3e-lane" }, "jobModality": "VideoObjectTrackingAudit", "taskTimeLimitInSeconds": "604800", "maxConcurrentTaskCount": "100", "workteamArn": "arn:aws:sagemaker:us-west-2:322552456788:workteam/private-crowd/smgt-workflow-1-first-level", "jobType": "BATCH", "jobLevel": "2" } ], "firstLevel": { "status": "COMPLETE", "numChildBatches": "2", "numChildBatchesComplete": "2", "jobLevels": [ { "batchId": "nb-track-823f6d3e-first_level-nb-track-823f6d3e-lane", "batchStatus": "COMPLETE", "labelingJobName": "nb-track-823f6d3e-lane", "labelAttributeName": "nb-track-823f6d3e-lane-ref", "labelCategoryS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-input/tracking_manifests/lane_label_category.json", "jobInputS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-input/tracking_manifests/MOT17-13-SDP.manifest", "jobInputS3Url": "https://smgt-workflow-1-322552456788-us-west-2-batch-input.s3.amazonaws.com/tracking_manifests/MOT17-13-SDP.manifest?...", "jobOutputS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-processing/batch_manifests/VideoObjectDetection/nb-track-823f6d3e-first_level-nb-track-823f6d3e-lane/output/nb-track-823f6d3e-lane/manifests/output/output.manifest", "jobOutputS3Url": "https://smgt-workflow-1-322552456788-us-west-2-batch-processing.s3.amazonaws.com/batch_manifests/VideoObjectDetection/nb-track-823f6d3e-first_level-nb-track-823f6d3e-lane/output/nb-track-823f6d3e-lane/manifests/output/output.manifest?..." }, { "batchId": "nb-track-823f6d3e-first_level-nb-track-823f6d3e-vehicle", "batchStatus": "COMPLETE", "labelingJobName": "nb-track-823f6d3e-vehicle", "labelAttributeName": "nb-track-823f6d3e-vehicle-ref", "labelCategoryS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-input/tracking_manifests/vehicle_label_category.json", "jobInputS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-input/tracking_manifests/MOT17-13-SDP.manifest", "jobInputS3Url": "https://smgt-workflow-1-322552456788-us-west-2-batch-input.s3.amazonaws.com/tracking_manifests/MOT17-13-SDP.manifest?...", "jobOutputS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-processing/batch_manifests/VideoObjectTracking/nb-track-823f6d3e-first_level-nb-track-823f6d3e-vehicle/output/nb-track-823f6d3e-vehicle/manifests/output/output.manifest", "jobOutputS3Url": "https://smgt-workflow-1-322552456788-us-west-2-batch-processing.s3.amazonaws.com/batch_manifests/VideoObjectTracking/nb-track-823f6d3e-first_level-nb-track-823f6d3e-vehicle/output/nb-track-823f6d3e-vehicle/manifests/output/output.manifest?..." } ] }, "secondLevel": { "status": "COMPLETE", "numChildBatches": "2", "numChildBatchesComplete": "2", "jobLevels": [ { "batchId": "nb-track-823f6d3e-second_level-nb-track-823f6d3e-vehicle-audit", "batchStatus": "COMPLETE", "labelingJobName": "nb-track-823f6d3e-vehicle-audit", "labelAttributeName": "nb-track-823f6d3e-vehicle-audit-ref", "labelCategoryS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-processing/label_category_input/nb-track-823f6d3e-second_level-nb-track-823f6d3e-vehicle-audit/category-file.json", "jobInputS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-processing/batch_manifests/VideoObjectTracking/nb-track-823f6d3e-first_level-nb-track-823f6d3e-vehicle/output/nb-track-823f6d3e-vehicle/manifests/output/output.manifest", "jobInputS3Url": "https://smgt-workflow-1-322552456788-us-west-2-batch-processing.s3.amazonaws.com/batch_manifests/VideoObjectTracking/nb-track-823f6d3e-first_level-nb-track-823f6d3e-vehicle/output/nb-track-823f6d3e-vehicle/manifests/output/output.manifest?...", "jobOutputS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-processing/batch_manifests/VideoObjectTrackingAudit/nb-track-823f6d3e-second_level-nb-track-823f6d3e-vehicle-audit/output/nb-track-823f6d3e-vehicle-audit/manifests/output/output.manifest", "jobOutputS3Url": "https://smgt-workflow-1-322552456788-us-west-2-batch-processing.s3.amazonaws.com/batch_manifests/VideoObjectTrackingAudit/nb-track-823f6d3e-second_level-nb-track-823f6d3e-vehicle-audit/output/nb-track-823f6d3e-vehicle-audit/manifests/output/output.manifest?..." }, { "batchId": "nb-track-823f6d3e-second_level-nb-track-823f6d3e-lane-audit", "batchStatus": "COMPLETE", "labelingJobName": "nb-track-823f6d3e-lane-audit", "labelAttributeName": "nb-track-823f6d3e-lane-audit-ref", "labelCategoryS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-processing/label_category_input/nb-track-823f6d3e-second_level-nb-track-823f6d3e-lane-audit/category-file.json", "jobInputS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-processing/batch_manifests/VideoObjectDetection/nb-track-823f6d3e-first_level-nb-track-823f6d3e-lane/output/nb-track-823f6d3e-lane/manifests/output/output.manifest", "jobInputS3Url": "https://smgt-workflow-1-322552456788-us-west-2-batch-processing.s3.amazonaws.com/batch_manifests/VideoObjectDetection/nb-track-823f6d3e-first_level-nb-track-823f6d3e-lane/output/nb-track-823f6d3e-lane/manifests/output/output.manifest?...", "jobOutputS3Uri": "s3://smgt-workflow-1-322552456788-us-west-2-batch-processing/batch_manifests/VideoObjectDetectionAudit/nb-track-823f6d3e-second_level-nb-track-823f6d3e-lane-audit/output/nb-track-823f6d3e-lane-audit/manifests/output/output.manifest", "jobOutputS3Url": "https://smgt-workflow-1-322552456788-us-west-2-batch-processing.s3.amazonaws.com/batch_manifests/VideoObjectDetectionAudit/nb-track-823f6d3e-second_level-nb-track-823f6d3e-lane-audit/output/nb-track-823f6d3e-lane-audit/manifests/output/output.manifest?..." } ] }, "thirdLevel": { "status": "COMPLETE", "numChildBatches": "0", "numChildBatchesComplete": "0", "jobLevels": [] } }, "token": "arn:aws:states:us-west-2:322552456788:execution:smgt-workflow-1-batch-process:nb-track-823f6d3e-8432b929", "status": "SUCCESS"
}

각 작업 메타 데이터 Blob 내에서 jobOutputS3Url 필드에는이 특정 작업의 출력 매니페스트에 액세스하기위한 미리 서명 된 URL이 포함됩니다. 출력 매니페스트에는 증강 매니페스트 형식의 데이터 라벨링 결과가 포함되며,이를 사용하여 JSON 객체를 인덱싱하여 주석을 검색하기 위해 구문 분석 할 수 있습니다. <jobName>-ref. 이 필드는 주어진 비디오 클립에 대한 모든 주석이 포함 된 S3 위치를 가리 킵니다.

{ "source-ref": "s3://smgt-workflow-1-322552456788-us-west-2-batch-input/tracking_manifests/MOT17-13-SDP_seq.json", "nb-track-93aa7d01-vehicle-ref": "s3://smgt-workflow-1-322552456788-us-west-2-batch-processing/batch_manifests/VideoObjectTracking/nb-track-93aa7d01-first_level-nb-track-93aa7d01-vehicle/output/nb-track-93aa7d01-vehicle/annotations/consolidated-annotation/output/0/SeqLabel.json", "nb-track-93aa7d01-vehicle-ref-metadata": { "class-map": {"0": "Vehicle"}, "job-name": "labeling-job/nb-track-93aa7d01-vehicle", "human-annotated": "yes", "creation-date": "2021-04-05T17:43:02.469000", "type": "groundtruth/video-object-tracking", }, "nb-track-93aa7d01-vehicle-audit-ref": "s3://smgt-workflow-1-322552456788-us-west-2-batch-processing/batch_manifests/VideoObjectTrackingAudit/nb-track-93aa7d01-second_level-nb-track-93aa7d01-vehicle-audit/output/nb-track-93aa7d01-vehicle-audit/annotations/consolidated-annotation/output/0/SeqLabel.json", "nb-track-93aa7d01-vehicle-audit-ref-metadata": { "class-map": {"0": "Vehicle"}, "job-name": "labeling-job/nb-track-93aa7d01-vehicle-audit", "human-annotated": "yes", "creation-date": "2021-04-05T17:55:33.284000", "type": "groundtruth/video-object-tracking", "adjustment-status": "unadjusted", },
}

예를 들어 경계 상자 작업의 경우 SeqLabel.json 파일에는 주석이 달린 각 프레임에 대한 경계 상자 주석이 포함되어 있습니다 (이 경우 첫 번째 프레임에만 주석이 추가됨).

{ "tracking-annotations": [ { "annotations": [ { "height": 66, "width": 81, "top": 547, "left": 954, "class-id": "0", "label-category-attributes": {}, "object-id": "3c02d0f0-9636-11eb-90fe-6dd825b8de95", "object-name": "Vehicle:1" }, { "height": 98, "width": 106, "top": 545, "left": 1079, "class-id": "0", "label-category-attributes": {}, "object-id": "3d957ee0-9636-11eb-90fe-6dd825b8de95", "object-name": "Vehicle:2" } ], "frame-no": "0", "frame": "000001.jpg", "frame-attributes": {} } ]
}

일괄 완료 SNS 메시지에는 병렬로 시작된 작업의 모든 출력 매니페스트 파일이 포함되어 있으므로이 메시지를 기반으로 주석의 모든 사후 처리를 수행 할 수 있습니다. 예를 들어 차량 경계 상자와 차선 주석을 결합하는 이러한 주석에 대한 특정 직렬화 형식이있는 경우 차선 작업과 차량 작업의 출력 매니페스트를 가져온 다음 프레임 번호를 기준으로 병합하고 원하는 형식으로 변환 할 수 있습니다. 최종 형식.

Ground Truth 출력 데이터 형식에 대한 자세한 내용은 다음을 참조하십시오. 출력 데이터.

정리

향후 요금이 발생하지 않도록하려면 정리 S3 객체 및 CloudFormation 스택을 포함한 모든 리소스를 삭제하려면 노트북의 섹션을 참조하십시오. 삭제가 완료되면 현재 노트북 스크립트를 호스팅하는 노트북 인스턴스를 중지하고 삭제해야합니다.

결론

이 XNUMX 부작 시리즈는 다단계 데이터 라벨링 파이프 라인, 조정 작업, 해당 데이터 세트 주석 및 작업자 측정 항목과 업데이트 된 대시 보드에 대한 데이터 레이크로 구성된 고급 데이터 라벨링 워크 플로를 구축하기위한 참조 아키텍처를 제공합니다.

이 게시물에서는 비디오 프레임 데이터를 가져오고 워크 플로를 트리거하여 여러 Ground Truth 레이블 지정 작업을 실행하여 두 가지 유형의 주석 (경계 상자 및 폴리 라인)을 생성하는 방법을 배웠습니다. 또한 파이프 라인을 확장하여 레이블이 지정된 데이터 세트를 감사 및 확인하는 방법과 감사 된 결과를 검색하는 방법도 배웠습니다. 마지막으로 BatchShow API를 사용하여 배치 작업의 현재 진행 상황을 참조하는 방법을 살펴 보았습니다.

Ground Truth 데이터 세트 주석 및 Ground Truth의 작업자 메트릭에 대한 데이터 레이크에 대한 자세한 내용은 다음을 확인하십시오. Ground Truth 블로그 이 시리즈의 두 번째 블로그 게시물 (출시 예정).

사용해보기 수첩 추가 작업 또는 감사 단계를 추가하거나 작업의 데이터 양식을 수정하여 입력 데이터 세트에 맞게 사용자 정의합니다. 추가 사용자 정의 해결책 다음을 포함 할 수 있지만 이에 국한되지는 않습니다.

  • 시맨틱 분할 마스크 또는 키포인트와 같은 추가 유형의 주석 추가
  • Step Functions 워크 플로에 자동화 된 품질 보증 및 필터링을 추가하여 낮은 품질의 주석 만 다음 수준의 검토로 전송합니다.
  • 좀 더 전문화 된 리뷰 유형을 추가하기 위해 세 번째 또는 네 번째 수준의 품질 리뷰 추가

이 솔루션은 Step Functions 위에 서버리스 기술을 사용하여 구축되어 다양한 애플리케이션에 고도로 맞춤화 및 적용 할 수 있습니다.


저자에 관하여

 비 디아 사가르 라비 파티 딥 러닝 아키텍트는 Amazon ML 솔루션 랩에서 그는 대규모 분산 시스템에 대한 그의 방대한 경험과 기계 학습에 대한 열정을 활용하여 다양한 산업 분야의 AWS 고객이 AI 및 클라우드 채택을 가속화 할 수 있도록 지원합니다. 이전에는 Amazon Connectivity Services의 기계 학습 엔지니어로 개인화 및 예측 유지 관리 플랫폼 구축을 도왔습니다.

제레미 펠트 라코 Amazon Web Services의 Amazon ML Solutions Lab의 소프트웨어 개발 엔지니어입니다. 그는 컴퓨터 비전, 로봇 공학 및 기계 학습에 대한 배경을 사용하여 AWS 고객이 AI 채택을 가속화 할 수 있도록 지원합니다.

장재성 소프트웨어 개발 엔지니어입니다. 그의 열정은 비즈니스 실행을 보장하기 위해 AI 솔루션 및 오케스트레이션 기술을 사용하여 수동 프로세스를 자동화하는 데 있습니다.

탈리아 초프라 기계 학습 및 인공 지능을 전문으로하는 AWS의 기술 작가입니다. 그녀는 AWS의 여러 팀과 협력하여 Amazon SageMaker, MxNet 및 AutoGluon을 사용하는 고객을위한 기술 문서 및 자습서를 만듭니다.

코인 스마트. 유로파 최고의 비트 코인-보르 스
출처 : https://aws.amazon.com/blogs/machine-learning/automate-multi-modality-parallel-data-labeling-workflows-with-amazon-sagemaker-ground-truth-and-aws-step-functions/

spot_img

최신 인텔리전스

spot_img