머신러닝으로 더 스마트한 앱 빌드하기

머신러닝(ML)은 명시적으로 프로그래밍되지 않아도 앱이 경험을 통해 자동으로 학습하고 개선할 수 있는 프로그래밍 기법입니다. 이 기법은 이미지와 텍스트 등 구조화되지 않은 데이터를 활용하는 앱 또는 스포츠 경기의 승리 팀 예측과 같이 매개변수가 많은 문제에 특히 적합합니다.

Android는 다양한 머신러닝 도구 및 방법을 지원합니다. 숙련된 Android 개발자나 초보 개발자 모두 여기에서 최상의 결과를 얻는 데 도움이 되는 ML 리소스를 확인할 수 있습니다.

주요 ML 개발 영역

Android용 ML 앱을 개발할 때 기본 작업은 제품을 디자인하고 추론 알고리즘을 구현하며 기존 ML 모델을 배포하는 것입니다. 상황에 따라 기존 모델을 다시 학습시키거나 새 모델을 빌드하여 학습시킬 수도 있습니다.

머신러닝을 위한 디자인

다른 기술과 마찬가지로 머신러닝을 솔루션으로 적용하려면 제품 관리자, 디자이너, 개발자가 협력하여 제품 목표, 디자인, 빌드 및 반복을 정의해야 합니다. Google은 이 분야에서 다음 두 가지 가이드를 제작했습니다.

모델 빌드 및 학습

머신러닝에는 예측을 하거나 입력 내용을 분류 또는 인식하는 등의 특정 작업을 실행하도록 학습된 모델이 필요합니다. 기존 모델을 선택(맞춤설정할 수도 있음)하거나 처음부터 모델을 빌드할 수도 있습니다. 모델 생성 및 학습은 개발 머신에서 또는 클라우드 인프라를 사용하여 완료할 수 있습니다.

선행 학습된 모델 둘러보기

선행 학습된 모델은 ML KitGoogle Cloud에서 사용할 수 있습니다. 다음 섹션에서 자세히 알아보세요.

TensorFlow를 사용하여 나만의 모델을 만드는 방법 알아보기

다음 TensorFlow 리소스를 사용하여 개발 환경을 더 깊이 있게 실습할 수 있습니다.

추론

추론이란 이미 특정 작업을 수행하도록 학습된 머신러닝 모델을 사용하는 프로세스입니다.

Android 개발자가 결정해야 하는 한 가지 중요한 사항은 추론을 기기에서 실행할 것인지 원격으로 액세스하는 클라우드 서비스를 사용하도록 할 것인지입니다. 다음은 이러한 결정을 내릴 때 고려해야 할 몇 가지 문제입니다.

문제기기 내 추론클라우드 기반 추론
지연 시간 지연 시간을 줄이면 실시간 경험이 향상됩니다. 비동기 통신 및 사용 가능한 대역폭이 지연 시간에 영향을 줄 수 있습니다.
리소스 처리 능력 및 저장용량과 같은 특정한 기기 리소스가 성능을 제한할 수 있습니다. 클라우드 기반 리소스가 더욱 강력하고 저장용량이 더 많습니다.
오프라인/온라인 오프라인 작동 기능은 네트워크 인프라가 열악하거나 없는 상황에서 실행할 수 있다는 장점이 있습니다. 네트워크 연결이 필요합니다.
비용 최종 사용자의 배터리 사용량, 모델 다운로드 시간 최종 사용자의 데이터 전송 대역폭, 개발자의 컴퓨팅 비용
개인정보 보호 사용자 데이터가 기기 외부로 유출되지 않습니다. 데이터가 기기 위부로 유출될 수 있으며 추가 예방 조치가 필요할 수 있습니다.

다음 표는 추론 유형에 따라 사용할 수 있는 개발 옵션을 보여줍니다.

기기 내 추론클라우드 기반 추론

ML Kit

TensorFlow Lite

TensorFlow Lite는 학습된 TensorFlow 모델을 기기 내 솔루션으로 제공하는 데 사용할 수 있습니다.

AutoML

AutoML을 사용하여 Google Cloud에서 자체 맞춤 비전 모델을 학습하고 Android 및 기타 에지 기기에서 결과 모델을 실행합니다.

ML Kit

Google Cloud API

배포

배포란 기기 내 추론을 실행할 때 Android에서 사용할 수 있도록 ML 모델을 패키징 및 업데이트하는 프로세스입니다. 다음과 같은 세 가지 옵션을 사용할 수 있습니다.

Android 앱에 모델 포함
다른 애셋과 마찬가지로 앱과 함께 모델이 배포됩니다. 모델을 업데이트하려면 앱을 업데이트해야 합니다. 앱에 모델을 추가할 수 있는 방법에는 두 가지가 있습니다.
런타임 시 모델 제공
이 옵션을 선택하면 모델을 앱으로부터 독립적으로 업데이트할 수 있습니다. A/B 테스트도 더 쉬워집니다. ML Kit 맞춤 모델 함수를 사용하여 맞춤 모델을 제공하거나 자체 인프라를 통해 모델 다운로드를 호스팅할 수 있습니다.
두 가지 옵션 조합
사용자가 모델을 새 버전으로 업데이트하는 동안 모델이 다운로드되는 것을 기다릴 필요가 없도록 개발자가 자신의 Android 앱으로 모델의 초기 버전을 패키징하는 것은 자주 있는 일입니다.

텍스트 인식 및 바코드 스캔과 같은 일부 선행 학습된 ML Kit 모델의 경우 개발자가 Google Play 서비스에서 제공하는 공유 모델을 사용하여 APK 크기를 줄일 수 있습니다.

개발자 스토리

불가능을 가능으로

ML을 Android 앱에 추가하면 다양한 조건에 적합하도록 만들기 어려웠거나(예: 신뢰할 수 있는 바코드 스캔) 이전에는 만들 수 없었던(예: 이미지 감지 및 텍스트 감정) 애플리케이션을 새로운 방식으로 빌드할 수 있습니다.

기능

Lose It!은 체중 감량을 위한 칼로리 추적기 앱입니다. 사용자가 먹은 모든 음식을 기록하여 얼마나 많은 칼로리를 섭취했는지 알려주므로 체중 감량에 도움이 됩니다. Lose It!은 사용자가 라이브러리에 없는 새로운 음식을 입력하면 ML Kit 텍스트 인식 API를 사용하여 영양소 표시 라벨을 스캔하고 데이터를 가져옵니다.

기능

PlantVillage는 농부들이 카사바 나무의 질병을 발견할 수 있도록 도움을 줍니다. 펜실베니아주립대학교와 국제열대농업협회(International Institute of Tropical Agriculture)는 휴대기기에서 오프라인으로 실행되는 맞춤 TensorFlow 모델을 사용하여 농부들이 식물 질병의 초기 징후를 발견할 수 있게 해 줍니다.

기능

Fishbrain 앱은 현지 낚시 지도와 예측을 제공하며 수백만 명의 낚시꾼을 연결해 줍니다. Fishbrain은 ML Kit 맞춤 모델을 사용하여 업데이트된 맞춤 TensorFlow Lite 모델을 제공합니다.