我们知道前段时间有报道说Facebook说他们的人脸识别技术达到,甚至超过了人类识别人脸的能力。很酷是不是。今天介绍个可以直接用的更酷的东西:物体识别。

Concept Recognition

如果你想让程序知道这张图大概是讲什么的,怎么办?Rekognition(是的,破名字...)就可以做到。他们家提供了最普通的人脸识别以外,还提供了场景识别明星识别,以及今天要讲的概念识别
先直观感受一下Demo。通过这张图,Rek可以识别出70%概率这张图讲的是beach。
图片描述

This image is about :
beach:70.65%
cloud:66.57%
sky:33.56%
island:10.88%
shore:7.56%

“丫绝对是找了个special case!”,是的我也这么想的。好,我决定用我的narrative拍的照来测试下。这是我18号在路上的一张照片。其中很明显的有两种东西:汽车和路牌。

图片描述

分析结果如下

basketball court:60.2%
car:31.89%
street sign:29.07%
motor scooter:20.09%
pop bottle:12.09%

看到第一个失望了吧。篮球个毛啊,哪只眼睛看到篮球了...但往后看就觉得我靠,还挺准。汽车,路牌,小摩托。

我整天都在跟什么玩意儿打交道

自动我买了Narrative以后,就一直在思考怎么把这些图片数据用起来。那就让我用Rekognition的Concept API来下手吧。API很简单,如果不传图片信息而用URL来表示,就用GET就ok了。
遇到一个问题:如果按Docs填写jobs参数就永远没有结果,只能照抄Demo页面里的参数,Concept的jobs写scene_understanding_3。
我用15张照片做了一个批处理,算出这15张照片对应的Concept的数据,都添加到一个统一的results里。

var request = require('request'),
    qs = require('querystring');


var pictures = [
    'xxx.jpg',
    'xxxx.jpg',
];

var results = {};

for (var i = 0; i < pictures.length; i++) {
    processImg(pictures[i]);
}

function processImg(pic) {
    calculate('http://xxx.qiniudn.com/' + pic,
        function (info) {
            for (var i = 0; i < info.scene_understanding.matches.length; i++) {
                var match = info.scene_understanding.matches[i];
                if (results[match.tag]) {
                    results[match.tag] += match.score;
                } else {
                    results[match.tag] = match.score;
                }
            }
        })
}


function calculate(url, cb) {
    var params = {
        api_key: "4321",
        api_secret: "8765",
        name_space: "apiDemo",
        user_id: "apiDemo",
        jobs: "scene_understanding_3",
        urls: url
    };
    request.get({
            url: 'http://rekognition.com/func/api/?' + qs.stringify(params)
        }, function (error, response, body) {
            if (!error && response.statusCode == 200) {
                var info = JSON.parse(body);
                if (cb) cb(info);
            }
        }
    )
}

照片存在七牛了,每次传一个URL就ok。最后得到的结果如下。

{
  "awning":0.0556,
  "architecture":0.0099,
  "dorm room":0.11510000000000001,
  "people":0.0508,
  "face":0.1062,
  "finger":0.1521,
  "jeans":0.1502,
  "cat":0.0189,
  "pet":0.0087,
  "seat belt":0.21689999999999998,
  "document":0.0095,
  "human":0.0722,
  "flare":0.0093,
  "laptop":0.3152,
  "batting helmet":0.0095,
  "desk":0.0174,
  "molding":0.1219,
  "pc":0.1488,
  "television":0.0394,
  "flight":0.0098,
  "person":0.0095,
  "loudspeaker":0.0295,
  "apartment room":0.0094,
  "rat":0.1126,
  "lecture":0.0112,
  "aquarium":0.0104,
  "underpants":0.0089
}

其中最高的是0.3152,是...laptop...=.=|||。你丫是猴子派来黑我的吗!
第二名是比较奇怪的seat belt。第三名是手指(不不不,我只放算了几张白天的照片!)。后面还有牛仔裤,PC等等。基本还是可以判定通过这少量数据就能一定程度判定一个人整天在跟什么玩意儿混。
让我有点奇怪的是里面居然没有手机,于是去浏览了一遍那几张图,真的没有。

哎,再让我伤心一会儿...


fxp
462 声望59 粉丝

coder in action


引用和评论

0 条评论