diff --git a/lib/services/object_detection/object_detection_service.dart b/lib/services/object_detection/object_detection_service.dart index 2a9706447..b72e55785 100644 --- a/lib/services/object_detection/object_detection_service.dart +++ b/lib/services/object_detection/object_detection_service.dart @@ -25,9 +25,21 @@ class ObjectDetectionService { Future init() async { _isolateUtils = IsolateUtils(); await _isolateUtils.start(); - _objectClassifier = CocoSSDClassifier(); - _mobileNetClassifier = MobileNetClassifier(); - _sceneClassifier = SceneClassifier(); + try { + _objectClassifier = CocoSSDClassifier(); + } catch (e, s) { + _logger.severe("Could not initialize cocossd", e, s); + } + try { + _mobileNetClassifier = MobileNetClassifier(); + } catch (e, s) { + _logger.severe("Could not initialize mobilenet", e, s); + } + try { + _sceneClassifier = SceneClassifier(); + } catch (e, s) { + _logger.severe("Could not initialize sceneclassifier", e, s); + } } static ObjectDetectionService instance = @@ -47,33 +59,48 @@ class ObjectDetectionService { } Future> _getObjects(Uint8List bytes) async { - final isolateData = IsolateData( - bytes, - _objectClassifier.interpreter.address, - _objectClassifier.labels, - ClassifierType.cocossd, - ); - return _getPredictions(isolateData); + try { + final isolateData = IsolateData( + bytes, + _objectClassifier.interpreter.address, + _objectClassifier.labels, + ClassifierType.cocossd, + ); + return _getPredictions(isolateData); + } catch (e, s) { + _logger.severe("Could not run cocossd", e, s); + } + return []; } Future> _getMobileNetResults(Uint8List bytes) async { - final isolateData = IsolateData( - bytes, - _mobileNetClassifier.interpreter.address, - _mobileNetClassifier.labels, - ClassifierType.mobilenet, - ); - return _getPredictions(isolateData); + try { + final isolateData = IsolateData( + bytes, + _mobileNetClassifier.interpreter.address, + _mobileNetClassifier.labels, + ClassifierType.mobilenet, + ); + return _getPredictions(isolateData); + } catch (e, s) { + _logger.severe("Could not run mobilenet", e, s); + } + return []; } Future> _getSceneResults(Uint8List bytes) async { - final isolateData = IsolateData( - bytes, - _sceneClassifier.interpreter.address, - _sceneClassifier.labels, - ClassifierType.scenes, - ); - return _getPredictions(isolateData); + try { + final isolateData = IsolateData( + bytes, + _sceneClassifier.interpreter.address, + _sceneClassifier.labels, + ClassifierType.scenes, + ); + return _getPredictions(isolateData); + } catch (e, s) { + _logger.severe("Could not run scene detection", e, s); + } + return []; } Future> _getPredictions(IsolateData isolateData) async {