제퍼넷 로고

Amazon SageMaker Ground Truth를 사용하여 혼합 소스, 산업 데이터 세트에 레이블 지정

시간

모든 종류의지도 머신 러닝 (ML) 알고리즘을 사용하기 전에 데이터에 레이블을 지정해야합니다. 아마존 세이지 메이커 그라운드 진실 이 작업을 단순화하고 가속화합니다. Ground Truth는 미리 정의 된 템플릿을 사용하여 이미지의 내용을 분류하는 라벨 or 동영상 or 기존 레이블 확인. Ground Truth를 사용하면 코드를 작성하지 않고도 텍스트, 비디오 또는 이미지와 같은 다양한 종류의 데이터에 레이블을 지정하는 워크 플로를 정의 할 수 있습니다. 이러한 템플릿은 레이블을 지정할 데이터가 단일 형식이거나 단일 소스 인 광범위한 사용 사례에 적용 할 수 있지만 산업 워크로드에는 종종 다른 소스와 다른 형식의 데이터에 레이블을 지정해야합니다. 이 게시물에서는 Ground Truth를 사용하여 사용자 정의되고 복잡한 혼합 소스 라벨링 워크 플로를 구현하는 방법을 보여주기 위해 센서 판독 값과 이미지로 구성된 산업용 용접 데이터의 사용 사례를 살펴 봅니다.

이 게시물에서는 AWS 클라우드 포메이션 이 레이블 지정 워크 플로 구현을 시작하기위한 기본 리소스를 프로비저닝하기위한 AWS 계정 템플릿. 다음 주제에 대한 실무 경험을 제공합니다.

  • Ground Truth에서 개인 라벨링 인력 만들기
  • 다음 구성 요소와 함께 Ground Truth 프레임 워크를 사용하여 사용자 지정 레이블 지정 작업 만들기 :
    • 사전 라벨링 디자인 AWS 람다 다른 소스에서 데이터를 가져와 필요한 경우 형식 변환을 실행하는 함수
    • Lambda 사전 레이블 지정 함수로 생성 된 데이터를 동적으로로드하는 크라우드 템플릿을 사용하여 Ground Truth에서 사용자 지정 레이블 지정 사용자 인터페이스 구현
    • 사용자 지정 사후 레이블 지정 Lambda 함수를 사용하여 여러 작업자의 레이블 통합
  • 단일 항목으로 레이블을 지정해야하는 여러 데이터를 표시하기 위해 사용자 정의 인터페이스가있는 Ground Truth를 사용하여 사용자 정의 레이블 지정 작업 구성

구현에 대해 자세히 알아보기 전에 사용 사례에 대한 소개를 제공하고 Ground Truth 사용자 지정 레이블 지정 프레임 워크가 매우 복잡한 레이블 지정 워크 플로를 쉽게 구현하는 방법을 보여줍니다. 이 게시물을 최대한 활용하려면 CloudFormation 템플릿을 배포 할 수있는 AWS 계정이 필요합니다. 이 게시물을 팔로우하기 위해 귀하의 계정에 발생한 총 비용은 $ 1 미만입니다.

산업용 용접 품질 관리를위한 복잡한 데이터 세트 라벨링

이 게시물에서 논의 된 메커니즘은 일반적으로 데이터 형식이 다른 모든 라벨링 워크 플로에 적용 가능하지만 용접 품질 관리 사용 사례의 데이터를 사용합니다. 이 사용 사례에서 용접 프로세스를 실행하는 제조 회사는 용접 결과가 정상인지 또는 프로세스 중에 많은 이상이 발생했는지 예측하려고합니다. 지도 된 ML 모델을 사용하여이를 구현하려면 ML 모델을 학습하는 데 사용할 레이블이 지정된 데이터 (예 : 프로세스가 정상인지 여부를 나타 내기 위해 레이블이 지정되어야하는 용접 프로세스를 나타내는 데이터 세트)를 얻어야합니다. Ground Truth를 사용하여이 라벨링 프로세스 (ML 또는 모델링 프로세스가 아님)를 구현하여 용접 전문가가 용접 결과에 대해 평가하고이 결과를 이미지와 센서 데이터로 구성된 데이터 세트에 할당 할 수 있습니다.

