기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Panorama 샘플 애플리케이션 배포
AWS Panorama 어플라이언스 또는 호환 디바이스를 설정하고 소프트웨어를 업그레이드한 후 샘플 애플리케이션을 배포하십시오. 다음 섹션에서는 애플리케이션을 AWS Panorama 애플리케이션 CLI로 샘플 가져와서 AWS Panorama 콘솔에 배포합니다.
샘플 애플리케이션은 기계 학습 모델을 사용하여 네트워크 카메라의 비디오 프레임 단위로 개체를 분류합니다. AWS Panorama Application SDK를 사용하여 모델을 로드하고, 이미지를 가져오고, 모델을 실행합니다. 그런 다음 애플리케이션은 결과를 원본 비디오 위에 오버레이하고 연결된 디스플레이에 출력합니다.
소매 환경에서는 유동인구 패턴을 분석하여 트래픽 수준을 예측할 수 있습니다. 분석 내용을 다른 데이터와 결합하여 휴일 및 기타 행사에 필요한 인력 충원에 대한 계획을 세우고, 광고 및 판촉의 효과를 측정하거나, 디스플레이 배치 및 재고 관리를 최적화할 수 있습니다.
사전 조건
이 자습서의 절차를 따르려면 명령을 실행할 쉘 또는 명령줄 터미널이 필요합니다. 코드 목록에서 명령어 앞에는 프롬프트 기호($)와 현재 디렉토리 이름(해당하는 경우)이 표시됩니다.
~/panorama-project$ this is a command
this is output
긴 명령의 경우 이스케이프 문자(\
)를 사용하여 명령을 여러 줄로 분할합니다.
Linux 및 macOS는 선호 쉘과 패키지 관리자를 사용합니다. Windows 10에서 Linux용 Windows Subsystem을 설치
Python의 패키지 관리자인 pip를 사용하여 AWS Panorama 애플리케이션을 개발하고 도구를 설치할 수 있습니다. 아직 Python 사용 중이라면 최신 버전을 설치
이 자습서에서는 Docker를 사용하여 애플리케이션 코드를 실행하는 컨테이너를 빌드합니다. Docker 웹 사이트에서 Docker 설치: Docker 다운로드
이 자습서에서는 AWS Panorama Application CLI를 사용하여 샘플 애플리케이션을 가져오고, 패키지를 빌드하고, 아티팩트를 업로드합니다. AWS Panorama Application CLI는 AWS Command Line Interface (AWS CLI)를 사용하여 서비스 API 작업을 호출합니다. 가 이미 있는 경우 최신 버전으로 AWS CLI업그레이드합니다. AWS Panorama Application CLI 및를 설치하려면를 AWS CLI사용합니다pip
.
$
pip3 install --upgrade awscli panoramacli
샘플 애플리케이션을 다운로드하여 작업 영역에 추출하십시오.
-
샘플 애플리케이션 — aws-panorama-sample.zip
샘플 애플리케이션 가져오기
계정에서 사용할 샘플 애플리케이션을 가져오려면 AWS Panorama Application CLI를 사용하십시오. 애플리케이션의 폴더와 매니페스트에는 자리 표시자 계정 번호에 대한 참조가 포함되어 있습니다. 계정 번호로 업데이트하려면 panorama-cli import-application
명령을 실행하십시오.
aws-panorama-sample$ panorama-cli import-application
packages
디렉토리의 SAMPLE_CODE
패키지에는 애플리케이션 기반 이미지 panorama-application
를 사용하는 Dockerfile을 비롯한 애플리케이션의 코드와 구성이 들어 있습니다. 어플라이언스에서 실행되는 애플리케이션 컨테이너를 빌드하려면 panorama-cli build-container
명령을 사용하십시오.
aws-panorama-sample$ ACCOUNT_ID=$(aws sts get-caller-identity --output text --query 'Account')
aws-panorama-sample$ panorama-cli build-container --container-asset-name code_asset --package-path packages/${ACCOUNT_ID}-SAMPLE_CODE-1.0
AWS Panorama Application CLI의 마지막 단계는 애플리케이션의 코드와 모델 노드를 등록하고 서비스에서 제공하는 Amazon S3 액세스 포인트에 자산을 업로드하는 것입니다. 자산에는 코드의 컨테이너 이미지, 모델 및 각각에 대한 설명자 파일이 포함됩니다. 노드를 등록하고 에셋을 업로드하려면 panorama-cli
package-application
명령을 실행합니다.
aws-panorama-sample$ panorama-cli package-application
Uploading package model
Registered model with patch version bc9c58bd6f83743f26aa347dc86bfc3dd2451b18f964a6de2cc4570cb6f891f9
Uploading package code
Registered code with patch version 11fd7001cb31ea63df6aaed297d600a5ecf641a987044a0c273c78ceb3d5d806
애플리케이션 배포
AWS Panorama 콘솔을 사용하여 애플리케이션을 어플라이언스에 배포하십시오.
애플리케이션을 배포하려면
AWS Panorama 콘솔 배포 애플리케이션 페이지
를 엽니다. -
애플리케이션 배포를 선택합니다.
-
애플리케이션 매니페스트의 콘텐츠
graphs/aws-panorama-sample/graph.json
를 텍스트 편집기에 붙여넣습니다. Next(다음)를 선택합니다. -
애플리케이션 명칭에
aws-panorama-sample
을 입력합니다. -
배포로 진행을 선택합니다.
-
배포 시작을 선택합니다.
-
역할을 선택하지 않고 다음을 선택합니다.
-
디바이스 선택을 선택한 다음 어플라이언스를 선택합니다. Next(다음)를 선택합니다.
-
데이터 소스 선택 단계에서 입력 보기를 선택하고 카메라 스트림을 데이터 소스로 추가합니다. Next(다음)를 선택합니다.
-
구성 단계에서 다음을 선택합니다.
-
배포를 선택한 다음 완료를 선택합니다.
-
배포된 애플리케이션 목록에서 aws-panorama-sample을 선택합니다.
업데이트를 위해 이 페이지를 새로 고치거나 다음 스크립트를 사용하여 명령줄에서 배포를 모니터링하십시오.
예 monitor-deployment.sh
while true; do aws panorama list-application-instances --query 'ApplicationInstances[?Name==`aws-panorama-sample`]' sleep 10 done
[
{
"Name": "aws-panorama-sample",
"ApplicationInstanceId": "applicationInstance-x264exmpl33gq5pchc2ekoi6uu",
"DefaultRuntimeContextDeviceName": "my-appliance",
"Status": "DEPLOYMENT_PENDING",
"HealthStatus": "NOT_AVAILABLE",
"StatusDescription": "Deployment Workflow has been scheduled.",
"CreatedTime": 1630010747.443,
"Arn": "arn:aws:panorama:us-west-2:123456789012:applicationInstance/applicationInstance-x264exmpl33gq5pchc2ekoi6uu",
"Tags": {}
}
]
[
{
"Name": "aws-panorama-sample",
"ApplicationInstanceId": "applicationInstance-x264exmpl33gq5pchc2ekoi6uu",
"DefaultRuntimeContextDeviceName": "my-appliance",
"Status": "DEPLOYMENT_PENDING",
"HealthStatus": "NOT_AVAILABLE",
"StatusDescription": "Deployment Workflow has completed data validation.",
"CreatedTime": 1630010747.443,
"Arn": "arn:aws:panorama:us-west-2:123456789012:applicationInstance/applicationInstance-x264exmpl33gq5pchc2ekoi6uu",
"Tags": {}
}
]
...
애플리케이션이 실행되지 않는 경우 Amazon CloudWatch Logs에서 애플리케이션 및 디바이스 로그를 확인하십시오.
출력 검토
배포가 완료되면 애플리케이션이 비디오 스트림 처리를 시작하고 로그를 CloudWatch로 보냅니다.
CloudWatch Logs에서 로그를 보려면
-
다음 그룹에서 AWS Panorama 애플리케이션 및 어플라이언스 로그를 확인할 수 있습니다.
-
디바이스 로그 –
/aws/panorama/devices/
device-id
-
애플리케이션 로그 –
/aws/panorama/devices/
device-id
/applications/instance-id
-
2022-08-26 17:43:39 INFO INITIALIZING APPLICATION 2022-08-26 17:43:39 INFO ## ENVIRONMENT VARIABLES {'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'TERM': 'xterm', 'container': 'podman'...} 2022-08-26 17:43:39 INFO Configuring parameters. 2022-08-26 17:43:39 INFO Configuring AWS SDK for Python. 2022-08-26 17:43:39 INFO Initialization complete. 2022-08-26 17:43:39 INFO PROCESSING STREAMS 2022-08-26 17:46:19 INFO epoch length: 160.183 s (0.936 FPS) 2022-08-26 17:46:19 INFO avg inference time: 805.597 ms 2022-08-26 17:46:19 INFO max inference time: 120023.984 ms 2022-08-26 17:46:19 INFO avg frame processing time: 1065.129 ms 2022-08-26 17:46:19 INFO max frame processing time: 149813.972 ms 2022-08-26 17:46:29 INFO epoch length: 10.562 s (14.202 FPS) 2022-08-26 17:46:29 INFO avg inference time: 7.185 ms 2022-08-26 17:46:29 INFO max inference time: 15.693 ms 2022-08-26 17:46:29 INFO avg frame processing time: 66.561 ms 2022-08-26 17:46:29 INFO max frame processing time: 123.774 ms
애플리케이션의 비디오 출력을 보려면 HDMI 케이블을 사용하여 어플라이언스를 모니터에 연결합니다. 기본적으로 애플리케이션은 신뢰도가 20% 이상인 모든 분류 결과를 표시합니다.
예 squeezenet_classes.json
["tench", "goldfish", "great white shark", "tiger shark", "hammerhead", "electric ray", "stingray", "cock", "hen", "ostrich", "brambling", "goldfinch", "house finch", "junco", "indigo bunting", "robin", "bulbul", "jay", "magpie", "chickadee", "water ouzel", "kite", "bald eagle", "vulture", "great grey owl", "European fire salamander", "common newt", "eft", "spotted salamander", "axolotl", "bullfrog", "tree frog", ...
샘플 모델에는 많은 동물, 음식, 일반 개체를 포함한 1,000개의 클래스가 있습니다. 카메라로 키보드나 커피잔을 가리켜 보십시오.

단순화를 위해 샘플 애플리케이션은 간단한 분류 모델을 사용합니다. 모델은 각 클래스에 대한 확률을 통해 단일 배열을 출력합니다. 실제 애플리케이션에서는 다차원 출력이 있는 개체 감지 모델을 더 자주 사용합니다. 더 복잡한 모델을 사용하는 샘플 애플리케이션에 대해서는 샘플 애플리케이션, 스크립트, 템플릿를 참조하십시오.
SDK for Python 사용
샘플 애플리케이션은를 사용하여 Amazon CloudWatch AWS SDK for Python (Boto) 로 지표를 전송합니다. 이 기능을 활성화하려면 애플리케이션에 지표 전송 권한을 부여하는 역할을 생성하고 역할이 연결된 애플리케이션을 재배포하십시오.
샘플 애플리케이션에는 필요한 권한이 있는 역할을 생성하는 AWS CloudFormation 템플릿이 포함되어 있습니다. 역할을 만들려면 aws cloudformation deploy
명령을 사용하십시오.
$
aws cloudformation deploy --template-file aws-panorama-sample.yml --stack-name aws-panorama-sample-runtime --capabilities CAPABILITY_NAMED_IAM
애플리케이션을 재배포하려면
AWS Panorama 콘솔 배포 애플리케이션 페이지
를 엽니다. 애플리케이션을 선택합니다.
-
바꾸기를 선택합니다.
-
애플리케이션 배포 단계를 완료합니다. IAM 역할 지정에서 사용자가 생성한 역할을 선택합니다. 이름이
aws-panorama-sample-runtime
로 시작하는 함수입니다. -
배포가 완료되면 CloudWatch 콘솔
을 열고 AWSPanoramaApplication
네임스페이스에서 지표를 확인합니다. 150프레임마다 애플리케이션은 프레임 처리 및 추론 시간에 대한 지표를 기록하고 업로드합니다.
정리
샘플 애플리케이션 작업을 완료한 경우 AWS Panorama 콘솔을 사용하여 어플라이언스에서 해당 애플리케이션을 제거할 수 있습니다.
어플라이언스에서 애플리케이션을 제거하려면
AWS Panorama 콘솔 배포 애플리케이션 페이지
를 엽니다. 애플리케이션을 선택합니다.
-
디바이스에서 삭제를 선택합니다.
다음 단계
샘플 애플리케이션을 배포하거나 실행하는 동안 오류가 발생한 경우 문제 해결을 참조하십시오.
샘플 애플리케이션의 기능 및 구현에 대해 자세히 알아보려면 다음 주제를 계속 진행하십시오.