人臉識別,網站是如何運作的?

jopen 10年前發布 | 6K 次閱讀 人臉識別

 

最近微軟的 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!