CloudFormation 템플릿은 아마존 단순 스토리지 서비스 (Amazon S3) 이미지가 포함 된 AWS 계정의 버킷 (접두사 images) 및 CSV 파일 (접두사 sensor_data). 이미지에는 용접 빔이 금속 표면에 적용되는 다음과 유사한 산업용 용접 프로세스 중에 찍은 사진이 포함되어 있습니다 (이미지 소스는 TIG 스테인리스 304):

CSV 파일에는 용접기의 센서에서 측정 한 전류, 전극 위치 및 전압을 나타내는 센서 데이터가 포함되어 있습니다. 전체 데이터 세트는 GitHub 레포. 이 CSV 데이터의 원시 샘플은 다음과 같습니다.

0|96.19|1023|420|4.5|4.5|1|8
0.1|96.13|894|424|4.5|4.5|1|8
0.2|96.06|884|425|4.5|4.5|1|8
0.3|96.05|884|426|4.5|4.5|1|8
0.4|96.12|887|426|4.5|4.5|1|8
0.5|96.17|902|426|4.5|4.5|2|8
0.6|95.82|974|426|4.5|4.5|2|8
0.7|95.45|1304|426|4.5|4.5|3|8
0.8|95.15|1410|428|4.5|4.5|3|8
0.9|94.96|1446|428|4.5|4.5|3|8
1|94.79|1464|428|4.5|4.5|3|8
...

데이터의 첫 번째 열은 용접 프로세스 시작에 대해 정규화 된 타임 스탬프 (밀리 초)입니다. 각 행은 타임 스탬프와 관련된 다양한 센서 값으로 구성됩니다. 첫 번째 행은 전극 위치, 두 번째 행은 전류, 세 번째 행은 전압입니다 (다른 값은 여기서 관련이 없음). 예를 들어 타임 스탬프가있는 행 1, 용접 공정 시작 후 100 밀리 초 후 전극 위치가 94.79, 현재 1464및 전압 428.

사람이 원시 CSV 데이터를 사용하여 평가하기가 어렵 기 때문에 이러한 데이터를 레이블링을 위해 즉시 사전 처리하고 더 쉽게 읽을 수있는 플롯으로 변환하는 방법도 보여줍니다. 이렇게하면 용접 전문가가 이미지와 플롯을보고 용접 프로세스에 대한 평가를 할 수 있습니다.

CloudFormation 템플릿 배포

다음에 필요한 설정 및 구성을 단순화하기 위해 여러 기반을 AWS 계정에 배포하는 CloudFormation 템플릿을 생성했습니다. 이 프로세스를 시작하려면 다음 단계를 완료하십시오.

  1. AWS 계정에 로그인하십시오.
  2. 사용중인 AWS 리전에 따라 다음 링크 중 하나를 선택하십시오.
  1. 모든 매개 변수를 그대로 유지하고 선택 AWS CloudFormation이 사용자 지정 이름으로 IAM 리소스를 생성 할 수 있음을 인정합니다AWS CloudFormation에 다음 기능이 필요할 수 있음을 인정합니다. CAPABILITY_AUTO_EXPAND.
  2. 왼쪽 메뉴에서 스택 생성 배포를 시작합니다.

배포에는 약 3 ~ 5 분이 소요되며, 그 동안 레이블을 지정할 데이터가있는 버킷, 일부 AWS Lambda 함수 및 AWS 자격 증명 및 액세스 관리 (IAM) 역할이 배포됩니다. 배포 상태가 다음으로 전환되면 프로세스가 완료된 것입니다. CREATE_COMPLETE.

최대 XNUMXW 출력을 제공하는 출력 탭에는이 게시물 전체에서 사용하는 매니페스트 파일에 대한 Amazon S3 경로와 같은 추가 정보가 있습니다. 따라서이 브라우저 탭을 열어두고 다른 탭에서 나머지 게시물을 따르는 것이 좋습니다.

Ground Truth 라벨링 인력 만들기

