[mob][photos] ONNX Env FFI

This commit is contained in:
laurenspriem
2024-07-25 21:11:39 +02:00
parent 41aaf4a2db
commit 8d9b5a8ea0
2 changed files with 9 additions and 11 deletions

View File

@@ -86,6 +86,7 @@ abstract class MlModel {
String modelPath,
) async {
isolateLogger.info('Initializing $modelName with FFI');
ONNXEnvFFI.instance.initONNX(modelName);
try {
final startTime = DateTime.now();
final sessionOptions = OrtSessionOptions()

View File

@@ -1,27 +1,24 @@
import "package:computer/computer.dart";
import "package:onnxruntime/onnxruntime.dart";
class ONNXEnv {
class ONNXEnvFFI {
final Set<String> _loadedModels = {};
final _computer = Computer.shared();
// Singleton pattern
ONNXEnv._privateConstructor();
static final instance = ONNXEnv._privateConstructor();
factory ONNXEnv() => instance;
ONNXEnvFFI._privateConstructor();
static final instance = ONNXEnvFFI._privateConstructor();
factory ONNXEnvFFI() => instance;
Future<void> initONNX(String modelName) async {
void initONNX(String modelName) {
if (_loadedModels.isEmpty) {
await _computer.compute(() => OrtEnv.instance.init());
OrtEnv.instance.init();
}
_loadedModels.add(modelName);
}
Future<void> releaseONNX(String modelName) async {
void releaseONNX(String modelName) {
_loadedModels.remove(modelName);
if (_loadedModels.isEmpty) {
await _computer.compute(() => OrtEnv.instance.release());
OrtEnv.instance.release();
}
}