微软认知服务开发实践(2) - 计算机视觉

前言

计算机视觉所涉及的面很广泛,Computer Vision API中提供了几个常用的分析功能,可实现解读图片内容信息,对图片进行OCR识别,生成缩略图,未来也许会增加更多功能。本文将针对其分别是本文将针对Cognitive Services中提供的功能的调用方法做一些讲解。

Computer Vision API

微软认知服务中的计算机视觉分析主要是针对一张静态图片进行分析,当然图片的格式会有一定的要求,

  1. 图片的格式需要是JPEG、PNG、GIF以及BMP
  2. 图片尺寸不可以大于4MB
  3. 图片像素需要大于50*50(px)

针对API调用中图片的提交方式不限于上传图片,还可以通过给定一个网络上图片的URL的方式进行图片提交。

Computer Vision API 中提供了7个API供调用:

  1. Analyze Image
  2. Describe Image
  3. Tag Image
  4. List Domain Specific Models
  5. Recognize Domain Specific Content
  6. Get Thumbnail
  7. OCR

Analyze Image

这个API可以理解为一个总的调用API,可以通过这个API获取所有有关图片的信息(除了OCR信息),首先是接口URL:

https://api.projectoxford.ai/vision/v1.0/analyze[?visualFeatures][&details]

URL中包含两个可选参数visualFeatures以及details,

- visualFeatures,字符型,当需要使用多个值的时候,使用逗号进行分割。

描述
Categories 根据图片内容获取预定义的分类信息
Tags 根据图片内容生成标签信息
Description 返回一段英语的句子来描述图片中的内容
Faces 返回人脸识别相关信息(包括位置,性别,年龄)
ImageType 返回图片类型(不是文件类型,是图片类型,剪切画还是线条图片等)
Color 返回图片色调信息(包括是否是黑白图片等)
Adult 返回成人分类信息(是否是情色图片或有关性暗示图片等信息).

- details,字符型,当需要使用多个值的时候,使用逗号进行分割。

描述
Celebrities 返回领域相关识别中的名人识别的结果信息.

Analyze Image这个API通过POST的方式进行调用,除了URL部分的参数外,微软认知服务中还包括了请求的Header的一些参数需要我们在调用前设置,这个API中包括2个,(基本每个API中都需要这2个)

Content-Type(可选) 设定Content-Type信息,这个是可选的,不设定会根据Post过去的数据自动识别出来,可以设定为application/jsonapplication/octet-streammultipart/form-data
Ocp-Apim-Subscription-Key 微软认知服务订阅的Key,这个需要用户自己去自己的账户中找到(这个每个API的调用都需要)

根据Header中Content-Type设置的方式不同,我们可以通过两种方式提交图片数据,一种是直接就是图片的内容通过POST直接提交,另外一种方式是将图片在网络的URL地址放入一个JSON字符串中提交。

当设置为application/octet-streammultipart/form-data时, POST中的数据直接就是Binary流,

当设置为application/json时,POST中的数据按如下格式实现,

{"url":"http://example.com/images/test.jpg"}

最后介绍的是这个API的返回值,返回信息为一串JSON字符串。格式如下:

{
  "categories": [
    {
      "name": "abstract_",
      "score": 0.00390625
    },
    {
      "name": "people_",
      "score": 0.83984375,
      "detail": {
        "celebrities": [
          {
            "name": "Satya Nadella",
            "faceRectangle": {
              "left": 597,
              "top": 162,
              "width": 248,
              "height": 248
            },
            "confidence": 0.999028444
          }
        ]
      }
    }
  ],
  "adult": {
    "isAdultContent": false,
    "isRacyContent": false,
    "adultScore": 0.0934349000453949,
    "racyScore": 0.068613491952419281
  },
  "tags": [
    {
      "name": "person",
      "confidence": 0.98979085683822632
    },
    {
      "name": "man",
      "confidence": 0.94493889808654785
    },
    {
      "name": "outdoor",
      "confidence": 0.938492476940155
    },
    {
      "name": "window",
      "confidence": 0.89513939619064331
    }
  ],
  "description": {
    "tags": [
      "person",
      "man",
      "outdoor",
      "window",
      "glasses"
    ],
    "captions": [
      {
        "text": "Satya Nadella sitting on a bench",
        "confidence": 0.48293603002174407
      }
    ]
  },
  "requestId": "0dbec5ad-a3d3-4f7e-96b4-dfd57efe967d",
  "metadata": {
    "width": 1500,
    "height": 1000,
    "format": "Jpeg"
  },
  "faces": [
    {
      "age": 44,
      "gender": "Male",
      "faceRectangle": {
        "left": 593,
        "top": 160,
        "width": 250,
        "height": 250
      }
    }
  ],
  "color": {
    "dominantColorForeground": "Brown",
    "dominantColorBackground": "Brown",
    "dominantColors": [
      "Brown",
      "Black"
    ],
    "accentColor": "873B59",
    "isBWImg": false
  },
  "imageType": {
    "clipArtType": 0,
    "lineDrawingType": 0
  }
}

