Handle errors during classification gracefully
This commit is contained in:
parent
9a3044bc48
commit
5e9acfd4bd
1 changed files with 51 additions and 24 deletions
|
@ -25,9 +25,21 @@ class ObjectDetectionService {
|
|||
Future<void> 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<List<String>> _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<List<String>> _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<List<String>> _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<List<String>> _getPredictions(IsolateData isolateData) async {
|
||||
|
|
Loading…
Add table
Reference in a new issue