매거진 Azure vs AWS

AWS SDK로 Rekognition 서비스 개발

애플리케이션 레벨의 서비스 형태를 활용하는 객체 탐지기 아키텍처 구현

by Younggi Seo






클라우드 업체 입사 이틀을 남기고 마지막 휴식 차에 AWS와 Azure의 AI 이미지 인식 기술의 정확도를 비교해서 각 클라우드 사의 ML(Machine Learning, 특히 여기서는 인공 신경망) 성능을 비교하는 사이드 프로젝트를 진행해보려 한다. 일단, AWS 같은 경우는 새로운 계정을 발급해서 1년 간 무료 티어를 사용할 수 있다. 그래서 AWS의 AI 기반 서비스 각 피쳐 별로 웹 애플리케이션을 제작해서 배포하는 것까지 실습할 계획이다. 이번 장에서는 AWS SDK로 이미지 인식 AI 기능(Rekognition)을 사용한 과정을 살펴보도록 하겠다.



이제는 메이저 클라우드 사(MS Azure, AWS, Google)의 AI 서비스를 활용해서 일반인도 AI 애플리케이션을 빠르게 개발할 수 있다. 우선 기존의 AWS AI 서비스를 활용하고, 특별한 요건이 있거나 경쟁력 있는 데이터(클라우드 서비스사가 보유 중인 데이터로 이미 훈련을 마친 AI 서비스를 사용하지 않고 자체 보유하고 있는 데이터로 ML 모형을 훈련해서 더 좋은 성능을 낼 수 있는 경우를 말함)를 보유하고 있지 않을 때 맞춤형 AI 기능을 개발하면 좋다(허준호, 2020).



aws_REKOGNITION.JPG 아마존 레코그니션 서비스를 사용하여 필자의 여권사진과 증명사진 두 장을 비교해봤다. 유사도(Similarity) 결괏값 99.9%



AWS CLI 설정 완료.JPG AWS 콘솔에서 생성한 S3의 각 버킷리스트를 AWS CLI모드에서 확인(aws s3 ls)하는 과정


가상환경_오케스트레이션 계층 생성(AWS 챌리스 프로젝트).JPG AWS 콘솔보다 기능 구현 자유도가 높은 AWS CLI 모드(윈도 WSL 우분투 사용)에서 파이썬 개발환경(pipenv)을 가상으로 구축하는 과정



레코그니션 객체탐지 기능 호출.JPG AWS SDK(레코그니션 서비스)에 업로드한 증명사진. jpg 파일의 AI 객체 탐지 결괏값을 추출하기
레코그니션 객체탐지 기능 호출_Tie_Person_Human.JPG 필자의 증명사진에서 액세서리로 탐지된 타이(Tie)가 98.9%, 그리고 사람(Person)이 이보다 적은(?) 94.9%로 유사도 결괏값으로 추출된 것을 확인할 수 있다
레코그니션 객체탐지 기능 호출_Boy_Netktie.JPG 아래로 살펴보니, 넥타이(Nectie)가 91.7%로 사람(Human)의 유사도 값 94.9%보다 덜 유사하게 탐지됐다


aws_REKOGNITION_탐지결과.JPG object_detection_demo.py라는 파일을 파이썬 인터프리터로 실행시키면 AWS detection label과 같은 리스트의 값을 한눈에 볼 수 있다



챌리스 통신.JPG AWS 챌리스를 이용해 로컬에서 AI 애플리케이션을 파이썬으로 코딩(copy & paste)했고 로컬로 챌리스(chalice) 통신 대기 중인 상태



aws_REKOGNITION_탐지결과_webappDEMO.JPG 필자의 증명사진이 로딩되지 못했지만(서버가 상태 403(fobbiden)으로 응답함으로 인해), 일단 만든 정적 웹사이트에서 탐지된 객체(jpg 사진)의 결괏값은 추출함



get_통신.JPG HTTP 응답 코드 200은 사용자가 클라이언트(또는 브라우저)를 통해 요청한 AWS 챌리스(chalice) 통신 요청이 성공했음을 알 수 있다.



위와 같이 웹 UI 기반의 데모 애플리케이션을 개발해봤다. 실은 참조한 책의 저자가 올린 github 소스를 그대로 가져와서 일단 프로젝트 기본 구조를 확인하고 각 컴포넌트 간의 상호작용이 어떻게 이루어지는지 확인하는 과정이었다. AWS 챌리스로 AI 애플리케이션 후단부를 AWS에 배포하고 다시 AWS S3로 정적 웹 사이트를 배포하기까지 비개발자도 간단하게 할 수 있다. 앞서 서두에서 말한 맞춤형 AI 서비스의 의의가 여기에 있다.



다만 Amazon S3의 객체는 기본적으로 비공개이기 때문에, 객체에 대한 액세스 권한을 할당하는 방법을 통해 가져오는 이미지의 렌더링이 이루어지도록 해야 한다.






참조

Tripuraneni, S., & Song, C. (2019). AWS 기반 AI 애플리케이션 개발(원제 : Hands-On Artificial Intelligence on Amazon Web Services: Decrease the time to market for AI and ML applications with the power of AWS)(1st ed.). (36-112). 에이콘.


ai-aws/2장-소스코드 at main · AcornPublishing/ai-aws · GitHub




keyword