まいだいありー

機械学習、技術系、日記など勉強したことのメモを書けたらなと思います。

機械学習を用いたwebアプリケーション作った by Flask

はじめに

「web上で機械学習モデルにデータを投げて、結果を表示する」というサーバーサイド辺りのロジックを知りたかったので、手軽に使えるFlaskを用いて(toy)webアプリケーションを作っていきます。
(完成までの所要時間2時間程度でした)

環境

  • MacOS Mojave 10.14.1
  • Python 3.7.2
  • Flask 1.0.2
  • Pytorch 1.0.1


何を予測すんの?

機械学習のタスクは、右から Taco と Burrito という食べ物の2値分類です。

f:id:kenzo1122:20190327173024j:plainf:id:kenzo1122:20190327172848j:plain


これらのデータであらかじめ学習しておき、学習した重みをファイルに保存しときます。

Flaskでのwebアプリ

まず、Flaskを勉強

といっても Flask を触るのは初めてだったので、youtubeやqiitaでさらっと勉強しましたが、結構直感的に使えるので学習コストは低く感じました。

qiita.com

www.youtube.com


webアプリの概要

今回のFlaskで作成したwebアプリのファイル構成です。

├── classification.py  # 予測するスクリプト
├── main.py              # Flaskのスクリプト
├── model               
│   └── resnet.prm      # 学習済みモデル
├── static
│   └── css
├── templates
│   └── home.html
├── data
│   ├── buritto
│   └── taco
└── upload         # 入力されたデータを格納するファイル


プロセスの流れ

簡単にこのwebアプリのプロセスの流れは以下のようになります。

  1. "main.py" を実行するとサーバー起動ので接続
  2. web上で画像を投げると、"upload"にその画像が保存される。
  3. "classfication.py" の予測モデルにその"upload"に保存された画像を入力し、予測結果を返す。
  4. web上にその画像と予測結果を表示する


DEMO

実際に動かしてみると....

f:id:kenzo1122:20190327192053g:plain


ソースコード

ソースコードはこちらです。

github.com