项目背景
近些年,人工
智能技术发展之快,近乎超出所有人的料想,从alphaGo战胜柯洁等一众围棋
高手,AI技术被捧上神坛,似乎一夜之间,原来遥不可及的AI走进普通人的视线,这之后,各类基于AI的软硬件在市场上风生水起,基于AI的闲聊的各类机器人,如
天猫精灵,亚马逊echo,Google Home,叮咚音响之类的小机器人和智能音箱
设备如雨后春笋般冒出;
技术开源方面,以Google为首的
TensorFlow斩获10w个star,这个成绩估计可以排进GitHub前10了吧,自带Google光环,第二代智能学习系统,可被用于
语音识别和图像识别等机器学习领域;
人工智能和大数据似乎是天然的绝配,以前计算机识别
算法即便再精准准确率都很难达到30%以上,比如要识别一只猫,通过人眼和经验是何等简单的事情,让计算机识别并不简单,猫可能是坐着站着躺着,可能品种不同,颜色不同,也可能有障碍物只露出一个头,计算机如何识别,有了大数据,一切就不同了,基于大数据的训练集,加上一系列猫的特征向量,通过自主学习,计算机的视觉技术已经不可同日而语,目前市面上开源的大数据训练集,比如是识别文字的,动物的等,比如ftp://ftp.ics.uci.edu/pub/
machine-learning-
databases 资源上有各类的训练集,通过大数据训练集,可将机器学习的算法精准度提高到比较满意的程度,本文介绍基于腾讯的AI云平台API,它们可以如何识别花花草草,汽车品种,甚至预测人的年龄,颜值等强大功能;
调用腾讯AI云API
腾讯AI云API访问网址:http://ai.qq.com/,使用步骤:
使用自己
QQ或微信账户申请个开发者账号;
API的调用Demo官方只提供了python版和php版,本文使用Java版;
看了python代码后,我们可以编写一个Java版的调用,关键在于发送post请求时sign的生成,我们可以写一个公共函数,如下:
1 /**
2 * @param url 腾讯post API Restful地址
3 * @param params
接口的请求参数列表,只需要填入API参数即可
4 * @return
5 */
6 public
JSONObject post(String url,Map<String,String> params) {
7 if(!params.containsKey("app_id")) {
8 params.put("app_id", appId);
9 }xiamenkp.blogwo.com
10 if(!params.containsKey("time_stamp")) {
11 long time_stamp = System.currentTimeMillis()/1000;
12 params.put("time_stamp", time_stamp+"");
13 }hangzhoukp.blogwo.com
14 if(!params.containsKey("nonce_str")) {
15 String nonce_str = IdWorker.getInstance().uuid();
16 params.put("nonce_str", nonce_str);
17 }shanghai.blogwo.com
18 if(!params.containsKey("sign") || StrUtil.formatNullStr(params.get("sign")).equals("")) {
19 Map<String, String> sPara = PayUtil.paraFilter(params);
20 String prestr = PayUtil.createLinkString(sPara);
21 String key = "&app_key="+appKey;
22 String mysign = sign(prestr, key, "utf-8").toUpperCase();
23 params.put("sign", mysign);
24 }szkp.blogwo.com
25 String paramStr = createLinkString(params);
26 Map<String,String>
headers = new HashMap();
27 headers.put("Content-Type", "application/x-www-form-urlencoded");
28 String json = HttpUtils.post(url,null, paramStr,headers);
29 return
JSON.parseObject(json);
30 }fuzhou.blogwo.com
1 String url = "https://api.ai.qq.com/fcgi-bin/vision/vision_imgidentify";
2 Map<String,String> params = new HashMap();
3 String image = ImageUtils.encodeImage(new File(path));
4 params.put("scene", "1");
5 params.put("image", image);
6 JSONObject json = post(url,params);
7 return json;
直接使用Restful API地址即,以识别汽车为例:
1 String url = "http://tianjin.blogwo.com/";
2 Map<String,String> params = new HashMap();
3 String image = ImageUtils.encodeImage(new File(path));
4 params.put("scene", "1");
5 params.put("image", image);
6 JSONObject json = post(url,params);
7 return json;