人臉識別,網站是如何運作的?
最近微軟的 How-old.net 網站非常火熱,用戶在該站上傳照片后,它可以測算出照片中人物的性別和年齡。
有國外網友在 Quora 上問了 How-old.net 的工作原理。下面是參與了該項目的微軟項目經理 Eason Wang 的回復。
我本人就直接參與了這個項目。說實話,這個小網站的走紅大大出乎了我的意料。我事后進行了一些為什么會走紅的分析并且在 Medium 寫了一篇 文章 。
回到主題吧,我的回答分成兩個部分。第一個部分會講講如何快速地在任意的軟件中實現一模一樣的功能,第二個部分我會深入一些描述這項技術本身。
在過去的幾年和微軟研發部門的合作中,就 Bing 的圖像搜索技術而言,我們達到了最好的工業圖像理解能力,這項技術迅速延伸到微軟的其他產品。目前在 微軟牛津項目主頁 上,這項技術對所有的開發者開放。想要在自己的軟件中實現一樣的功能,你只需要簡單地調用一下我們的 web API,就可以以 JSON 格式獲取所需的一切信息。你可以嘗試著在 www.projectoxford.ai 的這個頁面上傳一幅圖像,它將在數秒內給你結果,臉部坐標、性別和年齡信息都在里面。Face API 只是我們在牛津項目上做的特性的其中一項。還有很多其他的核心功能來幫助打造創新性的應用。微軟內部的 API 向大眾開放讓我感到很興奮,我知道這會對開發社區起到深遠的影響。這讓之前看起來不可能的事情變得只用簡單地調用一下 web API 就能做到了。#HowOldRobot 只是這些能力的小小展示,Azure 機器學習團隊的一個開發人員只用了一天就把它開發出來了。
(譯者注:以下是 API 示例,為 JSON 格式)
JSON:
[
{
"faceId": "5af35e84-ec20-4897-9795-8b3d4512a1f9",
"faceRectangle": {
"width": 60,
"height": 60,
"left": 276,
"top": 43
},
"faceLandmarks": {
"pupilLeft": {
"x": "295.1",
"y": "56.8"
},
"pupilRight": {
"x": "317.9",
"y": "59.6"
},
"noseTip": {
"x": "311.6",
"y": "74.7"
},
"mouthLeft": {
"x": "291.0",
"y": "86.3"
},
"mouthRight": {
"x": "311.6",
"y": "88.6"
},
"eyebrowLeftOuter": {
"x": "281.6",
"y": "50.1"
},
"eyebrowLeftInner": {
"x": "304.2",
"y": "51.6"
},
"eyeLeftOuter": {
"x": "289.1",
"y": "57.1"
},
"eyeLeftTop": {
"x": "294.0",
"y": "54.5"
},
"eyeLeftBottom": {
"x": "293.0",
"y": "61.0"
},
"eyeLeftInner": {
"x": "297.8",
"y": "58.7"
},
"eyebrowRightInner": {
"x": "316.0",
"y": "54.2"
},
"eyebrowRightOuter": {
"x": "324.7",
"y": "54.2"
},
"eyeRightInner": {
"x": "312.9",
"y": "60.9"
},
"eyeRightTop": {
"x": "317.8",
"y": "57.7"
},
"eyeRightBottom": {
"x": "317.9",
"y": "63.7"
},
"eyeRightOuter": {
"x": "322.8",
"y": "60.8"
},
"noseRootLeft": {
"x": "304.0",
"y": "60.2"
},
"noseRootRight": {
"x": "312.2",
"y": "61.2"
},
"noseLeftAlarTop": {
"x": "302.6",
"y": "70.2"
},
"noseRightAlarTop": {
"x": "313.0",
"y": "70.0"
},
"noseLeftAlarOutTip": {
"x": "298.8",
"y": "76.2"
},
"noseRightAlarOutTip": {
"x": "315.2",
"y": "76.6"
},
"upperLipTop": {
"x": "307.3",
"y": "84.0"
},
"upperLipBottom": {
"x": "306.6",
"y": "86.4"
},
"underLipTop": {
"x": "305.5",
"y": "89.6"
},
"underLipBottom": {
"x": "304.1",
"y": "94.0"
}
},
"attributes": {
"age": 24,
"gender": "female",
"headPose": {
"roll": "4.0",
"yaw": "31.3",
"pitch": "0.0"
}
}
}
] How-old.net 這個網站主要依賴于三個關鍵的技術: 面部檢測、性別分類和年齡檢測 。面部檢測是另外兩個的基礎。對于年齡檢測和性別檢測來說,只是機器學習中很典型的回歸和分類問題,涉及到了面部特征的表示、訓練數據的采集、回歸和分類模型的構建以及模型的優化。這方面有很多的已經發表的論文。如果你有興趣想進一步了解就告訴我。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!