[mob][photos] ONNX Env FFI
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user