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 |
おしまい。。。