Ground Truth는 정의를위한 세 가지 옵션을 제공합니다. 노동력 라벨링을 완료합니다. 아마존 기계 터크, 공급 업체별 인력민간 인력. 이 섹션에서는 레이블 지정을 직접 완료하기를 원하기 때문에 개인 인력을 구성합니다. 다음 단계에 따라 개인 인력을 생성합니다.

  1. Amazon SageMaker 콘솔의 지상 진실선택한다. 라벨링 인력.
  2. 프라이빗 투어 탭에서 개인 팀 만들기.

  1. 라벨링 인력의 이름을 입력합니다. 사용 사례에서는 용접 전문가를 입력합니다.
  2. 선택 이메일로 새로운 직원 초대.
  3. 전자 메일 주소, 조직 이름 및 연락처 전자 메일 (방금 입력 한 것과 동일 할 수 있음)을 입력합니다.
  4. 왼쪽 메뉴에서 개인 팀 만들기.

콘솔은 화면 상단에서 라벨링 인력 생성을 확인합니다. 페이지를 새로 고치면 새 인력이 프라이빗 투어 탭, 아래 개인 팀.

또한 임시 암호 및 로그인 페이지를 열 수있는 링크가 포함 된 로그인 지침이 포함 된 이메일을받습니다.

  1. 링크를 선택하고 이메일 및 임시 비밀번호를 사용하여 로그인 비밀번호를 인증하고 변경하십시오.

다시 로그인 할 필요가 없도록이 브라우저 탭을 열어 두는 것이 좋습니다. 이것으로 인력을 만드는 데 필요한 모든 단계를 마칩니다.

사용자 지정 레이블 지정 작업 구성

이 섹션에서는 레이블 지정 작업을 만들고이 작업을 사용하여 사용자 지정 레이블 지정 작업의 세부 정보와 데이터 흐름을 설명합니다.

  1. Amazon SageMaker 콘솔의 지상 진실선택한다. 라벨링 작업.
  2. 왼쪽 메뉴에서 라벨링 작업 생성.

  1. 레이블 지정 작업의 이름 (예 : WeldingLabelJob1)을 입력하십시오.
  2. 왼쪽 메뉴에서 수동 데이터 설정.
  3. 럭셔리 입력 데이터 셋 위치, CloudFormation 스택에서 ManifestS3Path 값을 입력하십시오. 출력
  4. 럭셔리 출력 데이터 세트 위치, 들어가다 ProposedOutputPath CloudFormation 스택의 값 출력
  5. 럭셔리 IAM 역할선택한다. 사용자 지정 IAM 역할 ARN 입력.
  6. 입력 SagemakerServiceRoleArn CloudFormation 스택의 값 출력
  7. 작업 유형으로 관습.
  8. 왼쪽 메뉴에서 다음 보기.

