기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자습서: Lite를 사용하여 TensorFlow 샘플 이미지 분류 추론 수행
이 자습서에서는 TensorFlow Lite 이미지 분류 추론 구성 요소를 사용하여 Greengrass 코어 기기에서 샘플 이미지 분류 추론을 수행하는 방법을 보여줍니다. 이 구성 요소에는 다음과 같은 구성 요소 종속성이 포함됩니다.
-
TensorFlow 라이트 이미지 분류 모델 스토어 컴포넌트
-
TensorFlow 라이트 런타임 컴포넌트
이 구성 요소를 배포하면 사전 학습된 MobileNet v1 모델을 다운로드하고 TensorFlow Liteml/tflite/image-classification
이러한 추론 결과를 보려면 AWS IoT 콘솔의 AWS IoT MQTT 클라이언트를 사용하여 이 주제를 구독하십시오.
이 자습서에서는 샘플 추론 구성 요소를 배포하여 에서 제공하는 샘플 이미지에 대해 이미지 분류를 수행합니다. AWS IoT Greengrass 이 튜토리얼을 완료한 후에는 Greengrass 코어 디바이스의 로컬 카메라 이미지에 대해 이미지 분류를 수행하도록 샘플 추론 구성 요소를 수정하는 방법을 보여주는 튜토리얼을 튜토리얼: Lite를 사용하여 TensorFlow 카메라의 이미지에 대한 샘플 이미지 분류 추론 수행 완료할 수 있습니다.
Greengrass 기기에서의 기계 학습에 대한 자세한 내용은 을 참조하십시오. 기계 학습 추론 수행
사전 조건
이 튜토리얼을 완료하려면 다음이 필요합니다.
-
리눅스 그린그래스 코어 디바이스. 계정이 없는 경우 자습서: AWS IoT Greengrass V2 시작하기 단원을 참조하십시오. 코어 디바이스는 다음 요구 사항을 충족해야 합니다.
-
Amazon Linux 2 또는 우분투 18.04를 실행하는 Greengrass 코어 디바이스의 경우 GNU C 라이브러리
(glibc) 버전 2.27 이상이 디바이스에 설치되어 있습니다. -
라즈베리 파이와 같은 ARMv7L 디바이스에서는 OpenCV-Python에 대한 종속성이 디바이스에 설치되어 있습니다. 다음 명령을 실행하여 종속 항목을 설치합니다.
sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
-
라즈베리파이 OS Bullseye를 실행하는 라즈베리파이 디바이스는 다음 요구사항을 충족해야 합니다.
-
NumPy 1.22.4 이상이 디바이스에 설치되었습니다. Raspberry Pi OS Bullseye에는 이전 버전이 포함되어 있으므로 다음 명령을 실행하여 디바이스에서 업그레이드할 수 있습니다. NumPy NumPy
pip3 install --upgrade numpy
-
기기에서 레거시 카메라 스택이 활성화되었습니다. Raspberry Pi OS Bullseye에는 기본적으로 활성화되고 호환되지 않는 새로운 카메라 스택이 포함되어 있으므로 레거시 카메라 스택을 활성화해야 합니다.
레거시 카메라 스택을 활성화하려면
-
다음 명령을 실행하여 Raspberry Pi 구성 도구를 엽니다.
sudo raspi-config
-
인터페이스 옵션을 선택합니다.
-
레거시 카메라를 선택하여 레거시 카메라 스택을 활성화합니다.
-
Raspberry Pi를 재부팅합니다.
-
-
-
1단계: 기본 알림 주제 구독
이 단계에서는 TensorFlow Lite 이미지 분류 구성요소가 게시한 AWS IoT MQTT 메시지를 감시하도록 AWS IoT 콘솔에서 MQTT 클라이언트를 구성합니다. 기본적으로 구성 요소는 주제에 대한 추론 결과를 게시합니다. ml/tflite/image-classification
Greengrass 코어 디바이스에 구성 요소를 배포하기 전에 이 항목을 구독하여 구성 요소가 처음 실행될 때의 추론 결과를 확인하십시오.
기본 알림 주제를 구독하려면
-
AWS IoT콘솔
탐색 메뉴에서 Test, MQTT 테스트 클라이언트를 선택합니다. -
주제 구독의 주제 이름 상자에 를 입력합니다
ml/tflite/image-classification
. -
구독을 선택합니다.
2단계: TensorFlow Lite 이미지 분류 구성 요소 배포
이 단계에서는 TensorFlow Lite 이미지 분류 구성요소를 코어 기기에 배포합니다.
-
AWS IoT Greengrass콘솔
탐색 메뉴에서 구성 요소를 선택합니다. -
구성 요소 페이지의 퍼블릭 구성 요소 탭에서
aws.greengrass.TensorFlowLiteImageClassification
을(를) 선택합니다. -
aws.greengrass.TensorFlowLiteImageClassification 페이지에서 배포를 선택합니다.
-
배포에 추가에서 다음 중 하나를 선택합니다.
-
이 구성 요소를 대상 디바이스의 기존 배포에 병합하려면 기존 배포에 추가를 선택한 다음 수정하려는 배포를 선택합니다.
-
대상 디바이스에서 새 배포를 생성하려면 새 배포 생성을 선택합니다. 디바이스에 기존 배포가 있는 경우 이 단계를 선택하면 기존 배포가 대체됩니다.
-
-
대상 지정 페이지에서 다음 작업을 수행합니다.
-
배포 정보 아래에서 친숙한 배포 이름을 입력하거나 수정합니다.
-
배포 대상 아래에서 배포 대상을 선택하고 다음을 선택합니다. 기존 배포 수정 시 배포 대상을 변경할 수 없습니다.
-
-
구성 요소 선택 페이지의 공용 구성 요소에서
aws.greengrass.TensorFlowLiteImageClassification
구성 요소가 선택되었는지 확인하고 다음을 선택합니다. -
구성 요소 구성 페이지에서 기본 구성 설정을 유지하고 다음을 선택합니다.
-
고급 설정 구성 페이지에서 기본 구성 설정을 유지하고 다음을 선택합니다.
-
검토 페이지에서 [Deploy] 를 선택합니다.
-
deployment.json
파일을 생성하여 TensorFlow Lite 이미지 분류 구성 요소의 배포 구성을 정의합니다. 이 파일은 다음과 같아야 합니다.{ "targetArn":"
targetArn
", "components": { "aws.greengrass.TensorFlowLiteImageClassification": { "componentVersion":2.1.0
, "configurationUpdate": { } } } }-
targetArn
필드에서
을(를) 다음 형식으로 배포 대상으로 지정할 사물 또는 사물 그룹의 Amazon 리소스 이름(ARN)으로 바꿉니다.targetArn
-
사물:
arn:aws:iot:
region
:account-id
:thing/thingName
-
사물 그룹:
arn:aws:iot:
region
:account-id
:thinggroup/thingGroupName
-
-
이 자습서에서는 구성 요소 버전 2.1.0을 사용합니다.
aws.greengrass.TensorFlowLiteObjectDetection
구성 요소 개체에서2.1.0을
다른 버전의 TensorFlow Lite 개체 감지 구성 요소를 사용하도록 바꾸십시오.
-
-
다음 명령을 실행하여 TensorFlow Lite 이미지 분류 구성 요소를 기기에 배포합니다.
aws greengrassv2 create-deployment \ --cli-input-json file://
path/to/
deployment.json
배포를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 다음 단계에서는 구성 요소 로그를 확인하여 배포가 정상적으로 완료되었는지 확인하고 추론 결과를 확인합니다.
3단계: 추론 결과 보기
구성 요소를 배포한 후에는 Greengrass 코어 디바이스의 구성 요소 로그와 콘솔의 MQTT 클라이언트에서 추론 결과를 볼 수 있습니다. AWS IoT AWS IoT 구성 요소가 추론 결과를 게시하는 주제를 구독하려면 을 참조하십시오. 1단계: 기본 알림 주제 구독
-
AWS IoTMQTT 클라이언트 - 추론 구성 요소가 기본 알림 주제에 게시하는 결과를 보려면 다음 단계를 완료하십시오.
-
AWS IoT콘솔
탐색 메뉴에서 Test, MQTT 테스트 클라이언트를 선택합니다. -
구독에서 원하는 항목을 선택합니다.
ml/tflite/image-classification
다음 예와 비슷한 메시지가 표시되어야 합니다.
{ "timestamp": "2021-01-01 00:00:00.000000", "inference-type": "image-classification", "inference-description": "Top 5 predictions with score 0.3 or above ", "inference-results": [ { "Label": "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor", "Score": "0.5882352941176471" }, { "Label": "Persian cat", "Score": "0.5882352941176471" }, { "Label": "tiger cat", "Score": "0.5882352941176471" }, { "Label": "dalmatian, coach dog, carriage dog", "Score": "0.5607843137254902" }, { "Label": "malamute, malemute, Alaskan malamute", "Score": "0.5450980392156862" } ] }
-
-
구성 요소 로그 - 구성 요소 로그에서 추론 결과를 보려면 Greengrass 코어 장치에서 다음 명령을 실행합니다.
sudo tail -f
/logs/aws.greengrass.TensorFlowLiteImageClassification.log/greengrass/v2
다음 예와 비슷한 결과가 표시될 것입니다.
2021-01-01 00:00:00.000000 [INFO] (Copier) aws.greengrass.TensorFlowLiteImageClassification: stdout. Publishing results to the IoT core.... {scriptName=services.aws.greengrass.TensorFlowLiteImageClassification.lifecycle.Run.script, serviceName=aws.greengrass.TensorFlowLiteImageClassification, currentState=RUNNING} 2021-01-01 00:00:00.000000 [INFO] (Copier) aws.greengrass.TensorFlowLiteImageClassification: stdout. {"timestamp": "2021-01-01 00:00:00.000000", "inference-type": "image-classification", "inference-description": "Top 5 predictions with score 0.3 or above ", "inference-results": [{"Label": "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor", "Score": "0.5882352941176471"}, {"Label": "Persian cat", "Score": "0.5882352941176471"}, {"Label": "tiger cat", "Score": "0.5882352941176471"}, {"Label": "dalmatian, coach dog, carriage dog", "Score": "0.5607843137254902"}, {"Label": "malamute, malemute, Alaskan malamute", "Score": "0.5450980392156862"}]}. {scriptName=services.aws.greengrass.TensorFlowLiteImageClassification.lifecycle.Run.script, serviceName=aws.greengrass.TensorFlowLiteImageClassification, currentState=RUNNING}
구성 요소 로그나 MQTT 클라이언트에서 추론 결과를 볼 수 없다면 배포가 실패했거나 코어 디바이스에 도달하지 못한 것입니다. 이는 코어 기기가 인터넷에 연결되어 있지 않거나 구성 요소를 실행할 수 있는 적절한 권한이 없는 경우 발생할 수 있습니다. 코어 장치에서 다음 명령을 실행하여 AWS IoT Greengrass Core 소프트웨어 로그 파일을 확인합니다. 이 파일에는 Greengrass 코어 기기 배포 서비스의 로그가 포함되어 있습니다.
sudo tail -f
/logs/greengrass.log
/greengrass/v2
자세한 설명은 머신 러닝 추론 문제 해결 섹션을 참조하세요.
다음 단계
카메라 인터페이스가 지원되는 Greengrass 코어 디바이스가 있는 경우 카메라 이미지에 대한 이미지 분류를 수행하도록 샘플 추론 구성 요소를 수정하는 방법을 보여주는 작업을 튜토리얼: Lite를 사용하여 TensorFlow 카메라의 이미지에 대한 샘플 이미지 분류 추론 수행 완료할 수 있습니다.
샘플 TensorFlow Lite 이미지 분류 추론 구성 요소의 구성을 더 자세히 알아보려면 다음을 시도해 보십시오.
-
InferenceInterval
구성 파라미터를 수정하여 추론 코드의 실행 빈도를 변경하십시오. -
추론
ImageDirectory
구성 요소 구성의ImageName
및 구성 매개 변수를 수정하여 추론에 사용할 사용자 지정 이미지를 지정합니다.
공용 구성 요소의 구성을 사용자 지정하거나 사용자 지정 기계 학습 구성 요소를 만드는 방법에 대한 자세한 내용은 을 참조하십시오. 머신 러닝 구성 요소 사용자 지정