이미지 분류 - MXNet - 아마존 SageMaker

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

이미지 분류 - MXNet

Amazon SageMaker 이미지 분류 알고리즘은 다중 레이블 분류를 지원하는 지도 학습 알고리즘입니다. 이 알고리즘은 이미지를 입력으로 취해 해당 이미지에 할당된 하나 이상의 레이블을 출력합니다. 학습 이미지가 많지 않을 때 처음부터 학습하거나 전이 학습을 사용하여 학습시킬 수 있는 컨벌루션 신경망을 사용합니다.

Amazon에 권장되는 입력 형식 SageMaker 이미지 분류 알고리즘은 아파치 MXNet입니다RecordIO. 하지만 .jpg 또는 .png 형식의 원시 이미지도 사용할 수 있습니다. 기계 학습 시스템을 위한 효율적인 데이터 준비 및 로딩에 대한 광범위한 개요는 이 토론을 참조하십시오.

참고

기존 딥 러닝 프레임워크와의 상호 운용성을 개선하기 위해 이는 다른 Amazon에서 일반적으로 사용하는 protobuf 데이터 형식과는 다릅니다. SageMaker알고리즘.

컨볼루션 네트워크에 대한 자세한 정보는 다음을 참조하십시오.

Image Classification 알고리즘의 입력/출력 인터페이스

이 SageMaker 이미지 분류 알고리즘은 RecorDIO ()application/x-recordio) 및 이미지 (image/png,image/jpeg, 및application/x-image) 파일 모드에서 학습하기 위한 콘텐츠 유형이며 RecorDIO를 지원합니다 (application/x-recordio) 파이프 모드에서 학습하기 위한 콘텐츠 유형. 그러나 증강 매니페스트 형식을 사용하여 RecordIO 파일을 생성하지 않고 이미지 파일(image/png, image/jpegapplication/x-image)을 사용해 파이프 모드에서 훈련할 수도 있습니다.

분산 훈련은 파일 모드와 파이프 모드에서 지원됩니다. 파이프 모드에서 RecordIO 콘텐츠 형식을 사용하는 경우 S3DataSourceS3DataDistributionTypeFullyReplicated로 설정해야 합니다. 이 알고리즘은 데이터가 각 머신에 복사되는 완전히 복제된 모델을 지원합니다.

이 알고리즘은 추론을 위해 image/png, image/jpegapplication/x-image를 지원합니다.

RecordIO 형식을 사용한 훈련

훈련에 RecordIO 형식을 사용하는 경우 CreateTrainingJob 요청의 InputDataConfig 파라미터에 대한 값으로 trainvalidation 채널을 둘 다 지정합니다. train 채널에서 1개의 RecordIO(.rec) 파일을 지정하고 validation 채널에서 1개의 RecordIO 파일을 지정합니다. 두 채널에 대한 콘텐츠 유형을 application/x-recordio로 설정합니다.

이미지 형식을 사용한 훈련

교육에 대해 이미지 형식을 사용하는 경우 train 요청의 validation 파라미터에 대한 값으로 train_lst, validation_lst, InputDataConfigCreateTrainingJob 채널을 지정합니다. trainvalidation 채널에 대한 개별 이미지 데이터(.jpg 또는 .png파일)를 지정합니다. 각 .lsttrain_lst 채널에서 1개의 validation_lst 파일을 지정합니다. 네 채널 모두에 대한 콘텐츠 유형을 application/x-image로 설정합니다.

참고

SageMaker 훈련 데이터와 검증 데이터를 서로 다른 채널에서 별도로 읽으므로 훈련 및 검증 데이터를 서로 다른 폴더에 저장해야 합니다.

.lst 파일은 탭으로 구분된 파일로 이미지 파일의 목록을 담은 3개의 열이 포함되어 있습니다. 첫 번째 열은 이미지 인덱스를 지정하고, 두 번째 열은 이미지에 대한 클래스 레이블 인덱스를 지정하며, 세 번째 열은 이미지 파일의 상대 경로를 지정합니다. 첫 번째 열의 이미지 인덱스는 모든 이미지 간에서 고유해야 합니다. 클래스 레이블 인덱스 세트는 0부터 시작하여 순차적으로 번호가 부여되어 있습니다. 예를 들어 0은 cat 클래스, 1은 dog 클래스이며, 이후 추가로 클래스가 이어집니다.

다음은 .lst 파일의 예제입니다:

5 1 your_image_directory/train_img_dog1.jpg 1000 0 your_image_directory/train_img_cat1.jpg 22 1 your_image_directory/train_img_dog2.jpg

예를 들어 교육 이미지가 s3://<your_bucket>/train/class_dog, s3://<your_bucket>/train/class_cat 등에 저장된 경우 train 채널에 대한 경로를 s3://<your_bucket>/train으로 지정합니다. 이는 데이터의 최상위 디렉터리입니다. .lst 파일에서 train_image_dog1.jpg 클래스 디렉터리의 class_dog 파일에 대한 상대 경로를 class_dog/train_image_dog1.jpg로 지정합니다. 또한 train 디렉터리의 한 하위 디렉터리에 있는 모든 이미지 파일을 저장할 수도 있습니다. 이 경우 상대 경로에 대해 하위 디렉터리를 사용합니다. 예: s3://<your_bucket>/train/your_image_directory.

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

증강 매니페스트 형식을 사용하면 RecordIO 파일을 생성할 필요 없이 파이프 모드에서 훈련할 수 있습니다. CreateTrainingJob 요청의 InputDataConfig 파라미터에 대한 값으로 train 및 validation 채널을 둘 다 지정해야 합니다. 이 형식을 사용하는 동안 이미지와 해당하는 주석으로 구성된 목록이 포함된 S3 매니페스트 파일이 생성되어야 합니다. 매니페스트 파일 형식은 각 행이 샘플 하나를 나타내는 JSON Lines 형식이어야 합니다. 이미지는 이미지의 S3 위치를 가리키는 'source-ref' 태그를 사용하여 지정됩니다. 주석은 CreateTrainingJob 요청에서 지정된 대로 "AttributeNames" 파라미터 값 아래에 제공됩니다. 또한 metadata 태그 아래에 추가 메타데이터가 포함될 수 있지만 이들은 알고리즘에서 무시됩니다. 다음 예제에서 "AttributeNames"은 이미지 및 주석 참조 ["source-ref", "class"]의 목록에 포함됩니다. 해당 레이블 값은 첫 번째 이미지가 "0"이고 두 번째 이미지가 “1”입니다.

{"source-ref":"s3://image/filename1.jpg", "class":"0"} {"source-ref":"s3://image/filename2.jpg", "class":"1", "class-metadata": {"class-name": "cat", "type" : "groundtruth/image-classification"}}

The order of "AttributeNames"입력 파일에서 트레이닝 할 때 중요합니다. ImageClassification 알고리즘. image를 먼저 사용한 다음 label를 사용하여 특정 순서로 파이프된 데이터를 허용합니다. 그래서”AttributeNames“이 예에서는 다음과 같이 제공됩니다."source-ref"먼저, 다음으로"class". 사용 시 ImageClassification 증강 매니페스트를 사용한 알고리즘,RecordWrapperType파라미터는"RecordIO".

레이블의 JSON 배열을 지정하면 다중 레이블 훈련도 가능합니다. num_classes 하이퍼파라미터는 총 클래스 수와 일치하도록 설정해야 합니다. 멀티 핫 형식과 클래스 ID 형식 등 두 가지 유효한 레이블 형식이 있습니다.

멀티 핫 형식에서 각 레이블은 모든 클래스의 다중 핫 인코딩 벡터이며 각 클래스는 0 또는 1 값을 사용합니다. 다음 예제에는 3가지 클래스가 있습니다. 첫 번째 이미지는 클래스 0과 2로 레이블이 지정되고, 두 번째 이미지는는 클래스 2로만 레이블이 지정됩니다.

{"image-ref": "s3://mybucket/sample01/image1.jpg", "class": "[1, 0, 1]"} {"image-ref": "s3://mybucket/sample02/image2.jpg", "class": "[0, 0, 1]"}

클래스 ID 형식에서 각 레이블은 데이터 포인트에 적용되는 클래스 ID(0, num_classes)의 목록입니다. 앞의 예제는 다음과 같이 보일 수 있습니다.

{"image-ref": "s3://mybucket/sample01/image1.jpg", "class": "[0, 2]"} {"image-ref": "s3://mybucket/sample02/image2.jpg", "class": "[2]"}

