docomo MEC™ docomo MEC™ docomo MEC™
お問い合わせ ドキュメント ログインページ
検索
お問い合わせ ドキュメント ログインページ
  • Compute V
  • Compute O
  • Compute D
  • MECダイレクト
  • MECダイレクト(SA)
  • ドコモ画像認識PF
  • ネットワークセキュリティサービス
  • docomo MECポータルへのログイン方法
  • 用語集
  • 改訂履歴
Compute V
Compute O
Compute D
MECダイレクト
MECダイレクト(SA)
ドコモ画像認識PF
ネットワークセキュリティサービス
docomo MECポータルへのログイン方法
用語集
改訂履歴

›チュートリアル

  • Compute Vとは
  • Compute Vの機能
  • 基本的な概念
  • 仮想マシンのアーキテクチャ
  • ネットワーク構成
  • アクセス方法
  • ユーザー管理
  • 関連サービス
  • ご利用開始までの流れ

  • ファーストステップガイド
  • 仮想マシンの作成
  • 仮想マシンへの接続
  • クリーンアップ
  • 使用上の注意

  • はじめに
  • vApp
  • Apache ウェブサーバの構築

    • Webサーバーの構築(vApp使用)
    • Webサーバーの構築(vApp不使用)
  • ネットワークの作成
  • NICの追加
  • ファイアウォールの設定
  • リモート接続
  • インターネットへの公開
  • バックアップ
  • ロードバランサーの設定
  • 名前付きディスク
  • ディスクの追加方法
  • ユーザー管理
  • 高可用性構成
  • GPU
  • 顔認識アプリの作成

    • 環境構築(GPU)
    • 顔認識処理(GPU)
    • APIの公開(GPU)
    • 環境構築(CPU)
    • クライアントの公開(CPU)
    • テスト

    コンピュート

    • vApp
    • 仮想マシン
    • アフィニティルール

    ネットワーク

    • ネットワーク
    • エッジ

    ストレージ

    • 名前付きディスク
    • ストレージポリシー
  • アプリケーション
  • コンテンツ ライブラリ

    • vApp テンプレート
    • メディアとその他
    • カタログ
  • 監視
  • ユーザー環境設定
  • ユーザー管理

    • ホーム
    • マイパスワード変更
    • アカウント一覧
    • アカウント登録
    • ログアウト
  • 稼働状況統計
  • ロードバランサー
  • VMware Tools

  • よくあるご質問

APIの公開(GPU)

概要

本項では、クライアントからアップロードされる画像を顔認識処理に受け渡し、サーバー側での処理結果をクライアントに返すためのAPIの作成と公開について説明します。

APIの仕様

チュートリアルでは簡単のため、以下の仕様のみを持つ簡単なAPIを設計します。

リクエスト

  • ボディ
    リクエストボディは Content-Type: multipart/form-data 形式でリクエストを送信します。
    multipartキー 値 必須
    image_data 画像ファイルのバイナリ ○
    • image_data
      画像ファイルをバイナリ化したものです。

レスポンス

  • ボディ
    ボディとしては以下のセットが配列として返ってきます。それぞれの値は、顔として認識された位置のx座標、 y座標を表す数値です。
    JSONキー 値 必須
    right 数値 ○
    bottom 数値 ○
    top 数値 ○
    left 数値 ○

APIのソースコードの内容

ダウンロードしたソースコードの Server フォルダーにある app.py がAPIとして機能する部分になります。

@app.route('/process', methods=['POST']) のアノテーションつけられた process() は、{ベースURL}/process にPOSTメソッドでアクセスした際に行われる処理を書いています。
ここでは、リクエストボディから image_data という部分のデータを取り出し、それに画像認識の処理を行い、結果をJSON化して返す、ということをしています。
そこではそれぞれ
  • recog(img) が process() でリクエストボディから取り出したデータを画像認識処理に受け渡す処理を行っています。
  • jsonify(tuplelist) が recog(img) で画像認識処理を行った後に返ってきたデータに対し、中の数値に"top", "right", "bottom", "left" という名前を与えてJSONの形に整形しています。

APIのデプロイ

ここでは、実際にAPIをサーバー上で機能させる方法について説明します。
なお、このプロセスを行う際には、かならずファイアウォールの設定を確認し、アクセスが予定されたIPアドレスに制限されていることをご確認ください。

ファイアウォールの設定

ファイアウォールの設定を行います。
基本的な IP の制限等についてはファイアウォールの設定をご確認ください。
その後、ポートの設定を行います。
Flaskはデフォルトで5000番のポートを使用するため、ファイアウォールでその通信を許可します。
  1. エッジ (赤で囲われた部分)から MEC-XXX-XXX という名前のエッジ(青で囲われた部分)を選択します。
  2. アプリケーションポートファイルを選択し、カスタムアプリケーションの 新規 (赤で囲われた部分)を選択します。
  3. 新規アプリケーションポートプロファイルのウィンドウが開くので、名前(赤で囲われた部分)を Flask にし、プロトコルを TCP 、ポートを 5000 に設定し(青で囲われた部分)、保存します。
  4. ファイアウォールの作成を参考に、新しいルールを作成します。
  5. アプリケーション から先ほど作成した Flask を選択し、許可します。
これにより、5000番ポートが解放され、Flaskによる通信ができる状態になります。

サーバーの起動

最初に、Apache などの他のウェブサーバーが起動していないかを確認し、起動していた場合は以下のコマンドを実行し、停止してください。
$ sudo systemctl stop httpd
順番に以下のコマンドを実行してください。
  1. Server フォルダーに移動する(face-recog の部分は最初にダウンロードしたzipファイルのファイル名にしてください。変更していない場合、face-recogのままです)。
    $ cd $HOME/face-recog/Server
  2. python で app.py を実行する。
    $ python app.py
以下のようなログが表示されたなら、起動に成功しています。
* Serving Flask app 'app' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Restarting with stat
* Debugger is active!
* Debugger PIN: xxx-xxx-xxx
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on http://xxx.xx.x.xx:5000/ (Press CTRL+C to quit)

← 顔認識処理(GPU) 環境構築(CPU) →
  • 概要
  • APIの仕様
    • リクエスト
    • レスポンス
  • APIのソースコードの内容
  • APIのデプロイ
    • ファイアウォールの設定
    • サーバーの起動
  • ※「docomo MEC」は株式会社NTT ドコモの商標です。
  • ※「MECダイレクト」は株式会社NTT ドコモの商標です。
docomo
© NTT DOCOMO, INC. All Rights Reserved