1
1

More than 3 years have passed since last update.

LINEボット2 FaceAPI

Last updated at Posted at 2020-12-13

Aidemy 2020/12/13

はじめに

 こんにちは、んがょぺです!バリバリの文系ですが、AIの可能性に興味を持ったのがきっかけで、AI特化型スクール「Aidemy」に通い、勉強しています。ここで得られた知識を皆さんと共有したいと思い、Qiitaでまとめています。以前のまとめ記事も多くの方に読んでいただけてとても嬉しいです。ありがとうございます!
 今回は、FaceAPIの投稿になります。どうぞよろしくお願いします。

*本記事は「Aidemy」での学習内容を「自分の言葉で」まとめたものになります。表現の間違いや勘違いを含む可能性があります。ご了承ください。

今回学ぶこと
・FaceAPIについて

FaceAPIについて

FaceAPIとは

FaceAPIとは、顔検出や感情認識、顔認証などが行えるAPIである。
顔検出は画像の中のどこに顔があるかを検出し、年齢や性別に基づいた顔の特徴の予測値を含む顔属性を取得することができる。
感情認識は、顔の表情を分析し、怒りや悲しみなどの感情を信頼度という形で取得する。
顔認証は2つの顔が同一人物のものである確率を検証するものである。この確率を信頼度スコアという形で習得できる。

・このAPIを使うために、Chapter1の時と同様に開発者登録公式のページにアカウント登録をすることで、FaceAPIに登録できるようになる。
・具体的な流れは以下を参照。

スクリーンショット 2020-12-13 22.24.40.png

感情認識

・このChapterでは、前項の3つのうち、感情認識を取り扱う。APIのレスポンスはそれぞれの感情の度合いが以下のような数値で表される。形式はjsonである。

・コードスクリーンショット 2020-12-10 23.55.11.png

FaceAPIを使ってみる

・流れは以下の通り。
 ・HTTP通信を定義。(connection)
 ・画像データの送信のため「"POST"」を指定。
 ・レスポンスを受信し、json形式で読み込む。

・上記3つの流れが終了後、感情分析を行うことができるようになる。

HTTP通信の定義については、データベースに接続する時のように、「conn」という変数に、http.clientモジュールの「HTTPSConnection()」を格納することで定義できる。引数は以下のコードを参照。
「"POST"」の指定は「conn.request()」の中で行う。第2引数にはparamsで取得できるリクエストデータを以下のように指定し、第3引数にファイル名をopen関数で指定する。
・レスポンスの受信は「conn.getresponse()」で行い、これをread()で読み込み、json.loads()に指定することでjson形式で読み込むことができる。
・また、エラーが出た時の処理として、try-except文のexcept部分にエラーメッセージを記述している。

・コードスクリーンショット 2020-12-11 0.18.03.png

感情認識を行う

・前項でデータをjson形式にしたので、これをDataFrameに変換し、これをもとに感情のスコアのリストを取得する。このスコアの最大値を抽出することで、これを感情として出力する。

・これを実際にコードで記述する。jsonデータを受け取り、各感情をリストにして返す関数「ReadJson()」と、この感情のリストを受け取って最大値を抽出し、感情を出力する関数「Recognize()」を作成する。

ReadJson()の方は、emoに、分析する感情をリスト形式で格納する。このemoについて、渡されたデータのそれぞれから感情の情報(感情値)を抜き出し、emotionというリストに格納し、これを返す。
Recognize()の方は、このemotionを受け取り、その最大値のインデックスをnumに格納し、これをpredとして返す。

・これらの関数は前項で記述したtry文の中で、jsonファイルを読み込んだタイミング使用する。コードは以下の通りである。

・コードスクリーンショット 2020-12-12 15.48.13.png

今回は以上です。最後まで読んでいただき、ありがとうございました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1