Google Cloudの画像認識で、ネコをカウントするには【Python】

  • 2022-04-24
  • 2022-06-03
  • AI
AI

Cloud Vision APIで、写真内の猫をAIでカウントするには、物体検出(object_localization)を使用します。
具体的には、物体検出でCatが検出された場合、猫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)

# 物体検出結果からCatをカウント
labels = response.localized_object_annotations
num = 0
for label in labels:
    if label.name=="Cat":
        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_localiz ation(image=image)

猫の数をカウント

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

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

カウント結果を表示

print("猫カウント:./猫4匹.jpg")
print("猫数:" + str(num))

表示

猫カウント:./猫4匹.jpg
猫数:4

写真内の猫を、正しくカウントできています。
しかも顔しか見えていない右奥の猫も、正しくカウントできています。

 

いろいろな写真で猫カウントした結果

入力画像①

子猫5匹.jpg

結果①

猫カウント:./子猫5匹.jpg
猫数:5

後ろ向きの猫も、正しくカウントできています。

 

入力画像②

地べた猫8匹.jpg

結果②

猫カウント:./地べた猫8匹.jpg
猫数:7

枯れ葉と土の背景に溶け込んでいる猫たちも、1匹検出が漏れているものの、他の猫たちは正しく検出できています。

 

入力画像③

キャットステップ猫7匹.jpg

結果③

猫カウント:./キャットステップ猫7匹.jpg
猫数:7

いろいろな種類の猫が7匹いますが、正しくカウントできています。

 

まとめ

本記事では、Google Cloud Vision APIで、写真の猫をカウントする方法を解説しました。
猫の場合、簡単なプログラムで、人の検出よりも意外に高い精度で検出できています。

みなさんも、Cloud Vision APIでご自身のお好きな動物をカウントしてみてはどうでしょうか。

今回は以上です。