從零開始玩人工智能—人臉 API—02

      網友投稿 663 2025-04-05

      前文介紹了人臉API,但沒有一個完整的功能實現,各個功能的API始終如散開的珍珠一樣,不能串成珠鏈。到底這套API是如何工作的呢?Person、Person Group、FaceList、Face這些不同的對象是怎么發生聯系的呢?

      于是,我決定寫一個相對完整的簡單程序,完成一個對人臉進行識別的功能。

      仔細看了看文檔,琢磨了一下。為了實現人臉識別,需要實現以下幾個步驟:

      1、創建一個Person Group。人需要通過組來進行管理組織。每個組最多有1000個人,免費的每個訂閱最多1000人,S0訂閱的每個組10000人,每個訂閱上限1M組、100M人。

      2、創建一個Person。人是Face的擁有著。每個人最多有248張臉的圖片。和人關聯的臉是持久化的persistedFace,而使用detect等api讀取的是非持久的Face。

      3、為Person提供幾張不同的Face。除了Face,還有FaceList對象,但更多用于分辨類似的臉。我估計要進行人臉識別,用Face對象就可以。

      4、對提供的幾張Face進行訓練。人工智能需要對輸入進行訓練,利用認知服務進行分析并得到結果。理論上提供訓練的數據越多,結果越準確。

      5、提供一張用于比對的Face。上傳一張圖片,讓人工智能判斷是不是同一個人。

      開始之前我要首先熟悉一下示例代碼。前文提供的示例代碼和Face API的示例代碼使用了不同的模塊。示例代碼引入了requests這個庫,使用它可以更靈活的完成有關HTTP的各類方法特別是傳遞數據。所以:

      pip install requests

      因為有兩種不同的數據headers提交方式json和octet-steam,所以分開寫了兩個不同的headers頭部定義。為了便于使用,把訂閱的Key和訪問的基礎鏈接分別使用變量進行提供。

      正式開干~首先是創建Person Group。和別的對象不同,PersonGroup的名字和ID都是字符串,只接受小寫英文字符和‘-’、‘_’,不多于64個字符。

      其他對象的ID都是類似GUID的形式。通常在創建對象的時候由服務返回。由于Person Group是首先創建的,所以其ID由用戶指定也很合乎情理。創建Person Group之后,就可以在組里面創建人了。

      每一部我都是用了print來輸出獲得的json數據。由于添加Face需要提供Person ID,所以在這里我從json里面取出了personId的數據。

      Python里面處理json可以用dump、dumps、load、loads不同的方法。loads能夠把獲得的json數據轉成dict或者list,這在我踩過list的坑之后才想明白。一旦json中的數據分層了,轉化出來的就是list了,這時就需要逐層處理數據。可以參考Python的手冊: 18.2. json— JSON encoder and decoder:https://docs.python.org/2/library/json.html

      有了personId,就可以為特定的人添加Face了。官方示例代碼給的是通過json傳遞一個圖片的url。有很多人在下面問,怎么使用本地的照片呢?其實利用文件,然后使用octet-steam發送給Azure就可以了。經過一番對requests.request()參數的猜測和對文件的嘗試,果然就能夠把圖片傳上去了。persistedFaceId其實后面沒有直接使用,為了學習我還是把它提取出來了。

      為了訓練機器,繼續傳了幾張我的帥照……

      從零開始玩人工智能—人臉 API—02

      當一個人有了幾分臉面之后……哈哈,我們應該訓練人工智能了。直接POST特定URL即可。

      到了關鍵的時候了,我們要檢驗認知服務的效果了。先使用Detect方法輸入一張照片。

      這里其實不需要所有參數,只需要返回faceId就可以。所以把params里面的數據刪了也無所謂。不過我想看看完整的輸出是怎樣的,就全寫出來了。

      于是就遇到了前面說的坑,使用dict的方法,沒法獲得list里面的數據。要是一層一層分析…好麻煩啊,轉念一想,輸出的格式是固定的,因此偷了個懶,直接用list的下標獲取faceId的dict,然后再get出faceId。

      最后,就是調用Verify方法,確認提供的照片是不是我們之前使用幾張照片訓練過的人的了。這句話好長去……

      為了容易體現結果,我還特意用了中文……

      按照文檔說的,高于0.5的評分就可以視作通過,所以屬性isIdentical的值為True,直接拿來做條件。

      照片是我本人嗎?當然,是。

      利用Azure的Face API,完成一個人臉識別,很簡單吧。

      人工智能

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel怎么把月份變成季度(excel月份轉季度)
      下一篇:excel表格排序操作的教程(excel表的排序法怎么操作)
      相關文章
      337p日本欧洲亚洲大胆人人| 亚洲AV无码一区二区三区在线| 亚洲人成网站在线观看播放动漫| 亚洲人成在线影院| 久久精品国产精品亚洲艾草网| 国产自偷亚洲精品页65页| 亚洲国产精品13p| 亚洲国产电影av在线网址| 亚洲国产精品一区二区九九 | 亚洲国产成人精品无码一区二区| 78成人精品电影在线播放日韩精品电影一区亚洲 | 99人中文字幕亚洲区| 亚洲天堂一区二区| 久久亚洲精品无码aⅴ大香| 亚洲神级电影国语版| 亚洲国产模特在线播放| 亚洲伊人久久大香线蕉影院| 亚洲乱码一二三四区国产| 亚洲sss综合天堂久久久| 亚洲人成色777777老人头| 亚洲youwu永久无码精品| 一本久久综合亚洲鲁鲁五月天 | 亚洲精品在线观看视频| 精品亚洲aⅴ在线观看| 亚洲人成网网址在线看| 亚洲欧美国产日韩av野草社区| 亚洲aⅴ无码专区在线观看春色| 亚洲第一成人影院| 亚洲人精品午夜射精日韩| 亚洲va无码专区国产乱码| 91情国产l精品国产亚洲区| 亚洲天堂电影在线观看| 亚洲中文字幕一二三四区| 亚洲AV日韩AV无码污污网站| 亚洲乱码国产一区网址| 国产精品亚洲片在线| 亚洲精品美女久久久久| 亚洲人成人网毛片在线播放| 亚洲成a人片在线不卡一二三区 | 另类小说亚洲色图| 在线A亚洲老鸭窝天堂|