BLOG

AWS DeepLens 사용하여서 마신 커피의 양을 체크하는 법
작성일: 2018-11-13

AWS DeepLens는 개발자에게 딥러닝 학습이 가능한 비디오 카메라입니다. 완전히 프로그래밍 가능한 비디오 카메라, 자습서, 코드 및 사전 교육된 모델을 사용하여 딥러닝 기술셋을 확장할 수 있습니다.

 

이 글의 목표는 AWS DeepLens를 시작하는 방법과 이 장치가 IoT 및 딥러닝의 도입을 용이하게 하여 개발자의 손에 맡기는 방법을 보여주는 것입니다. 이 글에서는 사람들이 마시고 리더 보드에 집계를 표시하는 커피 잔 수를 계산하는 간단한 얼굴 인식 응용 프로그램을 작성하는 방법을 보여줍니다.

 

이제 다음 단계를 수행합니다.

 

1 단계 : 샘플 프로젝트 배포

2 단계 : 추론 AWS Lambda 함수 변경

3 단계 : 커피 감지 백엔드 생성

4 단계 : AWS Elastic Beanstalk에 앱 배포

 

프로젝트 개요

프로젝트의 다음 아키텍처 다이어그램을 검토해 보겠습니다. AWS DeepLens 장치를 사용하면 에지의 딥러닝을 실행할 수 있습니다. 장면을 감지하여 얼굴 인식 모델과 비교하여 실행합니다.

 

모델이 얼굴을 감지하면 Amazon S3에 프레임을 업로드합니다. AWS Lambda 함수는 AWS Rekognition에 대해 프레임을 실행하여 장면의 머그잔을 감지하고 얼굴이 이전에 감지되었거나 새 얼굴인지 여부를 확인합니다. 얼굴이 등록되거나 인식되면 Amazon DynamoDB에 저장되며 웹 응용 프로그램의 증분 카운터로 사용됩니다.

 

 

이 글에 이어 아키텍처를 복제하고 이와 같은 응용 프로그램을 구축하는 데 필요한 정보를 얻을 수 있습니다.

 

 

1 단계 : 샘플 프로젝트 배포

프로젝트를 배포하려면 먼저 AWS DeepLens 장치를 등록해야 합니다 (아직 등록하지 않은 경우). 자세한 내용은 AWS DeepLens 장치 등록을 참조하십시오.

 

 

프로젝트 유형으로 프로젝트 템플릿 사용이 선택되어 있는지 확인하고 프로젝트 템플릿에서 얼굴 인식을 선택하십시오.

 

 

여기에서 프로젝트 이름을 지정하고 설명을 추가하고 나머지는 기본값으로 두고 생성을 선택할 수 있습니다.

 

2) 프로젝트가 생성되면 AWS DeepLens 장치에 배포해야합니다. 프로젝트 페이지에서 프로젝트 이름을 선택한 다음 장치에 배포를 선택하십시오. 대상 장치 페이지에서 등록된 AWS DeepLens 장치를 선택하십시오.

 

검토를 선택하십시오.

 

 

리뷰한 다음에 배포를 선택함으로써 완료합니다.

 

3) IAM 콘솔에 탐색합니다. AmazonS3FullAccess 용 AWSDeepLensGreengrassGroupRole 에 대한 승인을 추가하십시오.

 

 

다음으로 프로젝트가 성공적으로 배포되었는지 확인해야 합니다. AWS DeepLens 장치를 모니터, 마우스 및 키보드에 연결하십시오. 장치를 등록 할 때 설정한 암호를 사용하여 장치에 로그인 하십시오.

 

터미널을 시작하고 다음 명령을 실행하십시오.

 

mplayer —demuxer lavf lavfdopts format=mjpeg:probesize=32 /tmp/results.mjpeg

 

이 명령은 프로젝트 스트림을 표시합니다. 추론 Lambda 함수가 처리될 때마다 모델에 대해 실행되는 각 프레임이 표시됩니다.

 

2 단계 : 추론 Lambda 함수 변경

샘플 프로젝트를 배포한 후 장치에서 실행중인 추론 Lambda 함수를 변경하여 Amazon S3에 이미지를 업로드 해야합니다. 이 사용 사례의 경우 프로세스를보다 직관적으로 만들기 위해 일부 메시지를 화면에 추가했습니다.

 

1) 이미지를 업로드 할 Amazon S3 버킷을 만듭니다. 버킷을 설정할 때 기본 설정을 사용하고 나머지 인프라와 동일한 AWS 리전을 선택하십시오.