IAM 역할은 Ground Truth가 Lambda 함수를 호출하고 Amazon S3에 액세스 할 수 있도록 CloudFormation 템플릿에 의해 생성 된 사용자 지정 역할입니다.

  1. 개인 라벨링 인력을 사용하도록 선택하십시오.
  2. 드롭 다운 메뉴에서 인력을 선택합니다. 용접 전문가.
  3. 작업 시간 초과 및 작업 만료 시간의 경우 1 시간이면 충분합니다.
  4. 데이터 세트 개체 당 작업자 수는 1 개입니다.
  5. . Lambda 함수 섹션 사전 레이블 지정 작업 Lambda 함수으로 시작하는 기능을 선택하십시오. PreLabelingLambda-.
  6. 럭셔리 레이블 지정 후 작업 Lambda 함수으로 시작하는 기능을 선택하십시오. PostLabelingLambda-.
  7. 템플릿 섹션에 다음 코드를 입력합니다. 이 HTML 코드는 개인 레이블 직원의 작업자가 항목에 레이블을 지정할 때 표시되는 인터페이스를 지정합니다. 사용 사례의 경우 템플릿에 XNUMX 개의 이미지가 표시되며 용접 결과를 분류하는 범주는 다음과 같습니다.
    <script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
    <crowd-form> <crowd-classifier name="WeldingClassification" categories="['Good Weld', 'Burn Through', 'Contamination', 'Lack of Fusion', 'Lack of Shielding Gas', 'High Travel Speed', 'Not sure']" header="Please classify the welding process." > <classification-target> <div> <h3>Welding Image</h3> <p><strong>Welding Camera Image </strong>{{ task.input.image.title }}</p> <p><a href="{{ task.input.image.file | grant_read_access }}" target="_blank">Download Image</a></p> <p> <img style="height: 30vh; margin-bottom: 10px" src="{{ task.input.image.file | grant_read_access }}"/> </p> </div> <hr/> <div> <h3>Current Graph</h3> <p><strong>Current Graph </strong>{{ task.input.current.title }}</p> <p><a href="{{ task.input.current.file | grant_read_access }}" target="_blank">Download Current Plot</a></p> <p> <img style="height: 30vh; margin-bottom: 10px" src="{{ task.input.current.file | grant_read_access }}"/> </p> </div> <hr/> <div> <h3>Electrode Position Graph</h3> <p><strong>Electrode Position Graph </strong>{{ task.input.electrode.title }}</p> <p><a href="{{ task.input.electrode.file | grant_read_access }}" target="_blank">Download Electrode Position Plot</a></p> <p> <img style="height: 30vh; margin-bottom: 10px" src="{{ task.input.electrode.file | grant_read_access }}"/> </p> </div> <hr/> <div> <h3>Voltage Graph</h3> <p><strong>Voltage Graph </strong>{{ task.input.voltage.title }}</p> <p><a href="{{ task.input.voltage.file | grant_read_access }}" target="_blank">Download Voltage Plot</a></p> <p> <img style="height: 30vh; margin-bottom: 10px" src="{{ task.input.voltage.file | grant_read_access }}"/> </p> </div> </classification-target> <full-instructions header="Classification Instructions"> <p>Read the task carefully and inspect the image as well as the plots.</p> <p> The image is a picture taking during the welding process. The plots show the corresponding sensor data for the electrode position, the voltage and the current measured during the welding process. </p> </full-instructions> <short-instructions> <p>Read the task carefully and inspect the image as well as the plots</p> </short-instructions> </crowd-classifier>
    </crowd-form>
    

라벨링 작업을 만드는 마법사는 섹션에 미리보기 기능이 있습니다. 사용자 지정 레이블 지정 작업 설정모든 구성이 제대로 작동하는지 확인하는 데 사용할 수 있습니다.

  1. 인터페이스를 미리 보려면 시사.

그러면 새 브라우저 탭이 열리고 다음 스크린 샷과 유사한 레이블 지정 인터페이스의 테스트 버전이 표시됩니다.

  1. 레이블 지정 작업을 생성하려면 만들기.

Ground Truth는 지정된대로 레이블 지정 작업을 설정하고 대시 보드에 해당 상태가 표시됩니다.

라벨 할당

구성한 레이블 지정 작업을 완료하려면 작업자 포털에 로그인하고 이미지와 데이터 그림으로 구성된 다른 데이터 항목에 레이블을 할당합니다. 라벨링 작업의 여러 구성 요소가 함께 작동하는 방법에 대한 세부 정보는 다음 섹션에서 설명합니다.

  1. Amazon SageMaker 콘솔의 지상 진실선택한다. 라벨링 인력.
  2. 프라이빗 투어 탭에서 링크를 선택하십시오. 라벨링 포털 로그인 URL.

Ground Truth가 라벨링 작업 준비를 마치면 작업 부분. 표시되지 않으면 몇 분 정도 기다렸다가 탭을 새로 고칩니다.

  1. 왼쪽 메뉴에서 일을 시작하다.

그러면 레이블링 UI가 시작되어 용접 이미지와 전류, 전극 위치 및 전압에 대한 플롯으로 구성된 혼합 데이터 세트에 레이블을 할당 할 수 있습니다.

이 사용 사례에서는 단일 데이터 세트에 XNUMX 개의 서로 다른 라벨을 할당 할 수 있습니다. 이러한 다양한 클래스와 레이블은 UI의 HTML에 정의되어 있지만 사전 레이블 지정 Lambda 함수를 사용하여 동적으로 삽입 할 수도 있습니다 (다음 섹션에서 설명). 실제로 ML 목적으로 레이블이 지정된 데이터를 사용하지 않기 때문에이 레이블 지정 작업에 대해 Ground Truth에서 표시하는 XNUMX 개 항목에 레이블을 무작위로 할당 할 수 있습니다.

