はじめに
ちょっと前に機械学習をもっと知りたくて、まずはAPIを触ったので、メモ書き程度に書きたいと思います。
前提
ディープラーニングを本格的に研究している代表的な企業が以下。
- Microsoft
- IBM
- Amazon
- Docomo
APIの優劣
企業によってAPIの精度が異なるみたいで色々な方の意見を踏まえると、
こんな感じらしいです。
画像情報抽出・分類
Microsoft > Google,IBM...文字認識(OCR)
Google > Microsoft,IBM...
API
Microsoft Computer Vision
今回画像ということで、一番精度の良いと噂のMicrosoft社のComputer Vision APIを使ってみることにしました。
Analyze Image
また、その中でもAnalyze Imageというものを使ってみることにしました。
結果
以下のような感じになりました。
検証画像
検証結果
object(stdClass)#3 (3) {
["description"]=>
object(stdClass)#1 (2) {
["tags"]=>
array(21) {
[0]=>
string(4) "food"
[1]=>
string(5) "plate"
[2]=>
string(6) "indoor"
[3]=>
string(5) "table"
[4]=>
string(5) "black"
[5]=>
string(7) "chicken"
[6]=>
string(8) "broccoli"
[7]=>
string(4) "meat"
[8]=>
string(7) "sitting"
[9]=>
string(6) "filled"
[10]=>
string(4) "rice"
[11]=>
string(4) "cake"
[12]=>
string(3) "hot"
[13]=>
string(5) "fruit"
[14]=>
string(7) "holding"
[15]=>
string(4) "bowl"
[16]=>
string(4) "dish"
[17]=>
string(4) "soup"
[18]=>
string(6) "cheese"
[19]=>
string(3) "dog"
[20]=>
string(5) "white"
}
["captions"]=>
array(1) {
[0]=>
object(stdClass)#2 (2) {
["text"]=>
string(29) "a plate of food with broccoli"
["confidence"]=>
float(0.59819660429909)
}
}
}
["requestId"]=>
string(36) "8df11211-a86c-4c89-a87b-31dfd8e8c9ac"
["metadata"]=>
object(stdClass)#4 (3) {
["width"]=>
int(640)
["height"]=>
int(430)
["format"]=>
string(4) "Jpeg"
}
}
感想
(´д`)
プログラム
検証に作ったプログラムを載せておきます。
<?php
$url = 'https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze?visualFeatures=Description&language=en';
$file = '{画像パス}';
$curl = curl_init();
curl_setopt_array(
$curl,
array(
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/octet-stream',
'Ocp-Apim-Subscription-Key: XXXXXXXXXXXXXXXXXXXXXXXX'
),
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => file_get_contents($file),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_BINARYTRANSFER => true,
)
);
$response = curl_exec($curl);
curl_close($curl);
var_dump(json_decode($response));