객체 감지 - MXNet - Amazon SageMaker AI

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

객체 감지 - MXNet

Amazon SageMaker AI 객체 감지 - MXNet 알고리즘은 단일 딥 신경망을 사용하여 이미지의 객체를 감지하고 분류합니다. 이 알고리즘은 입력으로 이미지를 가져와 이미지 장면 내에서 객체의 모든 인스턴스를 식별하는 지도 학습 알고리즘입니다. 객체는 지정된 모음 내 클래스 중 하나로 범주화되는데, 이때 해당 클래스에 속하는 신뢰도 점수를 사용합니다. 이미지 내에서 객체의 위치와 크기는 직사각형 경계 상자로 표시됩니다. Single Shot 멀티박스 감지기(SSD) 프레임워크를 사용하며 VGG 및의 두 가지 기본 네트워크를 지원합니다ResNet. 네트워크는 처음부터 훈련하거나 ImageNet 데이터 세트에 대해 사전 훈련된 모델로 훈련할 수 있습니다.

Object Detection 알고리즘에 대한 입력/출력 인터페이스

SageMaker AI 객체 감지 알고리즘은 파일 모드에서 훈련하기 위한 RecordIO(application/x-recordio) 및 이미지(image/png, image/jpegapplication/x-image) 콘텐츠 유형을 모두 지원하고 파이프 모드에서 훈련하기 위한 RecordIO(application/x-recordio)를 지원합니다. 그러나 증강 매니페스트 형식을 사용하여 RecordIO 파일을 생성하지 않고 이미지 파일(image/png, image/jpegapplication/x-image)을 사용해 파이프 모드에서 훈련할 수도 있습니다. Amazon SageMaker AI 객체 감지 알고리즘에 권장되는 입력 형식은 Apache MXNet RecordIO입니다. 하지만 .jpg 또는 .png 형식의 원시 이미지도 사용할 수 있습니다. 알고리즘은 추론에 대해 application/x-image만을 지원합니다.

참고

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

데이터 형식에 대한 자세한 정보는 Object Detection 샘플 노트북 섹션을 참조하세요.

RecordIO 형식을 사용한 훈련

훈련에 RecordIO 형식을 사용하는 경우 CreateTrainingJob 요청의 InputDataConfig 파라미터에 대한 값으로 train 및 validation 채널을 둘 다 지정합니다. train 채널에서 1개의 RecordIO(.rec) 파일을 지정하고 validation 채널에서 1개의 RecordIO 파일을 지정합니다. 두 채널에 대한 콘텐츠 유형을 application/x-recordio로 설정합니다. RecordIO 파일을 생성하는 방법의 예는 객체 감지 샘플 노트북을 참조하세요. 또한 MXNet의 GluonCV에서 도구를 사용하여 컨텍스트의 PASCAL 시각적 객체 클래스 및 공통 객체()와 같은 인기 있는 데이터 세트에 대한 RecordIO 파일을 생성할 수 있습니다. COCO

이미지 형식을 사용한 훈련

훈련에 이미지 형식을 사용하는 경우 CreateTrainingJob 요청의 InputDataConfig 파라미터에 대한 값으로 train, validation, train_annotationvalidation_annotation 채널을 지정합니다. train 및 validation 채널에 대한 개별 이미지 데이터(.jpg 또는 .png)를 지정합니다. 주석 데이터의 경우 JSON 형식을 사용할 수 있습니다. train_annotationvalidation_annotation 채널에서 해당하는 .json 파일을 지정합니다. 이미지 유형에 따라 4가지 모든 채널의 콘텐츠 유형을 image/png 또는 image/jpeg로 설정합니다. 또한 데이터세트에 .jpg 및 .png 이미지가 둘 다 포함되어 있는 경우에는 콘텐츠 유형 application/x-image를 사용할 수도 있습니다. 다음은 .json 파일의 예입니다.