모든 항목에 레이블을 지정한 후 UI는 사용 가능한 작업이있는 목록으로 다시 전환됩니다. 이것으로 레이블 지정 작업 구성 및 시작에 대한 섹션을 마칩니다. 다음 섹션에서는 사용자 지정 레이블 지정 작업의 메커니즘을 자세히 설명하고 HTML 인터페이스의 다양한 요소에 대해 자세히 설명합니다.

맞춤 라벨링 심층 분석

사용자 지정 레이블 지정 작업은 레이블을 지정할 데이터를 세 가지 구성 요소와 결합하여 레이블 지정 인력의 작업자가 데이터 세트의 각 항목에 레이블을 할당 할 수있는 워크 플로를 만듭니다.

  • Lambda 함수 사전 레이블 지정 – 레이블 지정 작업 구성 중에 지정된 매니페스트 파일을 사용하여 레이블 지정 인터페이스에 표시 할 내용을 생성합니다. 이 사용 사례의 경우이 함수는 CSV 파일을 사람이 읽을 수있는 플롯으로 변환하고 이러한 플롯을 접두사 아래 S3 버킷에 이미지로 저장합니다. plots.
  • 라벨링 인터페이스 – 사전 레이블 지정 기능의 출력을 사용하여 사용자 인터페이스를 생성합니다. 이 사용 사례의 경우 인터페이스에 XNUMX 개의 이미지 (용접 과정에서 찍은 사진과 전류, 전극 위치 및 전압에 대한 XNUMX 개의 그래프)와 작업자가 용접 과정을 분류 할 수있는 양식이 표시됩니다.
  • 레이블 통합 Lambda 기능 – 사용자 지정 전략을 구현하여 하나 또는 여러 작업자의 분류를 단일 응답으로 통합 할 수 있습니다. 직원의 경우 레이블이 파일로 통합되고 Ground Truth가 Amazon S3에 저장하는 단일 작업자 만 있기 때문에 이는 매우 간단합니다.

이 세 가지 구성 요소를 분석하기 전에 레이블 지정 작업의 데이터 소스를 설명하는 매니페스트 파일의 구조에 대한 통찰력을 제공합니다.

매니페스트 및 데이터 세트 파일

매니페스트 파일은 JSON 라인 각 행은 레이블을 지정할 하나의 항목을 나타냅니다. Ground Truth는 하나의 키를 기대합니다. source or source-ref 파일의 각 줄에서. 이 사용 사례에서는 source, 매핑 된 값은 Amazon S3 경로를 나타내는 문자열이어야합니다. 이 게시물에서는 XNUMX 개의 항목에만 레이블을 지정하고 JSON 행은 다음 코드와 유사합니다.