멀티 핫 형식은 기본값이지만 다음을 사용하여 컨텐츠 유형에서 명시적으로 설정할 수 있습니다.label-format파라미터"application/x-recordio; label-format=multi-hot". 클래스-ID 형식은 에서 출력하는 형식입니다. GroundTruth, 를 명시적으로 설정해야 합니다."application/x-recordio; label-format=class-id".

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

점진적 훈련

또는 SageMaker로 이전에 훈련한 모델의 결과물을 새 모델의 훈련을 위한 시드로 지정할 수 있습니다. 증분 학습은 동일하거나 유사한 데이터로 새 모델을 훈련시키려는 경우 학습 시간을 절약합니다. SageMaker 이미지 분류 모델은 에서 학습한 다른 내장 이미지 분류 모델을 사용해서만 시드할 수 있습니다. SageMaker.

사전 훈련된 모델을 사용하려면 CreateTrainingJob 요청에서 ChannelNameInputDataConfig 파라미터에 "model"로 지정합니다. model 채널의 ContentTypeapplication/x-sagemaker-model로 설정합니다. model 채널에 업로드한 사전 훈련된 모델과 새 모델 둘 다의 입력 하이퍼파라미터는 num_layers, image_shapenum_classes 입력 파라미터에 대해 설정이 동일해야 합니다. 이러한 파라미터는 네트워크 아키텍처를 정의합니다. 사전 훈련된 모델 파일의 경우 다음과 같이 출력되는 압축된 모델 아티팩트 (.tar.gz 형식) 를 사용하십시오. SageMaker. 입력 데이터에 RecordIO 또는 이미지 형식을 사용할 수 있습니다.

SageMaker Image Classification 알고리즘에서 점진적 훈련 사용 방법을 보여주는 샘플 노트북은 End-to-End Incremental Training Image Classification Example를 참조하십시오. 점진적 훈련에 대한 자세한 내용 및 점진적 훈련 사용 방법에 대한 지침은 아마존에서의 인크리멘탈 트레이닝 SageMaker 단원을 참조하십시오.

이미지 분류 알고리즘을 사용한 추론

생성된 모델은 추론에 대해 호스팅될 수 있고, 인코딩된 .jpg.png 이미지 형식을 image/png, image/jpegapplication/x-image 콘텐츠 유형으로 지원합니다. 입력 이미지의 크기가 자동으로 조정됩니다. 출력은 JSON 형식 또는 배치 변환을 위한 JSON Lines 텍스트 형식으로 인코딩된 모든 클래스에 대한 가능성 값입니다. 이미지 분류 모델은 요청당 단일 이미지를 처리하므로 JSON 또는 JSON Lines 형식으로 한 행만 출력합니다. 다음은 JSON Lines 형식의 응답 예제입니다.

accept: application/jsonlines {"prediction": [prob_0, prob_1, prob_2, prob_3, ...]}

훈련 및 추론에 대한 자세한 정보는 소개에서 참조한 이미지 분류 샘플 노트북 인스턴스를 참조하십시오.

Image Classification 알고리즘에 대한 EC2 인스턴스 권장 사항

이미지 분류를 위해 P2, P3, G4dn 및 G5 인스턴스를 지원합니다. 배치 크기가 큰 교육에 대해 메모리가 더 많은 GPU 인스턴스를 사용하는 것이 좋습니다. 또한 분산 교육을 위해 다중 GPU 및 다중 머신 설정에서 알고리즘을 실행할 수 있습니다. CPU (예: C4) 및 GPU (P2, P3, G4dn 또는 G5) 인스턴스를 모두 추론에 사용할 수 있습니다.

이미지 분류 샘플 노트북

를 사용하는 샘플 노트북의 경우 SageMaker caltech-256 데이터세트에서 모델을 학습시킨 다음 이를 배포하여 추론을 수행하는 이미지 분류 알고리즘은종간 암호화 멀티클래스 이미지 분류 예제. SageMaker에서 예제 실행에 사용할 수 있는 Jupyter 노트북 인스턴스를 생생하고 이 인스턴스에 액세스하는 방법은 아마존 SageMaker 노트북 인스턴스 단원을 참조하십시오. 노트북 인스턴스를 만들고 연 다음SageMaker 예제:탭을 클릭하면 모든 목록이 표시됩니다. SageMaker 샘플. 이미지 분류 예제 노트북은 Introduction to Amazon algorithms(Amazon 알고리즘 소개) 섹션에 있습니다. 노트북을 열려면 사용 탭을 클릭하고 Create copy(사본 생성)를 선택합니다.