2) AWS Lambda 콘솔로 가서 deeplens-face-detection 기능을 엽니다. 함수 코드를 제거하고 여기에서 lambda_inference 코드로 바꿉니다.(bucket_name 변수를 버킷 이름으로 바꿉니다.)

이 단계에서 얼굴이 감지되면 이미지를 Amazon S3에 업로드하도록 코드를 변경합니다. 또한 사진을 찍기 전에 업로드와 카운트다운 사이의 쿨다운 대기 시간 같은 기능을 추가하고 있습니다.

 

3) AWS Lambda 함수를 저장하고 새 버전의 코드를 게시하십시오. 이를 통해 AWS DeepLens 프로젝트로 이동하여 장치의 기능을 업데이트 할 수 있습니다.

 

 

AWS DeepLens 콘솔에서 프로젝트에 액세스하고 프로젝트를 편집하여 AWS Lambda 함수의 버전 및 제한 시간을 600 초로 업데이트하십시오.

 

 

4) 프로젝트를 선택하고 배포를 선택하여 프로젝트를 장치에 다시 배포합니다.

 

 

아래의 명령을 사용하여 AWS DeepLens 에 botocore를 설치합니다.

 

sudo H pip install botocore

 

이는 S3 에 프레임이 업로드 될 수 있도록 허락합니다.

 

3 단계 : 커피 감지 백엔드 만들기

얼굴을 인식하기 위해 Amazon Rekognition 컬렉션을 사용합니다. 컬렉션은 IndexFaces API 작업에 의해 감지된 얼굴 유지를 위한 컨테이너입니다. Amazon Rekognition은 분석된 이미지의 복사본을 저장하지 않습니다. 대신 얼굴 특징 벡터를 컬렉션 내의 얼굴의 수학적인 표현으로 저장합니다.

 

컬렉션의 얼굴 정보를 사용하여 이미지, 저장된 비디오 및 스트리밍 비디오에서 알려진 얼굴을 검색 할 수 있습니다.

 

컬렉션을 만들려면 먼저 AWS CLI를 구성해야 합니다.

 

  1. AWS CLI를 설치하십시오.
  2. AWS CLI를 구성하십시오.

 

1) 다음 CLI 명령을 사용하여 빈 Amazon Rekognition 컬렉션을 만듭니다.

aws rekognition createcollection collectionid “Faces” region useast1

 

2) 이제 Amazon Rekognition에서 생성된 고유한 얼굴 특징 벡터와 각자가 보유한 커피의 수를 저장하는 Amazon DynamoDB 테이블을 작성하려고 합니다.

DynamoDB는이 사용 사례에 적합합니다. 완벽하게 관리되는 서비스로서 DynamoDB 테이블에 저장할 수 있는 데이터의 양에는 제한이 없기 때문에 데이터베이스의 탄력성과 확장성에 대해 걱정할 필요가 없습니다. 데이터 셋의 크기가 커짐에 따라 DynamoDB는 스토리지 요구 사항을 충족 할 수 있도록 충분한 시스템 자원에 자동으로 데이터를 분산시킵니다. DynamoDB를 사용하지 않는 경우 테이블에 추가된 증분 수가 적절하게 조정해야합니다. 가격은 DynamoDB를 통해 제공하는 리소스에 대해서만 지불하면됩니다. 그러나 이 사용 사례의 경우 AWS Free Tier 가격 정책 모델을 유지하거나 프로젝트의 DynamoDB 가격을 낮게 유지하는 것이 가능합니다.

DynamoDB에서 테이블을 만들려면 AWS 관리 콘솔에서 DynamoDB 콘솔로 이동하여 테이블을 만듭니다. 테이블 이름과 faceIDFaces를 기본 키로 사용하고 다른 설정은 기본 값으로 두십시오.

또한 Lambda 함수의 로그를 저장하기 위해 로그라는 테이블을 생성 할 것입니다. 이 테이블의 경우 unixtime을 기본 키로 사용하십시오.

 

3) Amazon Rekognition을 호출하는 AWS Lambda 함수를 생성하십시오. 먼저 IAM 콘솔로 이동하여 AWS Lambda 함수의 역할을 만듭니다. 이 역할에 다음 관리 정책을 적용하십시오.

 

  • AmazonRekognitionFullAccess
  • AmazonDynamoDBFullAccess
  • AmazonS3FullAccess
  • AWSLambdaExecute

 

프로덕션 구현을 위해 AWS IAM 모범 사례를 따라야 합니다.

 

