/Ueno_Zoo_GO

画像から動物を認識し、その特徴と似ているポケモンを知ることができるWebアプリのソースコードです。

Primary LanguagePython

Ueno Zoo Go

動物の写真をアップロードすると、その名前・特徴と似ているポケモンを知ることができるWebサイトです。 利用イメージ1

<Myアニマル図鑑> 図鑑に登録した動物の写真・特徴・似ているポケモンを見ることができます。 利用イメージ2

<フォトライブラリ> 他の人が登録した写真を一覧で見たり、好きな動物の写真だけを見ることができます。 利用イメージ3

レスポンシブ対応のため、スマホ/PCどちらからでも利用可能です。 スマホ利用イメージ

サイトURL

https://www.ueno-zoo-go.tk/
(現在は停止中です)

構成図

構成図

主な使用技術

アプリケーション

  • Python 3.7
    • Flask (Webフレームワーク)
    • SQLAlchemy (ORM)
    • Opencv (画像処理)
  • UI周り
    • Materialize (フロントエンドフレームワーク)
    • JQuery (Javascriptライブラリ)
    • SweetAlert2(ダイアログ表示)
    • Font Awesome (アイコン)
    • Google Acon Font (アイコン)

インフラ

  • AWS App Runner
  • Amazon ECR
  • Amazon Route 53
  • freenom
  • Docker / docker-compose
  • SQLite

API

  • Google Cloud Vision API

機能一覧

  • 動物をGETする機能
    • 画像アップロード
    • 画像からの動物推定
    • Myアニマル図鑑への登録
  • Myアニマル図鑑を表示する機能
  • フォトライブラリを表示する機能
    • すべてのアニマルを表示 / 指定したアニマルのみ表示
    • ページネーション

工夫したこと

  • ゲーミフィケーションの要素を取り入れ、動物の写真を撮るのが楽しくなるような作りとした
    • 例)動物をうまく撮影できたらゲットできる(図鑑に登録できる)、図鑑に登録した数に応じてメダルを表示する、など
    • 実際に上野動物園に行って使ってみましたが、一つずつ図鑑が埋まっていくのが楽しかったです
  • アイコンを多めにする、ローディング中のアイコンを表示するなど、なるべくわかりやすいUIとした
  • 画像認識AIとして外部のAPIを利用することで、自身でデータ収集・AIモデル作成・学習や推論サーバー構築等を行うことなく、動物の画像認識を可能とした

今後やりたいこと

  • 現状、とりあえず画像の保存先・DBはコンテナ内としている。データ永続化のため、これらはコンテナ外に保存すべきなので、AWS Fargate + EFS + RDSのような構成へ変更したい。