Googleが提供しているVision APIをJavaで使ってみました。
APIを使用し、画像内に含まれているラベルを検出します。
ラベルは、画像にどのようなものが写っているのかをAIで判定し、
文字列(英語)で返してくれます。
本記事の3. 結果の検証でどのようなものが検出されるか試していますが、
「ジーンズ」「猫」「自然食品」なども認識されます。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Vision API] Javaで画像内のいろいろなものを検出する
を参照ください。
No | 目次 | |
---|---|---|
1 | Feature.Typeの指定 | |
2 | 実行結果の取得 | |
1 | レスポンスの出力 | |
2 | レスポンスの内容 | |
3 | 結果の検証 | |
1 | ロゴ | |
2 | 街の風景 | |
3 | 自然の風景 | |
4 | 繁華街 | |
5 | 人物 | |
6 | 動物 | |
7 | 野菜 |
1. Feature.Typeの指定
ラベルを検出する場合は、
Feature.Type.LABEL_DETECTION
を指定します。
以下の記事でexecApi()にタイプを指定します。
⧉[Vision API] Javaで画像内のいろいろなものを検出する
2. 実行結果の取得
2.1. レスポンスの出力
取得した結果をコンソールに出力します。
private static void output(BatchAnnotateImagesResponse response){
List<AnnotateImageResponse> responses = response.getResponsesList();
for (AnnotateImageResponse res : responses) {
if (res.hasError()) {
System.out.format("Error: %s%n", res.getError().getMessage());
return;
}
for (EntityAnnotation annotation : res.getLabelAnnotationsList()) {
annotation.getAllFields()
.forEach((k, v) -> System.out.format("%s : %s%n", k, v.toString()));
}
}
}
2.2. レスポンスの内容
BatchAnnotateImagesResponseの
getResponsesListでAnnotateImageResponseリストが取得できます。
検出されなった場合は、空のリストが返ってきます。
AnnotateImageResponse
メソッド | 戻り値 | 内容 |
---|---|---|
getLabelAnnotationsList | List<EntityAnnotation> | 検出されたラベル |
EntityAnnotation
メソッド | 戻り値 | 内容 |
---|---|---|
getMid | string | OpaqueエンティティID |
getDescription | string | 検出されたラベルの説明文 |
getScore | float | 検出結果の信頼度。範囲は0〜1 |
getTopicality | float | ICAラベルと画像の関連性 |
3. 結果の検証
いろいろな画像でラベルを検出してみました。
画像に映り込んだ情報が多いほど、レスポンスが遅かったです。
(たとえば、3.4.繁華街の画像は得に遅かった)
3.1. ロゴ
説明 | 訳 | 検出結果の信頼度 | 画像との関連性 |
---|---|---|---|
Purple | 紫 | 0.85702777 | 0.85702777 |
Font | フォント | 0.8366547 | 0.8366547 |
Magenta | 赤紫色 | 0.7750041 | 0.7750041 |
Electric blue | エレクトリックブルー | 0.73360777 | 0.73360777 |
Event | イベント | 0.72941405 | 0.72941405 |
Ceiling | シーリング | 0.72912264 | 0.72912264 |
Graphics | グラフィックス | 0.68004316 | 0.68004316 |
Logo | ロゴ | 0.67122936 | 0.67122936 |
Display device | 表示装置 | 0.6700307 | 0.6700307 |
Signage | 看板 | 0.6506733 | 0.6506733 |
3.2. 街の風景
説明 | 訳 | 検出結果の信頼度 | 画像との関連性 |
---|---|---|---|
Cloud | 雲 | 0.9719424 | 0.9719424 |
Skyscraper | 超高層ビル | 0.9708496 | 0.9708496 |
Building | 建物 | 0.9690578 | 0.9690578 |
Sky | 空 | 0.9642791 | 0.9642791 |
Daytime | 昼間 | 0.94603235 | 0.94603235 |
Blue | 青 | 0.9025435 | 0.9025435 |
Tower block | 高層ビル | 0.85141665 | 0.85141665 |
Urban design | 都市デザイン | 0.84370995 | 0.84370995 |
Tower | タワー | 0.84239924 | 0.84239924 |
Neighbourhood | 近所 | 0.8330505 | 0.8330505 |
3.3. 自然の風景
説明 | 訳 | 検出結果の信頼度 | 画像との関連性 |
---|---|---|---|
Sky | 空 | 0.9716211 | 0.9716211 |
Mountain | 山 | 0.94789594 | 0.94789594 |
Ecoregion | エコリージョン | 0.9245183 | 0.9245183 |
Water | 水 | 0.89134187 | 0.89134187 |
Highland | ハイランド | 0.8774106 | 0.8774106 |
Body of water | 水域 | 0.8644991 | 0.8644991 |
Snow | 雪 | 0.86270267 | 0.86270267 |
Natural landscape | 自然景観 | 0.85074323 | 0.85074323 |
Landscape | 風景 | 0.8070087 | 0.8070087 |
Mountainous landforms | 山岳地形 | 0.7913905 | 0.7913905 |
3.4. 繁華街
説明 | 訳 | 検出結果の信頼度 | 画像との関連性 |
---|---|---|---|
Font | フォント | 0.8283585 | 0.8283585 |
City | 市 | 0.7705533 | 0.7705533 |
Art | 美術 | 0.7546429 | 0.7546429 |
Metropolis | 大都市 | 0.7389245 | 0.7389245 |
Tints and shades | 色合いと色合い | 0.72601813 | 0.72601813 |
Signage | 看板 | 0.6861472 | 0.6861472 |
Event | イベント | 0.6188593 | 0.6188593 |
Advertising | 広告 | 0.5911735 | 0.5911735 |
Electronic signage | 電子看板 | 0.55702543 | 0.55702543 |
Street | 通り | 0.5229703 | 0.5229703 |
3.5. 人物
説明 | 訳 | 検出結果の信頼度 | 画像との関連性 |
---|---|---|---|
Footwear | 履物 | 0.9816828 | 0.9816828 |
Jeans | ジーンズ | 0.9776394 | 0.9776394 |
Trousers | ズボン | 0.9643992 | 0.9643992 |
Shoe | 靴 | 0.9607125 | 0.9607125 |
Smile | 笑顔 | 0.94449294 | 0.94449294 |
Yellow | 黄色 | 0.8447503 | 0.8447503 |
Sneakers | スニーカー | 0.83880615 | 0.83880615 |
Ball | ボール | 0.82979566 | 0.82979566 |
Leisure | レジャー | 0.8157 | 0.8157 |
Fun | 楽しい | 0.7758143 | 0.7758143 |
3.6. 動物

