의미 체계 분할 알고리즘 - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

의미 체계 분할 알고리즘

SageMaker 시맨틱 분할 알고리즘은 컴퓨터 비전 애플리케이션 개발을 위한 세밀한 픽셀 수준의 접근 방식을 제공합니다. 이 알고리즘은 미리 정의된 클래스 세트에서 가져온 클래스 레이블을 사용해 이미지의 모든 픽셀에 태그를 지정합니다. 태그 지정은 장면을 이해하는 데 기본적인 기능으로, 자율 주행 차량, 의료 영상 진단 및 로봇 감지 등과 같이 점점 늘어나고 있는 컴퓨터 비전 응용 분야에 중요합니다.

이에 비해 SageMaker 이미지 분류 - MXNet 는 전체 이미지만 분석하여 여러 출력 범주 중 하나로 분류하는 지도 학습 알고리즘입니다. 객체 감지 - MXNet은 이미지 내 객체의 모든 인스턴스를 감지해 분류하는 지도 학습 알고리즘으로, 직사각형 경계 상자를 사용해 이미지 내 객체의 위치와 크기를 나타냅니다.

의미 체계 분류 알고리즘 역시 이미지 내 모든 픽셀을 분류하기 때문에 이미지 내에 포함된 객체 모양에 대한 정보를 제공합니다. 세그먼트화 결과는 세그먼트화 마스크라고 하는 그레이스케일 이미지로 표현됩니다. 세그먼트화 마스크는 입력 이미지와 모양이 동일한 그레이스케일 이미지입니다.

SageMaker 시맨틱 분할 알고리즘은 MXNet Gluon 프레임워크와 Gluon CV 툴킷을 사용하여 구축되었습니다. 세 가지 기본 제공 알고리즘 중에서 선택하여 심층 신경망을 훈련할 수 있습니다. 완전 컨벌루션 네트워크 (FCN) 알고리즘, PSP (피라미드 씬 파싱) 알고리즘 또는 V3을 사용할 수 있습니다. DeepLab

이러한 각 알고리즘에는 다음 두 가지 개별 구성 요소가 있습니다.

  • 백본(또는 인코더) - 기능에 대한 신뢰할 수 있는 활성화 맵을 생성하는 네트워크입니다.

  • 디코더 - 인코딩된 활성화 맵에서 세그먼트화 마스크를 구성하는 네트워크입니다.

또한 FCN, PSP 및 V3 알고리즘에 사용할 백본 (50 또는 101) 을 선택할 수 있습니다. DeepLab ResNet ResNet 이러한 백본에는 원래 분류 작업에서 학습된 사전 훈련된 아티팩트가 포함됩니다. ImageNet 자체 데이터를 사용하여 분류를 위해 이러한 백본을 미세하게 조정할 수 있습니다. 또는 자체 데이터만 사용해 처음부터 이러한 네트워크를 초기화 및 훈련할 수 있습니다. 디코더는 사전 훈련되지 않습니다.

학습된 모델을 추론을 위해 배포하려면 호스팅 서비스를 사용하십시오. SageMaker 추론 중에는 세분화 마스크를 PNG 이미지 또는 각 픽셀의 개별 클래스에 대한 확률 세트로 요청할 수 있습니다. 이러한 마스크는 추가 다운스트림 이미지 처리 또는 다른 애플리케이션이 포함된 큰 파이프라인의 일부로 사용할 수 있습니다.

의미 체계 분할 샘플 노트북

시맨틱 분할 알고리즘을 사용하여 모델을 학습시키고 이를 배포하여 추론을 수행하는 샘플 Jupyter 노트북은 SageMaker 시맨틱 세그멘테이션 예제를 참조하십시오. 에서 예제를 실행하는 데 사용할 수 있는 Jupyter 노트북 인스턴스를 만들고 액세스하는 방법에 대한 지침은 을 참조하십시오. SageMaker 아마존 SageMaker 노트북 인스턴스

모든 SageMaker 샘플 목록을 보려면 노트북 인스턴스를 생성하여 열고 SageMaker 예제 탭을 선택합니다. 의미 체계 분할 예제 노트북은 Amazon 알고리즘 소개 아래에서 찾을 수 있습니다. 노트북을 열려면 사용 탭을 선택한 후 Create copy(사본 생성)를 선택합니다.

의미 체계 분할 알고리즘에 대한 입력/출력 인터페이스

SageMaker 시맨틱 분할에서는 고객의 교육 데이터 세트가 Amazon Simple Storage Service (Amazon S3) 에 있을 것으로 예상합니다. 훈련을 완료하면 Amazon S3에서 결과 모델 아티팩트를 생성합니다. 시맨틱 분할의 입력 인터페이스 형식은 대부분의 표준화된 SageMaker 시맨틱 분할 벤치마킹 데이터 세트의 입력 인터페이스 형식과 유사합니다. Amazon S3의 데이터 세트는 4개의 디렉터리(2개는 이미지용, 2개는 주석용)를 사용하여 trainvalidation, 이렇게 두 가지 채널에서 제공됩니다. 주석은 압축되지 않은 PNG 이미지입니다. 데이터 세트에는 주석 매핑 설정 방법을 설명하는 레이블 맵이 포함되어 있을 수 있습니다. 레이블 맵이 없으면 이 알고리즘은 기본값을 사용합니다. 또한 Amazon S3의 Pipe 입력 모드에서 직접 훈련하기 위해 증강 매니페스트 이미지 형식(application/x-image)을 지원합니다. 추론을 위해 엔드포인트는 image/jpeg 콘텐츠 유형의 이미지를 허용합니다.

