2月14日といえばバレンタインデーですね。
学生であれば、急にソワソワしだして何気なく机の中や下駄箱の中、ロッカーなどを探った経験があるんじゃないでしょうか。チョコが入っていなくて、人知れず落ち込み、お母さんから貰ったチョコで慰めてもらう。そんな苦い経験もあるかと思います。
運良く、チョコレートを貰ったかと思えば、
今度は**このチョコは義理か本命なのか?**と悩むはめになります。
明らかに、本命であれば良いですが微妙なラインのやつってありますよね。
という訳で今回、AIでバレンタインチョコが義理か本命か判別する「バレンタイン先生」を作りました。
#今回の課題
- バレンタインデーで義理チョコか本命チョコかわからない
- そもそもチョコが貰えないという課題については今回は触れない
- 先行研究は存在するが根拠に欠ける
- AIを用いた先行研究も存在するが中高生が気軽に試すことができない
- さらにより判別の精度を高めたい
#解決策
- バレンタインデーのチョコを判別するAIのLine Botを作れば気軽に誰でも試せる!
- 精度はGoogle先生が作ったGoogle Cloud AutoML Visionを使えば上がるんじゃないのか??
- 義理チョコと、本命チョコとは何か?もGoogle先生に聞いて解決しよう!
かなりのGoogle先生頼みです!
#作成したもの
#使い方
- LineのQRコードで友達登録!
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2F69873fbf-ae07-fa22-284a-4f0d59fb16f4.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=fd1b934f1b0505687d7d10c4fe817304)
- 本命の場合は
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2Ffdb2af04-7be2-58c2-c70d-b0753b414157.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=66645c729805b2ecf4610cec5e8260a1)
- 他にもバレンタインに関する名言を呟いてくれます。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2F02a17445-7c3c-e0c7-7b20-df7bbe640861.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f5f28c921bdead88fbac2d0d39268501)
- スーパーで買ってきたチョコレートで試してみる
- Ghanaのミルクチョコレート
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2F2169e413-b73a-1096-5004-1175b538ac06.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9622d410e9df498b52f4e6f9fb8fffd3)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2Fd12cbdfa-5169-daea-b353-39fe810b60df.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=e6085d99a26ed3bc4b7207b60fabcce6)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2Fa9cc91fe-6eb9-683d-9ee9-2f1d77497380.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6dc5145f1457181dc5d783e8330245b8)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2F72bd69ee-6e1c-9632-1b3f-f4aabd7ed295.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=5043493592ca759051d7e416cee68028)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2Fefc174e3-b074-fe9f-8e67-2a6baaeac05b.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=83963ff95353d1cc4b287a5793efdcd4)
#実装方法
##前処理
- Google画像検索で「義理チョコ」「本命チョコ」と検索した結果をPythonでスクレイピング
- 本命チョコで画像検索した結果
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2Fee9773d9-a9c8-30df-5af7-607db38ad49b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=e852b9156fd8abc568405668b57395bc)
- 義理チョコで画像検索した結果
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2F63b57da7-70aa-75da-7223-97aa5e7e7a7b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=31f738db8e3b9c31b090c3e55c6f46c1)
- Pythonでスクレイピングをしローカルに保存
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2F28274786-feaf-a818-3eac-2766cb4f6b2b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=94c8024498da75959530b67d8a0d7417)
-
取得した画像を水増し、義理チョコ2733枚、本命チョコ3492枚に増やす
-
Google Cloud AutoML Visionに画像を学習させる
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2Fd5027db9-9c85-0bf6-49dd-7f15b774e6ed.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=08ebe956517b61b85418a9fcbe268a73)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2Fa5d6e3fc-f612-97c1-1da1-36874678954e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=3837516f0cd45d57d8c9f51cb01ad329)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2F2ea5c511-190d-bd45-fff9-c25de17c5866.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d789c86f6d7c86a44b23e21ff164a129)
#実行時の処理
- Lineからチョコの画像を送るとそれが、Herokuに送信されます。
- それをHerokuで上で受け取りGoogle Cloud AutoML Visionに画像を渡します。
- Google Cloud AutoML Visionはチョコ画像が義理か本命かを確率で返してくれるので、それをHeroku上で受け取ります。
- 返ってきた結果をメッセージにしてLINEに渡して、LINE上でメッセージを返す
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2Ff3275c51-74a6-f925-97f7-7ca232969c10.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=501e10139afc69d7007bc91c664d7f18)
- 具体的な実装方法はこちらに詳しく記載しました。
【画像認識を利用したAIアプリ】LINEに画像を送ったら自動で判定してくれる機械学習アプリを作ろう
#もっとやりたいこと
- Lineの審査に落ちてしまったので、出来れば審査を通して検索できるようにしたい!
- APIだけじゃなくて、自分で学習モデルを組んでみたい
- バレンタイン関係ないけど、双子の画像を高精度で判別したい
- リッチテキスト?とかでかっちょよくしたい
- 親も間違う双子の声をAIに判別させたい(音声解析?)
#チュートリアル書いてみました
- 具体的な実装方法は以下にチュートリアルとして詳しく書いたので、気になった方は是非読んでみてください。
【画像認識を利用したAIアプリ】LINEに画像を送ったら自動で判定してくれる機械学習アプリを作ろう
- バレンタイン先生を0から実装できます!
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F337592%2Fc936d19b-31dd-ffc2-7021-0efa6e89a5ba.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=05a0d0d2961993c23872f0186706f714)
- 結構詳しく書いたので、プログラミング学び始めの方でも読めるようになっています。
- 是非、読んでみてください!