티스토리 뷰
반응형
안드로이드 스튜디오에서 Yolo 모델이나 다른 모델들을 사용할 때, GPU 설정에 대해서 애먹는 경우가 많다.
버전에 대해서도 찾으려면 죄다 영어 항목이라 힘들 듯 하다. 그래서 한국어로 설명하고자 한다.
코드는 여기에서 볼 수 있다.
결론부터 말하자면, Gradle에서 다음과 같이 의존성 추가를 해주면 된다.
Gradle Scripts / build.gradle.kts
dependencies { ...
implementation("org.tensorflow:tensorflow-lite:2.14.0")
implementation("org.tensorflow:tensorflow-lite-gpu-delegate-plugin:0.4.4")
implementation("org.tensorflow:tensorflow-lite-support:0.4.4")
implementation("org.tensorflow:tensorflow-lite-gpu:2.14.0")
implementation("org.tensorflow:tensorflow-lite-gpu-api:2.14.0")
}
tensorflow-lite하고, tensorflow-lite-gpu하고는 버전을 맞춰줘야 한다.
그리고 gpu-delegate-plugin도 써줘야 한다.
그리고 나서 모델에서 실제로 쓸 때, GPU에 할당할 수 있는 Interpreter를 설정해주면 된다.
다음은 Detector.kt의 부분 코드이다.
import org.tensorflow.lite.gpu.CompatibilityList
import org.tensorflow.lite.gpu.GpuDelegate
...
fun setup() {
val model = FileUtil.loadMappedFile(context, modelPath)
val options = Interpreter.Options()
val compatList = CompatibilityList()
if (compatList.isDelegateSupportedOnThisDevice) {
val delegateOptions = compatList.bestOptionsForThisDevice
options.addDelegate(GpuDelegate(delegateOptions))
} else {
options.setNumThreads(4) // GPU 사용이 불가능한 경우 CPU 스레드 설정
}
interpreter = Interpreter(model, options)
...
위의 코드에서 보면, CompatibilityList 객체를 선언하고, delegate options에서 bestOptionsForThisDevice를 통해 GPU를 설정해주는 걸 볼 수 있다.
정확히는 해당 옵션에 GpuDelegate를 추가해줘서 판단하게 하는 것이다.
만약 GPU가 없다면, CPU 스레드로 설정하게 만들어준다.
이렇게 해서 모델을 인터프리터로 선언해주면 모델이 GPU에서 돌아가는 걸 확인할 수 있다.
예시 코드도 있으니, 직접 해당 코드를 보면서 학습 및 실습해보자.
반응형