-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgooders.py
136 lines (112 loc) · 5.23 KB
/
gooders.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# -*- coding: utf-8 -*-
"""Gooders.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1eJ1eacIbH5Tg9sYXMxEyPi3GIOm3nE-Z
"""
!pip install --upgrade google-cloud-aiplatform
from google.colab import auth
auth.authenticate_user()
import base64
from google.cloud import aiplatform
from google.cloud.aiplatform.gapic.schema import predict
def predict_image_classification(project: str, endpoint_id: str, filename: str, location: str = "us-central1", api_endpoint: str = "us-central1-aiplatform.googleapis.com"):
# The AI Platform services require regional API endpoints.
client_options = {"api_endpoint": api_endpoint}
# Initialize client that will be used to create and send requests.
client = aiplatform.gapic.PredictionServiceClient(client_options=client_options)
with open(filename, "rb") as f:
file_content = f.read()
# Encode the file content to base64
encoded_content = base64.b64encode(file_content).decode("utf-8")
instance = predict.instance.ImageClassificationPredictionInstance(content=encoded_content).to_value()
instances = [instance]
parameters = predict.params.ImageClassificationPredictionParams(confidence_threshold=0, max_predictions=5).to_value()
endpoint = client.endpoint_path(project=project, location=location, endpoint=endpoint_id)
response = client.predict(endpoint=endpoint, instances=instances, parameters=parameters)
# Iterate over and print out all predictions
for prediction_result in response.predictions:
prediction_dict = dict(prediction_result)
print("Predicted labels and their confidence scores:")
for label, score in prediction_dict.items():
print(f"{label}: {score}")
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# [START aiplatform_predict_image_classification_sample]
import base64
from google.cloud import aiplatform
from google.cloud.aiplatform.gapic.schema import predict
def predict_image_classification(
project: str,
endpoint_id: str,
filename: str,
location: str = "us-central1",
api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
# The AI Platform services require regional API endpoints.
client_options = {"api_endpoint": api_endpoint}
# Initialize client that will be used to create and send requests.
# This client only needs to be created once, and can be reused for multiple requests.
client = aiplatform.gapic.PredictionServiceClient(client_options=client_options)
with open(filename, "rb") as f:
file_content = f.read()
# The format of each instance should conform to the deployed model's prediction input schema.
encoded_content = base64.b64encode(file_content).decode("utf-8")
instance = predict.instance.ImageClassificationPredictionInstance(
content=encoded_content,
).to_value()
instances = [instance]
# See gs://google-cloud-aiplatform/schema/predict/params/image_classification_1.0.0.yaml for the format of the parameters.
parameters = predict.params.ImageClassificationPredictionParams(
confidence_threshold=0,
max_predictions=5,
).to_value()
endpoint = client.endpoint_path(
project=project, location=location, endpoint=endpoint_id
)
response = client.predict(
endpoint=endpoint, instances=instances, parameters=parameters
)
print("response")
print(" deployed_model_id:", response.deployed_model_id)
# See gs://google-cloud-aiplatform/schema/predict/prediction/image_classification_1.0.0.yaml for the format of the predictions.
predictions = response.predictions
for prediction in predictions:
pre_dict = dict(prediction)
return pre_dict
# [END aiplatform_predict_image_classification_sample]
uploaded = files.upload()
image_path = next(iter(uploaded))
response = predict_image_classification(
project="gooders-416303",
endpoint_id="7422699645022765056",
location="us-central1",
filename=image_path
)
print(response)
# Weights for each label category (high severity has low weight and vice versa)
weights = {
'high': 1,
'med': 2,
'low': 3,
'Good': 4
}
# Calculate the total weighted score
total_weighted_score = sum(confidence * weights.get(name.split('_')[-1], 0)
for name, confidence in zip(response['displayNames'], response['confidences']))
# Calculate the total possible score, which is the sum of all confidences multiplied by the highest weight
total_possible_score = sum(response['confidences']) * max(weights.values())
# Calculate the quality score as a percentage of the total possible score
quality_score_percentage = (total_weighted_score / total_possible_score) * 100
print("Gooder's Rating:",quality_score_percentage,"%")