DigitRecognitionService
MITの紹介
このプロジェクトはオンラインの手書き数字認識サービスです。モデルはkerasを使って構築され、サービスはdocker経由でクラウドサーバー上にデプロイされます。
オンライン体験
Github: github.com/Knowledge-P...
特徴
- dockerによる外部サービス提供のための手書き数字プロジェクト
- docker-compose による迅速なデプロイ
ローカル展開
プロジェクトをローカルまたはクラウドにデプロイするには、以下の2つのオプションがあります:
- ローカルpythonサービス
- dockerによるデプロイ
カタログ構造
- modelTrain: ディープラーニングモデルに関するコンテンツが含まれており、カスタマイズのためにデータセットを置き換えたり、モデルの構造を変更したりすることができます。
- flaskService:学習済みのディープラーニングモデルを読み込み、Flaskフレームワークを通じてサービスを提供します。
- model.h5: 学習済みの深層学習モデル。
- static, templates: フロントエンドのインターフェイスを表示するための静的リソースです。
- dockerFlaskService: Flask で書かれたサービスを dockerImage としてパッケージ化します。
- main.py: flaskService のメイン.py
- model.h5: ディープラーニング用の学習済みモデルです。
- Dockerfile: このファイルを通してDockerImageをビルドします。
- requirements.txt: DockerImageをビルドするために必要な依存関係。
- docker-compose.yml: このファイルにより、docker-composeはサービスを迅速に公開することができます。
ローカルpythonサービス
コードを取得
https://./--/.it
環境要件
- keras
- flask
スタートアップサービス
cd flaskService
python main.py
デフォルトのポートがマッピングされており、ブラウザに127.0.0.1:5001/と入力すると表示されます。
dockerによるデプロイ
簡単な方法
docker-compoes.yml ファイルを記述します。
version: "3"
services:
flaskservice:
image: superssssss/flaskkeras
ports:
- ""
次に、ターミナルに次のコマンドを入力します。
docker-compose up -d
デフォルトのポートがマッピングされており、ブラウザに127.0.0.1:5001/と入力すると表示されます。
docker runで直接実行することも可能です。
イメージの場所:hub.docker.com/r/superssss...
自己構築イメージ・アプローチ
cd dockerFlaskService
次に、ターミナルに以下のコマンドを入力します。
docker-compose up -d
イメージのビルドプロセスを実行し、ビルドが成功したら、ブラウザで127.0.0.1:5001/と入力して表示を確認します。
クラウドサーバーにデプロイする場合は、対応するクラウドサーバーのIPに変更するだけです。
プロジェクトモジュール
ディープラーニングモデル
ここでは、手書きの数字認識のためのディープラーニングのベースモデルとして、シンプルな2層コンボリューションが使用されており、mnistデータセットで98%の精度でテストされています。
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_1 (Conv2D) (None, ) 208
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, ) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 8, 8,
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 4, 4, 16) 0
_________________________________________________________________
flatten_1 (Flatten) (None, 256) 0
_________________________________________________________________
dense_1 (Dense) (None,
_________________________________________________________________
batch_normalization_1 (Batch (None,
_________________________________________________________________
dense_2 (Dense) (None,
=================================================================
Total params:
Trainable params:
Non-trainable params: 64
_________________________________________________________________
test loss: 0., test accuracy: 0.
Flask
モデルのロードとデータの前処理はFlaskフレームワークで実装されており、データ処理が成功した後にモデルによって結果が予測されます。
Docker
イメージビルドはDockerfileで実装され、docker-composeで起動します。
問題点
- 特にギリギリの数字を認識できない
- 文体によっては誤認の原因に
- 0-9のみ認識可能
新しいリリース
将来のリリースでは、複数のサービス、例えば手書き数字認識、テキスト生成、イメージ認識、ターゲット検出などを、ロードバランサー、サービス監視、高同時性サービスなどと統合する可能性があります。また、モデルのパラダイム能力を強化するためにオンライン学習を追加することも可能です。将来的には、プロジェクト全体がマイクロサービスアーキテクチャを採用する予定です。





