getImagePredictionListProbabilities method

Future<List<double?>?> getImagePredictionListProbabilities(
  1. Uint8List imageAsBytes, {
  2. List<double> mean = TORCHVISION_NORM_MEAN_RGB,
  3. List<double> std = TORCHVISION_NORM_STD_RGB,
})

Runs image classification and returns softmax probabilities.

Returns the prediction scores converted to probabilities using softmax. All probabilities sum to 1.0.

@param imageAsBytes The raw image bytes @param mean Optional normalization mean values (default: ImageNet means) @param std Optional normalization std values (default: ImageNet stds) @return A Future that completes with a list of prediction probabilities

Implementation

Future<List<double?>?> getImagePredictionListProbabilities(
    Uint8List imageAsBytes,
    {List<double> mean = TORCHVISION_NORM_MEAN_RGB,
    List<double> std = TORCHVISION_NORM_STD_RGB}) async {
  // Assert mean std
  assert(mean.length == 3, "Mean should have size of 3");
  assert(std.length == 3, "STD should have size of 3");
  List<double?>? prediction = await ModelApi().getImagePredictionList(
      _index, imageAsBytes, null, null, null, mean, std);
  List<double?>? predictionProbabilities = [];

  //Getting sum of exp
  double? sumExp;
  for (var element in prediction) {
    if (sumExp == null) {
      sumExp = exp(element!);
    } else {
      sumExp = sumExp + exp(element!);
    }
  }
  for (var element in prediction) {
    predictionProbabilities.add(exp(element!) / sumExp!);
  }

  return predictionProbabilities;
}