Я пытаюсь запустить две разные модели на устройстве Android, успешно провел два разных сеанса и запустил две модели.
Но проблема в том, что они работают в сериализованном виде, что неэффективно. Я хочу запустить их параллельно, используя многопоточность и сопоставив время вывода.
Как я могу это сделать??
(Я новичок в студии Android, к вашему сведению)
Вот пример кода о том, как я построил две модели для серийной эксплуатации:
private suspend fun createOrtSession(): OrtSession? {
val so = OrtSession.SessionOptions()
so.use {
return ortEnv?.createSession(readModel(), so)
}
}
private suspend fun createOrtSession2(): OrtSession? {
val so = OrtSession.SessionOptions()
so.use {
return ortEnv?.createSession(readModel2(), so)
}
}
private fun setORTAnalyzer() {
scope.launch {
imageAnalysis2?.clearAnalyzer()
imageAnalysis2?.setAnalyzer(
backgroundExecutor,
ORTAnalyzer(createOrtSession(), createOrtSession2(), ::updateUI)
)
}
}
val env = OrtEnvironment.getEnvironment()
env.use {
val tensor = OnnxTensor.createTensor(env, imgData, shape)
val tensor2 = OnnxTensor.createTensor(env, imgData2, shape2)
val startTime = SystemClock.uptimeMillis()
tensor2.use {
val timeStart2 = System.currentTimeMillis()
val output2 = ortSession2?.run(Collections.singletonMap(inputName2, tensor2))
result2.log.add("Depth Model 결과 : " + " " + (System.currentTimeMillis() - timeStart2))
output2.use {
val depthArray = output2?.get(0)?.value as Array
}
}
tensor.use {
val timeStart3 = System.currentTimeMillis()
val output = ortSession?.run(Collections.singletonMap(inputName, tensor))
Подробнее здесь: https://stackoverflow.com/questions/787 ... lti-models
Многопоточные многопоточные модели Android ONNXRuntime ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение