Day 03 - Cognitive Service - 辨識- Face API - iT 邦幫忙

文章推薦指數: 80 %
投票人數:10人

臉部偵測偵測影像中的一或多張人臉,並取得影像臉部位置所在的臉部矩形及臉部 ... 要新增:人臉辨識API Key. 新增完專案後,首先先來安裝Nuget 套件:Microsoft.Azure. 2019iT邦幫忙鐵人賽 DAY 3 1 EverythingonAzure AzureDataService相關服務基本操作手冊系列第 3篇 Day03-CognitiveService-辨識-Face API 2019鐵人賽 azuredataservices cognitiveservice face MoneyYu 2018-10-1819:49:423509瀏覽 上一篇我們介紹了讓電腦看圖說故事,那這篇我們就要來介紹更需要具體細節的部分:FaceAPI。

CognitiveService針對臉部辨識的部分提供了以下的功能 臉部驗證 檢查兩張臉部是屬於同一個人的可能性。

API會傳回信心分數,顯示兩張臉部是屬於同一個人的可能性。

臉部偵測 偵測影像中的一或多張人臉,並取得影像臉部位置所在的臉部矩形及臉部屬性,該屬性內含以機器學習為基礎的臉部特徵預測。

可用的臉部屬性功能包括:年齡、表情、性別、姿勢、微笑及鬍子,以及影像中每張臉部的27個地標。

表情辨識 臉部API現在與表情辨識整合,並傳回影像中每個臉部之一組表情的信心分數,例如生氣、藐視、厭惡、恐懼、快樂、不表意見、憂傷及驚奇。

這些表情已知可跨文化普遍地與特定臉部表情溝通。

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

我們先來看一下官網的範例,後面再來實際用程式動手做 偵測影像中的臉部 這邊就用是大家的老婆:新垣結衣,來做為範例一下;這是一張「逃避可恥但有用」的劇照,可以看出它辨識出新垣結衣是女生,年紀只有20歲!不虧是大家的老婆;甚至還有是否有戴眼鏡以表情等資訊。

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

影像中類似臉部的辨識與分組 這邊我特地找了「周杰倫」不同時期的照片來測試一下,左邊那張是近期的照片,右邊則是周杰倫超年輕時候的照片。

可以看到其實還是辨識的出來,只是信心程度沒有很高 沒有說信心程度很低就為不可能,有可能正解的信心程度為0.4,但是其他選項的信心程度只有0.1,所以最佳解仍為正解。

