十分鐘搭建人臉識別小遊戲

目前人工智慧的發展正如火如荼,基於此的應用也是層出不窮。比如實時的現場多語種翻譯機,還有各種App里出現的實名認證活體檢測技術。以至於小學生都已經在用Python開發人工智慧程序了!

看到這麼多應用,雖然小學生都在開發人工智慧程序了,但是對於初次接觸的人來說,搭建環境、構建模型、編寫程序、調試應用,花費的時間也不少。其門檻能不能進一步降低,從而讓我們快速上手呢?

答案當然是可以的。畢竟一切都可以服務化。阿里雲就提供了許多人工智慧的服務,進一步降低了開發者的使用門檻。比如阿里雲大學在線考試系統使用的身份證識別、人臉比對技術,就來自阿里雲提供人臉識別產品(data.aliyun.com/product )。

我們以一個寵物匹配小遊戲為例,來介紹下如何快速上手。

思路是我們先找到一些動物的照片,看看他們的臉型比例。通過與人臉的比例進行匹配,我們大概就能判斷出每個人與其相似的寵物了。所以人臉接測定位的服務(help.aliyun.com/knowled ),就能滿足我們的需求了。實際上這些服務也接入了雲市場(market.aliyun.com/produ ),區別在於前者API校驗是其自己的規範,後者走的是APPCODE簡單身份認證或者雲市場API網關統一的簽名認證。其他方面並沒有太大差別。

我們以前者為例,先開通產品,然後就可以按照文檔(help.aliyun.com/knowled )進行開發調試了。以PHP為例,我們傳入一個圖片,看看返回結果:

<?phpclass FaceApi{ const HTTP_TIMEOUT = 5; /** * 人臉屬性識別 * https://help.aliyun.com/knowledge_detail/53520.html */ public static function faceAttribute($content) { $url = https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute; $headers = array( accept => "application/json", content-type => "application/json", date => gmdate("D, d M Y H:i:s GMT"), ); $body = array( type => 1, content => base64_encode($content), ); $headers[authorization] = self::calcSignature($url, $body, $headers); $headers = array_map(function($k, $v) { return $k.: .$v; }, array_keys($headers), $headers); return self::_request($url, $body, $headers); } /** * 計算人臉比對API需要的簽名。 * * https://help.aliyun.com/document_detail/30245.html */ protected static function calcSignature($url, $body, $headers) { $urlinfo = parse_url($url); $path = empty($urlinfo[query]) ? $urlinfo[path] : $urlinfo[path].?.$urlinfo[query]; if (is_array($body)) { $body = json_encode($body); } $bodymd5 = empty($body) ? : base64_encode(md5($body,true)); $stringToSign = "POST
".$headers[accept]."
" .$bodymd5."
".$headers[content-type]."
".$headers[date]."
".$path; $ak = self::getAccessKey(); $signature = base64_encode( hash_hmac("sha1", $stringToSign, $ak[secret], true) ); return "Dataplus ${ak[id]}:".$signature; } protected static function getAccessKey() { // 填寫從https://ak-console.aliyun.com/獲取的AK信息 return array(id => , secret => ); } private static function _request($url, $data, $headers) { $options = array( CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => self::HTTP_TIMEOUT, CURLOPT_HTTPHEADER => $headers, CURLOPT_POSTFIELDS => json_encode($data), ); $curl = curl_init(); curl_setopt_array($curl, $options); $response = curl_exec($curl); curl_close($curl); if (!$response) { return false; } return json_decode($response, true); }}

測試一下調用:

按照文檔說明,face_rect便是我們需要的結果:

位置262、25,大小141、90,便是人臉的位置。剩下的開發就輕而易舉啦。

最近我們利用人臉識別技術開發了一款測試寵物緣的遊戲,有興趣的小夥伴可以嘗試一下,掃下圖海報的二維碼吧!

原文鏈接

更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎

推薦閱讀:

計算機視覺技術
我們為何會對形似「臉」的非動物體產生錯覺?
智慧春運時代:迅通人臉識別儀「刷」新你的春運印象
冷靜審視人工智慧技術的本質 | 一圖看懂新一代人工智慧知識體系大全
人臉辨識技術也存在膚色和性別歧視?

TAG:人工智慧 | 人臉識別 | HTML |