ML Kit를 사용하여 이미지의 객체 감지: Android - https://codelabs.developers.google.com/mlkit-android-odt?hl=ko#0
진행하고 있는 컴퓨터비전 앱 프로젝트에 사용할 프로그램을 고민하고 있던 차에 구글 codelab에서 제공하는 mlkit를 알게 되어 안드로이드 스튜디오에서 실습해보았다.
yolov8을 사용할 예정이었으나 해당 모델을 앱에서 구동하기에는 스마트폰 OS와의 연결이 곤란하여 일단 쉽게 안드로이드 프로그래밍을 할 수 있는 mlkit를 시도해보기로 하였다.
1. 시작하기 전에
===
ML Kit는 Android 및 iOS 앱에 Google의 온디바이스 머신러닝 전문 지식을 적용하는 모바일 SDK입니다. 강력하면서도 사용하기 쉬운 Vision 및 Natural Language API를 사용하여 앱의 일반적인 문제를 해결하거나 새로운 사용자 환경을 만들 수 있습니다. 모든 제품은 Google의 동급 최고 ML 모델을 기반으로 하며 무료로 제공됩니다.
ML Kit의 API는 모두 기기에서 실행되므로 실시간 카메라 스트림을 처리하려는 실시간 사용 사례를 지원합니다. 이는 오프라인에서도 기능을 사용할 수 있다는 의미입니다.
이 Codelab에서는 주어진 이미지의 객체 감지 및 추적 (ODT)을 기존 Android 앱에 추가하는 간단한 단계를 안내합니다. 이 Codelab에서는 몇 가지 단축키를 사용하여 ML Kit ODT 사용을 강조표시합니다.
빌드할 항목
이 Codelab에서는 ML Kit를 사용하여 Android 앱을 빌드합니다. 앱에서 ML Kit Object Detection 및 Tracking API를 사용하여 주어진 이미지의 객체를 감지합니다.결국 오른쪽 이미지와 유사한 것이 표시됩니다.
과정 내용
ML Kit SDK를 Android 애플리케이션에 통합하는 방법
ML Kit 객체 감지 및 추적 API
필요한 항목
최신 버전의 Android 스튜디오 (v4.1.2 이상)
Android 스튜디오 에뮬레이터 또는 실제 Android 기기
샘플 코드
Kotlin의 Android 개발에 관한 기본 지식
이 Codelab에서는 ML Kit에 중점을 둡니다. 따라서 이와 관련 없는 개념과 코드 블록은 그냥 넘어가겠습니다. 단, 필요할 때 복사해서 붙여넣을 수 있도록 다른 설명 없이 제공만 해드리겠습니다.
===
먼저 안드로이드 스튜디오 giraffe를 설치해야 한다. 안드로이드 스튜디오 링크로 이동하여 설치를 진행했다.
프로그램을 설치한 후 실행할 때, 초기환경 셋업시 파일 다운에 시간이 조금 소요되는데 꼭 끝까지 진행해야 한다. 네트워크 환경이 좋지 않아 cancel을 눌렀는데 경고창 몇 개만 뜨고 실행이 되길래 그대로 진행했는데 파일이 열리지 않는 문제가 생겨(당연하다...) 처음부터 다시 다운했다.
그런 다음, 맨 밑의 샘플 코드를 다운하여 준비했다.
2. 설정
===
다운로드한 ZIP 파일의 압축을 해제합니다. 그러면 필요한 모든 리소스가 포함된 루트 폴더 (mlkit-android-main)가 압축 해제됩니다. 이 Codelab에서는 object-detection 하위 디렉터리의 소스만 필요합니다.
mlkit-android 저장소의 객체 감지 하위 디렉터리에는 두 개의 디렉터리가 있습니다.
android_studio_folder.pngstarter: 이 Codelab에서 빌드하는 시작 코드입니다.
android_studio_folder.png최종: 완료된 샘플 앱의 완성된 코드입니다.
===
소스코드를 다운로드하고, 압축을 해제한다.
해당 실습에서는 starter 폴더를 사용한다
3. 프로젝트에 mlkit 객체 감지 및 추적 API 추가
===
먼저 시작 앱을 Android 스튜디오로 가져옵니다.
Android 스튜디오를 열고 Import Project (Gradle, Eclipse ADT 등)를 선택하고 이전에 다운로드한 소스 코드에서 starter 폴더를 선택합니다.
===
안드로이드 스튜디오에서 import project를 선택한다. 이후 starter 파일을 연다.
그 안에서 핵심이 되는 실행 파일은 build.gradle이다. dependencies에
dependencies {
// ...
implementation 'com.google.mlkit:object-detection:16.2.4'
}
을 추가한다.
여기서 주의할 점은 꼭 app 폴더 아래에 있는 build.gradle에만 해당 코드를 삽입해야 한다는 점이다. app이 아닌 다른 폴더 밑의 동일 명의 파일에 코드를 삽입하면 에러가 난다.
앱에서 모든 종속 항목을 사용할 수 있도록 하려면 이 시점에서 프로젝트를 Gradle 파일과 동기화해야 한다,
Android 스튜디오 툴바에서 Sync Project with Gradle Files 를 선택한다,
4. 시작 앱 실행
===
프로젝트를 Android 스튜디오로 가져오고 ML Kit 객체 감지 및 추적 종속 항목을 추가했으므로 이제 앱을 처음으로 실행할 수 있습니다.
USB를 통해 Android 기기를 호스트에 연결하거나 Android 스튜디오 에뮬레이터 시작에서 Android 스튜디오 툴바에서 Run ( execute.png)을 클릭합니다.
앱 실행 및 탐색
Android 기기에서 앱이 실행됩니다. 사진을 캡처하거나 미리 설정된 이미지를 선택하여 이 Codelab에서 빌드할 객체 감지 및 추적 파이프라인에 제공할 수 있는 상용구 코드가 있습니다. 코드를 작성하기 전에 앱을 좀 더 살펴보겠습니다.
먼저 하단에 버튼 ( C6D965D639C3646.PNG)이 있습니다.
기기/에뮬레이터에 통합된 카메라 앱 표시
카메라 앱에서 사진 찍기
시작 앱에서 캡처된 이미지 수신
이미지 표시
사진 촬영 버튼을 사용해 보세요. 표시되는 메시지에 따라 사진을 찍고 수락한 다음 시작 앱 내에 표시되는 것을 관찰합니다.
작동 방식을 확인하려면 몇 번 반복합니다.
===
이후 gradle 파일에서 run을 누르면 옆의 플로팅 페이지에 안드로이드 가상 핸드폰 화면이 뜬다.
이 과정에서 많은 오류가 있었다. configuration과 자바 버전, 안드로이드 스튜디오 버전 관련 에러가 많았는데 모두 구글링으로 무사히 해결했다.
지난주에 설치했던 intelliJ와 비슷한 점이 많아서 비교적 수월하게 초기셋업을 마쳤다.
아직은 이미지를 클릭해도 아무 일도 일어나지 않는다.
5. 기기 객체 감지 추가
다음 단계부터는 기기 객체를 이미지에서 본격적으로 감지해 본다.
'머신러닝' 카테고리의 다른 글
[딥러닝] 딥러닝 1단계: 신경망과 딥러닝 - 2. 신경망과 로지스틱 회귀 (2/2) (1) | 2024.03.18 |
---|---|
[딥러닝] 딥러닝 1단계: 신경망과 딥러닝 - 2. 신경망과 로지스틱 회귀 (1/2) (0) | 2024.03.11 |
[딥러닝] 딥러닝 1단계: 신경망과 딥러닝 - 1. 딥러닝 소개 (0) | 2024.03.11 |
안드로이드 스튜디오에서 yolov8 커스텀 모델로 Object Detection 앱 만들기 (0) | 2023.11.24 |
[머신러닝] 혼자 공부하는 머신러닝 + 딥러닝 Chap.1 (1) | 2023.10.04 |