AWSの画像認識で、溺れる人を検出するには【Python】

AWSの画像認識AI(Amazon Rekognition)で、顔の表情を分析して溺れる人を検出するには、detect_facesを使用します。

AIの顔認識で溺れる人を検出するには【AWS】

入力画像① 溺れる男性

入力画像② 笑顔で泳ぐ女性

入力画像①が溺れる男性、入力画像②が笑顔で泳ぐ女性の画像です。
AWSのAIは、上記を正しく判別できるでしょうか?

実際にAIで分析すると、次の結果になります。

入力画像① AI分析結果

not smiling: 79.5%

入力画像② AI分析結果

smiling: 96.2%

入力画像①の溺れる男性は、not smilingスコア:79.5%と高くなっています。
また、入力画像②の楽しそうに泳ぐ女性は、smilingスコア:96.2%と笑顔の確率が高く検出できています。

したがって、not smilingのスコアの高低により、溺れる人かどうかを判定できそうなことが分かります。

Pythonサンプル

import boto3

#boto3のclient作成、AWSサービス名とリージョンを指定
client = boto3.client('rekognition','ap-northeast-1')

# 画像ファイルを読み込んでバイト列を取得
with open('./溺れる男性.jpg', 'rb') as source_image:
    source_bytes = source_image.read()

# AWSへバイト列を渡し、顔分析結果を受け取る
response = client.detect_faces(Image={ 'Bytes': source_bytes},Attributes=['ALL'])
smile = response['FaceDetails'][0]['Smile']

# 笑顔でない場合、not smilingスコアを表示
if smile['Value'] == False:
    print('not smiling:' + str(round(smile['Confidence'],1)) + '%')
# 笑顔の場合、smilingスコアを表示
else:
    print('smiling:' + str(round(smile['Confidence'],1)) + '%')

上記が実際に、AWSの顔認識で、画像からnot smiliingスコアを検出するPythonサンプルです。

実行結果

・入力画像① 溺れる男性 の場合

not smiling:79.5%

not smiling:79.5%と、not smilingのスコアを、しっかり検出できています。

 

Pythonサンプル使用の前提

・AWSアカウント作成済み
・AWSキー情報を、自分のPCに初期設定済み

上記の準備の上、ご使用ください。

まとめ

Amazon Rekognitionで、顔認識で溺れる人を検出する方法を解説しました。

みなさんもAmazon Rekognitionを使用して、例えば海水浴場の自動監視ロボットを作ってみてはどうでしょうか。
(映像の取り扱いは自己責任でお願いします。)

最後まで読んでいただき、ありがとうございます。
また、お会いしましょう。