한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
ML Kit와 ARKit가 함께 작동하는 방식을 알아보세요
2019년 5월 22일 수요일
<블로그 원문은
이곳
에서 확인하실 수 있습니다>
Ibrahim Ulukaya,
개발자 프로그램 엔지니어
Firebase 사무실에서 근무하는 우리 모두가 Hanley Weng의 '
CoreML-in-ARKit
' 프로젝트에 큰 흥미를 느꼈습니다. 이 프로젝트는 장면에서 감지하는 이미지 위에 3D 라벨을 표시해 줍니다. 온디바이스 감지 기능이 빠른 응답을 제공하지만, 클라우드 기반 솔루션에서 얻을 수 있는 정확도와 함께 온디바이스 모델의 속도를 제공하는 솔루션을 빌드하고 싶었습니다. 그게 바로 정확히 우리가 MLKit-ARKit 프로젝트로 빌드한 것입니다. 우리가 어떻게 해냈는지 자세히 알아보려면 계속 읽어보세요!
작동 방식
ML Kit for Firebase
는 강력하면서도 사용하기 쉬운 패키지에서 Google Cloud의 머신러닝(ML) 전문성을 Android 및 iOS 앱으로 확장하는 모바일 SDK입니다. 이 SDK는 사용하기 쉬운 Base API를 포함할 뿐 아니라 자체적인 사용자설정 TFLite 모델을 가져오는 능력도 제공합니다.
ARKit
는 AR 환경을 빌드하는 작업을 간소화하기 위해 기기 모션 추적, 카메라 장면 캡처, 고급 장면 처리, 표시 편의 기능을 결합하는 Apple의 프레임워크입니다. 이러한 기술을 통해 iOS 기기의 전방 카메라 또는 후방 카메라를 사용하여 많은 종류의 AR 환경을 만들 수 있습니다.
우리는 이 프로젝트에서 후방 카메라의 ARKit 프레임을 큐로 푸시합니다. ML Kit는 이러한 프레임을 처리하여 그 프레임에 있는 객체를 찾아냅니다.
사용자가 화면을 탭하면 ML Kit가 가장 높은 신뢰도로 감지된 라벨을 반환합니다. 그러면 우리가 3D 도움말 풍선 텍스트를 작성해 사용자의 장면에 추가합니다.
ML Kit의 작동 방식
ML에 경험이 있는 개발자든 이 세계를 처음 접하는 개발자든 상관없이, ML Kit는 모든 모바일 개발자에게 ML을 쉽게 만들어줍니다. 더욱 고급 수준의 사용 사례를 목표로 하는 개발자는 ML Kit를 사용하여 자체적인 TFLite 모델을 가져올 수 있으며, 보다 일반적인 사용 사례를 염두에 두고 있는 개발자는 사용하기 쉬운 Base API 중 하나를 구현할 수 있습니다. 이러한 API는 텍스트 인식, 이미지 라벨 지정, 얼굴 인식 등의 사용 사례를 포괄하고 Google Cloud로 훈련된 모델의 지원을 받습니다. 우리는 예시에서 이미지 라벨 지정을 사용하도록 하겠습니다.
Base API는 온디바이스와 클라이드 기반이라는 두 가지 방식으로 제공됩니다. 온디바이스 API는 무료로 사용할 수 있고 로컬에서 작동하는 반면, 클라우드 기반 API는 더 높은 정확도와 더 정밀한 응답을 제공합니다. 클라우드 기반 Vision API는 최초의 1000/API 호출은 무료이고 그 이후부터 유료입니다. 이 API는 Google의 Cloud Vision API에서 풀 사이즈 모델의 기능과 성능을 제공합니다.
하이브리드 접근 방식
우리는 ML Kit 온디바이스 이미지 라벨 지정 API를 사용하여 60fps의 프레임 속도를 계속 유지하는 동시에 결과의 라이브 피드를 받을 것입니다. 사용자가 화면을 탭하면 우리는 Cloud 이미지 라벨 지정 API에 대한 비동기 호출을 현재 이미지와 함께 실행합니다. 우리는 이처럼 더 높은 정확도의 모델로부터 응답을 받으면 실행 중에 3D 라벨을 업데이트합니다. 그래서 온디바이스 API를 계속 실행하고 그 결과를 정보의 초기 소스로 사용하는 동안 더 높은 정확도의 Cloud API가 온디맨드로 호출되고 그 결과가 마침내 온디바이스 라벨을 대체합니다.
어떤 결과를 보여줄까요?
온디바이스 API는 모든 처리가 로컬에서 실시간으로 이루어지는 반면, Cloud Vision API는 Google Cloud 백엔드에 네트워크 요청을 하고 더 크고 더 높은 정확도의 모델을 활용합니다. 우리는 이를 더 정밀한 응답으로 간주하므로, 우리의 앱에서는 온디바이스 API가 제공하는 라벨을 Cloud Vision API의 결과가 도착할 때 그 결과로 대체합니다.
직접 체험해 보세요!
1. 프로젝트를 복제합니다.
$ git clone https://github.com/FirebaseExtended/MLKit-ARKit.git
2. 포드를 설치하고 .xcworkspace 파일을 열어 Xcode에서 프로젝트를 봅니다
.
$ cd MLKit-ARKit
$ pod install --repo-update
$ open MLKit-ARKit.xcworkspace
3. 샘플 앱에서 Firebase ML Kit를 설정하려면:
이 안내에 따라
앱에 Firebase를 추가
합니다.
'com.google.firebaseextended.MLKit-ARKit'를 iOS 프로젝트 번들 ID로 지정합니다.
앱에 Firebase를 추가하는 과정의 일부로 생성되는 GoogleService-Info.plist 파일을 다운로드합니다.
Xcode의 Info.plist 옆에서 GoogleService-Info.plist 파일을 앱에 추가합니다.
이때 앱은 온디바이스 인식을 사용해 작동해야 합니다.
4. (선택 사항) 샘플 앱에서 Cloud Vision API를 설정하려면:
Firebase 프로젝트를 Blaze 요금제로 전환합니다.
Blaze 수준의 프로젝트만 Cloud Vision API를 사용할 수 있습니다. 다음 단계를 따라 프로젝트를 Blaze 요금제로 전환하고 선불 결제를 사용합니다.
Firebase 콘솔
에서 프로젝트를 엽니다.
왼쪽 아래 모서리에서 현재 선택한 Spark 요금제 옆에 있는
MODIFY
링크를 클릭합니다.
Blaze 요금제를 선택하고 Firebase 콘솔의 안내에 따라 결제 계정을 추가합니다.
★ 클라우드 라벨 감지 기능은 매달 최초 1,000회의 사용 요금이 계속 무료입니다. 자세한 가격 정보를 보려면 여기를 클릭하세요.
Firebase 콘솔의 ML Kit 섹션으로 이동하고 맨 위에서 'Cloud Based APIs' 전환을 사용 설정합니다.
이때 앱은 Cloud Vision API에서 더 정밀한 결과로 라벨을 업데이트해야 합니다.
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed