blog

モデル展開 - 手書き文字認識サービス

このプロジェクトはオンライン手書き数字認識サービスです。モデルは keras を使って構築され、サービスは docker を使ってクラウドサーバにデプロイされます。 : ディープラーニングモデルが含ま...

Jun 27, 2020 · 5 min. read
シェア

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のみ認識可能

新しいリリース

将来のリリースでは、複数のサービス、例えば手書き数字認識、テキスト生成、イメージ認識、ターゲット検出などを、ロードバランサー、サービス監視、高同時性サービスなどと統合する可能性があります。また、モデルのパラダイム能力を強化するためにオンライン学習を追加することも可能です。将来的には、プロジェクト全体がマイクロサービスアーキテクチャを採用する予定です。

Read next

オープンソースの始まり

1、プロジェクトの簡単な紹介、これがプロジェクトであることを他の人に伝えます。 2, 依存関係のインストール方法、プロジェクトのインストール方法を説明します。 3, プロジェクトを開始する簡単な手順。 4、プロジェクトの機関ディレクトリは、プロジェクト、各ディレクトリの役割を紹介し、簡単に見て、コードを理解することができます。 5、プロジェクトの技術的なアーキテクチャ 。私の現在のオープンソースrpaプロジェクトのように、デザインはhtml +電子...

Jun 27, 2020 · 3 min read