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で、写真内の自動車をカウントする方法を解説しました。
みなさんも、お近くの駐車場の色々な写真アングルで、駐車台数をカウントしてみてはどうでしょうか。
今回は以上です。