實際動手做 介紹完範例後,又到了動手做時間,廢話已經說很多,就直接進入Coding階段吧 在AzurePortal上建立APIKey與新增專案的部分已於上一篇講解過,所以這邊就不騙篇幅了 這次要新增:人臉辨識APIKey 新增完專案後,首先先來安裝Nuget套件:Microsoft.Azure.CognitiveServices.Vision.Face 此Nuget套件已經有實作 .NETStandard所以 .NETCore也可以使用 現在只有Preview版本,所以後面要指定版本號 dotnetaddpackageMicrosoft.Azure.CognitiveServices.Vision.Face-v2.2.0-preview 如果是使用PackageExplorer Install-PackageMicrosoft.Azure.CognitiveServices.Vision.Face-Version2.2.0-preview 示範臉部偵測與表情辨識 我這邊程式就直接使用從Url方式來拿到圖片的方式,這邊照片就使用剛剛的範例照片 先把相關變數設定好,像是APIKey跟ImageUrl,我把apiKey放在appsettings.json裡 stringapiKey=configuration.GetSection("apiKey").Value; stringimageUrl="https://cdn-images-1.medium.com/max/1200/0*WVev4lO0ZXp6tDed"; 接下來我們就把FaceClient給New起來,並根據AzurePortal上之資訊設定Endpoint  FaceClientfaceClient=newFaceClient( newApiKeyServiceClientCredentials(apiKey), newSystem.Net.Http.DelegatingHandler[]{}); faceClient.Endpoint="https://southeastasia.api.cognitive.microsoft.com/"; 因為這次安裝的SDK為Preview狀態,所以EndPoint不能這定成跟AzurePortal上顯示的一樣,要設為:https://[location].api.cognitive.microsoft.com/;參考:https://github.com/Azure/azure-sdk-for-net/issues/4534 設定完後,在把圖片送出去之前還有最後一步,就是設定你要取得那些資訊欄位,我在這邊就把所有的欄位加進來 privatestaticreadonlyFaceAttributeType[]faceAttributes= { FaceAttributeType.Age,FaceAttributeType.Gender,FaceAttributeType.Accessories,FaceAttributeType.Blur, FaceAttributeType.Emotion,FaceAttributeType.Exposure,FaceAttributeType.FacialHair, FaceAttributeType.Glasses,FaceAttributeType.Hair,FaceAttributeType.HeadPose,FaceAttributeType.Makeup, FaceAttributeType.Noise,FaceAttributeType.Occlusion,FaceAttributeType.Smile }; 都設定完成後,我們就可以把圖片送出去做辨識啦 Console.WriteLine("Facesbeingdetected..."); IListfaceList= awaitfaceClient.Face.DetectWithUrlAsync( imageUrl,true,false,faceAttributes); varface=faceList[0]; Console.WriteLine($"FaceId:{face.FaceId}"); Console.WriteLine($"Age:{face.FaceAttributes.Age}"); Console.WriteLine($"Blur:{face.FaceAttributes.Blur.BlurLevel},{face.FaceAttributes.Blur.Value}"); Console.WriteLine($"Emotion:{{Anger:{face.FaceAttributes.Emotion.Anger},Contempt:{face.FaceAttributes.Emotion.Contempt},Disgust:{face.FaceAttributes.Emotion.Disgust},Fear:{face.FaceAttributes.Emotion.Fear},Happiness:{face.FaceAttributes.Emotion.Happiness},Neutral:{face.FaceAttributes.Emotion.Neutral},Sadness:{face.FaceAttributes.Emotion.Sadness},Surprise:{face.FaceAttributes.Emotion.Surprise}}}"); Console.WriteLine($"Exposure:{face.FaceAttributes.Exposure.ExposureLevel},{face.FaceAttributes.Exposure.Value}"); Console.WriteLine($"FacialHair:{{Beard:{face.FaceAttributes.FacialHair.Beard},Moustache:{face.FaceAttributes.FacialHair.Moustache},Sideburns:{face.FaceAttributes.FacialHair.Sideburns}}}"); Console.WriteLine($"Gender:{face.FaceAttributes.Gender}"); Console.WriteLine($"Glasses:{face.FaceAttributes.Glasses}"); Console.WriteLine($"Hair:{{HairColor:{face.FaceAttributes.Hair.HairColor[0].Color}:{face.FaceAttributes.Hair.HairColor[0].Confidence},Bald:{face.FaceAttributes.Hair.Bald},Invisible:{face.FaceAttributes.Hair.Invisible}}}"); Console.WriteLine($"HeadPose:{{Pitch:{face.FaceAttributes.HeadPose.Pitch},Roll:{face.FaceAttributes.HeadPose.Roll},Yaw:{face.FaceAttributes.HeadPose.Yaw}}}"); Console.WriteLine($"Makeup:{{EyeMakeup:{face.FaceAttributes.Makeup.EyeMakeup},LipMakeup:{face.FaceAttributes.Makeup.LipMakeup}}}"); Console.WriteLine($"Noise:{{NoiseLevel:{face.FaceAttributes.Noise.NoiseLevel},Value:{face.FaceAttributes.Noise.Value}}}"); Console.WriteLine($"Occlusion:{{EyeOccluded:{face.FaceAttributes.Occlusion.EyeOccluded},ForeheadOccluded:{face.FaceAttributes.Occlusion.ForeheadOccluded},MouthOccluded:{face.FaceAttributes.Occlusion.MouthOccluded}}}"); Console.WriteLine($"Smile:{face.FaceAttributes.Smile}"); 結果如下 完整範例程式:https://github.com/MoneyYu/2019ItHelpData 下一篇來講影片索引器 留言 追蹤 檢舉 上一篇 Day02-CognitiveService-辨識-ComputerVision 下一篇 Day04-CognitiveService-辨識-Video Indexer 系列文 AzureDataService相關服務基本操作手冊 共5篇 目錄 RSS系列文 訂閱系列文 1人訂閱 1 Day01- Intro 2 Day02-CognitiveService-辨識-ComputerVision 3 Day03-CognitiveService-辨識-Face API 4 Day04-CognitiveService-辨識-Video Indexer 5 Day05-CognitiveService-辨識- 內容仲裁 完整目錄 尚未有邦友留言 立即登入留言 iT邦幫忙鐵人賽 參賽組數 1087組 團體組數 52組 累計文章數 20477篇 完賽人數 572人 鐵人賽最新文章 .NetCoreWebApi_筆記21_Swagger及OpenAPI介紹與配置使用方式_API管理與測試探討 .NetCoreWebApi_筆記20_api結合ADO.NET資料庫操作part8_新聞文章查詢 .NetCoreWebApi_筆記19_api結合ADO.NET資料庫操作part7_新聞文章的編輯更新與刪除 .NetCoreWebApi_筆記18_api結合ADO.NET資料庫操作part6_新聞文章表格陳列查詢 .NetCoreWebApi_筆記17_api結合ADO.NET資料庫操作part5_新聞文章新增_新聞類別元素透過API綁定方式 [Bonus系列]-使用useCallback&useMemo的正確時機是什麼? 大盤到底能不能攻上一萬八?? gotodie?那個goto到底能不能用啊? 2021/12/12更新 予焦啦!一夢終須醒...... 前往鐵人賽 技術推廣專區 [Day2]抓取每日收盤價 [Day1]基本工具安裝 利用python取得永豐銀行API的Nonce [Day03]tinyML開發板介紹 永豐金融API測試員 [Day01]在享受tinyML這道美食之前 [Day3]使用ta-lib製作指標 [Day4]函數打包與買進持有報酬率試算 計算API所需要的參數:HashID 計算API所需要的參數:IV 前往鐵人賽 熱門問題 公司想要架設一個網購物站,但是不知道要怎麼規劃預算 正要準備開始上CCNA… 無網際網路時,請問兩台電腦如何‘無線’遠端連線 遠端監控電腦效能 如何設定一台電腦,有線網卡走公司內網,無線網卡走外網,同時運行? 關於網頁顯示問題 mssql資料庫搬移時,怎樣出所有需要的資料會比較好? 請問有在做關貿資料串接的資訊公司嗎? NAS、雲端儲存空間、隨身硬碟差別在那?怎麼選? 照片辨識比對軟體開發 IT邦幫忙 站方公告 【2021iThome鐵人賽】登登登!究竟獎落誰家,2021iThome鐵人賽得獎名單正式揭曉 熱門tag 看更多 13th鐵人賽 12th鐵人賽 11th鐵人賽 鐵人賽 2019鐵人賽 2018鐵人賽 javascript 2017鐵人賽 windows php python windowsserver linux c# 程式設計 資訊安全 css vue.js sql 分享 熱門回答 正要準備開始上CCNA… 遠端監控電腦效能 如何設定一台電腦,有線網卡走公司內網,無線網卡走外網,同時運行? NAS、雲端儲存空間、隨身硬碟差別在那?怎麼選? 無網際網路時,請問兩台電腦如何‘無線’遠端連線 照片辨識比對軟體開發 關於網頁顯示問題 公司想要架設一個網購物站,但是不知道要怎麼規劃預算 mssql資料庫搬移時,怎樣出所有需要的資料會比較好? DefaultDomainPolicy密碼複雜度 熱門文章 大盤到底能不能攻上一萬八?? [Bonus系列]-使用useCallback&useMemo的正確時機是什麼? 【教學】簡單救回電腦資料 為了轉生而點技能-JavaScript,day23(Promise介紹 12.MYSQL淺談NULL 數位簽章(digitalsignature) D9.學習基礎C、C++語言 什麼是功能分解? 7.MYSQL表格程式語法 javascript基礎功能1 一週點數排行 更多點數排行 海綿寶寶(antijava) ㊣浩瀚星空㊣(yoching) 小山丘(a243318490) 居然解出來了(partyyaya) ccenjor(ccenjor) 純真的人(jer5173) fillano(fillano) Gary(mosbbs) PPTaiwan(Pochengtaiwan) souda(souda) × At 輸入對方的帳號或暱稱 Loading 找不到結果。

標記 {{result.label}} {{result.account}} 關閉



請為這篇文章評分?