【Google Cloud Vision API入門】逆引きリファレンス【Python・画像認識AI】

この記事は、Google Cloud Vision APIの画像認識AIで「、実現したい処理」を簡単に調べるための、逆引きリファレンスです。

本記事のサンプルコードを使用する場合、APIキーファイルをGCPからダウンロードし、ファイル名をkey.jsonにして、サンプルコードと同じフォルダに格納してください。

物体検出

猫やベッドなどの、物体を検出するには

画像内の物体を検出するには、object_localizationを使用します。

入力画像・検出画像

サンプルコード

from google.cloud import vision
from google.oauth2 import service_account
import io

# 身元証明書のjson読み込み
credentials = service_account.Credentials.from_service_account_file('key.json')
client = vision.ImageAnnotatorClient(credentials=credentials)

# ローカル画像を読み込み、imageオブジェクト作成
with io.open("./input1.jpg", 'rb') as image_file:
    content = image_file.read()
image = vision.Image(content=content)

# Cloud Vision APIにアクセスして、物体検出結果を受け取りobjectsに格納
response = client.object_localization(image=image)
objects = response.localized_object_annotations

# 検出物体を順に表示
for object in objects:
    print(object.name)

実行結果

Cat
Bed

CatとBedを、正しく検出できています。

 

ラベル検出

茶色・肉食動物、などの関連ラベル(単語)を検出するには

画像に関連するラベル(単語)を検出するには、label_detectionを使用します。

入力画像

サンプルコード

from google.cloud import vision
from google.oauth2 import service_account
import io

# 身元証明書のjson読み込み
credentials = service_account.Credentials.from_service_account_file('key.json')
client = vision.ImageAnnotatorClient(credentials=credentials)

# ローカル画像を読み込み、imageオブジェクト作成
with io.open("./input1.jpg", 'rb') as image_file:
    content = image_file.read()
image = vision.Image(content=content)

# Cloud Vision APIにアクセスして、ラベル検出結果を受け取りlabelsに格納
response = client.label_detection(image=image)
labels = response.label_annotations

# 検出ラベルを順に表示
for label in labels:
    print(label.description)

実行結果

Brown
Cat
Felidae
Carnivore
Small to medium-sized cats
Whiskers
Fawn
Comfort
Pet supply
Fur

上記の通り、10個のラベルを検出できています。

 

テキスト検出(OCR)

短いテキストを検出するには

画像内のテキストを検出するには、text_detectionを使用します。

入力画像・検出画像

サンプルコード

from google.cloud import vision
from google.oauth2 import service_account
import io

# 身元証明書のjson読み込み
credentials = service_account.Credentials.from_service_account_file('key.json')
client = vision.ImageAnnotatorClient(credentials=credentials)

# ローカル画像を読み込み、imageオブジェクト作成
with io.open("./input1.jpg", 'rb') as image_file:
    content = image_file.read()
image = vision.Image(content=content)

# Cloud Vision APIにアクセスして、テキスト検出結果を受け取り表示
response = client.text_detection(image=image)
print(response.text_annotations[0].description)

実行結果

TAXI

看板のTAXIの文字を検出できています。

 

書籍などの長いテキストを検出するには

画像内の長いテキストを検出するには、document_text_detectionを使用します。

入力画像

サンプルコード

from google.cloud import vision
from google.oauth2 import service_account
import io

# 身元証明書のjson読み込み
credentials = service_account.Credentials.from_service_account_file('key.json')
client = vision.ImageAnnotatorClient(credentials=credentials)

# ローカル画像を読み込み、imageオブジェクト作成
with io.open("./input1.jpg", 'rb') as image_file:
    content = image_file.read()
image = vision.Image(content=content)

# Cloud Vision APIにアクセスして、長いテキストの抽出結果をjsonで受け取り表示
response = client.document_text_detection(image=image)
print(response.text_annotations[0].description)

実行結果(テキスト)

グライダー
勉強したいと思う。すると、まず、学校へ行くことを考える。 学校の生徒のことではな
い。いい年をした大人が、 である。こどもの手が離れて主婦に時間ができた、もう一度勉強
をやりなおしたい。 ついては、大学の聴講生にしていただけないか、という相談をもって母
校を訪れる。実際の行動には移さないまでも、そうしたいと思っている人はたくさんあるら
しい。
家庭の主婦だけのことではない。新しいことをするのだったら、学校がいちばん。年齢、
性別に関係なくそう考える。学ぶには、まず教えてくれる人が必要だ。これまでみんなそう
思ってきた。学校は教える人と本を用意して待っている。そこへ行くのが正統的だ、となる
のである。
たしかに、学校教育を受けた人たちは社会で求める知識をある程度身につけている。世の
中に知識を必要とする職業が多くなるにつれて、学校が重視されるようになるのは当然であ

画像のテキストを、かなり正確に抽出できます。

 

抽出結果をテキストファイルにするには

以下の記事にまとめています。よろしければ、ご確認ください。

関連記事

Google Cloud Vision APIで、画像内のテキストを検出(OCR)して、結果をテキストファイルにするには、text_detectionを使用します。 テキスト検出結果をテキストファイルにするには 入力画像・検出画像 下[…]

 

顔検出

顔の表情を検出するには

画像内の顔の表情を抽出するには、face_detectionを使用します。

入力画像・検出画像

サンプルコード

from google.cloud import vision
from google.oauth2 import service_account
import io

# 身元証明書のjson読み込み
credentials = service_account.Credentials.from_service_account_file('key.json')
client = vision.ImageAnnotatorClient(credentials=credentials)

# ローカル画像を読み込み、imageオブジェクト作成
with io.open("./input1.jpg", 'rb') as image_file:
    content = image_file.read()
image = vision.Image(content=content)

# Cloud Vision APIにアクセスして、顔検出結果をjsonで受け取り、facesに格納
response = client.face_detection(image=image)
faces = response.face_annotations

# 喜怒哀驚の表情の類似度を表示
likelihood_name = ('UNKNOWN', 'VERY_UNLIKELY', 'UNLIKELY', 'POSSIBLE', 'LIKELY', 'VERY_LIKELY')
for face in faces:
    print('joy: ' + likelihood_name[face.joy_likelihood])
    print('anger: ' + likelihood_name[face.anger_likelihood])
    print('sorrow: ' + likelihood_name[face.sorrow_likelihood])
    print('surprise: ' + likelihood_name[face.surprise_likelihood])

実行結果

joy: VERY_LIKELY
anger: VERY_UNLIKELY
sorrow: VERY_UNLIKELY
surprise: VERY_UNLIKELY

joy: VERY_LIKELYという実行結果が得られていることから、楽しい表情の雰囲気を検出できています。

 

顔の数を検出するには

以下の記事にまとめています。よろしければ、ご確認ください。

関連記事

Google Cloud Vision APIで、画像内の顔の数を検出するには、face_detectionを使用します。 顔の数を検出するには 入力画像・検出画像 サンプルコード 実行する場合、APIキーファイルをGCPからダ[…]