Skip to main content

Command Palette

Search for a command to run...

[鐵人賽] Azure Data Service - Day 03 - Cognitive Service - 辨識 - Face API

Updated
1 min read
[鐵人賽] Azure Data Service - Day 03 - Cognitive Service - 辨識 - Face API

[IT 鐵人賽] Azure Data Service - Day 03 - Cognitive Service - 辨識 - Face API

Azure Data Service - Day 03 - Cognitive Service - Vision - Face API

上一篇我們介紹了讓電腦看圖說故事,那這篇我們就要來介紹更需要具體細節的部分:Face API。

Cognitive Service 針對臉部辨識的部分提供了以下的功能

  • 臉部驗證 檢查兩張臉部是屬於同一個人的可能性。API 會傳回信心分數,顯示兩張臉部是屬於同一個人的可能性。
  • 臉部偵測 偵測影像中的一或多張人臉,並取得影像臉部位置所在的臉部矩形及臉部屬性,該屬性內含以機器學習為基礎的臉部特徵預測。可用的臉部屬性功能 包括:年齡、表情、性別、姿勢、微笑及鬍子,以及影像中每張臉部的 27 個地標。
  • 表情辨識 臉部 API 現在與表情辨識整合,並傳回影像中每個臉部之一組表情的信心分數,例如生氣、藐視、厭惡、恐懼、快樂、不表意見、憂傷及驚奇。這些表情已知可跨文化普遍地與特定臉部表情溝通。

範例網站介紹

Face API 可以分成兩大部分,第一個是針對單一臉部做偵測,可以得知這些臉部的相關資訊,甚至是情緒的部分;另一個則是針對多個臉部,用來比對這多的臉部是否為相同人,簡單來說就是認臉。

我們先來看一下官網的範例,後面再來實際用程式動手做

這邊就用是大家的老婆:新垣結衣,來做為範例一下;這是一張「逃避可恥但有用」的劇照,可以看出它辨識出新垣結衣是女生,年紀只有 20 歲!不虧是大家的老婆;甚至還有是否有戴眼鏡以表情等資訊。

在這個範例中就可以看到這是完全針對情緒的參數去做顯示,Cognitive Service 會給每個情緒都有一個分數,最高的分數通常就是結果;以這張來說,新垣結衣被判斷為目前表情情緒是中立。

這邊我特地找了「周杰倫」不同時期的照片來測試一下,左邊那張是近期的照片,右邊則是周杰倫超年輕時候的照片。

可以看到其實還是辨識的出來,只是信心程度沒有很高

沒有說信心程度很低就為不可能,有可能正解的信心程度為 0.4,但是其他選項的信心程度只有 0.1,所以最佳解仍為正解。


實際動手做

介紹完範例後,又到了動手做時間,廢話已經說很多,就直接進入 Coding 階段吧

在 Azure Portal 上建立 API Key 與新增專案的部分已於上一篇講解過,所以這邊就不騙篇幅了

這次要新增:人臉辨識 API Key

新增完專案後,首先先來安裝 Nuget 套件:Microsoft.Azure.CognitiveServices.Vision.Face

此 Nuget 套件已經有實作 .NET Standard 所以 .NET Core 也可以使用

現在只有 Preview 版本,所以後面要指定版本號

dotnet add package Microsoft.Azure.CognitiveServices.Vision.Face -v 2.2.0-preview

如果是使用 Package Explorer

Install-Package Microsoft.Azure.CognitiveServices.Vision.Face -Version 2.2.0-preview

  • 示範臉部偵測與表情辨識

我這邊程式就直接使用從 Url 方式來拿到圖片的方式,這邊照片就使用剛剛的範例照片

先把相關變數設定好,像是 API Key 跟 ImageUrl,我把 apiKey 放在 appsettings.json 裡

接下來我們就把 FaceClient 給 New 起來,並根據 Azure Portal 上之資訊設定 Endpoint