其中在imageType这部分的两个参数(clipArtType和lineDrawingType)的值是枚举类型,

ClipartType:

- Non-clipart = 0

- ambiguous = 1

- normal-clipart = 2

- good-clipart = 3

LineDrawingType

- Non-LineDrawing = 0

- LineDrawing = 1

这里针对category信息做下说明,目前微软感知服务中的计算机视觉可以自动识别并归类出如下86类内容,

在调用过程中如果有异常产生,可以根据Response来识别出来,同时也会返回的异常的具体内容,类似格式如下:

{
        "code":"BadArgument",
        "message":"Invalid Media Type"
}

整个API的具体调用示例,C#可以参考如下:

async void MakeRequest()
{
    var client = new HttpClient();
    var queryString = HttpUtility.ParseQueryString(string.Empty);

    // Request headers
    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

    // Request parameters
    queryString["visualFeatures"] = "Categories";
    queryString["details"] = "{string}";
    var uri = "https://api.projectoxford.ai/vision/v1.0/analyze?" + queryString;

    HttpResponseMessage response;

    // Request body
    byte[] byteData = Encoding.UTF8.GetBytes("{body}");

    using (var content = new ByteArrayContent(byteData))
    {
        content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
        response = await client.PostAsync(uri, content);
    }

}

Describe Image

描述图片这个API是用于获取针对图片中的内容返回一段适合的句子(当然现在只是支持英语)。Describe Image其实是Analyze Image中其中的一个功能,但是可以通过单独调用Describe Image的API来获取更详细的针对图片内容的描述字符串。

首先是接口URL:

https://api.projectoxford.ai/vision/v1.0/describe[?maxCandidates]

URL中包含一个可选参数maxCandidates,这个参数用于指定最大返回多少个候选的描述字符串,默认值是1。

这个API也是POST方式提交图片信息,所需要的RequestHeader以及Post图片信息的方法同AnalyzeImage相同,这里就不再进行说明了,请参考AnalyzeImage部分的解释。

当发送完Post的调用请求后,如果提交的内容正确,则返回如下格式的JSON数据,

{
  "description": {
    "tags": [
      "person",
      "man",
      "outdoor",
      "window",
      "glasses"
    ],
    "captions": [
      {
        "text": "Satya Nadella sitting on a bench",
        "confidence": 0.48293603002174407
      },
      {
        "text": "Satya Nadella is sitting on a bench",
        "confidence": 0.40037006815422832
      },
      {
        "text": "Satya Nadella sitting in front of a building",
        "confidence": 0.38035155997373377
      }
    ]
  },
  "requestId": "ed2de1c6-fb55-4686-b0da-4da6e05d283f",
  "metadata": {
    "width": 1500,
    "height": 1000,
    "format": "Jpeg"
  }
}

其中captions中的内容就是我们所需要获取的有关提交的图片的内容描述。根据其中的confidence的值我们能够知道其相关的准确程度。

API调用过程的C#示例如下:

static async void MakeRequest()
{
    var client = new HttpClient();
    var queryString = HttpUtility.ParseQueryString(string.Empty);

    // Request headers
    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

    // Request parameters
    queryString["maxCandidates"] = "1";
    var uri = "https://api.projectoxford.ai/vision/v1.0/describe?" + queryString;

    HttpResponseMessage response;

    // Request body
    byte[] byteData = Encoding.UTF8.GetBytes("{body}");

    using (var content = new ByteArrayContent(byteData))
    {
        content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
        response = await client.PostAsync(uri, content);
    }

}

Tag Image

Tag Image用于根据所提交的图片中的内容,自动生成tag信息,这类似于我们现在的blog系统,可以根据目前文章中的内容自动生成tag信息是一样的。这个功能可以实现图片自动分类功能。

首先是接口URL:

https://api.projectoxford.ai/vision/v1.0/tag

