Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you restart it, you'll have to start from the beginning.
- On the top left of your screen, click Start lab to begin
Create an API Key
/ 25
Upload an Image to a Cloud Storage bucket
/ 25
Upload an image for Face Detection to your bucket
/ 25
Upload an image for Landmark Annotation to your bucket
/ 25
The Cloud Vision API is a cloud-based service that allows you to analyze images and extract information. It can be used to detect objects, faces, and text in images. The Cloud Vision API lets you understand the content of an image by encapsulating powerful machine learning models in a simple REST API.
In this lab, you will send images to the Cloud Vision API and see it detect objects, faces, and landmarks.
In this lab, you will:
curl
Read these instructions. Labs are timed and you cannot pause them. The timer, which starts when you click Start Lab, shows how long Google Cloud resources are made available to you.
This hands-on lab lets you do the lab activities in a real cloud environment, not in a simulation or demo environment. It does so by giving you new, temporary credentials you use to sign in and access Google Cloud for the duration of the lab.
To complete this lab, you need:
Click the Start Lab button. If you need to pay for the lab, a dialog opens for you to select your payment method. On the left is the Lab Details pane with the following:
Click Open Google Cloud console (or right-click and select Open Link in Incognito Window if you are running the Chrome browser).
The lab spins up resources, and then opens another tab that shows the Sign in page.
Tip: Arrange the tabs in separate windows, side-by-side.
If necessary, copy the Username below and paste it into the Sign in dialog.
You can also find the Username in the Lab Details pane.
Click Next.
Copy the Password below and paste it into the Welcome dialog.
You can also find the Password in the Lab Details pane.
Click Next.
Click through the subsequent pages:
After a few moments, the Google Cloud console opens in this tab.
Cloud Shell is a virtual machine that is loaded with development tools. It offers a persistent 5GB home directory and runs on the Google Cloud. Cloud Shell provides command-line access to your Google Cloud resources.
Click Activate Cloud Shell at the top of the Google Cloud console.
Click through the following windows:
When you are connected, you are already authenticated, and the project is set to your Project_ID,
gcloud
is the command-line tool for Google Cloud. It comes pre-installed on Cloud Shell and supports tab-completion.
Output:
Output:
gcloud
, in Google Cloud, refer to the gcloud CLI overview guide.
Since you'll be using curl
to send a request to the Vision API, you'll need to generate an API key to pass in your request URL.
To create an API key, from the Navigation menu go to APIs & Services > Credentials in the Cloud Console.
Click Create Credentials and select API key.
Click Check my progress below to check your lab progress.
Next, save it to an environment variable to avoid having to insert the value of your API key in each request.
There are two ways to send an image to the Cloud Vision API for image detection: by sending the API a base64 encoded image string, or passing it the URL of a file stored in Cloud Storage.
You'll be using a Cloud Storage URL. The first step is to create a Cloud Storage bucket to store your images.
From the Navigation menu, select Cloud Storage > Buckets. Next to Buckets, click Create.
Give your bucket a unique name:
After naming your bucket, click Choose how to control access to objects.
Uncheck Enforce public access prevention on this bucket and select the Fine-grained circle.
All other settings for your bucket can remain as the default setting.
You should see the file in your bucket.
Now you need to make this image publicly available.
Click Add entry then enter the following:
Then click Save.
With the file in your bucket, you're ready to create a Cloud Vision API request, passing it the URL of this donuts picture.
Click Check my progress below to check your lab progress.
Create a request.json
file in Cloud Shell.
or your preferred command line editor (nano
, vim
, or emacs
), create a request.json
file.
my-bucket-name
with the name of your storage bucket. The first Cloud Vision API feature you'll use is label detection. This method will return a list of labels (words) of what's in your image.
curl
:Your response should look something like the following:
The API was able to identify the specific type of donuts these are, powdered sugar. Cool! For each label the Vision API found, it returns a:
description
with the name of the item.score
, a number from 0 - 1 indicating how confident it is that the description matches what's in the image.mid
value that maps to the item's mid
in Google's Knowledge Graph. You can use the mid
when calling the Knowledge Graph API to get more information on the item.In addition to getting labels on what's in your image, the Cloud Vision API can also search the internet for additional details on your image. Through the API's WebDetection method, you get a lot of interesting data back:
To try out web detection, use the same image of beignets and change one line in the request.json
file (you can also venture out into the unknown and use an entirely different image).
request.json
file - under the features list, change type from LABEL_DETECTION
to WEB_DETECTION
. The request.json
should now look like this:Save the file.
To send it to the Cloud Vision API, use the same curl
command as before (just press the up arrow in Cloud Shell):
webEntities
. Here are some of the entities this image returned:This image has been used in many presentations on Cloud ML APIs, which is why the API found the entities "Machine learning" and "Google Cloud Platform".
If you inspect the URLs under fullMatchingImages
, partialMatchingImages
, and pagesWithMatchingImages
, you'll notice that many of the URLs point to this lab site (super meta!).
Say you wanted to find other images of beignets, but not the exact same images. That's where the visuallySimilarImages
part of the API response comes in handy. Here are a few of the visually similar images it found:
You can navigate to those URLs to see the similar images:
And now you probably really want a powdered sugar beignet (sorry)! This is similar to searching by an image on Google Images.
With Cloud Vision you can access this functionality with an easy to use REST API and integrate it into your applications.
Next explore the face detection methods of the Vision API.
The face detection method returns data on faces found in an image, including the emotions of the faces and their location in the image.
To use this method, you'll upload a new image with faces to the Cloud Storage bucket.
Click Check my progress below to check your lab progress.
request.json
file with the following, which includes the URL of the new image, and uses face and landmark detection instead of label detection. Be sure to replace my-bucket-name with the name of your Cloud Storage bucket:curl
command you used above:faceAnnotations
object in the response. You'll notice the API returns an object for each face found in the image - in this case, three. Here's a clipped version of the response:boundingPoly
gives you the x,y coordinates around the face in the image.fdBoundingPoly
is a smaller box than boundingPoly
, focusing on the skin part of the face.landmarks
is an array of objects for each facial feature, some you may not have even known about. This tells us the type of landmark, along with the 3D position of that feature (x,y,z coordinates) where the z coordinate is the depth. The remaining values give you more details on the face, including the likelihood of joy, sorrow, anger, and surprise.The response you're reading is for the person standing furthest back in the image - you can see he's making a kind of a silly face which explains the joyLikelihood
of LIKELY
.
Landmark detection can identify common (and obscure) landmarks. It returns the name of the landmark, its latitude and longitude coordinates, and the location of where the landmark was identified in an image.
To use this method, you'll upload a new image to the Cloud Storage bucket.
Citation: Saint Basil's Cathedral, Moscow, Russia (December 19, 2019) by Adrien Wodey on Unsplash, the free media repository. Retrieved from https://unsplash.com/photos/multicolored-dome-temple-yjyWCNx0J1U. This file is licensed under the Unsplash license.
Click Check my progress below to check your lab progress.
request.json
file with the following, which includes the URL of the new image, and uses landmark detection. Be sure to replace my-bucket-name with the name of your Cloud Storage bucket:curl
command you used above:landmarkAnnotations
part of the response:The Cloud Vision API was able to identify where the picture was taken and provides the map coordinates of the location (Saint Basil's Cathedral in Red Square, Moscow, Russia).
The values in this response should look similar to the labelAnnotations
response above:
mid
of the landmarkdescription
)score
boundingPoly
shows the region in the image where the landmark was identified.locations
key tells us the latitude longitude coordinates of the picture.The Vision API can detect and extract multiple objects in an image with Object Localization. Object localization identifies multiple objects in an image and provides a LocalizedObjectAnnotation for each object in the image. Each LocalizedObjectAnnotation
identifies information about the object, the position of the object, and rectangular bounds for the region of the image that contains the object.
Object localization identifies both significant and less-prominent objects in an image.
Object information is returned in English only. Cloud Translation can translate English labels into various other languages.
To use this method, you'll use an existing image on the internet and update the request.json
file.
request.json
file with the following, which includes the URL of the new image, and uses object localization.curl
command you used above:localizedObjectAnnotations
part of the response:As you can see, the Vision API was able to tell that this picture contains a bicycle and a bicycle wheel. The values in this response should look similar to the labelAnnotations
response above: the mid
of the object, it's name (name
), a confidence score
, and the boundingPoly
shows the region in the image where the object was identified.
Furthermore, the boundingPoly
has a normalizedVertices
key, which gives you the coordinates of the object in the image. These coordinates are normalized to a range of 0 to 1, where 0 represents the top left of the image, and 1 represents the bottom right of the image.
Great! You successfully used the Vision API to analyze an image and extract information about the objects in the image.
You've looked at the Vision API's label, face, landmark detection and object localization methods, but there are three others you haven't explored. Dive into the Method: images.annotate documentation to learn about the other three:
You've learned how to analyze images with the Vision API. In this lab you passed the API the Cloud Storage URL of different images, and it returned the labels, faces, landmarks, and objects it found in the image. You can also pass the API a base64 encoded string of an image, which is useful if you want to analyze an image that's stored in a database or in memory.
...helps you make the most of Google Cloud technologies. Our classes include technical skills and best practices to help you get up to speed quickly and continue your learning journey. We offer fundamental to advanced level training, with on-demand, live, and virtual options to suit your busy schedule. Certifications help you validate and prove your skill and expertise in Google Cloud technologies.
Manual Last Updated October 22, 2024
Lab Last Tested October 22, 2024
Copyright 2025 Google LLC All rights reserved. Google and the Google logo are trademarks of Google LLC. All other company and product names may be trademarks of the respective companies with which they are associated.
This content is not currently available
We will notify you via email when it becomes available
Great!
We will contact you via email if it becomes available
One lab at a time
Confirm to end all existing labs and start this one