[데모/코드] Google의 머신러닝, Maps, Firebase 플랫폼을 활용한 위치기반 서비스 만들기

얼마 전 개최된 ‘개발자들의 축제’ 2017 Google I/O에서는 Google의 향후 1년의 방향성을 보여주는 수많은 발표가 있었습니다. SPH에서는 올해 Google I/O 행사에서 발표된 기술들을 직접 사용해 보고 이 기술들을 Google Maps APIs에 적용하여 서비스를 만든다면 어떤 새로운 가능성이 열릴 지 연구하고 두 가지 데모를 만들어 보았습니다. (특히 웹/모바일 서비스에서 백엔드 개발의 수고를 크게 덜어주는 Google Firebase가 사용했습니다.) 개발에 사용된 코드도 공개드리니 재미있게 봐주셨으면 좋겠습니다 ^^

DEMO 1:

Machine Learning + Maps API를 이용한 Location Intelligence Service

Google의 CEO 선다 피차이는 키노트 발표에서 2016년이 “mobile first”의 해 였다면 2017년은 “AI first,” 곧 “인공지능 우선”의 해라고 말했습니다. Google의 모든 기술 및 사업영역에서 인공지능이 활발히 활용될 것이라는 예고였는데요. 기업과 개발자들로 하여금 이미 트레이닝 된 머신러닝 모델을 API를 통해 손쉽게 서비스와 제품에 사용할 수 있도록 Machine Learning APIs를 본격적으로 공개했습니다.

<Google의 머신러닝 APIs 기능>

SPH R&D팀은 위와 같이 다양한 Google Machine Learning APIs 중 강력한 이미지 분석 기능을 제공하는 Cloud Vision API를 선택했습니다.

<Google Cloud Vision APIs 기능>

Cloud Vision API는 이미지 내 사물, 사람, 문자를 인식하여 그 의미를 분석해 주는 기술입니다. 아래 화면은 Google Cloud Vision API를 간단하게 테스트 해 본 결과인데요. 왼쪽에 있는 사진 속 장소는 어디일까요? 바로 일본의 도쿄타워 입니다. Cloud Vision API를 사용 해 인식 한 결과 도쿄타워가 91%의 일치율로 결과 값으로 나왔습니다. 재미 있는 점은 이보다 더 낮은 일치율로 나온 결과가 프랑스의 에펠타워 였는데요. SPH 멤버들에게 해당 사진을 보여주고 바로 장소를 맞춰보라고 했을 때 에펠타워라고 대답한 사람이 가장 많았다는 점입니다. 어떤 경우 사람 보다 높은 적중률을 보이는  Cloud Vision API! 더욱 신기한 건, 유명 장소를 다양한 각도에서 촬영한 다수의 사진들을 적용해도 같은 장소로 인식 할 수 있다고 합니다.

<Google Cloud Vision API 사용 예시>

자, 그럼 이렇게 놀라운 Cloud Vision API와 Google Maps API를 사용하면 어떤 재미있는 기능 만들 수 있을까요? SPH가 만들어본 데모는 바로 특정 장소의 사진을 올리면 빠르게 그 위치를 찾아주고, 다수의 사진을 업로드한 경우 필요하다면 각 장소를 방문하는데 최적 경로를 찾아주는 기능 입니다. 장소 검색, 여행 일기 같은 서비스에 활용될 수 있으리라 생각되는데요. 아래는 해당 데모의 개발 구조와 데모 상세 이미지입니다. Maps APIs 중에는 세계 곳곳의 장소에 대한 정보를 제공하는 Places API와 길찾기 기능을 제공하는 Directions API가 사용되었습니다.

0. 데모 개발 구조

<Google Cloud Vision API + Maps API 결합 데모 구조>

1. 이미지 업로드

특정 장소를 촬영한 이미지를 드래그앤드롭 방식으로 업로드합니다.

2. Cloud Vision API 이미지 인식 및 분석

Google Cloud Vision API가 빠른 속도로 업로드된 이미지를 인식하고 분석합니다.

3. 분석 결과 디스플레이 

Cloud Vision API가 각 장소의 위치를 분석한 값이 나오면 이를 지도 위에 시각화 합니다. 각 사진 속 지명과 정확한 위치, 각 위치와 관련된 키워드가 해시태그로 태깅되어 확인할 수 있습니다. (Google Maps Places API)

4. 시간/이동수단에 따른 최적 경로 검색

원하는 시간과 이동수단을 선택하면 검색한 이미지 속 장소를 방문할 수 있는 최적 경로를 계산하고 시각화 해 줍니다. (Google Maps Directions API)

데모 시연 영상에서 사용 방법과 실제 속도 또한 확인하실 수 있습니다.