这个API也是POST方式提交图片信息,所需要的RequestHeader以及Post图片信息的方法同AnalyzeImage相同,这里就不再进行说明了,请参考AnalyzeImage部分的解释。

当发送完Post的调用请求后,如果提交的内容正确,则返回如下格式的JSON数据,

{
  "tags": [
    {
      "name": "grass",
      "confidence": 0.9999997615814209
    },
    {
      "name": "outdoor",
      "confidence": 0.99997067451477051
    },
    {
      "name": "sky",
      "confidence": 0.99928975105285645
    },
    {
      "name": "building",
      "confidence": 0.99646323919296265
    },
    {
      "name": "house",
      "confidence": 0.99279803037643433
    },
    {
      "name": "lawn",
      "confidence": 0.82268029451370239
    },
    {
      "name": "green",
      "confidence": 0.64122253656387329
    },
    {
      "name": "residential",
      "confidence": 0.31403225660324097
    }
  ],
  "requestId": "1ad0e45e-b7b4-4be3-8042-53be96103337",
  "metadata": {
    "width": 400,
    "height": 400,
    "format": "Jpeg"
  }
}

其中tags节点下的内容就是我们所请求的结果,依然是可以根据confidence信息来获取结果的准确程度。

API调用过程的C#示例如下:

static async void MakeRequest()
{
    var client = new HttpClient();

    // Request headers
    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

    var uri = "https://api.projectoxford.ai/vision/v1.0/tag";

    HttpResponseMessage response;

    // Request body
    byte[] byteData = Encoding.UTF8.GetBytes("{body}");

    using (var content = new ByteArrayContent(byteData))
    {
        content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
        response = await client.PostAsync(uri, content);
    }

}

List Domain Specific Models

这个API的功能其实不是用于做图片的计算机视觉的操作,而是请求当前微软认知服务图片分析中可使用的领域模型列表,可以通过这个列表来了解领域特定模型。

使用其返回值结合后面要介绍的Recognize Domain Specific Content共同使用。

首先是接口URL:

https://api.projectoxford.ai/vision/v1.0/models

虽然这只是一个Domain Specific Models查询功能的API,但是也需要在Request的Header中指定您微软感知服务订阅的Ocp-Apim-Subscription-Key。

在RequestHeader中设置好Ocp-Apim-Subscription-Key后通过Get方式请求数据即可,如果提交的内容正确,则返回如下格式的JSON数据,

{
  "models": [
    {
      "name": "celebrities",
      "categories": [
        "people_"
      ]
    }
  ]
}

目前微软计算机视觉中的Model只是支持celebrities这一种, 所以在下面介绍的“名人识别”API中,参数只能传入celebrities这一种目前。

API调用过程的C#示例如下:

static async void MakeRequest()
{
    var client = new HttpClient();
    var queryString = HttpUtility.ParseQueryString(string.Empty);

    // Request headers
    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

    var uri = "https://api.projectoxford.ai/vision/v1.0/models?" + queryString;

    var response = await client.GetAsync(uri);
}

Recognize Domain Specific Content

“识别领域特定物体”这个就是传入一个图片,能够针对图片内的内容,在指定领域模型内识别出领域模型内的物体。目前只支持一种模型(名人模型),可以通过上传一张包括名人的图片,并设定为celebrities并调用该API即可返回图片中人物的名称(当然必须是名人)。

首先是接口URL:

https://api.projectoxford.ai/vision/v1.0/models/{model}/analyze

URL中包含一个可变参数{model}必须指定,

model 设定用于识别的特定领域模型名称

model参数的内容需要根据之前介绍的List Domain Specific Models所返回的内容来进行设定,目前List的API中只返回了一个模型celebrities,所以目前只支持这一种。

这个API也是POST方式提交图片信息,所需要的RequestHeader以及Post图片信息的方法同AnalyzeImage相同,这里就不再进行说明了,请参考AnalyzeImage部分的解释。

当发送完Post的调用请求后,如果提交的内容正确,则返回如下格式的JSON数据,

{
  "requestId": "f0027b4b-dc0d-4082-9228-1545ed246b03",
  "metadata": {
    "width": 1500,
    "height": 1000,
    "format": "Jpeg"
  },
  "result": {
    "celebrities": [
      {
        "name": "Satya Nadella",
        "faceRectangle": {
          "left": 597,
          "top": 162,
          "width": 248,
          "height": 248
        },
        "confidence": 0.999028444
      }
    ]
  }
}

每个模型具体的返回参数中都有什么内容,可能并非一样,但是就目前所了解的来看,celebrities的识别结果是根据脸部特征来进行识别的,包括了人物的名称,脸部特征在图片中的区域,以及准确度。