実行結果
説明 | 訳 | 検出結果の信頼度 | 画像との関連性 |
---|---|---|---|
Cat | 猫 | 0.96098435 | 0.96098435 |
Eye | 目 | 0.9361381 | 0.9361381 |
Vertebrate | 脊椎動物 | 0.92139554 | 0.92139554 |
Carnivore | 肉食動物 | 0.87543076 | 0.87543076 |
Felidae | ネコ科 | 0.85701525 | 0.85701525 |
Mammal | 哺乳類 | 0.85497636 | 0.85497636 |
Small to medium-sized cats | 小型から中型の猫 | 0.83198994 | 0.83198994 |
Comfort | 快適 | 0.8193583 | 0.8193583 |
Whiskers | ひげ | 0.8148246 | 0.8148246 |
Ear | 耳 | 0.7827573 | 0.7827573 |
3.7. 野菜

実行結果
説明 | 訳 | 検出結果の信頼度 | 画像との関連性 |
---|---|---|---|
Food | 食べ物 | 0.9882819 | 0.9882819 |
Ingredient | 材料 | 0.91791373 | 0.91791373 |
Natural foods | 自然食品 | 0.902798 | 0.902798 |
Cuisine | 料理 | 0.858267 | 0.858267 |
Whole food | 自然食品 | 0.852474 | 0.852474 |
Leaf vegetable | 葉物野菜 | 0.8498862 | 0.8498862 |
Food group | フードグループ | 0.8497838 | 0.8497838 |
Staple food | 主食 | 0.83365625 | 0.83365625 |
Dish | 皿 | 0.8220238 | 0.8220238 |
Produce | 生産する | 0.8082219 | 0.8082219 |
おしまい。。。