{"source": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/dataset/dataset-1.json"}

여러 입력 형식 및 파일이있는 사용 사례의 경우 매니페스트의 각 줄은 Amazon S3에도 저장된 데이터 세트 파일을 가리 킵니다. 데이터 세트는 용접 이미지에 대한 참조와 센서 데이터가있는 CSV 파일을 포함하는 JSON 문서입니다.

{ "sensor_data": {"s3Path": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/sensor_data/weld.1.csv"}, "image": {"s3Path": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/images/weld.1.png"}
}

Ground Truth는 매니페스트 파일의 각 줄을 가져 와서 다음에 설명 할 사전 레이블 지정 Lambda 함수를 트리거합니다.

Lambda 함수 사전 레이블 지정

사전 레이블 지정 Lambda 함수는 레이블 지정 인터페이스의 항목 별 부분을 채우는 데 사용되는 JSON 객체를 생성합니다. 자세한 내용은 AWS Lambda로 처리.

Ground Truth는 작업자에게 라벨링 할 항목을 표시하기 전에 사전 라벨링 기능을 실행하고 매니페스트의 JSON 라인에있는 정보를 함수로 전달합니다. 사용 사례에서 함수에 전달되는 이벤트는 다음과 같습니다.

{ "version": "2018-10-06", "labelingJobArn": "arn:aws:sagemaker:eu-west-1:XXX:labeling-job/weldinglabeljob1", "dataObject": { "source": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/dataset/dataset-1.json" }
}

여기서 구현 세부 정보를 생략했지만 (관심있는 사용자를 위해 코드는 검토를 위해 CloudFormation 템플릿과 함께 배포 됨) 레이블 지정 작업의 함수는이 입력을 사용하여 다음 단계를 완료합니다.

  1. 에 참조 된 파일을 다운로드하십시오. source 입력 필드 (이전 코드 참조).
  2. 소스에서 참조되는 데이터 세트 파일 다운로드
  3. 센서 데이터가 포함 된 CSV 파일을 다운로드합니다. 데이터 세트 파일에는이 CSV 파일에 대한 참조가 있어야합니다.
  4. CSV 파일의 내용에서 전류, 전극 위치 및 전압에 대한 플롯을 생성합니다.
  5. Amazon S3에 플롯 파일을 업로드합니다.
  6. 앞서 언급 한 플롯 파일에 대한 참조와 데이터 세트 파일에서 참조 된 용접 이미지를 포함하는 JSON 객체를 생성합니다.

이 단계가 완료되면 함수는 두 부분으로 된 JSON 객체를 반환합니다.

  • 작업 입력 – 레이블링 UI에 표시 할 정보를 포함하는 완전히 사용자 지정 가능한 JSON 개체입니다.
  • isHuman주석필수 – 부울 값을 나타내는 문자열 (True or False)를 사용하여 사람이 레이블을 지정하지 않도록 개체를 제외 할 수 있습니다. 제공된 모든 데이터 항목에 레이블을 지정하기 때문에이 사용 사례에는이 플래그를 사용하지 않습니다.

자세한 내용은 다음 링크를 참조하세요 AWS Lambda로 처리.

용접 이미지와 전류, 전극 위치 및 전압에 대한 세 가지 그래프를 표시하고 싶기 때문에 Lambda 함수의 결과는 첫 번째 데이터 세트에 대해 다음과 같습니다.

{ "taskInput": { "image": { "file": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/images/weld.1.png", "title": " from image at s3://iiot-custom-label-blog-bucket-unn4d0l4j0/images/weld.1.png" }, "voltage": { "file": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/plots/weld.1.csv-current.png", "title": " from file at plots/weld.1.csv-current.png" }, "electrode": { "file": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/plots/weld.1.csv-electrode_pos.png", "title": " from file at plots/weld.1.csv-electrode_pos.png" }, "current": { "file": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/plots/weld.1.csv-voltage.png", "title": " from file at plots/weld.1.csv-voltage.png" } }, "isHumanAnnotationRequired": "true"
}

앞의 코드에서 taskInput 완전히 사용자 정의 할 수 있습니다. 이 함수는 표시 할 이미지에 대한 Amazon S3 경로와 일부 작동하지 않는 텍스트가있는 제목도 반환합니다. 다음으로 이러한 다양한 부분에 액세스하는 방법을 보여줍니다. taskInput Ground Truth에서 작업자에게 표시되는 사용자 지정 레이블 지정 UI를 빌드 할 때 JSON 개체입니다.

레이블링 UI : taskInput 콘텐츠 액세스

Ground Truth는 Lambda 함수의 출력을 사용하여 레이블 지정 작업 생성시 제공되는 HTML 스켈레톤에 콘텐츠를 채 웁니다. 일반적으로 taskInput 출력 객체는 task.input HTML 코드에서.

예를 들어 출력에서 ​​용접 이미지가 저장된 Amazon S3 경로를 검색하려면 경로에 액세스해야합니다. taskInput/image/file. 왜냐하면 taskInput 함수 출력의 객체는 task.input HTML에서 용접 이미지 파일에 대한 해당 참조는 task.input.image.file. 이 참조는 라벨링 UI의 HTML 코드에 직접 통합되어 용접 이미지를 표시합니다.

<img style="height: 30vh; margin-bottom: 10px" src="{{ task.input.image.file | grant_read_access }}"/>

최대 XNUMXW 출력을 제공하는 grant_read_access 필터링 공개적으로 액세스 할 수없는 S3 버킷의 파일에 필요합니다. 이렇게하면 브라우저에 전달 된 URL에 이미지에 대한 단기 액세스 토큰이 포함되므로 레이블 지정 작업을 위해 리소스에 공개적으로 액세스 할 필요가 없습니다. 머신 데이터와 같이 레이블을 지정할 데이터는 기밀이기 때문에 이는 종종 필수입니다. 사전 라벨링 기능도 CSV 파일을 플롯과 이미지로 변환했기 때문에 UI 로의 통합도 유사합니다.

레이블 통합 Lambda 함수

사용자 지정 레이블 지정 작업을 위해 구성된 두 번째 Lambda 함수는 모든 작업자가 항목에 레이블을 지정했거나 기일 라벨링 작업에 도달했습니다. 이 함수의 핵심 작업은 작업자의 응답에서 단일 레이블을 파생하는 것입니다. 또한이 기능은 사용하는 ML 파이프 라인에 이상적인 형식으로 Amazon S3에 저장하는 등 레이블이 지정된 데이터를 추가로 처리하는 데 사용할 수 있습니다.

레이블을 통합 할 수있는 다양한 전략이 있지만 이러한 기능에 대한 구현의 초석에 초점을 맞추고 이들이 사용 사례로 어떻게 변환되는지 보여줍니다. 통합 기능은 다음 JSON 코드와 유사한 이벤트에 의해 트리거됩니다.

{ "version": "2018-10-06", "labelingJobArn": "arn:aws:sagemaker:eu-west-1:261679111194:labeling-job/weldinglabeljob1", "payload": { "s3Uri": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/output/WeldingLabelJob1/annotations/consolidated-annotation/consolidation-request/iteration-1/2020-09-15_16:16:11.json" }, "labelAttributeName": "WeldingLabelJob1", "roleArn": "arn:aws:iam::261679111194:role/AmazonSageMaker-Service-role-unn4d0l4j0", "outputConfig": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/output/WeldingLabelJob1/annotations", "maxHumanWorkersPerDataObject": 1 }

이 이벤트의 핵심 항목은 payload, 여기에는 s3Uri Amazon S3에 저장된 파일을 가리 킵니다. 이 페이로드 파일에는 라벨이 지정된 데이터 세트 목록과 작업자가 할당 한 라벨이 포함되어 있습니다. 다음 코드는 이러한 목록 항목의 예입니다.

{ "datasetObjectId": "4", "dataObject": { "s3Uri": "s3://iiot-custom-label-blog-bucket-unn4d0l4j0/dataset/dataset-5.json" }, "annotations": [ { "workerId": "private.eu-west-1.abd2ec3e354db315", "annotationData": { "content":"{"WeldingClassification":{"label":"Not sure"}}" } } ] }

항목에 라벨을 지정한 작업자를 결정하는 데 사용할 수있는 식별자와 함께 각 항목은 라벨이 할당 된 각 데이터 세트에 대해 나열합니다. 예를 들어 작업자가 여러 명인 경우 annotations. 이 게시물의 모든 항목에 레이블을 지정하는 단일 작업자를 만들었으므로 항목이 하나뿐입니다. 파일 dataset-5.json 레이블이 지정되었습니다 Not Sure 분류 자용 WeldingClassification.

레이블 통합 기능은 모든 목록 항목을 반복하고 각 데이터 세트에 대해 감독 된 ML 훈련에 대한 기준으로 사용할 레이블을 결정해야합니다. Ground Truth는 함수가 다음 구조의 각 데이터 세트 항목에 대한 항목을 포함하는 목록을 반환 할 것으로 예상합니다.

{ "datasetObjectId": "4", "consolidatedAnnotation": { "content": { "WeldingLabelJob1": { "WeldingClassification": "Not sure" } } } }

반환 된 목록의 각 항목에는 datasetObjectId 페이로드 파일 및 JSON 객체의 해당 항목 consolidatedAnnotation, 객체를 포함 content. Ground Truth는 콘텐츠에 라벨 지정 작업의 이름과 동일한 키가 포함될 것으로 예상합니다 (사용 사례의 경우 WeldingLabelJob1). 자세한 내용은 AWS Lambda로 처리.
레이블 지정 작업을 만들 때이 동작을 변경할 수 있습니다. 라벨 작업 이름과 다른 라벨 속성 이름을 지정하고 싶습니다 및 레이블 속성 이름을 입력합니다.

레이블 지정 작업의 이름과 동일한이 키 내부의 내용은 자유롭게 구성 할 수 있으며 임의로 복잡 할 수 있습니다. 우리의 사용 사례에서는 할당 된 레이블을 반환하는 것으로 충분합니다. Not Sure. 이러한 서식 요구 사항 중 하나라도 충족되지 않으면 Ground Truth는 레이블 지정 작업이 제대로 실행되지 않아 실패했다고 가정합니다.

내가 지정했기 때문에 output 레이블 지정 작업을 생성하는 동안 원하는 접두사로 요구 사항이 충족되고 Ground Truth는 통합 레이블을 생성하는 동안 지정된 버킷 및 접두사에 JSON 항목 목록을 업로드하고 다음 접두사를 사용하여 업로드합니다.

output/WeldingLabelJob1/annotations/consolidated-annotation/consolidation-response/iteration-1/

Amazon SageMaker에서 ML 알고리즘을 교육하거나 추가 처리를 위해 이러한 파일을 사용할 수 있습니다.

청소

향후 요금이 발생하지 않도록이 게시물에 대해 생성 된 모든 리소스를 삭제하십시오.

  1. AWS CloudFormation 콘솔에서 스택.
  2. 스택 선택 iiot-custom-label-블로그.
  3. 왼쪽 메뉴에서 ..

이 단계는 계정에서 모든 파일과 S3 버킷을 제거합니다. 이 과정은 3 ~ 5 분 정도 걸립니다.

결론

감독 형 ML에는 레이블이 지정된 데이터가 필요하며 Ground Truth는 레이블 지정 워크 플로를 만들기위한 플랫폼을 제공합니다. 이 게시물은 라벨링 항목에 여러 소스의 데이터를 고려해야하는 복잡한 산업용 IoT 라벨링 워크 플로를 구축하는 방법을 보여주었습니다. 이 게시물에서는 사용자 지정 레이블 지정 작업을 만드는 방법을 설명하고 Ground Truth가 이러한 워크 플로를 구현하는 데 필요한 메커니즘에 대한 세부 정보를 제공했습니다. 사용자 지정 레이블 지정 작업 작성을 시작하려면 다음을 참조하십시오. 맞춤 라벨링 문서 Ground Truth 페이지를 참조하고이 게시물의 CloudFormation 템플릿을 재배포하여 사전 라벨링 및 통합 람다에 대한 샘플을 얻으십시오. 또한 블로그 게시물 "AWS Lambda 및 Amazon SageMaker Ground Truth를 사용하여 사용자 지정 레이블 지정 작업 생성”는 맞춤형 라벨링 작업 구축에 대한 추가적인 통찰력을 제공합니다.


저자에 관하여

수석 프로토 타이핑 참여 관리자로서 Markus Bestehorn 박사 AWS 고객과 함께 비즈니스 크리티컬 프로토 타입을 구축하는 책임을 맡고 있으며 IoT 및 기계 학습 전문가입니다. 그의 "경력"은 7 살 때 5.25 인치 플로피 디스크 XNUMX 개, 하드 디스크, 마우스가없는 컴퓨터를 손에 쥐고 BASIC을 작성하고 나중에 C 및 C ++ 프로그램을 작성하기 시작했습니다. . 그는 컴퓨터 과학 박사 학위와 현재 사용 가능한 모든 AWS 자격증을 보유하고 있습니다. 컴퓨터를 사용하지 않을 때는 뛰거나 산을 오릅니다.

출처 : https://aws.amazon.com/blogs/machine-learning/labeling-mixed-source-industrial-datasets-with-amazon-sagemaker-ground-truth/

spot_img

최신 인텔리전스

spot_img