{ "file": "your_image_directory/sample_image1.jpg", "image_size": [ { "width": 500, "height": 400, "depth": 3 } ], "annotations": [ { "class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128 }, { "class_id": 0, "left": 161, "top": 250, "width": 79, "height": 143 }, { "class_id": 1, "left": 101, "top": 185, "width": 42, "height": 130 } ], "categories": [ { "class_id": 0, "name": "dog" }, { "class_id": 1, "name": "cat" } ] }

각 이미지의 주석에는 .json 파일이 필요하고 .json 파일의 이름은 해당 이미지와 동일해야 합니다. 위 .json 파일의 이름은 "sample_image1.json"이어야 합니다. 주석 .json 파일에는 4가지 속성이 있습니다. 속성 "file"은 이미지 파일의 상대 경로를 지정합니다. 예를 들어 훈련 이미지와 해당 .json 파일이 s3://your_bucket/train/sample_image 및 s3://your_bucket/train_annotation에 저장되는 경우 train 및 train_annotation 채널의 경로를 각각 s3://your_bucket/train 및 s3://your_bucket/train_annotation으로 지정합니다.

.json 파일에서 sample_image1.jpg 이미지의 상대 경로는 sample_image/sample_image1.jpg여야 합니다. "image_size" 속성은 전체 이미지 크기를 지정합니다. SageMaker AI 객체 감지 알고리즘은 현재 3채널 이미지만 지원합니다. "annotations" 속성은 이미지 내 객체의 범주와 경계 상자를 지정합니다. 각 객체에는 "class_id" 인덱스와 경계 상자 좌표 4개("left", "top", "width", "height")로 주석이 지정됩니다. "left"(x 좌표) 및 "top"(y 좌표) 값은 경계 상자의 왼쪽 위 모서리를 나타냅니다. "width"(x 좌표) 및 "height"(y 좌표) 값은 경계 상자의 크기를 나타냅니다. 원점(0, 0)은 전체 이미지의 왼쪽 위 모서리입니다. 한 이미지 내에 객체가 여러 개 있는 경우 단일 .json 파일 내에 주석이 모두 포함되어 있어야 합니다. "categories" 속성은 클래스 인덱스 및 클래스 이름 간 매핑을 저장합니다. 클래스 인덱스는 0부터 시작하여 순차적으로 번호가 지정되어 있어야 합니다. "categories" 속성은 주석 .json 파일에 대해 선택적입니다.

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

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

{"source-ref": "s3://your_bucket/image1.jpg", "bounding-box":{"image_size":[{ "width": 500, "height": 400, "depth":3}], "annotations":[{"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 80, "height": 50}]}, "bounding-box-metadata":{"class-map":{"0": "dog", "5": "horse"}, "type": "groundtruth/object-detection"}} {"source-ref": "s3://your_bucket/image2.jpg", "bounding-box":{"image_size":[{ "width": 400, "height": 300, "depth":3}], "annotations":[{"class_id": 1, "left": 100, "top": 120, "width": 43, "height": 78}]}, "bounding-box-metadata":{"class-map":{"1": "cat"}, "type": "groundtruth/object-detection"}}

객체 감지 알고리즘을 훈련할 경우에는 입력 파일의 "AttributeNames" 순서가 중요합니다. image를 먼저 사용한 다음 annotations를 사용하여 특정 순서로 파이프된 데이터를 허용합니다. 따라서이 예제의 “AttributeNames”는 "source-ref" 먼저와 함께 제공된 다음와 함께 제공됩니다"bounding-box". 증강 매니페스트와 함께 객체 감지를 사용할 경우 파라미터 RecordWrapperType의 값을 "RecordIO"으로 설정해야 합니다.

증강 매니페스트 파일에 대한 추가 정보는 훈련 작업용 증강 매니페스트 파일 섹션을 참조하세요.

점진적 훈련

또한 SageMaker AI로 이전에 훈련한 모델의 아티팩트를 사용하여 새 모델의 훈련을 시드할 수도 있습니다. 증분 훈련은 동일하거나 유사한 데이터로 새 모델을 훈련하려는 경우 훈련 시간을 절약합니다. SageMaker AI 객체 감지 모델은 SageMaker AI에서 훈련된 다른 내장 객체 감지 모델로만 시딩할 수 있습니다.

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

점진적 훈련에 대한 자세한 내용 및 점진적 훈련 사용 방법에 대한 지침은 Amazon SageMaker AI에서 증분 훈련 사용 섹션을 참조하세요.

EC2 객체 감지 알고리즘에 대한 인스턴스 권장 사항

객체 감지 알고리즘은 P2, P3, G4dn 및 G5 GPU 인스턴스 패밀리를 지원합니다. 큰 배치 크기로 훈련할 때는 메모리가 더 많은 GPU 인스턴스를 사용하는 것이 좋습니다. 분산 훈련을 위해 다중GPU 및 다중 머신 설정에서 객체 감지 알고리즘을 실행할 수 있습니다.

추론에 CPU (예: C5 및 M5) 및 GPU (예: P3 및 G4dn) 인스턴스를 모두 사용할 수 있습니다.

Object Detection 샘플 노트북

SageMaker AI 객체 감지 알고리즘을 사용하여에서 모델을 훈련하고 호스팅하는 방법을 보여주는 샘플 노트북의 경우

Single Shot 멀티박스 감지기 알고리즘을 사용하는 Caltech Birds(CUB 200 2011) 데이터 세트입니다. 조류 종에 대한 Amazon SageMaker AI 객체 감지를 참조하세요. SageMaker AI에서 예제를 실행하는 데 사용할 수 있는 Jupyter 노트북 인스턴스를 생성하고 액세스하는 방법에 대한 지침은 섹션을 참조하세요Amazon SageMaker 노트북 인스턴스. 노트북 인스턴스를 생성하고 연 후 SageMaker AI 예제 탭을 선택하여 모든 SageMaker AI 샘플 목록을 확인합니다. Object Detection 알고리즘을 사용하는 객체 감지 예제 노트북은 Introduction to Amazon Algorithms(Amazon 알고리즘 소개) 섹션에 있습니다. 노트북을 열려면 사용 탭을 클릭하고 사본 생성을 선택합니다.

Amazon SageMaker AI 객체 감지 알고리즘에 대한 자세한 내용은 다음 블로그 게시물을 참조하세요.