# Lab 1 - Computer Vision

Microsoft Azure Cognitive Services contain some pre-built models for the most typical tasks, such as object detection in pictures, speech recognition and synthesis, sentiment analysis and so on. Let us test the [**Computer Vision API**](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=gaic-github-heboelma) service to see if it can recognize some specific objects in one particular problem domain.

Suppose we need to create an application that recognizes Simpson Lego Figures:

We will use the [Simpsons Lego Figure Dataset](https://github.com/hnky/dataset-lego-figures) from Henk Boelman.

Let us start by looking at how pre-trained [Computer Vision cognitive service](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=gaic-github-heboelma) can see our images:

### 1. Setup the Azure Resources

#### Create a resource group

The Computer Vision Endpoint must be created inside a resource group. You can use an existing resource group or create a new one. To create a new resource group, use the following command. Replace  <\<resource-group-name>> with your name to use for this resource group. Replace <\<location>>  with the Azure region to use for this resource group.

```
az group create --name <resource-group-name> --location <location>
```

#### Create the Cognitive Service Account

Run the command below to create a free Computer Vision Endpoint. Replace <\<resource-group-name>> with the name you used above and use the same location. Replace <\<name>> with a name for your resource like: my-computervision.

```
az cognitiveservices account create --name <name> --kind ComputerVision --sku F0 --resource-group <resource-group-name> --location <location> --yes
```

#### Get the endpoint details from the Cognitive Service Account

To get the endpoint from the Cognitive service account run the CLI command below. Replace <\<name>> and <\<resource-group-name>> with the names used above.&#x20;

**Get the API keys**

```
az cognitiveservices account keys list --name <name> --resource-group <resource-group-name> 
```

**Get the endpoint URL**

```
az cognitiveservices account show --name <name> --resource-group <resource-group-name> -o json --query properties.endpoint
```

#### At this point you should have:

\- An endpoint URL looking like this: https\://\<region>.api.cognitive.microsoft.com/ \
\- 2 keys looking like this: 06a611d19f4f4a88a03f3b552a5d2379

### 2. Test the Computer Vision Endpoint

#### Using the command line

Run the command below to test the endpoint for an image with Bart Simpson on it.

```
curl -H "Ocp-Apim-Subscription-Key: <<key>>" -H "Content-Type: application/json" "<<endpoint-url>>/vision/v3.2/analyze?visualFeatures=Description" -d "{\"url\":\"https://raw.githubusercontent.com/hnky/dataset-lego-figures/master/_test/Bart.jpg\"}"
```

The response should look like:\
`{`\
`"description":{` \
&#x20;   `"tags":[ "text", "indoor", "toy" ],` \
`"captions":[ {` \
&#x20;   `"text": "a hand holding a toy",` \
&#x20;   `"confidence":0.4660031199455261` \
`}]}}`

#### Using a web interface

Navigate to: <https://cgntv-cv.azurewebsites.net/>\
Enter the endpoint URL, the API key, a link to an image and click 'analyze image'. This website shows all the information that comes back from the Computer Vision API.

> **Tip: Try it with your own images!**

### 3. Conclusion

In this lab you have created a Computer Vision Endpoint in Azure and send images to the endpoint using the command line and a through a visual interface.

While some of the objects (such as Toy) can be recognized by the pre-trained model, more specialized objects (like this is Bart Simpson or Marge Simpson) are not determined correctly.

## Resources

* <https://azure.microsoft.com/en-us/services/cognitive-services/computer-vision/>
* <https://docs.microsoft.com/en-us/azure/cognitive-services/cognitive-services-apis-create-account-cli?tabs=windows>

[**Continue with lab 2 >**](/developers-guide-to-azure-ai/cognitive-services/lab-2.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://workshops.henkboelman.com/developers-guide-to-azure-ai/cognitive-services/lab-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
