모바일에서 간단한 AI 모델을 구동할 경우 직접 모델을 만들고 모바일에 적용하는 과정을 겪지 않아도 ML Kit 라이브러리를 사용하면 빠르게 개발할 수 있습니다.
ML Kit은 구글에서 개발한 안드로이드용 머신 러닝 SDK로, 모바일 애플리케이션에서 머신 러닝과 관련된 기능을 쉽게 개발할 수 있도록 지원해줍니다. 이를 통해 개발자들은 복잡한 머신 러닝 모델의 구축과 통합에 대한 고민 없이, 머신 러닝을 활용한 기능을 앱에 추가할 수 있습니다.
일반적으로 모바일 AI 개발을하려면 Tensorflow Lite나 Pytorch Mobile을 사용하겠지만, 특정 Task만 간단하게 구현할 경우 ML Kit을 유용하게 쓸 수 있습니다. ML Kit에서 제공되는 기능은 다음과 같습니다.
이미지 분석
이미지에서 특정 객체를 감지하고 분석할 수 있습니다. 예를 들어, 객체 분류, 랜드마크 인식, 이미지 묘사 등의 작업을 수행할 수 있습니다.
얼굴 감지
이미지나 비디오에서 얼굴을 식별하고 특징을 추출할 수 있습니다. 얼굴 감지를 통해 표정 인식, 미간 인식, 눈동자 추적, 감정 분석 등 다양한 얼굴 관련 작업을 수행할 수 있습니다.
텍스트 번역
ML Kit의 텍스트 번역 기능은 다국어 텍스트를 자동으로 번역해주어, 다국어 지원 애플리케이션 개발을 용이하게 합니다. 사용자는 언어 감지, 언어 번역, 언어 식별 등 다양한 텍스트 기반 작업을 수행할 수 있습니다.
바코드 스캐닝
바코드 스캐닝 기능을 사용하면, 카메라를 사용하여 바코드를 신속하게 인식하고 해석할 수 있습니다. 제품 정보 검색, QR 코드 스캔, 이벤트 등록 등 다양한 바코드 관련 작업을 앱에 구현할 수 있습니다.
얼굴 검출 기능 적용
안드로이드 환경에서 ML Kit을 사용하기 위해서는 Gradle Scripts 폴더에서 build.gradle(Module:app) 파일을 열고 'dependencies'에 의존성을 추가하고 필요한 Task에 맞는 세부사항을 추가합니다. 예를 들어 얼굴 검출 기능을 사용하는 경우 다음과 같이 추가하면 됩니다.
implementation 'com.google.mlkit:face-detection:16.1.5'
이렇게 추가할 경우 아래와 같이 소스코드에서 얼굴 검출 기능을 import 하고 사용할 수 있습니다.
import com.google.mlkit.vision.common.InputImage
import com.google.mlkit.vision.face.Face
import com.google.mlkit.vision.face.FaceDetection
import com.google.mlkit.vision.face.FaceDetectorOptions
아래 코드는 버튼 클릭시에 ML Kit을 사용해서 얼굴을 검출하고 bitmap에 box를 그려주는 코드입니다.
btn.setOnClickListener {
val highAccuracyOpts = FaceDetectorOptions.Builder().setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_FAST).build()
val detector = FaceDetection.getClient(highAccuracyOpts)
val image = InputImage.fromBitmap(bitmap!!, 0)
val result = detector.process(image).addOnSuccessListener { faces ->
bitmap?.apply {
imageView.setImageBitmap(drawWithRectangle(faces))
}
}
}
fun Bitmap.drawWithRectangle(faces: List<Face>):Bitmap? {
val bitmap = copy(config, true)
val canvas = Canvas(bitmap)
for (face in faces) {
val bounds = face.boundingBox
Paint().apply {
color = Color.RED
style = Paint.Style.STROKE
strokeWidth = 4.0f
isAntiAlias = true
canvas.drawRect(
bounds,
this
)
}
}
return bitmap
}
보통 커스텀 모델을 개발해서 성능을 최대한 끌어올리고 서비스하는게 낫겠지만, ML Kit도 성능을 충분히 보장해주기 때문에 가벼운 모바일 서비스를 빠르게 개발해야 하는 경우나 머신 러닝에 대한 지식이 부족한 경우에는 ML Kit을 쓰는게 좋은 선택이 될 것 같습니다.
'Mobile' 카테고리의 다른 글
안드로이드 코틀린 Splash Screen(초기로딩화면) 구현 (0) | 2023.05.29 |
---|