훈련 작동 방식

훈련 데이터는 train, train_annotation, validationvalidation_annotation, 이렇게 4가지 디렉터리로 분할됩니다. 이러한 각 디렉터리마다 채널이 하나씩 있습니다. 또한 데이터 세트에는 각 train_annotationvalidation_annotation 채널에 대해 label_map.json 파일이 하나씩 있습니다. 이러한 JSON 파일을 제공하지 않는 경우 기본 세트 레이블 맵을 제공합니다. SageMaker

이러한 파일을 지정하는 데이터 세트는 다음 예와 비슷해야 합니다.

s3://bucket_name | |- train | | - 0000.jpg | - coffee.jpg |- validation | | - 00a0.jpg | - bananna.jpg |- train_annotation | | - 0000.png | - coffee.png |- validation_annotation | | - 00a0.png | - bananna.png |- label_map | - train_label_map.json | - validation_label_map.json

train 및 validation 디렉터리 내 모든 JPG 이미지는 train_annotationvalidation_annotation 디렉터리 내에 이름이 같은 PNG 레이블 이미지를 하나씩 가지고 있습니다. 이러한 명명 규칙 덕분에 훈련 중 알고리즘이 레이블을 해당 이미지와 연결할 수 있습니다. train, train_annotation, validationvalidation_annotation 채널은 필수입니다. 주석은 단일 채널 PNG 이미지입니다. 이 형식은 이미지 내 메타데이터(모드)가 알고리즘이 주석 이미지를 단일 채널 8비트 부호 없는 정수로 읽도록 지원하는 경우에 사용 가능합니다. 모드에 대한 Amazon의 자세한 지원 내용은 Python 이미지 라이브러리 설명서를 참조하십시오. 8비트 픽셀 트루 컬러 P 모드를 사용하는 것이 좋습니다.

모든 사용 시 인코딩된 이미지는 간단한 8비트 정수입니다. 이러한 매핑에서 레이블 맵을 얻기 위해 이 알고리즘은 채널당 하나의 매핑 파일(레이블 맵이라고 함)을 사용합니다. 레이블 맵은 실제 레이블 인덱스를 사용해 이미지 내 값을 매핑하는 데 사용됩니다. 고객이 제공하지 않는 경우 기본적으로 제공되는 기본 레이블 맵에서 주석 매트릭스(이미지)의 픽셀 값은 직접 레이블을 인덱싱합니다. 이러한 이미지는 그레이스케일 PNG 파일 또는 8비트 인덱스 PNG 파일입니다. 범위가 지정되지 않은 기본 케이스에 대한 레이블 맵 파일은 다음과 같습니다.

{ "scale": "1" }

눈으로 쉽게 확인할 수 있도록 약간의 대비를 주기 위해 일부 주석 소프트웨어에서는 레이블 이미지의 크기를 일정하게 조정합니다. 이를 지원하기 위해 SageMaker 시맨틱 분할 알고리즘은 값을 실제 레이블 값으로 축소하는 재조정 옵션을 제공합니다. 축소할 때 값을 적절한 정수로 변환하지 마십시오. 이 알고리즘은 기본적으로 스케일 값보다 작거나 같은 최대 정수로 지정합니다. 다음 코드는 레이블 값을 조정하기 위한 스케일 값을 설정하는 방법을 보여줍니다.

{ "scale": "3" }

다음 예제는 입력 주석 이미지의 encoded_label 값이 훈련 시 사용되는 mapped_label 값으로 매핑되는 경우 encoded_label 값을 조정하기 위해 "scale" 값을 사용하는 방법을 보여줍니다. 입력 주석 이미지의 레이블 값은 0, 3, 6이고, 스케일은 3이므로 훈련을 위해 0, 1, 2로 매핑됩니다.

encoded_label = [0, 3, 6] mapped_label = [0, 1, 2]

경우에 따라 각 클래스에 대해 특정 색상 매핑을 지정해야 할 수도 있습니다. label_map 파일의 다음 예제에 표시된 것처럼 레이블 매핑에서 맵 옵션을 사용합니다.

{ "map": { "0": 5, "1": 0, "2": 2 } }

이 예제의 레이블 매핑은 다음과 같습니다.

encoded_label = [0, 5, 2] mapped_label = [1, 0, 2]

레이블 매핑을 활용하는 경우 다른 주석 시스템 및 주석 소프트웨어를 사용해 복잡한 전처리 없이 데이터를 얻을 수 있습니다. 레이블 맵은 채널당 하나씩 제공할 수 있습니다. label_map 채널의 레이블 맵 파일은 4가지 디렉터리 구조에 대해 다음 명명 규칙을 따라야 합니다. 레이블 맵을 제공하지 않은 경우 알고리즘은 스케일을 1(기본값)로 가정합니다.

