BLOG
기차역과 같은 공공 장소에서 누군가가 뇌졸중이나 다른 건강 문제로 갑자기 쓰러져 넘어지게 되면 어떻게 될까요? 인명 피해와 같은 매우 큰 사고로까지 번지게 될 수도 있습니다. 이럴 때 AWS DeepLens 와 같은 개발자를 위한 딥 러닝 지원 영상 카메라를 사용하면 낙상을 감지하고 긴급 구조대에 연락할 수 있습니다. 더욱 쉬운 설명을 위해 AWS DeepLens 사용 시 end-to-end(과정의 처음부터 끝까지) 솔루션을 아래의 다이어그램으로 표현해 보았습니다.
AWS DeepLens 디바이스의 실시간 모니터링을 통해 사람들을 탐지하는 과정은 분류를 통해 수행됩니다. AWS DeepLens의 영상 캡처는 프레임 단위로 분석되며, DLAMI(AWS Deep Learning AMI)에서 생성된 변환 파이프 라인을 사용하여 데이터 세트를 준비하고 변환합니다. 프로덕션 환경에서는 파이프 라인을 AWS Glue 또는 Amazon EMR 과 같은 도구로 생성해야 합니다. 그 후 Amazon SageMaker는 이미지 분류 알고리즘을 훈련시켜 언제 떨어진 사람이 감지되는지 예측합니다. 알고리즘은 AWS DeepLens 추론 AWS Lambda와 함께 배포됩니다. 검출이 양성이면, AWS DeepLens의 IoT(Internet of Things)기능과 AWS Lambda기능은 Amazon Connect를 사용해 긴급 음성 호출을 촉발합니다.
저는(원문의 저자: Daniel Bernao[1]) 빈 방에 똑바로 앉거나 서있는 사람들로 구성된 125개 이미지와 바닥에 누워있는 사람들의 또 다른 125개 이미지를 사용하여 데이터 세트를 만들었습니다. 이는 균형 잡힌 데이터 세트였고 저는 전송 학습(transfer learning)을 사용할 예정이었지만 신경망을 위해 데이터 샘플의 수를 늘려야 했습니다. 그래서 데이터 변환 및 확장 파이프 라인을 만들기로 결정했습니다.
다음으로 이미지 해상도를 CNN (Convolutional Neural Network)의 일반적인 크기로 변환했습니다. 이상적인 해상도는 3개의 RGB 레이어가 있는 224×224(높이/너비)입니다. 보완 도구 로는 Imagemagick를 사용했습니다. 그런 다음 Augmentor라는 Python 도구를 사용하여 기능 보강을 수행하고 이미지 수를 늘렸습니다.
마지막으로 DLAMI 인스턴스에서 MXNet Python 3.6 환경을 활성화하여 im2rec 도구를 통해 데이터 세트를 recordIO 형식으로 변환했습니다. 알고리즘을 훈련시키기 위해 Jupyter Notebook을 이용해 Amazon SageMaker의 내장 이미지 분류 알고리즘을 사용했습니다 .
“deeplens”라는 제목으로 시작하여 recordIO 형식의 교육 데이터 세트를 업로드할 S3 버킷의 이름으로 변수 버킷을 정의했습니다. 내장 알고리즘의 이미지를 얻었고 교육 이미지 변수를 정의했습니다.
훈련 작업을 시작하기 전에 알고리즘이 사용하는 하이퍼 파라미터를 정의했습니다. 중요한 하이퍼 파라미터는 훈련 샘플 변수의 수였습니다. 프로젝트의 훈련 샘플 수와 일치했습니다. 몇 번의 테스트 후에 0.1, 50 네트워크 계층 및 100 시대의 학습 속도를 사용했습니다.
다음으로 훈련을 위한 데이터를 설정하고 성공적인 테스트를 시작한 다음 모델을 평가했습니다. 훈련 및 검증 알고리즘 정확도에 대한 좋은 가치를 얻었습니다. 이 통계는 AWS DeepLens 디바이스의 실제 배포로 이동하기에 충분히 강력했습니다.
AWS DeepLens 배포에는 AWS DeepLens 추론 AWS Lambda 함수가 포함되어야 합니다. AWS IAM(AWS Identity and Access Management) 역할 요구 사항을 비롯한 자세한 내용은 AWS DeepLens 추론 AWS Lambda 함수 생성 및 게시를 참고하시기 바랍니다.
배포 프로세스로 새 프로젝트 생성, 모델 가져 오기 및 프로젝트에 대한 올바른 AWS DeepLens 추론 Lambda 함수 선택하기를 진행하였습니다. 마지막 단계는 경고 시스템을 구성하는 것이었습니다. 누군가 클라우드 기반 접속 센터 서비스인 Amazon Connect에 전화를 했다는 사실을 통해 AWS DeepLens가 낙상 사고가 발생을 감지할 때 경고가 울리도록 설정했습니다.
성공적으로 Amazon Connect API 호출을 하기 위해 필요한 Amazon Connect의 인스턴스를 실행했습니다. 컨택 흐름을 사용하여 Amazon Connect를 호출하고 발신 아웃바운드 콜 API를 시작했습니다.
AWS DeepLens 추론 기능은 IoT 클라이언트를 생성하고 결과와 함께 메시지를 게시합니다. 조건부 검사는 새로운 AWS Lambda 함수를 트리거 할 수 있습니다. 추론이 맞으면(누군 사람이 빠졌음을 감지함을 의미) Amazon Connect API start outbound voice 컨택을 호출하여 발신 통화를 시작합니다. 대상 번호는 API 호출에 지정되어 AWS DeepLens 디바이스에서 모니터링중인 공간에 누군가가 있음을 경고합니다.
제가 사용한 구성은 다음과 같습니다.
- 트리거: AWS IoT
- SQL 버전: 2016-03-23
- 규칙 쿼리 명령문: SELECT fallen AS fallen FROM ‘$aws/things/deeplens_X[your_ARN]/infer’ WHERE fallen> .05
이는 IoT 메시지를 검사하는 트리거를 설정하여 포함된 레이블의 값을 평가합니다. “fallen”레이블이 0.5보다 클 경우 새 AWS Lambda 함수의 코드가 실행되었습니다.
오늘 보여드린 프로젝트는 AWS DeepLens로 무엇을 구축하고 이것이 AWS 환경과 통합히면 어떤 일이 일어나는 지를 보여주는 하나의 예일 뿐입니다.
위의 경우 말고도 AWS DeepLens로 이동이 불편한 사람을 돕는 일 등의 여러 경우에 활용될 수 있습니다.
AWS DeepLens에 대해 더 자세히 알고 싶으신가요? 제가 작성한 몇몇 다른 블로그 글을 한번 읽어 보세요!
- AWS Public Sector Blog
- Creating a serverless GPS monitoring and alerting solution
- Grandma Emergency Button – A Simple Emergency Alert Solution with AWS IoT Button
- Using a Serverless Architecture to Collect and Prioritize Citizen Feedback
- Develop and Extract Value from Open Data
[1] Daniel Bernao는 유럽의 전세계 AWS 공공 부문에서 일하는 선임 솔루션 아키텍트입니다. 기계 학습 및 인공 지능을 전문으로하는 그는 삶을 향상시키는 데 도움이되는 기술을 만드는 데 깊은 관심을 가지고 있습니다.
원문 URL: https://aws.amazon.com/ko/blogs/publicsector/automating-fall-detection-with-aws-deeplens/
** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.