API调用过程的C#示例如下:

static async void MakeRequest()
{
    var client = new HttpClient();
    var queryString = HttpUtility.ParseQueryString(string.Empty);

    // Request headers
    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

    var uri = "https://api.projectoxford.ai/vision/v1.0/models/{model}/analyze?" + queryString;

    HttpResponseMessage response;

    // Request body
    byte[] byteData = Encoding.UTF8.GetBytes("{body}");

    using (var content = new ByteArrayContent(byteData))
    {
        content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
        response = await client.PostAsync(uri, content);
    }

}

Get Thumbnail

Get Thumbnail这个功能就如标题所说的,可以为所提交的图片生成缩略图,与传统意义上的生成缩略图有所不同,认知服务中首先会分析这张图片中具有意义的区域(the region of interest (ROI)),最后会根据ROI进行SmartCropping(笔者理解为是智能剪切?)操作,最后返回缩略图,相比于传统意义上的缩略图更能体现出主体内容。

首先是接口URL:

https://api.projectoxford.ai/vision/v1.0/generateThumbnail[?width][&height][&smartCropping]

URL中包含3个可选参数,width与height必须给定,smartCropping则为可选参数,

参数 描述
width 设定返回缩略图的宽度.
height 设定返回缩略图的高度.
smartCropping(可选) 设定是否启用智能剪辑功能,默认应该为true.

这个API也是POST方式提交图片信息,所需要的RequestHeader以及Post图片信息的方法同AnalyzeImage相同,这里就不再进行说明了,请参考AnalyzeImage部分的解释。

当发送完Post的调用请求后,如果提交的内容正确,则直接返回图片的二进制数据,图片格式应该为image/jpeg。

API调用过程的C#示例如下:

static async void MakeRequest()
{
    var client = new HttpClient();
    var queryString = HttpUtility.ParseQueryString(string.Empty);

    // Request headers
    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

    // Request parameters
    queryString["width"] = "{number}";
    queryString["height"] = "{number}";
    queryString["smartCropping"] = "true";
    var uri = "https://api.projectoxford.ai/vision/v1.0/generateThumbnail?" + queryString;

    HttpResponseMessage response;

    // Request body
    byte[] byteData = Encoding.UTF8.GetBytes("{body}");

    using (var content = new ByteArrayContent(byteData))
    {
        content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
        response = await client.PostAsync(uri, content);
    }

}

OCR

OCR这个我们并不陌生,但在微软认知服务出来前,基本上所有的OCR功能都是由本机完成,程序中如果需要使用这种功能,则需要一定的领域知识并进行开发实现。微软在认知服务中,将OCR作为计算机视觉额一部分一同提供服务,这使得我们在程序中不需要再为OCR功能而大动干戈,直接的进行简单的接口调用即可实现功能。

首先是接口URL:

https://api.projectoxford.ai/vision/v1.0/ocr[?language][&detectOrientation ]

URL中包含2个可选参数,language以及detectOrientantion。

langurage参数用于指定识别的语种,采用BCP-47,默认值为unk(自动检测),我们可以通过该参数来设定具体的语种信息,可选择的有如下几种,

    unk (AutoDetect)
    zh-Hans (ChineseSimplified)
    zh-Hant (ChineseTraditional)
    cs (Czech)
    da (Danish)
    nl (Dutch)
    en (English)
    fi (Finnish)
    fr (French)
    de (German)
    el (Greek)
    hu (Hungarian)
    it (Italian)
    Ja (Japanese)
    ko (Korean)
    nb (Norwegian)
    pl (Polish)
    pt (Portuguese)
    ru (Russian)
    es (Spanish)
    sv (Swedish)
    tr (Turkish)

detectOrientantion参数用于指定是否检测文字方向,默认值为true,当启动检测文字方向功能后,提交的图片内容将首先尝试检测方向信息,然后根据方向信息并进行一些纠正后,在进行进一步的文字识别操作。

这个API也是POST方式提交图片信息,所需要的RequestHeader以及Post图片信息的方法同AnalyzeImage相同,这里就不再进行说明了,请参考AnalyzeImage部分的解释。

当发送完Post的调用请求后,如果提交的内容正确,则返回如下格式的JSON数据,

