iv67
iv67

Reputation: 4151

How to change prediction threshold using Google AutoML?

After creating Model in google AutoML we can use the provided python code to make a prediction. Here's the code :

import sys

from google.cloud import automl_v1beta1
from google.cloud.automl_v1beta1.proto import service_pb2


def get_prediction(content, project_id, model_id):
  prediction_client = automl_v1beta1.PredictionServiceClient()

  name = 'projects/{}/locations/us-central1/models/{}'.format(project_id, model_id)
  payload = {'image': {'image_bytes': content }}
  params = {}
  request = prediction_client.predict(name, payload, params)
  return request  # waits till request is returned

if __name__ == '__main__':
  file_path = sys.argv[1]
  project_id = sys.argv[2]
  model_id = sys.argv[3]

  with open(file_path, 'rb') as ff:
    content = ff.read()

  print get_prediction(content, project_id,  model_id)

I realize that it will only print detection result that has score above threshold value = 0.5 . Example output :

payload {
  classification {
    score: 0.562688529491
  }
  display_name: "dog"
}

How to print the other detection results that has score below threshold 0.5 (e.g. change threshold to 0.3) ?

Upvotes: 3

Views: 732

Answers (1)

West
West

Reputation: 742

See the api documentation here

params

Object with string properties

Additional domain-specific parameters, any string must be up to 25000 characters long.

For Image Classification:

score_threshold - (float) A value from 0.0 to 1.0. When the model makes predictions for an image, it will only produce results that have at least this confidence score threshold. The default is 0.5.

The actual description of the field in the proto is

map<string,string> params;

So you would change your params variable that you have set to an empty dict. Change the params variable to : params = {"score_threshold": "0.3"} will work.

Upvotes: 4

Related Questions