Help us understand the problem. What is going on with this article?

Cognitive Services Custom Vision から画像解析モデルを Dockerimage に Export して利用する

Custom Vision を利用すると、最小で画像5枚から画像解析モデルを作成し、Web API や CoreML、TensorFlow、ONNX のフォーマットで Export して利用できるほか、そのままお手持ちの Docker 環境で Image Build して Web API サービスとして利用できる Dockerfile としても Export 可能です。

今回は Custom Vision で作成したモデルを Dockerfile として Export し、ローカルの Docker 環境で動かして画像解析してみるまでの手順を紹介します。

準備

  • Custom Vision の利用環境
  • 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 を選択します。
20190706_01.png

作成済みの Project を使いたい場合は、設定画面で "compact" と記されている Domain を選択し、Train すると Compact モデルが作成されます。
20190706_02.png

Dockerimage で Export

モデルを作成した Project で [Performance] 画面を開きます。
上部バーの [Export] をクリックします。
20190706_03.png

Export する形式は [Dockerfile] を選択します。
20190706_04.png

Docker Version は Linux または Windows をお手持ちの環境に合わせて選択します。
20190706_05.png

モデルが準備できて [Download] と表示されたらクリックしてダウンロードします。
20190706_06.png

ダウンロードした 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 です。
20190706_07.png

では 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: /*画像ファイル(バイナリ)*/

解析結果が取得できればOKです。
20190706_08.png

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

参考

docker docs > Get Started, Part 2: Containers

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした