initialize method
Initializes the detector by loading TensorFlow Lite models.
Must be called before detect or detectFromMat.
When poseModel is AnimalPoseModel.hrnet, the HRNet model (~54.6 MB) is downloaded from GitHub Releases on first use and cached locally.
onDownloadProgress is called during any model download with
(modelName, bytesReceived, totalBytes).
Implementation
Future<void> initialize({
void Function(String model, int received, int total)? onDownloadProgress,
bool useIsolateInterpreter = true,
}) async {
if (_isInitialized) {
await dispose();
}
_bodyDetector = AnimalBodyDetector();
await _bodyDetector!.initialize(
performanceConfig,
useIsolateInterpreter: useIsolateInterpreter,
);
_classifier = SpeciesClassifier();
await _classifier!.initialize(
performanceConfig,
useIsolateInterpreter: useIsolateInterpreter,
);
if (enablePose) {
_poseEstimator = BodyPoseEstimator(model: poseModel);
if (poseModel == AnimalPoseModel.hrnet) {
final hrnetBytes = await ModelDownloader.getHrnetModel(
onProgress: onDownloadProgress != null
? (r, t) => onDownloadProgress(ModelDownloader.modelHrnet, r, t)
: null,
);
await _poseEstimator!.initializeFromBuffer(
hrnetBytes,
effectivePoseConfig,
useIsolateInterpreter: useIsolateInterpreter,
);
} else {
await _poseEstimator!.initialize(
effectivePoseConfig,
useIsolateInterpreter: useIsolateInterpreter,
);
}
}
_isInitialized = true;
}