Custom Vision を利用すると、最小で画像5枚から画像解析モデルを作成し、Web API や CoreML、TensorFlow、ONNX のフォーマットで Export して利用できるほか、そのままお手持ちの Docker 環境で Image Build して Web API サービスとして利用できる Dockerfile としても Export 可能です。
今回は Custom Vision で作成したモデルを Dockerfile として Export し、ローカルの Docker 環境で動かして画像解析してみるまでの手順を紹介します。
準備
- Custom Vision の利用環境
- Cognitive Services Custom Vision で画像解析モデルを作成します。
- 利用準備: Microsoft Azure & Cognitive Services 利用準備
- Docker 環境 (Windows または Linux)
- 以下の手順では、Windows10 + Docker for Windows (ver 18.09.2)、Linux コンテナーで確認しています。
手順
Custom Vision で画像解析モデルを作成、Export
Custom Vision で画像解析モデルを作成
Custom Vision を利用した独自の画像分類およびオブジェクト検出のアルゴリズム構築 の手順を参考に、画像分類(Classification) または オブジェクト検出(Object Detection) モデルを作成します。
モデルの Export を行いたいときは、Project 作成時に "compact" と書かれている Domain を選択します。
作成済みの Project を使いたい場合は、設定画面で "compact" と記されている Domain を選択し、Train すると Compact モデルが作成されます。
Dockerimage で Export
モデルを作成した Project で [Performance] 画面を開きます。
上部バーの [Export] をクリックします。
Export する形式は [Dockerfile] を選択します。
Docker Version は Linux または Windows をお手持ちの環境に合わせて選択します。
モデルが準備できて [Download] と表示されたらクリックしてダウンロードします。
ダウンロードした Dockerfile の ZIP ファイルを展開すると、以下のような構造になっています。
Web サービスのアプリ部分も含まれているため、Image Build してすぐに利用できます。
CVDockerImage
┗ app
┗ app.py
┗ labels.txt
┗ model.pb
┗ predict.py
┗ requirements.txt
┗ azureml
┗ README.txt
┗ score.py
┗ Dockerfile
┗ README.txt
Dockerfile から Image Build、Web API でアクセス
ダウンロードした dockerfile (ZIP ファイル) を展開しておきます。
docker コマンドで Image Build を行います。
設定 | ※ご自身の環境に合わせて変更してください |
---|---|
dockerfile を展開したディレクトリ | C:\data\CVDockerImage |
作成する Docker Image の名前 | cvclassification |
> docker build -t cvclassification C:\data\CVDockerImage
しばらくして、以下のようなイメージ作成が成功したメッセージが表示されたら OK です。
> docker build -t cvclassification C:\data\CVDockerImage
Sending build context to Docker daemon 5.105MB
Step 1/7 : FROM python:3.5
3.5: Pulling from library/python
:
Successfully built 0000a00a0000
Successfully tagged cvclassification:latest
ls コマンドでイメージが作成されていることを確認します。
> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
cvclassification latest 0000a00a0000 About 5 minutes ago 1.51GB
run コマンドでコンテナーを起動します。以下では Web サービスを localhost (127.0.0.1)、Port: 4000 に設定しています。
> docker run -p 127.0.0.1:4000:80 -d cvclassification
000a00aa000a
ブラウザーで http://localhost:4000
にアクセスすると、Custom Vision の Host メッセージが表示されれば OK です。
では Web API としてアクセスしてみます。
- 画像ファイル(バイナリ)を送信する場合:
http://localhost:4000/image
- 画像ファイル URL を送信する場合:
http://localhost:4000/url
POST http://127.0.0.1:4000/image
Content-Type: application/octet-stream
Body: /*画像ファイル(バイナリ)*/
ps -a コマンドで作成されているコンテナーを確認できます。
> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
000a00aa000a cvclassification "/bin/sh -c 'python …" 21 minutes ago Up 20 minutes 127.0.0.1:4000->80/tcp heuristic_banach
起動したコンテナーは stop コマンドで停止できます。
> docker stop 000a00aa000a