夏の赤ペン先生

https://github.com/citrus-candy/summer-scoring-app

Azure

Docker

Flutter

Firebase

Python

夏休みの写真を投稿して採点結果を競うアプリ

Simo

推しアイデア

夏の赤ペン先生はユーザーが夏に撮った写真をもとに採点を行います。夏に関連する写真をラベル化し、それをもとに言語解析のモデルを生成します。ユーザーの写真をラベル化し、作成したモデルを使い採点を行います。

作った背景

夏休みの宿題が採点されるのと同じように夏休みの過ごし方を写真をもって採点しようと考えました。チーム内で出たアイディアの中で一番面白そうだったので、このアイディアに決定しました。

推し技術

フロントはFlutterでスマホアプリを作成。バックエンドはFastAPI使用し実装。画像のラベル化はGoogle vision api、ラベルの解析はWord2Vec、デプロイはAzure Container Instanceを使用、ユーザー認証はFirebaseで実装。

プロジェクト詳細

夏の赤ペン先生 ~起qiitaおはよう~

リンク

バックエンド フロントエンド

概要

夏休み最終日。その夏を振り返りながら自分が過ごした夏の日々を採点しよう。

開発技術

今回使用した技術

  • Flutter
  • FastAPI
  • Docker
  • Azure Container Instance
  • Azure Container Registory
  • Google vision api
  • Word2Vec
  • Firebase Authentication
  • Firebase Storage
  • PostgreSQL

インフラ図

spinoserverinfra.png

フロントエンド

  • 三反陽介(ひとこと:Flutterはいいぞ!)

Flutterで実装しました。 特にデザインやUI/UXにこだわった。テーマの変更機能やチュートリアル画面を実装したり、Lottieというサービスでアニメーションを実装したりするなどユーザーに飽きさせないような工夫をしました。

バックエンド

  • 下前仁志 (ひとこと:初めてのバックエンド楽しかった!採点のとこきつかったです。。。)
  • 志岐颯駿(ひとこと:ハッカソン中にエンドポイントのテストを書き終えられたので満足です。☺)

FastAPIで実装しました。 ユーザー登録や画像採点、採点情報の取得、画像ごとやユーザーごとのランキングの取得などのエンドポイントを実装しました。また、それらのエンドポイントのテストコードも書き、エラーの少ないバックエンドになっております。

スクリーンショット

IMG_0397.PNG

以下↓の画像は開発段階のものです!!なぜ、ポプテピの画像が高得点をたたき出したのかはわかっていません。。。。 IMG_0391.PNG

採点について

点数は100点満点での採点です。

採点方法

  1. ユーザーの画像をGoogle vision apiでラベル化
  2. 1.のラベルをWord2Vecのモデルを使い、解析(詳細略:GitHubのコード見て頂けると助かります。コードは深夜作業や試行錯誤、焦りの結果、汚く、読みにくくなってしまっています。とくに変数名がコードを書くうえであるまじき名前になってしまっていますが、ご了承いただけると幸いです。
  3. 点数を100点満点に換算 * Google vision apiでラベル化したものでNGワードに指定したものが含まれる場合問答無用で0点としています。

Word2Vecのモデル作成について

Word2Vecは本来文章を形態素解析して学習させるものとなります。しかし、今回は画像から画像内の要素を単語化(ラベル化)し、その単語群で学習させました。目的は夏っぽい画像から取り出したラベル群の関係性を見つけるためとなっています。 Bing Image APIでキーワード検索の結果(URL)を取得し、それをCloud vision APIに投げることでラベル化をしています。その、ラベルデータをテキストデータとして保存し、それを使ってWord2Vecの学習を行いました。

試行錯誤したこと

  • 複数のモデルを作り組み合わせて使う
  • モデルを使った別の解析方法
  • 教えてもらったサービスの使用検討

悪あがきしたこと

  • ラベルに'Snow'が入っている場合は0点

結果

精度はあまり高くありませんでしたが一番良い結果が出た現在の方法を取っております。

注意事項

このアプリでの採点はあくまでネタとして見てください。投稿する画像や画像の種類よって夏の画像であっても点数が低く出ます。また、逆もしかりです。冬の画像でも高得点が出る可能性があります。

Simo

@simosimo