![見出し画像](https://assets.st-note.com/production/uploads/images/162567310/rectangle_large_type_2_a94870a197f8ac867fefa0cdbbab9341.png?width=1200)
顔画像から感情認識をするAIアプリ作成(個人開発)
きっかけ
pythonの知識がある程度ついてきたので、Flaskを使って実際に手を動かしてアプリを作ってみようと思った
使用したフレームワーク
Deepface
感情認識や顔の属性分析(age,gender,emotion and race)がpythonで実行できるフレームワーク
最新のモデルを複数内蔵している(今回はmtcnnを使用)
人間と同じ97.5%ほどの正確性を持った顔認識ができるんだとか
実行コード
model.py
//model.py
from deepface import DeepFace
def function(file_path):
objs = DeepFace.analyze(
img_path = file_path,
actions = ['age', 'gender', 'race', 'emotion'],
detector_backend = 'mtcnn' # 他の選択肢: 'dlib', 'retinaface', 'facenet'
)
# 感情データを取得
emotion_data = {emotion:int(value) for emotion, value in objs[0]["emotion"].items()}
# 主な感情(dominant_emotion)を取得
dominant_emotion = objs[0]['dominant_emotion']
return emotion_data,dominant_emotion
app.py
from flask import Flask, request, render_template
import os
from model import function
app = Flask(__name__)
# アップロードされた画像の保存先フォルダ
UPLOAD_FOLDER = './static/image'
@app.route('/')
def index():
return render_template('index.html')
@app.route('/upload', methods=['POST'])
def upload_image():
upload_image = request.files['file'] #HTML内で指定されたname
file_path = os.path.join(UPLOAD_FOLDER, upload_image.filename) #パスの生成
upload_image.save(file_path)
emotion_data,dominant_emotion = function(file_path)
return render_template("result.html",emotion_data=emotion_data,dominant_emotion=dominant_emotion,uploaded_image=file_path)
if __name__ == '__main__':
app.run(debug=True)
実行結果
![](https://assets.st-note.com/img/1732088527-0HOsdlzrTIpfLCYbiR9SUWFJ.png?width=1200)
めっちゃ笑顔の写真を使ったからhappy 100になったけど、就活の写真使ったらneutralが支配感情トップになってたので精度かなりいい!
苦労した点
最初はFace APIを使ってバックエンドを省略して、1日で開発完了するつもりだったけど、感情分析が最近?できなくなったらしくて、急遽Deepfaceに変更したところ
今後
フロントエンドを進める
画像からの感情分析以外に音声からの感情分析も組み込む(機能の追加)