{
  "language": "en",
  "textAngle": -2.0000000000000338,
  "orientation": "Up",
  "regions": [
    {
      "boundingBox": "462,379,497,258",
      "lines": [
        {
          "boundingBox": "462,379,497,74",
          "words": [
            {
              "boundingBox": "462,379,41,73",
              "text": "A"
            },
            {
              "boundingBox": "523,379,153,73",
              "text": "GOAL"
            },
            {
              "boundingBox": "694,379,265,74",
              "text": "WITHOUT"
            }
          ]
        },
        {
          "boundingBox": "565,471,289,74",
          "words": [
            {
              "boundingBox": "565,471,41,73",
              "text": "A"
            },
            {
              "boundingBox": "626,471,150,73",
              "text": "PLAN"
            },
            {
              "boundingBox": "801,472,53,73",
              "text": "IS"
            }
          ]
        },
        {
          "boundingBox": "519,563,375,74",
          "words": [
            {
              "boundingBox": "519,563,149,74",
              "text": "JUST"
            },
            {
              "boundingBox": "683,564,41,72",
              "text": "A"
            },
            {
              "boundingBox": "741,564,153,73",
              "text": "WISH"
            }
          ]
        }
      ]
    }
  ]
}

返回值中包括了几部分内容,包括了一些识别的基本信息以及具体每个区域中所识别出来的文字信息

首先是language用于标记语种信息,textAngle与orientation功能的指明了图片中文字的方向信息以及具体的角度,

其次是regions中的内容,图片中的每个文字的都通过regions中使用boundingBox给标记(或者说是整理)出来,包括words级别和text级别,words中包括若干个text,通过boundingBox来标识出在图片中的坐标信息,每个text则是具体识别出来的字符,也通过boundingBox标识出在图片中的坐标信息。

API调用过程的C#示例如下:

static async void MakeRequest()
{
    var client = new HttpClient();
    var queryString = HttpUtility.ParseQueryString(string.Empty);

    // Request headers
    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

    // Request parameters
    queryString["language"] = "unk";
    queryString["detectOrientation "] = "true";
    var uri = "https://api.projectoxford.ai/vision/v1.0/ocr?" + queryString;

    HttpResponseMessage response;

    // Request body
    byte[] byteData = Encoding.UTF8.GetBytes("{body}");

    using (var content = new ByteArrayContent(byteData))
    {
        content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
        response = await client.PostAsync(uri, content);
    }

}

总结

本文中对微软认知服务中的计算机视觉部分做了一些简单的介绍,并针对其所提供的API进行了一些调用相关的说明。微软在计算机视觉中提供的7个API可以实现3方面功能,

  1. 图片分析

    图片分析功能可以帮助用户提供针对图片中的内容进行解读,不仅仅是获取基本的图片信息,还能获取更高层面的感知相关的信息,

  2. 生成缩略图

    而生成缩略图功能,也是增加了对ROI进行识别的相关处理操作,这样获得的缩略图也较传统实现获得的缩略图更有使用价值,

  3. OCR文字识别

    最后所提供的OCR功能更是能减轻一些涉及到文字识别软件的开发难度,让用户能够更加贴近于具体的业务逻辑而不纠结于具体的技术实现上。

目前主流的软件开发过程中经常是天马行空的功能设计,而在实现过程中发现各种边角功能需要大量的研发以及实现等相关工作。微软的认知服务正是针对这一点,将一些常用并且实现起来复杂的功能细节封装成API供调用,将软件开发过程从某个具体实现解放出来,使其能更加专注于具体的业务逻辑实现。

时间: 2024-11-14 02:22:18

微软认知服务开发实践(2) - 计算机视觉的相关文章

微软认知服务开发实践(3) - 人脸识别

前言 人们对人脸识别的研究已经有很长一段时间,起初局限于获取基础的人脸信息,随着机器学习领域的发展,人脸识别的应用更加广泛,已经可以被用于人脸搜索.人脸鉴权等相关应用.本文将针对微软认知服务中提供的人脸识别API的调用方法进行一些初步的讲解. Face API Face API中提供了3方面功能: 人脸检测 人脸分组 人脸识别(搜索) 首先是人脸检测,主要是指传统概念上的人脸识别功能,识别图片中的人的面孔,给出人脸出现的坐标区域,并根据识别出来的人脸分析出一些基本的信息(例如年龄). 其次是人脸

【AI开发第一步】微软认知服务API应用

目录 介绍 API分类 使用‘视觉’API完成的Demo 点击直接看干货 介绍 从3月份Google家的阿尔法狗打败韩国围棋冠军选手李世石,到之后微软Build2016大会宣布的“智能机器人”战略.种种迹象表明未来慢慢会进入“人工智能”时代,人工智能不再像以前那样听起来高大上,普通的码农屌丝也能开发出具备人类智慧的APP.听起来是不是很叼? 以前是这样的: You:吴博士,您研究的主要方向是撒? 吴博士:人工智能. You:挖槽,好叼.你觉得未来机器人会不会控制人类呢? 吴博士:...... 现

微软认知服务应用秘籍 – 搭建基于云端的中间层以支持跨平台的智能视觉服务

不断演进的应用场景 初级应用场景—宅在家里 场景:Bob同学有一天在网上看到了一张建筑物的图片,大发感慨:"好漂亮啊!这是哪里?我要去亲眼看看!"Bob同学不想问别人,可笑的自尊心让他觉得这肯定是个著名的建筑,如果自己不知道多丢脸!怎么解决Bob同学的烦恼呢? 我们看看微软认知服务是否能帮助到Bob同学,打开这个链接: https://azure.microsoft.com/zh-cn/services/cognitive-services/computer-vision/ 向下卷滚屏

利用微软认知服务实现语音识别功能

想实现语音识别已经很久了,也尝试了许多次,终究还是失败了,原因很多,识别效果不理想,个人在技术上没有成功实现,种种原因,以至于花费了好多时间在上面.语音识别,我尝试过的有科大讯飞.百度语音,微软系.最终还是喜欢微软系的简洁高效.(勿喷,纯个人感觉) 最开始自己的想法是我说一句话(暂且在控制台上做Demo),控制台程序能识别我说的是什么,然后显示出来,并且根据我说的信息,执行相应的行为.(想法很美好,现实很糟心)初入语音识别,各种错误各种来,徘徊不定的选择哪家公司的api,百度上查找各种语音识别的

使用微软认知服务进行人脸识别

最近在搞一个人脸识别的功能,使用了微软的认知服务,一下讲一个我遇到的小问题. 首先添加相关相应的NuGet:Microsoft.ProjectOxford.Face 然后构造FaceServiceClient并调用DetectAsync方法识别人脸信息. 构造FaceServiceClient需要一个key,之前公司申请好了,过程没什么问题.之后由于使用的是免费的API,调用次数受到限制,打算自己再申请一个账户,过程麻烦的一B,实名制以及上传身份证等,,, 最后当然还是搞定了并拿到了Key,然而

PHP使用微软认知服务Face API

下面主要介绍基于PHP语言,基于guzzle类库,调用微软最新推出的认知服务:人脸识别. 实验环境: IDE:Eclipse for PHP Developers Version: Neon.1 Release (4.6.1) Server:WampServer Version 2.5 HttpClient:guzzle 1. 使用composer安装Guzzle composer.json文件 { "require": { "guzzlehttp/guzzle":

AI-Azure上的认知服务之Computer Vision(计算机视觉)

使用 Azure 的计算机视觉服务,开发人员可以访问用于处理图像并返回信息的高级算法. 主要包含如下高级算法: 标记视觉特性Tag visual features 检测对象Detect objects 图像分类Categorize an image 描述图像Describe an image 检测人脸Detect faces 检测图像类型Detect image types 检测特定领域的内容Detect domain-specific content 检测颜色方案Detect the colo

微软在Build 2016开发者大会中发布 “认知服务”,牛津计划有正式名字啦!

2016年3月30日:微软在Build 2016开发者大会中发布"认知服务". 在Build 2016开发者大会中,微软发布了新的智能服务:微软认知服务(Microsoft Cognitive Services).该服务集合了多种智能API以及知识API.借助这些API,开发者可以开发出更智能,更有吸引力的产品.微软认知服务集合了多种来自Bing,前"牛津计划"等项目的智能API.应用了这些API的系统能看,能听,能说话,并且能理解和解读我们通过自然交流方法所传达的

服务大众的人工智能---认知服务

什么是认知服务Cognitive Service? 认知服务是由微软在IBM认知计算[^1]的基础上提出来的,简单来讲,认知服务是基于文本分析.语音理解.以及视觉输入等形式经过人工智能网络分析后所提供的一种服务形式.微软认知服务的前身就是其大名鼎鼎的牛津计划[^2]项目,2015年火爆朋友圈的How-Old.net[^3]应用就是利用图片识别和情感分析等技术来判断一张图片中所有人的年龄,在很大程度上分析一个人的年龄基于一些固定的算法或者由于机器无法“理解”人类的“欺骗”技巧,所以可以对图片进行特