증강 매니페스트 형식을 사용한 훈련

증강 매니페스트 형식을 사용하면 RecordIO 파일을 생성할 필요 없이 파이프 모드에서 훈련할 수 있습니다. 증강 매니페스트 파일에는 데이터 객체가 포함되며 CreateTrainingJob 요청에 설명된 대로 JSON 행 형식이어야 합니다. 매니페스트의 각 행은 이미지에 대한 Amazon S3 URI와 주석 이미지에 대한 URI를 포함하고 있는 항목입니다.

매니페스트 파일의 각 JSON 객체에는 source-ref 키가 포함되어 있어야 합니다. source-ref 키에는 이미지에 대한 Amazon S3 URI 값이 포함되어 있어야 합니다. 레이블은 CreateTrainingJob 요청에서 지정한 대로 AttributeNames 파라미터 값 아래에서 제공됩니다. 또한 metadata 태그 아래에 추가 메타데이터가 포함될 수 있지만 이들은 알고리즘에서 무시됩니다. 다음 예제에서 AttributeNames은 이미지 및 주석 참조 ["source-ref", "city-streets-ref"]의 목록에 포함됩니다. 이러한 이름에는 -ref가 추가되어 있어야 합니다. Semantic Segmentation 알고리즘을 증강 매니페스트와 함께 사용하는 경우 RecordWrapperType 파라미터 값이 "RecordIO"이고 ContentType 파라미터 값이 application/x-recordio여야 합니다.

{"source-ref": "S3 bucket location", "city-streets-ref": "S3 bucket location", "city-streets-metadata": {"job-name": "label-city-streets", }}

증강 매니페스트 파일에 대한 추가 정보는 증강 매니페스트 파일을 사용하여 훈련 작업에 데이터 세트 메타데이터 제공 단원을 참조하십시오.

점진적 훈련

또한 SageMaker를 사용하여 이전에 훈련한 모델을 사용해 새 모델의 훈련을 시드로 지정할 수도 있습니다. 이러한 점진적 훈련은 동일하거나 유사한 데이터를 사용하여 새 모델을 훈련하려는 경우 훈련 시간을 줄여줍니다. 현재 증분 훈련은 내장된 시맨틱 세그멘테이션으로 학습된 모델에만 지원됩니다. SageMaker

사전 훈련된 자체 모델을 사용하려면 CreateTrainingJob 요청의 InputDataConfig에서 ChannelName을 "model"로 지정합니다. model 채널의 ContentTypeapplication/x-sagemaker-model로 설정합니다. 네트워크 아키텍처를 정의하는 backbone, algorithm, crop_sizenum_classes 입력 파라미터가 model 채널로 업로드하는 새 모델 및 사전 훈련된 모델의 입력 하이퍼파라미터에 동일하게 지정되어 있어야 합니다. 사전 훈련된 모델 파일의 경우 출력의 압축된 (.tar.gz) 아티팩트를 사용할 수 있습니다. SageMaker 입력 데이터에는 이미지 형식만 사용할 수 있습니다. 점진적 훈련에 대한 자세한 내용 및 점진적 훈련 사용 방법에 대한 지침은 Amazon에서 인크리멘탈 트레이닝 사용하기 SageMaker 단원을 참조하십시오.

추론 생성

엔드포인트에 배포된 훈련된 모델을 쿼리하려면 필요한 출력 유형을 나타내는 AcceptType 및 이미지를 제공해야 합니다. 엔드포인트는 image/jpeg 콘텐츠 유형의 JPEG 이미지를 사용합니다. image/pngAcceptType을 요청하면 이 알고리즘은 PNG 파일 및 세분화 마스크를 레이블과 동일한 형식으로 출력합니다. application/x-recordio-protobuf의 수락 유형을 요청하면 이 알고리즘은 recordio-protobuf 형식으로 인코딩된 클래스 확률을 반환합니다. recordio-protobuf 형식은 3차원이 클래스 수와 동일한 크기인 3D 텐서를 출력합니다. 이 구성 요소는 각 픽셀에 대한 개별 클래스 레이블의 확률을 나타냅니다.

의미 체계 분할 알고리즘에 대한 EC2 인스턴스 권장 사항

SageMaker 시맨틱 분할 알고리즘은 훈련용 GPU 인스턴스만 지원하며, 배치 크기가 큰 훈련에는 메모리가 더 많은 GPU 인스턴스를 사용하는 것이 좋습니다. 단일 머신 구성의 P2, P3, G4dn 또는 G5 인스턴스를 사용하여 알고리즘을 훈련할 수 있습니다.

추론에는 CPU 인스턴스(예: C5 및 M5)나 GPU 인스턴스(예: P2 및 G4dn), 또는 둘 다를 사용할 수 있습니다. 추론을 위한 CPU, GPU, 메모리 및 네트워킹 용량의 다양한 조합을 제공하는 인스턴스 유형에 대한 자세한 내용은 Amazon SageMaker ML 인스턴스 유형을 참조하십시오.