目前人工智能的发展正如火如荼,基于此的应用也是层出不穷。比如实时的现场多语种翻译机,还有各种App里出现的实名认证活体检测技术。以至于小学生都已经在用Python开发人工智能程序了!
看到这么多应用,虽然小学生都在开发人工智能程序了,但是对于初次接触的人来说,搭建环境、构建模型、编写程序、调试应用,花费的时间也不少。其门槛能不能进一步降低,从而让我们快速上手呢?
答案当然是可以的。毕竟一切都可以服务化。阿里云就提供了许多人工智能的服务,进一步降低了开发者的使用门槛。比如阿里云大学在线考试系统使用的身份证识别、人脸比对技术,就来自阿里云提供人脸识别产品(https://data.aliyun.com/produ... )。
我们以一个宠物匹配小游戏为例,来介绍下如何快速上手。
思路是我们先找到一些动物的照片,看看他们的脸型比例。通过与人脸的比例进行匹配,我们大概就能判断出每个人与其相似的宠物了。所以人脸接测定位的服务(https://help.aliyun.com/knowl... ),就能满足我们的需求了。实际上这些服务也接入了云市场(https://market.aliyun.com/pro... ),区别在于前者API校验是其自己的规范,后者走的是APPCODE简单身份认证或者云市场API网关统一的签名认证。其他方面并没有太大差别。
我们以前者为例,先开通产品,然后就可以按照文档(https://help.aliyun.com/knowl... )进行开发调试了。以PHP为例,我们传入一个图片,看看返回结果:
<?php
class 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 \G\M\T"),
);
$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\n".$headers['accept']."\n"
.$bodymd5."\n".$headers['content-type']."\n".$headers['date']."\n".$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);
}
}
测试一下调用:
array(15) {
["face_num"]=>
int(1)
["face_rect"]=>
array(4) {
[0]=>
int(262)
[1]=>
int(25)
[2]=>
int(141)
[3]=>
int(190)
}
["face_prob"]=>
array(1) {
[0]=>
float(1)
}
["pose"]=>
array(3) {
[0]=>
float(4.1272883415222)
[1]=>
float(-1.8178242444992)
[2]=>
float(0.42051115632057)
}
...
按照文档说明,face_rect便是我们需要的结果:
位置262、25,大小141、90,便是人脸的位置。剩下的开发就轻而易举啦。
最近我们利用人脸识别技术开发了一款测试宠物缘的游戏,有兴趣的小伙伴可以尝试一下,扫下图海报的二维码吧!
详情请阅读原文
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。