微軟認知服務 Computer Vision

                                                                       微軟認知服務 Computer Vision

在這一篇中將大致介紹Compute Vision這個類別提供的功能,以及如何在應用程序中使用這些功能。

 

Compute Vision 功能

在入門篇中提到微軟認知服務通過五個大類來提供服務。其中Vision是五大類之一,用於分析圖像和視頻。到我寫這篇博文爲止, vision之下有這幾個大類別

(截圖來自 https://docs.microsoft.com/en-us/azure/cognitive-services/):

Compute Vision 以Azure 服務的形式爲以上列舉的功能提供圖像處理的高級算法。開發者訂閱該服務後,可以通過REST API或者SDK的方式來調用這些服務,以達到輕鬆管理圖像,分析圖像的功能。

Compute Vision可以分析符合以下要求的圖像:

圖像必須以 JPEG、PNG、GIF 或 BMP 格式顯示

圖像的文件大小必須不到 4 兆字節 (MB)

圖像的尺寸必須大於 50 x 50 像素

對於讀取 API,圖像的尺寸必須介於 50 x 50 和 10000 x 10000 像素之間。

 

通過分析圖像檢測其視覺特徵

這一塊包含非常多的內容,具體可以參考這裏的介紹

https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/home

https://docs.microsoft.com/zh-cn/azure/cognitive-services/computer-vision/home

簡單來講,可以檢測和識別圖像的中包含的物件包括人臉識別,品牌log識別,生成定製的縮略圖,檢測圖像屬性如是否爲線框(素描)/剪貼圖,主題顏色, 基於父/子繼承的標識分類描述(微軟定義了86個標識來描述一些分類,86個標識定義在此 https://docs.microsoft.com/zh-cn/azure/cognitive-services/computer-vision/category-taxonomy)。

此外,還有使用自然語言描述圖像內容(在通過REST API章節中提供示例 )。

從圖像中提取文本

在含有文字的圖片中提取出計算機可識別的字符流(支持25種語言),對於英語和西班牙語還支持手寫文本圖片,並達到比較高的準確率。

管理圖像的內容

檢測圖像中的成人內容,並返回不同分類的置信度分數。 且通過API提供的閥值設置項,可以根據需要返回檢測內容。

如何使用

Compute Vision API提供各種編程語言的SDK, 比如JavaScript, C#, Java和Python。

同所有azure資源一樣,使用一個資源總是從定閱開始。如果之前定閱過cognitive service的話,那麼對於這個service也可以使用之前cognitive service的定閱Key。如果沒有,請參考以下定閱步驟。

定閱compute vision,獲得使用的Key

打開https://portal.azure.com/,  進入以下頁面(無法進入該頁面的,請參考入門篇),在搜索框中輸入custom vision, 如下

選中 “compute vision”,進入以下頁面

點擊create,進入以下頁面

點擊下面的藍色按鈕後,進入初始化頁面,初始化結束後,

點擊 “Go to resource”進入, 在quick start tab 頁可以看到該資源服務的使用key

API console及testing console

點擊 API console,可以看到compute vision服務提供的所有 API。

前面截圖中提到過,POST API 的內容包含Location信息,在該頁面根據創建定閱的信息時選擇的location來選擇對應的選項可以進入API測試平臺。

進入測試控制檯後,在Ocp-Apim-Subscription-Key 右邊輸入創建定閱所得的Key

在visualFeatures 右邊的下拉框中選擇需要分析的參數,就能快速得到request API 如下

如果在Input requirements下輸入一張有效合法的圖片鏈接,點擊”send”button,便能在Response content看到圖像分析的結果。

通過REST API 調用 Compute Vision Service

構建request:

Rest API是基於URL工作的。可以參考cURL(http://www.ruanyifeng.com/blog/2019/09/curl-reference.html) 的工作方式來探討 URL的形式和組成。

一般cURL的請求會有:URL,Header ,“{body}“

 compute vison REST API中URL是這樣的:

紅色部分爲參數,根據需要分析的內容而改變。

compute vison REST API中headers:

一般包括兩個,一是用來指定Ocp-Apim-Subscription-Key,一個用來指定content-Type, 如,json, octet-stream等。

compute vison REST API中{body}:

指需要上傳的圖片數據,可以用能夠訪問到圖片的url,也可以使用byte 流。

基於以上分析,在c#中可以通過以下程序構建圖像分析請求

完整代碼提供在此, https://download.csdn.net/download/mochounv/12309700

需要替換自己的key和Location api.

通過SDK本地調用 Compute Vision Service

在程序中使用compute vision SDK,需要使用創建定閱時的KEY和EndPoint (前面REST API 使用的是Location_API).

在.net中應用程序中(.netcore和.Net Framework.sdk 都可以)通過NUGET 添加Microsoft.Azure.CognitiveServices.Vision.ComputerVision 作爲reference, 就可以使用service中的API.

在這個SDK中主要的API對象有:

ComputerVisionClient, 是所有compute vision功能的入口,通過定閱信息進行初始化。

ComputerVisionClientExtensions, 包含每一個具體功能的API,比如以下將舉的例子文本識別,

就使用該extentsion 中的API RecognizeTextInStreamAsync

可能因爲該服務的功能是不斷髮展變化的,所以微軟將功能都放在這樣的一個extensions中,以滿足後續的不斷擴展。

以下例子就通過以上SDK API實現文本識別

  1. 創建ComputeVisionClient 對象

 

    protected static ApiKeyServiceClientCredentials Credentials

        {

            get

            {

                return new ApiKeyServiceClientCredentials(API_Key);

            }

  }

var client = new ComputerVisionClient(Credentials) { Endpoint = Endpoint }

2 調用文本識別API

3 得到分析結果

作爲輸入的文本圖片:

分析的結果效果

 

完整的程序代碼在此https://download.csdn.net/download/mochounv/12309704

需要替換自己的key 和endpoint

使用OCR API時,需要注意以下限制:

模糊的圖片;手寫的或者草書,藝術字體,小號字,複雜的背景,陰影,模糊或扭曲等問題。

同時作爲分析的圖片也有以下要求:

尺寸 >=40*40 and <= 3200*3200 pixel

總像素不太於10 M

存儲不大於4M

必須爲JPEG, PNG,GIF,BMP

 

其它參考資料

https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/

https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/quickstarts-sdk/client-library?pivots=programming-language-csharp

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章