【Google Cloud Vision API入門】AIで写真内の自動車をカウントするには【Python】

AI+プログラミングで、駐車場の写真などから、駐車台数を自動で検出できると良いですよね。

Google Cloud Vision APIの場合、物体検出(object_localization)を使用して、AIで写真内の自動車をカウントできます。
具体的には、物体検出でCarまたはVanが検出された場合、自動車1台としてカウントします。

AIで写真内の自動車をカウントするには

入力画像

自動車4台.jpg

サンプルプログラム

### sample.py ###
# 写真内の自動車カウントのサンプル #

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("./自動車4台.jpg", 'rb') as image_file:
    content = image_file.read()
image = vision.Image(content=content)

#Cloud Vision APIにアクセスして、物体検出
response = client.object_localization(image=image)

# 物体検出結果からCarまたはVanをカウント
labels = response.localized_object_annotations
num = 0
for label in labels:
    if label.name=="Car":
        num += 1
    elif label.name=="Van":
        num += 1

# 自動車カウント結果を表示
print("自動車カウント:./自動車4台.jpg")
print("自動車数:" + str(num))

# エラー処理
if response.error.message:
    raise Exception(
        '{}\nFor more info on error messages, check: '
        'https://cloud.google.com/apis/design/errors'.format(response.error.message))

実行コマンド

>py sample.py

結果

自動車カウント:./自動車4台.jpg
自動車数:4

4台の写真内の自動車を、正しくカウントできています!

サンプルプログラム解説

物体検出

まず、写真画像をCloud Vision APIに渡して、物体検出した結果を受け取ります。

with io.open("./自動車4台.jpg", 'rb') as image_file:
    content = image_file.read()
image = vision.Image(content=content)
response = client.object_localization(image=image)

車の数をカウント

上記の物体検出結果であるjsonデータのresponse内で、nameがCatの数をカウントします。

labels = response.localized_object_annotations
num = 0
for label in labels:
    if label.name=="Car":
        num += 1
    elif label.name=="Van":
        num += 1

カウント結果を表示

print("自動車カウント:./自動車4台.jpg")
print("自動車数:" + str(num))

表示

自動車カウント:./自動車4台.jpg
自動車数:4

写真内の車を、正しくカウントできています。

 

いろいろな写真で自動車をカウントした結果

入力画像①

自動車3台.jpg

結果①

自動車カウント:./自動車3台.jpg
自動車数:3

真正面や真後ろからのアングルでも、自動車を正しくカウントできています!

 

入力画像②

自動車5台.jpg

結果②

自動車カウント:./自動車5台.jpg
自動車数:4

こちらの写真の場合、奥の白い柵の奥側にある自動車1台が、検出に漏れています。
今回の様に、車体の大部分が隠れている場合、検出漏れになる場合もありました。

一方、手前4台の自動車は、一部隠れている部分があるに関わらず、正しく自動車を検出できています。

 

まとめ

本記事では、Google Cloud Vision APIで、写真内の自動車をカウントする方法を解説しました。
みなさんも、お近くの駐車場の色々な写真アングルで、駐車台数をカウントしてみてはどうでしょうか。

今回は以上です。