Skip to content

Commit 795a3bc

Browse files
committed
various freshness
1 parent c9a9369 commit 795a3bc

24 files changed

+322
-312
lines changed

articles/ai-services/computer-vision/concept-describe-images-40.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ The following JSON response illustrates what the Analysis 4.0 API returns when g
122122
}
123123
]
124124
},
125-
"modelVersion": "2023-10-01",
125+
"modelVersion": "2024-02-01",
126126
"metadata": {
127127
"width": 850,
128128
"height": 567

articles/ai-services/computer-vision/concept-ocr.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ The following JSON response illustrates what the Image Analysis 4.0 API returns
3434

3535
```json
3636
{
37-
"modelVersion": "2023-10-01",
37+
"modelVersion": "2024-02-01",
3838
"metadata":
3939
{
4040
"width": 1000,

articles/ai-services/computer-vision/concept-people-detection.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ The following JSON response illustrates what the Analysis 4.0 API returns when d
2727

2828
```json
2929
{
30-
"modelVersion": "2023-10-01",
30+
"modelVersion": "2024-02-01",
3131
"metadata": {
3232
"width": 300,
3333
"height": 231

articles/ai-services/computer-vision/deploy-computer-vision-on-premises.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author: PatrickFarley
77
manager: nitinme
88
ms.service: azure-ai-vision
99
ms.topic: how-to
10-
ms.date: 05/09/2022
10+
ms.date: 02/27/2024
1111
ms.author: pafarley
1212
ms.custom: cogserv-non-critical-vision
1313
---

articles/ai-services/computer-vision/faq.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ metadata:
99

1010
ms.service: azure-ai-vision
1111
ms.topic: faq
12-
ms.date: 05/09/2022
12+
ms.date: 02/27/2024
1313
ms.author: pafarley
1414
ms.custom: cogserv-non-critical-vision
1515
title: Azure AI Vision API Frequently Asked Questions
@@ -52,4 +52,4 @@ sections:
5252
- question: |
5353
Can I train Azure AI Vision API to use custom tags? For example, I would like to feed in pictures of cat breeds to 'train' the AI, then receive the breed value on an AI request.
5454
answer: |
55-
This function is currently not available. You can use [Custom Vision](../custom-vision-service/overview.md) to train a model to detect user-defined visual features.
55+
Yes. See [Model customization](/azure/ai-services/computer-vision/concept-model-customization), a feature of Image Analysis 4.0.

articles/ai-services/computer-vision/how-to/analyze-video.md

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,30 @@ author: PatrickFarley
88
ms.author: pafarley
99
ms.service: azure-ai-vision
1010
ms.topic: how-to
11-
ms.date: 07/05/2022
11+
ms.date: 02/27/2024
1212
ms.devlang: csharp
1313
ms.custom: devx-track-csharp, cogserv-non-critical-vision
1414
---
1515

1616
# Analyze videos in near real time
1717

18-
This article demonstrates how to perform near real-time analysis on frames that are taken from a live video stream by using the Azure AI Vision API. The basic elements of such an analysis are:
18+
This article demonstrates how to use the Azure AI Vision API to perform near real-time analysis on frames that are taken from a live video stream. The basic elements of such an analysis are:
1919

20-
- Acquiring frames from a video source.
21-
- Selecting which frames to analyze.
22-
- Submitting these frames to the API.
23-
- Consuming each analysis result that's returned from the API call.
20+
- Acquiring frames from a video source
21+
- Selecting which frames to analyze
22+
- Submitting these frames to the API
23+
- Consuming each analysis result that's returned from the API call
2424

25-
The samples in this article are written in C#. To access the code, go to the [Video frame analysis sample](https://github.com/Microsoft/Cognitive-Samples-VideoFrameAnalysis/) page on GitHub.
25+
> [!TIP]
26+
> The samples in this article are written in C#. To access the code, go to the [Video frame analysis sample](https://github.com/Microsoft/Cognitive-Samples-VideoFrameAnalysis/) page on GitHub.
2627
2728
## Approaches to running near real-time analysis
2829

29-
You can solve the problem of running near real-time analysis on video streams by using a variety of approaches. This article outlines three of them, in increasing levels of sophistication.
30+
You can solve the problem of running near real-time analysis on video streams using a variety of approaches. This article outlines three of them, in increasing levels of sophistication.
3031

31-
### Design an infinite loop
32+
### Method 1: Design an infinite loop
3233

33-
The simplest design for near real-time analysis is an infinite loop. In each iteration of this loop, you grab a frame, analyze it, and then consume the result:
34+
The simplest design for near real-time analysis is an infinite loop. In each iteration of this loop, the application retrieves a frame, analyzes it, and then processes the result:
3435

3536
```csharp
3637
while (true)
@@ -46,7 +47,7 @@ while (true)
4647

4748
If your analysis were to consist of a lightweight, client-side algorithm, this approach would be suitable. However, when the analysis occurs in the cloud, the resulting latency means that an API call might take several seconds. During this time, you're not capturing images, and your thread is essentially doing nothing. Your maximum frame rate is limited by the latency of the API calls.
4849

49-
### Allow the API calls to run in parallel
50+
### Method 2: Allow the API calls to run in parallel
5051

5152
Although a simple, single-threaded loop makes sense for a lightweight, client-side algorithm, it doesn't fit well with the latency of a cloud API call. The solution to this problem is to allow the long-running API call to run in parallel with the frame-grabbing. In C#, you could do this by using task-based parallelism. For example, you can run the following code:
5253

@@ -70,9 +71,9 @@ With this approach, you launch each analysis in a separate task. The task can ru
7071
* It could also cause multiple threads to enter the ConsumeResult() function simultaneously, which might be dangerous if the function isn't thread-safe.
7172
* Finally, this simple code doesn't keep track of the tasks that get created, so exceptions silently disappear. Thus, you need to add a "consumer" thread that tracks the analysis tasks, raises exceptions, kills long-running tasks, and ensures that the results get consumed in the correct order, one at a time.
7273

73-
### Design a producer-consumer system
74+
### Method 3: Design a producer-consumer system
7475

75-
For your final approach, designing a "producer-consumer" system, you build a producer thread that looks similar to your previously mentioned infinite loop. However, instead of consuming the analysis results as soon as they're available, the producer simply places the tasks in a queue to keep track of them.
76+
To design a "producer-consumer" system, you build a producer thread that looks similar to the previous section's infinite loop. Then, instead of consuming the analysis results as soon as they're available, the producer simply places the tasks in a queue to keep track of them.
7677

7778
```csharp
7879
// Queue that will contain the API call tasks.
@@ -109,7 +110,7 @@ while (true)
109110
}
110111
```
111112

112-
You also create a consumer thread, which takes tasks off the queue, waits for them to finish, and either displays the result or raises the exception that was thrown. By using the queue, you can guarantee that the results get consumed one at a time, in the correct order, without limiting the maximum frame rate of the system.
113+
You also create a consumer thread, which takes tasks off the queue, waits for them to finish, and either displays the result or raises the exception that was thrown. By using this queue, you can guarantee that the results get consumed one at a time, in the correct order, without limiting the maximum frame rate of the system.
113114

114115
```csharp
115116
// Consumer thread.
@@ -137,13 +138,15 @@ while (true)
137138

138139
### Get sample code
139140

140-
To help get your app up and running as quickly as possible, we've implemented the system that's described in the preceding section. It's intended to be flexible enough to accommodate many scenarios, while being easy to use. To access the code, go to the [Video frame analysis sample](https://github.com/Microsoft/Cognitive-Samples-VideoFrameAnalysis/) page on GitHub.
141+
To help get your app up and running as quickly as possible, we've implemented the system that's described in the previous section. It's intended to be flexible enough to accommodate many scenarios, while being easy to use. To access the code, go to the [Video frame analysis sample](https://github.com/Microsoft/Cognitive-Samples-VideoFrameAnalysis/) repo on GitHub.
141142

142-
The library contains the `FrameGrabber` class, which implements the previously discussed producer-consumer system to process video frames from a webcam. Users can specify the exact form of the API call, and the class uses events to let the calling code know when a new frame is acquired, or when a new analysis result is available.
143+
The library contains the `FrameGrabber` class, which implements the producer-consumer system to process video frames from a webcam. Users can specify the exact form of the API call, and the class uses events to let the calling code know when a new frame is acquired, or when a new analysis result is available.
144+
145+
### View sample implementations
143146

144147
To illustrate some of the possibilities, we've provided two sample apps that use the library.
145148

146-
The first sample app is a simple console app that grabs frames from the default webcam and then submits them to the Face service for face detection. A simplified version of the app is reproduced in the following code:
149+
The first sample app is a simple console app that grabs frames from the default webcam and then submits them to the Face service for face detection. A simplified version of the app is represented in the following code:
147150

148151
```csharp
149152
using System;
@@ -213,11 +216,11 @@ namespace BasicConsoleSample
213216
}
214217
```
215218

216-
The second sample app is a bit more interesting. It allows you to choose which API to call on the video frames. On the left side, the app shows a preview of the live video. On the right, it overlays the most recent API result on the corresponding frame.
219+
The second sample app offers more functionality. It allows you to choose which API to call on the video frames. On the left side, the app shows a preview of the live video. On the right, it overlays the most recent API result on the corresponding frame.
217220

218-
In most modes, there's a visible delay between the live video on the left and the visualized analysis on the right. This delay is the time that it takes to make the API call. An exception is in the "EmotionsWithClientFaceDetect" mode, which performs face detection locally on the client computer by using OpenCV before it submits any images to Azure AI services.
221+
In most modes, there's a visible delay between the live video on the left and the visualized analysis on the right. This delay is the time that it takes to make the API call. An exception is in the `EmotionsWithClientFaceDetect` mode, which performs face detection locally on the client computer by using OpenCV before it submits any images to Azure AI services.
219222

220-
By using this approach, you can visualize the detected face immediately. You can then update the emotions later, after the API call returns. This demonstrates the possibility of a "hybrid" approach. That is, some simple processing can be performed on the client, and then Azure AI services APIs can be used to augment this processing with more advanced analysis when necessary.
223+
By using this approach, you can visualize the detected face immediately. You can then update the attributes later, after the API call returns. This demonstrates the possibility of a "hybrid" approach. That is, some simple processing can be performed on the client, and then Azure AI services APIs can be used to augment this processing with more advanced analysis when necessary.
221224

222225
![The LiveCameraSample app displaying an image with tags](../images/frame-by-frame.jpg)
223226

@@ -226,18 +229,18 @@ By using this approach, you can visualize the detected face immediately. You can
226229
To get started with this sample, do the following:
227230

228231
1. Create an [Azure account](https://azure.microsoft.com/free/cognitive-services/). If you already have one, you can skip to the next step.
229-
2. Create resources for Azure AI Vision and Face in the Azure portal to get your key and endpoint. Make sure to select the free tier (F0) during setup.
232+
1. Create resources for Azure AI Vision and Face in the Azure portal to get your key and endpoint. Make sure to select the free tier (F0) during setup.
230233
- [Azure AI Vision](https://portal.azure.com/#create/Microsoft.CognitiveServicesComputerVision)
231234
- [Face](https://portal.azure.com/#create/Microsoft.CognitiveServicesFace)
232235
After the resources are deployed, select **Go to resource** to collect your key and endpoint for each resource.
233-
3. Clone the [Cognitive-Samples-VideoFrameAnalysis](https://github.com/Microsoft/Cognitive-Samples-VideoFrameAnalysis/) GitHub repo.
234-
4. Open the sample in Visual Studio 2015 or later, and then build and run the sample applications:
236+
1. Clone the [Cognitive-Samples-VideoFrameAnalysis](https://github.com/Microsoft/Cognitive-Samples-VideoFrameAnalysis/) GitHub repo.
237+
1. Open the sample in Visual Studio 2015 or later, and then build and run the sample applications:
235238
- For BasicConsoleSample, the Face key is hard-coded directly in [BasicConsoleSample/Program.cs](https://github.com/Microsoft/Cognitive-Samples-VideoFrameAnalysis/blob/master/Windows/BasicConsoleSample/Program.cs).
236239
- For LiveCameraSample, enter the keys in the **Settings** pane of the app. The keys are persisted across sessions as user data.
237240

238-
When you're ready to integrate the samples, reference the VideoFrameAnalyzer library from your own projects.
241+
When you're ready to integrate the samples, reference the **VideoFrameAnalyzer** library from your own projects.
239242

240-
The image-, voice-, video-, and text-understanding capabilities of VideoFrameAnalyzer use Azure AI services. Microsoft receives the images, audio, video, and other data that you upload (via this app) and might use them for service-improvement purposes. We ask for your help in protecting the people whose data your app sends to Azure AI services.
243+
The image-, voice-, video-, and text-understanding capabilities of **VideoFrameAnalyzer** use Azure AI services. Microsoft receives the images, audio, video, and other data that you upload (through this app) and might use them for service-improvement purposes. We ask for your help in protecting the people whose data your app sends to Azure AI services.
241244

242245
## Next steps
243246

articles/ai-services/computer-vision/how-to/call-read-api.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ manager: nitinme
88

99
ms.service: azure-ai-vision
1010
ms.topic: how-to
11-
ms.date: 11/03/2022
11+
ms.date: 02/27/2024
1212
ms.author: pafarley
1313
---
1414

@@ -20,7 +20,7 @@ In this guide, you'll learn how to call the v3.2 GA Read API to extract text fro
2020

2121
## Input requirements
2222

23-
The **Read** call takes images and documents as its input. They have the following requirements:
23+
The **Read** API call takes images and documents as its input. They have the following requirements:
2424

2525
* Supported file formats: JPEG, PNG, BMP, PDF, and TIFF
2626
* For PDF and TIFF files, up to 2000 pages (only the first two pages for the free tier) are processed.
@@ -57,7 +57,7 @@ By default, the service outputs the text lines in the left to right order. Optio
5757

5858
:::image type="content" source="../Images/ocr-reading-order-example.png" alt-text="OCR Reading order example" border="true" :::
5959

60-
### Select page(s) or page ranges for text extraction
60+
### Select page(s) or page range(s) for text extraction
6161

6262
By default, the service extracts text from all pages in the documents. Optionally, use the `pages` request parameter to specify page numbers or page ranges to extract text from only those pages. The following example shows a document with 10 pages, with text extracted for both cases - all pages (1-10) and selected pages (3-6).
6363

@@ -106,7 +106,7 @@ You call this operation iteratively until it returns with the **succeeded** valu
106106
When the **status** field has the `succeeded` value, the JSON response contains the extracted text content from your image or document. The JSON response maintains the original line groupings of recognized words. It includes the extracted text lines and their bounding box coordinates. Each text line includes all extracted words with their coordinates and confidence scores.
107107

108108
> [!NOTE]
109-
> The data submitted to the `Read` operation are temporarily encrypted and stored at rest for a short duration, and then deleted. This lets your applications retrieve the extracted text as part of the service response.
109+
> The data submitted to the **Read** operation are temporarily encrypted and stored at rest for a short duration, and then deleted. This lets your applications retrieve the extracted text as part of the service response.
110110
111111
### Sample JSON output
112112

@@ -185,11 +185,11 @@ See the following example of a successful JSON response:
185185

186186
### Handwritten classification for text lines (Latin languages only)
187187

188-
The response includes classifying whether each text line is of handwriting style or not, along with a confidence score. This feature is only supported for Latin languages. The following example shows the handwritten classification for the text in the image.
188+
The response includes a classification of whether each line of text is in handwritten style or not, along with a confidence score. This feature is only available for Latin languages. The following example shows the handwritten classification for the text in the image.
189189

190190
:::image type="content" source="../Images/ocr-handwriting-classification.png" alt-text="OCR handwriting classification example" border="true" :::
191191

192192
## Next steps
193193

194194
- Get started with the [OCR (Read) REST API or client library quickstarts](../quickstarts-sdk/client-library.md).
195-
- Learn about the [Read 3.2 REST API](https://westus.dev.cognitive.microsoft.com/docs/services/computer-vision-v3-2/operations/5d986960601faab4bf452005).
195+
- [Read 3.2 REST API reference](https://westus.dev.cognitive.microsoft.com/docs/services/computer-vision-v3-2/operations/5d986960601faab4bf452005).

articles/ai-services/computer-vision/how-to/model-customization.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author: PatrickFarley
77
manager: nitinme
88
ms.service: azure-ai-vision
99
ms.topic: how-to
10-
ms.date: 02/06/2023
10+
ms.date: 02/27/2024
1111
ms.author: pafarley
1212
ms.custom: devx-track-python
1313
---

0 commit comments

Comments
 (0)