因為這次安裝的 SDK 為 Preview 狀態,所以 EndPoint 不能這定成跟 Azure Portal 上顯示的一樣,要設為: https://[location].api.cognitive.microsoft.com/;參考:https://github.com/Azure/azure-sdk-for-net/issues/4534

設定完後,在把圖片送出去之前還有最後一步,就是設定你要取得那些資訊欄位,我在這邊就把所有的欄位加進來

都設定完成後,我們就可以把圖片送出去做辨識啦

結果如下

完整範例程式:https://github.com/MoneyYu/2019ItHelpData


下一篇來講影片索引器

More from this blog

Career-Ops 安裝與設定 — 用 AI 來幫你篩職缺、客製履歷

最近在看新的工作機會,光是瀏覽職缺、比對 JD、調整履歷就花了不少時間。 後來找到 Career-Ops 這個開源專案 作者 santifer 用這套系統篩了 740 多個職缺、產出 100 多份客製化履歷,最後拿到 Head of Applied AI 的 offer。 看起來蠻有意思的,所以我就在 Windows 上實際裝了一輪,這篇就來把整個安裝和設定的過程記錄下來。 我這邊搭配的 AI 後

Apr 12, 20265 min read
Career-Ops 安裝與設定 — 用 AI 來幫你篩職缺、客製履歷

讓 LLM 自動化你的 N8N 工作流程:n8n-mcp-server 安裝指南

前言 網路上一大堆都是在介紹如何在 N8N 裡面用 MCP 來呼叫其他工具,但是更多時候我希望 LLM 能直接幫我寫好或是修改 N8N 的工作流程 所以這篇就來介紹如何設定與使用 n8n-mcp-server 來讓 LLM 幫忙操控 N8N 在 GitHub 上有不少的 n8n-mcp-server,經過一下下的簡單搜索,我決定使用這個專案: n8n-mcp-server 原因在於說這個專案的實作提供了基本上所有需要編輯工作流程的功能,以下就來記錄安裝過程 MCP Server 設定 首先當然...

May 28, 20253 min read

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02

.NET Core Logging- Elmah 02 上一篇我們提到了基本的使用方式,接下來的這一篇我們就來講講要怎麼把 Log 放到不同的儲存體上,以及如何過濾 Log Log 儲存方式 我們先來看這些 Log 倒底存在哪裡,目前共有三種儲存方式,如下: MemoryErrorLog — store errors in memory 預設為使用此方式,簡單來說就是將錯誤 Log 都存在記憶體裡,所以只要應用程式一重新啟動,Log 就沒了;但是也是最方便的方式,只是要注意如果 Log 太...

Oct 20, 20182 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01

.NET Core Logging- Elmah 01 Elmah 是我最一開始使用的 Log 工具,基本上它的功能就是將應用程式所有發生的錯誤記錄下來,不需要改變程式架構,而且又有介面可以觀看,十分的方便;它從 WebForm 時代就有了,到了 MVC 也是運作的很好,那這邊就來介紹一下 Elmah 要如何在 ASP.NET Core 中使用 (.NET Core 也可使用)。 不過很可惜的,目前並沒有釋出官方的 Elmah for .NET Core,不過有一個新專案: ElmahCore...

Oct 19, 20181 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01

[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer

Azure Data Service - Day 04 - Cognitive Service - Vision - Video Indexer 前面幾篇都是介紹靜態影像的辨識與分析,那這篇就來到針對影片來做處理。 Cognitive Service 針對影片辨識的部分提供了:Video Indexer 它整合了許多功能,在這邊列出一些比較重要的功能: 語系偵測 可以自動偵測出這個影片是屬於哪個語系,目前支援: English, Spanish, French, German, Italia...

Oct 19, 20181 min read
[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer

BrainBurst, HeadFirst

45 posts

學習學到老,撞牆撞到腦. A lifelong quest—with forehead dents.