4) 마지막으로 Lambda 콘솔로 이동하십시오. 파이썬 3.6을 런타임으로 사용하여 Lambda 함수를 생성하십시오. 이전에 설정한 S3 버킷의 이름을  Lambda  트리거로 설정하십시오. 다음 스크린 샷과 같이 이벤트 유형, 접두어 및 접미어를 구성하십시오. 이렇게하면 이미지 / 패턴과 일치하는 키로 시작하는 새 .jpg 개체가 버킷 내에서 만들어 질 때만  Lambda  함수가 트리거됩니다.

 

 

템플릿  Lambda  코드를 GitHub에서 다운로드한 코드로 바꿉니다.  Lambda  제한 시간을 1 분으로 수정하십시오.

 

GitHub 저장소의 코드를 복사하여 코드 상자에 붙여 넣습니다.  Lambda  코드가 무엇을 하는지 이해해봅시다.

 

response = rekognition.detect_labels(Image=image, MaxLabels=123, MinConfidence=50)   

    for object in response[“Labels”]:

        if object[“Name”] == “Coffee Cup” or object[“Name”] == “Cup”:

            coffee_cup_detected = True

            break        

            ::

        message = detect_faces(image, bucket, key)

 

 

이 코드 부분에서는 AWS Rekognition을 사용하여 이미지의 레이블을 감지합니다. 응답에 “Cup” 또는 “Coffee Cup”이 있는지 확인합니다. 이 라벨 중 하나를 찾으면 얼굴 검색 기능을 호출하여 얼굴 컬렉션을 검색하여 일치하는 얼굴이 있는지 찾습니다.

 

faces = rekognition.search_faces_by_image(CollectionId=face_collection, Image=image,

                                              FaceMatchThreshold=face_match_threshold, MaxFaces=1)

 

컬렉션에서 일치하는 얼굴이 발견되지 않으면 얼굴이 인덱싱되고 컬렉션에 추가됩니다.

 

faces = rekognition.index_faces(Image=image, CollectionId=face_collection)

 

기능을 테스트하기 위해서 S3 버킷에 이미지를 업로드하고 DynamoDB 테이블을 체크할 수 있습니다.

 

4 단계 : AWS Elastic Beanstalk에 앱 배포

이제 AWS Elastic Beanstalk을 사용하여 리더 보드 애플리케이션을 배포할 차례입니다. Elastic Beanstalk은 웹 응용 프로그램을 배포하는 데 필요한 필수 리소스를 자동으로 조정합니다. 코드를 업로드하기만 하면 됩니다.

 

1) IAM 콘솔로 이동하고 IAM 역할 페이지에서 AmazonS3FullAccess 및 DynamoDBFullAccess 관리 정책을 aws-elasticbeanstalk-ec2-role에 연결하십시오. 이를 통해 Elastic Beanstalk에 의해 프로비저닝된 Amazon EC2 인스턴스가 Amazon S3 및 Amazon DynamoDB에 액세스 할 수 있습니다.

 

2) AWS Elastic Beanstalk 콘솔로 이동하여 새 응용 프로그램을 만듭니다. 새 웹 서버 환경을 만듭니다. 도메인 이름을 입력하고, Python을 플랫폼으로 선택하고, Flask 응용 프로그램과 requirements.txt 파일이 포함된 GitHub에서 ZIP 파일을 업로드하십시오. Elastic Beanstalk이 환경을 제공할 때까지 기다리십시오.

 

 

애플리케이션의 URL은 화면 상단에 표시되어야 합니다. URL을 클릭하면 커피 리더 보드를 볼 수 있습니다!

 

중요: 프로젝트를 배포하면 사용되는 다양한 AWS 서비스 비용이 발생합니다.

 

결론

이제 개인이 마시는 커피 잔의 수를 추적 할 수 있습니다. 이 프로젝트는 단순한 커피 리더 보드에 중점을 두고 있지만 이 아키텍처의 백본은 모든 애플리케이션에 사용할 수 있습니다.

 

이 프로젝트는 개발자를 기계 학습 및 IoT에 도입 할 때 AWS DeepLens 장치의 성능을 보여줍니다. AWS 서비스의 조합을 사용하여 짧은 시간 내에 이 앱을 제작할 수 있었습니다. 이제 여러분도 그렇게 할 수 있습니다!

 

원문 URL: https://aws.amazon.com/ko/blogs/machine-learning/track-the-number-of-coffees-consumed-using-aws-deeplens/

 

** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.