매거진 Azure vs AWS

AWS에서 메시지 보내고 받기

Serverless 이미지 인식 시스템 만들기 - 분석 서비스 구축

by Younggi Seo





AWS Rekognition 호출하는 이미지 인식 서비스 추가 이후 이 섹션에서는 간단한 프런트엔드(분석 서비스부터 나머지 시스템)를 구축하는 AI 서비스 배포를 위한 Warm-up을 한다(사실 일전에 선보인적이 있다.).



1. 비동기 서비스 배포


일전에 AWS 레코그니션(rekognition) 서비스를 이용해서 객체 탐지기라는 애플리케이션을 손쉽게 만든 적이 있다. 이번에 만드는 것도 분석 서비스로 SQS(Simple Queue Service) 큐 메시지에 의해 트리거 되어 S3 버킷에 크롤링되어 있는 이미지들을 분석(word Cloud List) 한 결과를 나타내 준다.


분석서비스_server.yml.jpg 분석 서비스 serverless.yml 파일 설정값으로 레코그니션 API 접근 승인을 함.



메인 진입점 정의부분_serverless.yml.jpg 분석 서비스 serverless.yml 파일 설정 중, analyzeImages가 메인 진입점이다.



레코그니션 API사용_promise 메커니즘.jpg 1) 레코그니션의 detectLabel API 호출 2) 결과를 반환하여 프로미스(promise) 종료


여기서 promise는 콜백을 대체하기 위한 메커니즘으로 자바스크립트에서 많은 개발자들이 선호한다고 한다. 코드를 명확하게 유지하고 이른바 콜백 지옥(callback hell)을 피하는 데 도움이 되기 때문이다.



레코그니션 API사용_promise 메커니즘.jpg wordCloudList 함수에서 감지한 모든 레이블에서 단어의 발생 횟수를 계산한다.


위의 wordCloudLIst 함수가 이번 서버리스 프레임워크에서 주요한 분석 기능(Analysis-service)으로 함수는 아래와 같이 기능한다.


1) 레이블* 객체(물체 표현 단어와 신뢰도)의 배열을 인수로 받음.

2) 각 레이블 객체 내의 레이블 셋에 대해 반복하여 레이블 출현을 카운팅

3) 카운팅 결과를 단어-카운트 쌍의 배열로 변환해서 2차원 배열을 생성(맨하단 status.json 파일의 wordCloudList 배열)


*각 레이블은 이미지로부터 모델이 인식한 물체를 표현하는 단어와 그에 대한 신뢰도를 표시함.

레코그니션(rekognition)의 이미지 감지 기술을 사용하여 이미지에서 주소 및 우편 번호 감지에 사용한 사례가 있다.


메시지전송_crawlerQueue.jpg Chap2CrawlerQueue에서 저번 섹션과 같은 테스트 메시지를 전송한다.



크롤러서비스 실행완료.jpg 동일한 json 메시지를 보냈고, 실행한 크롤러 서비스에 의해 다운로드된 이미지와 status.json 파일



wordCloudList→status.json 태그세트.jpg 이번엔 이미지의 분석을 요청하는 메시지를 분석 SQS큐에 게시하여 분석 서비스가 트리거 되었기 때문에 status.json 하단에 새로운 태그 세트(wordCloudList)가



계산되어 결괏값으로 가져온 것을 확인할 수 있다.



- 다음 섹션 구현 서비스

2. 동기 서비스 배포
2.1 프런드 엔드 서비스






keyword
매거진의 이전글AWS에서 메시지 보내고 받기