createCompiledFromBuffer static method

Future<FaceEmbedding> createCompiledFromBuffer(
  1. Uint8List modelBytes, {
  2. Set<Accelerator> accelerators = const {Accelerator.gpu, Accelerator.cpu},
  3. Precision precision = Precision.fp16,
})

Creates a face embedding model backed by LiteRT CompiledModel.

Implementation

static Future<FaceEmbedding> createCompiledFromBuffer(
  Uint8List modelBytes, {
  Set<Accelerator> accelerators = const {Accelerator.gpu, Accelerator.cpu},
  Precision precision = Precision.fp16,
}) async {
  // MobileFaceNet fails strict-GPU compilation (unsupported ops) but runs
  // ~3.7x faster than CPU with GPU|CPU partitioning, so use the fallback
  // helper rather than pinning to either accelerator.
  final CompiledModel compiledModel = _isDefaultAccelerators(accelerators)
      ? CompiledModel.fromBufferWithGpuFallback(
          modelBytes,
          precision: precision,
          onFallback: _onGpuFallback,
        )
      : CompiledModel.fromBuffer(
          modelBytes,
          accelerators: accelerators,
          precision: precision,
        );
  final int side;
  try {
    side = _compiledSquareInputSide(compiledModel, 'Compiled face embedding');
  } catch (_) {
    compiledModel.close();
    rethrow;
  }
  final obj = FaceEmbedding._compiled(compiledModel, side, side);
  try {
    obj._initializeCompiledModel();
    return obj;
  } catch (_) {
    obj.dispose();
    rethrow;
  }
}