이와 같이 이미지에서 도출 할 수 있는 정보를 빠르게 추출해 주는 Cloud Vision API와 다양한 지도 기반 기능을 제공하는  Maps API를 결합하면 또 다른 창의적인 서비스를 만들 수 있으리라 기대합니다.

DEMO 2:

Google Awareness API + Firebase를 이용한 Context Awareness Service

<Google Awareness API 설명>

작년 Google I/O에서 처음 발표된 Awareness API는 말 그대로 사람이나 사물의 위치, 시간, 날씨, 행동 및 기기의 비콘과 헤드폰 등 7가지 정보에 기반한 “상황 인식” 기술을 제공하는 API 입니다.  지난 해 두번의 포스팅을 통해 Awareness API에 대해 자세히 소개드린 바 있습니다.

(1) I/O 2016에서 발표한 Awareness API 기술 A to Z

(2) Awareness API로 사용자 상황에 반응하는 개인맞춤형 앱 개발하기

<Google Awareness API와 Firebase로 개발한 상황인식 서비스 데모>

올해에는 Awareness API와 더불어 Google I/O에서도 정말 많은 업데이트 소식이 발표되었던 Google Firebase를 활용하여 위치기반 서비스 데모를 만들어 보았습니다. 개발자가 직접 SPH 본사가 위치한 여의도 일대를 걸어다니며 실시간 위치 트래킹 및 지오펜싱 enter/exit 알림, 특정 행동 인식 기능을 확인했습니다.

1. 실시간 위치 추적

트래킹 하고자 하는 사물 또는 사람의 위치를 실시간으로 시각화 합니다. (Fused Location Provider API)

2. 지오펜싱 추적 및 알림 기능

추적하고자 하는 사물 또는 사람이 미리 지정한 지오펜스에 진입 또는 이탈 했을 때 실시간으로 알림 메세지를 전송합니다. (Awareness Fence API & Firebase cloud messaging)

3. Activity detection – 행동 인식 

미리 지정한 특정 행동 또는 패턴이 발생하였을 시 이를 시각화 할 수 있습니다. (Awareness Snapshot API)

아래 동영상에서 좀더 상세한 데모 시연 결과를 확인하실 수 있습니다.

아래는 해당 데모의 개발 구조 입니다. 안드로이드 부문의 Fused Location API, Snapshot API, Fence API가 각각 위치 추적, 이동 경로 파악, 지오펜스 관리 기능을 제공하고 이 정보를  Firebase의 database, hosting, cloud messaging 기능을 통해 백엔드에서 처리하는 구조로 이루어져 있습니다.

<Context AwarenessService 구조>

이번 데모는 어떻게 보셨나요? 머신러닝, 지도, 상황인지 기술 등 여러개의 API를 결합하여 비즈니스가 구상하고 있는 서비스를 기술적으로 손쉽게 구현할 수 있다는 점을 몸소 확인할 수 있는 기회였다고 생각합니다.  궁금하신 분들을 위해 코드를 공유 드립니다.  >>Github에서 코드 확인하기

1. Google Awareness API + Firebase를 이용한 Context Awareness Service

1.1. Awareness API에서 측정된 정보를 모니터링 하는 웹 프로젝트

  • Folder Name : GoogleIOSample_Awareness
  • HTML5/CSS3, Javacript, jQuery
  • Google Maps Javascript API

1.2. Awareness API을 이용하여 Location & Context를 측위하는 안드로이드 프로젝트

  • Folder Name : GoogleIOSample_Awareness_Android
  • Android 4.4 Kitkat
  • Google Play Service – Google Awareness Service, Google Location Service

2. Machine Learning + Maps API를 이용한 Location Intelligence Service

2.1. Google Cloud Machine Learning의 Vision API를 이용하여 위치정보를 출력하는 웹 프로젝트

  • Folder Name : GoogleIOSample_MachineLearning
  • HTML5/CSS3, Javacript, jQuery
  • Google Maps Javascript API – Directions Service, Place Service

2.2. Google Cloud Machine Learning의 Vision API를 호출하는 Node.js 서버

  • Folder Name : JSServer
  • Node.js, express
  • Google Cloud Machine Learning Service – Cloud Vision API

긴 글 읽어주셔서 감사합니다 ^^!

SPH는 CARTO, Google Maps, SuperMap 등 다양한 케이스에 적용될 수 있는 다채로운 제품군을 보유하고 있으며 고객의 사례에 꼭 맞는 무료 세미나 및 개별 컨설팅을 제공하고 있습니다. 각 케이스에 맞춰 더욱 자세한 이야기를 나누고 싶으시다면 여기에서 문의 주시길 바라며, SPH에서 발행하는 GIS/로케이션 인텔리전스 관련 최신 소식을 받아보고 싶으신 분들은 페이스북 페이지 또는 뉴스레터를 구독해 주시길 바랍니다. 감사합니다.