AWS IoT Greengrass Version 1 는 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트를 릴리스하지 AWS IoT Greengrass V1 않습니다. 에서 실행되는 디바이스는 중단 AWS IoT Greengrass V1 되지 않고 계속 작동하며 클라우드에 연결됩니다. 로 마이그레이션 AWS IoT Greengrass Version 2하는 것이 좋습니다. 이 마이그레이션하면 추가 플랫폼 에 대한 중요한 새 기능과 지원이 추가됩니다. https://docs.aws.amazon.com/greengrass/v2/developerguide/operating-system-feature-support-matrix.html
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
ML 객체 감지 커넥터
주의
이 커넥터는 수명 연장 단계로 전환되었으며 AWS IoT Greengrass은(는) 기능, 기존 기능의 개선 사항, 보안 패치 또는 버그 수정을 제공하는 업데이트를 릴리스하지 않을 예정입니다. 자세한 내용은 AWS IoT Greengrass Version 1 유지 관리 정책 섹션을 참조하세요.
ML 객체 감지 커넥터는 AWS IoT Greengrass 코어에서 실행되는 ML(기계 학습) 추론 서비스를 제공합니다. 이 로컬 추론 서비스 플랫폼은 SageMaker Neo 딥 러닝 컴파일러에 의해 컴파일된 객체 감지 모델을 사용하여 객체 감지를 수행합니다. 두 가지 객체 감지 모델이 지원됩니다. SSD(Single Shot Multibox Detector) 및 YOLO(You Only Look Once) v3. 자세한 내용은 객체 감지 모델 요구 사항을 참조하십시오.
사용자 정의 Lambda 함수는 AWS IoT Greengrass 기계 학습 SDK를 사용하여 로컬 추론 서비스에 추론 요청을 제출합니다. 이 서비스는 입력 이미지에 대해 로컬 추론을 수행하고 이미지에서 감지된 각 객체에 대한 예측의 목록을 반환합니다. 각 예측에는 객체 범주, 예측 신뢰도 점수, 예측된 객체 주위의 경계 상자를 지정하는 픽셀 좌표가 포함됩니다.
AWS IoT Greengrass는 여러 플랫폼을 위한 ML 객체 감지 커넥터를 제공합니다.
커넥터 |
설명 및 ARN |
---|---|
ML 객체 감지 Arch64 JTX2 |
NVIDIA Jetson TX2용 객체 감지 추론 서비스입니다. GPU 가속화를 지원합니다. ARN: |
ML 객체 감지 x86_64 |
x86_64 플랫폼용 객체 감지 추론 서비스입니다. ARN: |
ML 객체 감지 ARMv7 |
ARMv7 플랫폼용 객체 감지 추론 서비스입니다. ARN: |
요구 사항
이러한 커넥터에는 다음 요구 사항이 있습니다.
-
AWS IoT Greengrass 코어 소프트웨어 v1.9.3 이상.
-
코어 디바이스에 설치되고 PATH 환경 변수에 추가된 Python
버전 3.7 또는 3.8입니다. 참고
Python 3.8을 사용하려면 다음 명령을 실행하여 기본 Python 3.7 설치 폴더에서 설치된 Python 3.8 바이너리로 연결되는 심볼릭 링크를 만드십시오.
sudo ln -s
path-to-python-3.8
/python3.8 /usr/bin/python3.7이렇게 하면 AWS IoT Greengrass에 대한 Python 요구 사항을 충족하도록 디바이스가 구성됩니다.
-
코어 디바이스에 설치된 SageMaker Neo 딥러닝 런타임에 대한 종속성. 자세한 내용은 AWS IoT Greengrass 코어에 Neo 딥 러닝 런타임 종속성 설치 섹션을 참조하세요.
-
Greengrass 그룹의 ML 리소스입니다. ML 리소스는 객체 감지 모델이 있는 Amazon S3 버킷을 참조해야 합니다. 자세한 내용은 Amazon S3 모델 소스를 참조하세요.
참고
모델은 Single Shot Multibox Detector 또는 You Only Look Once v3 객체 감지 모델 유형이어야 합니다. SageMaker Neo 딥 러닝 컴파일러를 사용하여 컴파일해야 합니다. 자세한 내용은 객체 감지 모델 요구 사항을 참조하십시오.
-
ML 피드백 커넥터를 Greengrass 그룹에 추가 및 구성해야 합니다. 이 파라미터는 이 커넥터를 사용하여 모델 입력 데이터를 업로드하고 예측을 MQTT 주제에 게시하려는 경우에만 필요합니다.
-
이 커넥터와 상호 작용하려면 AWS IoT Greengrass 기계 학습 SDK v1.1.0이 필요합니다.
객체 감지 모델 요구 사항
ML 객체 감지 커넥터는 SSD(Single Shot Multibox Detector) 및 YOLO(You Only Look Once) v3 객체 감지 모델 유형을 지원합니다. GluonCV
객체 감지 모델은 512 x 512 입력 이미지로 교육해야 합니다. GluonCV Model Zoo의 사전 교육된 모델은 이미 이 요구 사항을 충족합니다.
훈련된 객체 감지 모델은 SageMaker Neo 딥 러닝 컴파일러를 사용하여 컴파일해야 합니다. 컴파일 시 대상 하드웨어가 Greengrass 코어 디바이스의 하드웨어와 일치해야 합니다. 자세한 내용은 Amazon SageMaker 개발자 안내서의 SageMaker Neo를 참조하세요.
컴파일된 모델은 커넥터와 동일한 Greengrass 그룹에 ML 리소스(Amazon S3 모델 리소스)로 추가되어야 합니다.
커넥터 파라미터
이러한 커넥터는 다음 파라미터를 제공합니다.
MLModelDestinationPath
-
Neo 호환 ML 모델이 들어 있는 Amazon S3 버킷의 절대 경로입니다. ML 모델 리소스에 대해 지정된 대상 경로입니다.
AWS IoT 콘솔의 표시 이름: 모델 대상 경로
필수:
true
형식:
string
유효한 패턴:
.+
MLModelResourceId
-
소스 모델을 참조하는 ML 리소스의 ID입니다.
AWS IoT 콘솔의 표시 이름: Greengrass 그룹 ML 리소스
필수:
true
형식:
S3MachineLearningModelResource
유효한 패턴:
^[a-zA-Z0-9:_-]+$
LocalInferenceServiceName
-
로컬 추론 서비스의 이름입니다. 사용자 정의 Lambda 함수가 AWS IoT Greengrass 기계 학습 SDK의
invoke_inference_service
함수에 이름을 전달해 이 서비스를 간접 호출합니다. 예제는 사용 예에서 확인하세요.AWS IoT 콘솔의 표시 이름: 로컬 추론 서비스 이름
필수:
true
형식:
string
유효한 패턴:
^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
LocalInferenceServiceTimeoutSeconds
-
추론 요청이 종료되기 전까지의 시간(초)입니다. 최소값은 1입니다. 기본값은 10입니다.
AWS IoT 콘솔의 표시 이름: 제한 시간(초)
필수:
true
형식:
string
유효한 패턴:
^[1-9][0-9]*$
LocalInferenceServiceMemoryLimitKB
-
서비스에서 액세스할 수 있는 메모리의 양(KB)입니다. 최소값은 1입니다.
AWS IoT 콘솔의 표시 이름: 메모리 제한
필수:
true
형식:
string
유효한 패턴:
^[1-9][0-9]*$
GPUAcceleration
-
CPU 또는 GPU(가속) 컴퓨팅 컨텍스트. 이 속성은 ML 이미지 분류 Aarch64 JTX2 커넥터에만 적용됩니다.
AWS IoT 콘솔의 표시 이름: GPU 가속화
필수:
true
형식:
string
유효한 값:
CPU
또는GPU
MLFeedbackConnectorConfigId
-
모델 입력 데이터를 업로드할 때 사용할 피드백 구성의 ID입니다. ML 피드백 커넥터에 정의된 피드백 구성의 ID와 일치해야 합니다.
이 파라미터는 ML 피드백 커넥터를 사용하여 모델 입력 데이터를 업로드하고 예측을 MQTT 주제에 게시하려는 경우에만 필요합니다.
AWS IoT 콘솔의 표시 이름: ML 피드백 커넥터 구성 ID
필수:
false
형식:
string
유효한 패턴:
^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
커넥터 만들기 예(AWS CLI)
다음 CLI 명령은 ML 객체 감지 커넥터가 포함된 초기 버전을 사용하여 ConnectorDefinition
를 생성합니다. 이 예제에서는 ML 객체 감지 ARMv7l 커넥터의 인스턴스를 생성합니다.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyObjectDetectionConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/ObjectDetectionARMv7/versions/1", "Parameters": { "MLModelDestinationPath": "/path-to-model", "MLModelResourceId": "my-ml-resource", "LocalInferenceServiceName": "objectDetection", "LocalInferenceServiceTimeoutSeconds": "10", "LocalInferenceServiceMemoryLimitKB": "500000", "MLFeedbackConnectorConfigId" : "object-detector-random-sampling" } } ] }'
참고
이 커넥터의 Lambda 함수에는 수명이 긴 수명 주기가 있습니다.
AWS IoT Greengrass 콘솔에서는 그룹의 커넥터 페이지에서 커넥터를 추가할 수 있습니다. 자세한 내용은 Greengrass 커넥터 시작하기(콘솔) 섹션을 참조하세요.
입력 데이터
이러한 커넥터는 입력으로 이미지 파일을 사용합니다. 입력 이미지 파일은 jpeg
또는 png
형식이어야 합니다. 자세한 내용은 사용 예 섹션을 참조하세요.
이러한 커넥터는 MQTT 메시지를 입력 데이터로 받아들이지 않습니다.
출력 데이터
이러한 커넥터는 입력 이미지에서 식별된 객체에 대한 예측 결과의 형식 지정된 목록을 반환합니다.
{ "prediction": [ [ 14, 0.9384938478469849, 0.37763649225234985, 0.5110225081443787, 0.6697432398796082, 0.8544386029243469 ], [ 14, 0.8859519958496094, 0, 0.43536216020584106, 0.3314110040664673, 0.9538808465003967 ], [ 12, 0.04128098487854004, 0.5976729989051819, 0.5747185945510864, 0.704264223575592, 0.857937216758728 ], ... ] }
목록의 각 예측은 대괄호로 묶여 있으며 6개 값을 포함합니다.
-
첫 번째 값은 식별된 객체의 예측된 객체 범주를 나타냅니다. 객체 범주 및 해당 값은 Neo 딥 러닝 컴파일러에서 객체 감지 기계 학습 모델을 훈련할 때 결정됩니다.
-
두 번째 값은 객체 범주 예측의 신뢰도 점수입니다. 이 값은 예측이 정확할 확률을 나타냅니다.
-
마지막 4개 값은 이미지에서 예측된 객체 주위의 경계 상자를 표현하는 픽셀 치수에 해당합니다.
이 커넥터는 MQTT 메시지를 출력 데이터로 게시하지 않습니다.
사용 예
다음 예제 Lambda 함수는 AWS IoT Greengrass 기계 학습 SDK를 사용하여 ML 객체 감지 커넥터와 상호 작용합니다.
참고
사용자는 AWS IoT Greengrass 기계 학습 SDK 다운로드 페이지에서 SDK를 다운로드할 수 있습니다.
이 예제에서는 SDK 클라이언트를 초기화하고 SDK의 invoke_inference_service
함수를 호출해 로컬 추론 서비스를 간접 호출합니다. 그러면 알고리즘 유형, 서비스 이름, 이미지 유형 및 이미지 콘텐츠를 전달합니다. 그런 다음 이 예제에서는 서비스 응답을 구문 분석해 가능성 결과(예측)를 얻습니다.
import logging from threading import Timer import numpy as np import greengrass_machine_learning_sdk as ml # We assume the inference input image is provided as a local file # to this inference client Lambda function. with open('/test_img/test.jpg', 'rb') as f: content = bytearray(f.read()) client = ml.client('inference') def infer(): logging.info('invoking Greengrass ML Inference service') try: resp = client.invoke_inference_service( AlgoType='object-detection', ServiceName='objectDetection', ContentType='image/jpeg', Body=content ) except ml.GreengrassInferenceException as e: logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e)) return except ml.GreengrassDependencyException as e: logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e)) return logging.info('resp: {}'.format(resp)) predictions = resp['Body'].read().decode("utf-8") logging.info('predictions: {}'.format(predictions)) predictions = eval(predictions) # Perform business logic that relies on the predictions. # Schedule the infer() function to run again in ten second. Timer(10, infer).start() return infer() def function_handler(event, context): return
AWS IoT Greengrass 기계 학습 SDK의 invoke_inference_service
함수는 다음 인수를 수락합니다.
인수 |
설명 |
---|---|
|
추론에 사용할 알고리즘 유형의 이름입니다. 현재 필수: 형식: 유효한 값: |
|
로컬 추론 서비스의 이름입니다. 커넥터를 구성할 때 필수: 형식: |
|
입력 이미지의 mime 유형입니다. 필수: 형식: 유효한 값: |
|
입력 이미지 파일의 콘텐츠입니다. 필수: 형식: |
AWS IoT Greengrass 코어에 Neo 딥 러닝 런타임 종속성 설치
ML 객체 감지 커넥터는 SageMaker Neo 딥 러닝 런타임(DLR)과 함께 번들로 제공됩니다. 커넥터는 이 런타임을 사용해 ML 모델을 제공합니다. 이들 커넥터를 사용하려면 코어 디바이스에 DLR 종속성을 설치해야 합니다.
DLR 종속성을 설치하기 전에 필요한 시스템 라이브러리(지정된 최소 버전)가 디바이스에 있는지 확인합니다.
로깅 및 문제 해결
그룹 설정에 따라 이벤트 및 오류 로그는 CloudWatch 로그, 로컬 파일 시스템 또는 둘 모두에 기록됩니다. 이 커넥터의 로그는 접두사 LocalInferenceServiceName
을 사용합니다. 커넥터가 예기치 않은 방식으로 동작할 경우 커넥터의 로그를 확인합니다. 일반적으로 이러한 로그에는 누락된 ML 라이브러리 종속성 또는 커넥터 시작 실패 원인과 같은 유용한 디버깅 정보가 포함됩니다.
AWS IoT Greengrass 그룹이 로컬로 로그를 기록하도록 구성된 경우 커넥터는 로그 파일을
에 기록합니다. Greengrass 로깅에 대한 자세한 내용은 AWS IoT Greengrass 로그를 사용하여 모니터링 섹션을 참조하세요.greengrass-root
/ggc/var/log/user/region
/aws/
다음 정보를 사용하면 ML 객체 감지 커넥터의 문제 해결에 도움이 됩니다.
필수 시스템 라이브러리
다음 탭에는 각 ML 객체 감지 커넥터에 필요한 시스템 라이브러리가 나열되어 있습니다.
문제
증상 | 솔루션 |
---|---|
Raspberry Pi에서는 다음 오류 메시지가 기록되며 카메라를 사용하지 않습니다. |
드라이버를 비활성화하려면 다음 명령을 실행합니다.
이 작업은 임시적입니다. 이 심볼 링크는 재부팅 후 사라집니다. 재부팅 링크 자동 생성 방법을 알아보려면 OS 배포 매뉴얼을 참조하십시오. |
라이선스
ML 객체 감지 커넥터에는 다음 타사 소프트웨어/라이선스가 포함되어 있습니다.
-
AWS SDK for Python (Boto3)
/Apache 라이선스 2.0 -
botocore
/Apache 라이선스 2.0 -
dateutil
/PSF 라이선스 -
docutils
/BSD 라이선스, GNU 일반 공개 라이선스(GPL), Python Software Foundation 라이선스, 퍼블릭 도메인 -
jmespath
/MIT 라이선스 -
s3transfer
/Apache 라이선스 2.0 -
urllib3
/MIT 라이선스
-
Deep Learning Runtime
/Apache 라이선스 2.0 six
/MIT
이 커넥터는 Greengrass 코어 소프트웨어 라이선스 계약
다음 사항도 참조하세요.
-
Amazon SageMaker 개발자 안내서의 객체 감지 알고리즘