SKJvillageの顔を認識しメンバーを判定するAI(未経験者向け)

# １．はじめに
　今回は、前回の記事で切り抜いたSKJvillageの顔についてをAIに学習させ、**SKJvillageのスクリーンショット内の顔を認識後、どのメンバーであるかの判定**を行いました！
　先日SKJファンの皆さんに、**自分の研究分野の用語の認知度についてのアンケート**をTwitterで実施したところ、ほとんどの人が知らない感じだったので、本記事ではファン向けに極力専門的な内容を省こうと思います。ですが、「自分の研究内容が広く知れ渡って欲しい」っていう願いもあるので、多少は含めます。(いきなり矛盾してて草わ～ら)

https://twitter.com/youkai_ramen/status/1631091102735556608

# ２．SKJvillageとは？
　[SKJvillage](https://www.youtube.com/@SKJVillage)は、3人組のゲーム実況系YouTubeチャンネル。高校時代の親友で「早稲田・慶應・上智」大学にそれぞれ進学し、大手企業を退職後、2018年に３人でYoutube活動開始。
(https://www.youtube.com/@SKJVillage/about より参考)

# ３．今回の内容をもう少し詳しく
　今回は上記のように、SKJvillageのスクリーンショット内の顔を認識後、どのメンバーであるかの判定するAIの学習を行いました。

## 前回の内容
　今回の学習では、前回作成したSKJメンバーの顔を切り抜いた画像を用います。以下のようにメンバーの顔を切り抜きました。切り抜いたものを自力でメンバーごとにカテゴリ分けして今回の学習に使用しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128356/ac975881-9a9b-5c35-6ed4-5a7518213308.png)
**↓前回の記事**

https://qiita.com/nyar_ramen/items/e2fbea92c17da0cd9cd3

## 今回の学習方法について
　ここで、今回のAIの学習について触れていきます。やることは以下の２つです。

### ①スクリーンショットから顔を認識
　過去の記事と同様に、既存の分類器を用いてSKJvillageのスクリーンショットから顔を認識します。

**↓顔の認識に関する記事**

https://qiita.com/nyar_ramen/items/476fc53307e3f6b8e7b3

### ②認識した顔に対してメンバーを判定、そのためのAI学習(今回のメイン！)
　認識した顔がSKJvillageのメンバーの誰なのかを判定します。選択肢はサイカツ、sa2、シンカの3人です。この判定を行うために、AIに事前にサイカツ、sa2、シンカの顔について学習させる必要があります。イメージ図を下の図に乗せています。AIに各メンバーの顔を1枚ずつ学習させます。このときにAIが学習して得た知識を使って実際に判定を行います。
![SKJ資料図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128356/447b88da-859d-6e84-a5ce-1b998dafab5a.png)

### 補足
　ここで、学習についてをもう少し伝えるついでに、下のグラフについての説明を行います。
![seido.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128356/f2e8bcf1-be89-9dda-bfcd-b2ed98496d79.png)
　「なんやねん！このグラフ！！」
ってなりますよね(笑)ちゃんと説明します。

　グラフの横軸は**エポック数**と呼ばれる、**学習の回数**です。アンケートで出てきたワードですね。今回扱っている機械学習の方法では、1回だけでなく複数回同じデータを学習させます。学生のときも１回だけの勉強じゃなくて何回も復習とかするでしょ？(ちなみに自分はしてませんよ＾＾)

　グラフの縦軸は**精度**(正答率)です。どのメンバーなのかをどのくらい正解できているかを示す値です。

　２本の折れ線グラフがありますが、青が**教師データ**での精度、オレンジは**検証データ**での精度を示しています。ここでまた謎のワードが出てきましたね。**教師データ**は、AIの学習に使うデータです。**教科書みたいなものです**。**検証データ**は、学習した後に実際に性能を評価するために使うデータです。**小テストみたいなものです**。今回のAIの学習では、**「教科書で勉強→小テスト」の１セットを何回も繰り返している**というようなことを行っています。

　ここまでの内容をまとめると、**AIに対して「勉強・小テスト」を行うことで徐々にAIを成長させよう**、ということを行っています。

# ４．結果
　ここでは、メンバーの顔の精度(正答率)と実際に判定を行った結果を示します。
## メンバーの顔の学習の様子
![seido.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128356/f2e8bcf1-be89-9dda-bfcd-b2ed98496d79.png)
　結果を見ると、青線の教師データ(教科書)での精度(正答率)は1.0に近いことが分かります。教科書のほぼすべての内容を学べていることが分かります。これに対してオレンジの検証データ(小テスト)での精度(正答率)は0.9以上であることが分かります。90点以上取れてることになります。優秀やな(笑)
## 実際のメンバーの判定
　１つ目の例です。サイカツの顔には赤枠の下にsaikatsuとかかれ、sa2の顔には赤枠の下にsa2と書かれていますが、シンカの顔にはsa2と書かれています。
![kekka.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128356/8bb34f6b-1170-4ee9-1261-f9282d1961b8.png)

　もう１つの例では、すべての赤枠の下にsa2と書かれています。メンバーの区別がついていないようです。
![kekka2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3128356/9c9036a3-b125-a9d1-bc53-434e537fe8b7.png)

　**学習の精度は良かったのに、学習を成果を実際のメンバー判定に活かせてない感じです。。。**
# ５．まとめ
　今回は、メンバーの判定まで試みましたが、性能が全然でした。。。今後もいろいろ調査して取り組んでいきたいです！
　本記事は未経験者向けの記事であるため、内容をかなり省略しています。この記事を機に、AIや機械学習に興味を持っていただければと嬉しいです！最後までご閲覧いただきありがとうございました！

# 参考
https://qiita.com/nirs_kd56/items/bc78bf2c3164a6da1ded

https://qiita.com/yayoi806/items/a567c87cb470879cea1a