Я использую следующие коды для смены делегата на моем телефоне (G3226)
try {
if(delegateNum == 1){
GpuDelegate delegate = new GpuDelegate();
Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
d.tfLite = new Interpreter(loadModelFile(assetManager, modelFilename), options);
}else if(delegateNum == 2){
NnApiDelegate delegate = new NnApiDelegate();
Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
d.tfLite = new Interpreter(loadModelFile(assetManager, modelFilename), options);
}else{
d.tfLite = new Interpreter(loadModelFile(assetManager, modelFilename));
}
} catch (Exception e) {
throw new RuntimeException(e);
}
Но производительность почти одинакова, не уверен, что произойдет.
Возможные причины, по-моему:
- Эта модель слишком маленькая, недостаточно сложная для того, чтобы gpu или nnapi могли похвастаться
- gpu или nnapi на моем телефоне век
- мой телефон не поддерживает gpu или nnapi, поэтому они возвращаются к процессору
Если это 3, как я могу проверить поддержку моего телефона gpu или ннапи или нет? спасибо