Skip to content
This repository has been archived by the owner on Mar 6, 2023. It is now read-only.

Latest commit

 

History

History
241 lines (152 loc) · 16.8 KB

README-ja.md

File metadata and controls

241 lines (152 loc) · 16.8 KB

他の言語で読む: English.

PowerAI Vision によるオブジェクト検出

このコードパターンでは、PowerAI Vision Object Detection を使用して、カスタマイズされたトレーニングに基づいて、イメージ内のオブジェクトを検出してラベル付けします。

この例は、独自のデータセットで容易にカスタマイズできます。

サンプル用のデータセットとして、コカ・コーラの瓶の画像を使用します。 モデルをトレーニングして展開すると、画像内のコーラ瓶を見つけてカウントできる REST エンドポイントが作成できます。

ディープラーニング (深層学習) トレーニングを使用して、オブジェクト検出のモデルを作成します。 PowerAI Vision では、数回のマウスクリックだけで深層学習を実施できます。 タスクが完了すると、もう一度クリックしてモデルをデプロイできます。

PowerAI Vision は、推論操作のための REST API を提供しています。 カスタムモデルによるオブジェクト検出は、任意の REST クライアントから使用でき、PowerAI Vision UI でもテストできます。

このコード・パターンをひと通り完了すると、以下の方法がわかるようになります:

  • PowerAI Vision を使用してオブジェクトを検出する対象のデータセットを作成する
  • データセットに基づいてモデルをトレーニングし、デプロイする
  • REST 呼び出しを使用してモデルをテストする

architecture

Flow

  1. 画像をアップロードして PowerAI Vision データセットを作成します。
  2. トレーニングを実行する前に、画像データセット内のオブジェクトにラベルを付けます。
  3. PowerAI Vision 内でモデルをトレーニング、デプロイ、テストします。
  4. REST クライアントを使用して、画像内のオブジェクトを検出します。

含まれるコンポーネント

  • IBM Power Systems: オープンテクノロジーで構築され、ミッションクリティカルなアプリケーション用に設計されたサーバー。
  • IBM PowerAI: 深層学習、機械学習、AIをよりアクセスしやすくし、パフォーマンスを改善するソフトウェアプラットフォーム。
  • IBM PowerAI Vision Technology Preview: コンピュータビジョンのための深層学習モデルをトレーニングし、デプロイして、データセットにラベルを付けするための一貫したエコシステム。

利用した技術

  • Artificial Intelligence: 人工知能を分散したソリューション空間に適用して、破壊的技術(新しい価値基準の下で従来よりも優れた特長を持つ新技術)を提供します。
  • Node.js: サーバー側でJavaScriptコードを実行するためのオープンソースのJavaScriptランタイム環境。

ビデオを観る

前提条件

このコードパターンは、PowerAI Vision Technology Preview v3.0 でビルドされました。

  • SuperVessel クラウドを使用してプレビューを試すには、こちら でログインまたは登録してください。

  • Power Systems を所有しており、インストーラをダウンロードして自分のシステムにプレビューをデプロイする場合は、こちら で登録します。

ノート: この README の手順と例は、SuperVessel の使用を想定しています。たとえば、幾つかの URL は ny1.ptopenlab.com を使用しています。

手順

  1. GitHub リポジトリーを複製する
  2. PowerAI Vision にログインする
  3. 新規データセットを作成する
  4. タグを作成しオブジェクトにラベルを付ける
  5. 深層学習 (DL) タスクを作成する
  6. モデルをデプロイしてテストする
  7. アプリを実行する

1. GitHub リポジトリーを複製する

powerai-vision-object-detection をローカル環境にクローンします。ターミナルで次のコマンドを実行:

git clone https://github.com/IBM/powerai-vision-object-detection

2. PowerAI Vision にログインする

SuperVessel を使用している場合は、こちらでログインします: https://ny1.ptopenlab.com/AIVision/index.html

3. 新規データセットを作成する

PowerAI Vision Object Detection は、ユーザーと開発者がカスタマイズしたトレーニングに基づいて、画像内のオブジェクトのインスタンスを数えることができます。そして画像内のオブジェクトを検出してラベル付けします。

オブジェクト検出トレーニング用の新しいデータセットを作成するには:

  • My Data Sets ビューから Add Dataset ボタンをクリックし、プルダウンで For Object Detection を選択します。

    add_dataset

  • データセット名を入力し、Add Dataset をクリックします。

    add_dataset_name
  • ドラッグ&ドロップや Select some を使用して1つ以上の画像をアップロードします。一度に多くをアップロードするため、クローンしたリポジトリから powerai-vision-object-detection/data/coke_bottles.zip を使うことができます。

    update_dataset

    ノート: 独自の zip ファイルを使用して、アップロード後にファイルサムネイルが表示されない場合は、そのアップロードは失敗しています。特殊文字やスペースを使用せずに、小文字のファイル名を使用してください。個々のファイルをアップロードしたり、幾つかのファイルを一度に複数選択して、どのファイルがアップロードを失敗させたのかを判断することもできます。

4. タグを作成しオブジェクトにラベルを付ける

  • + アイコンをクリックして新しいタグを作成します。 各タグは、特定の使用例 (コカコーラ、ダイエットコーラ、コーラゼロなど) に基づいて画像内のトレーニングオブジェクトを表します。

  • タグを選択し、画像内のオブジェクトの周囲にあるバウンディングボックス内にドラッグすると、各画像のオブジェクトにラベルを付けることができます。それぞれの画像ごとに設定して Save を押します。

  • すべてのタグとすべての画像に対してこのプロセスを繰り返します。

    ノート: ラベル付けを既に実施済みの状態でエクスポートした powerai-vision-object-detection/data/coke_bottles_exported.zip ファイルをインポートすることにより、上記の設定の手間を省くこともできます。

    add_dataset

    ヒント: Only Show Unlabeled Files プルダウンを使用すると、実行を完了したことが判断し易くなります。

  • Data Augmentation ボタンを使ってデータセットを拡張することができます。元のイメージに最初にラベルを付け、ミラーイメージ (水平または垂直) がユースケースに合致しているかどうかを確認してください。データ拡張機能を使用すると、新しい拡張データセットが作成されます。

  • あなたの仕事のコピーを保存するには、Export As Zip File をクリックしてください。ラベルを付けるのには時間がかかるので、何か問題が発生した場合、この zip ファイルから作業をやり直すことができます。

5. 深層学習 (DL) タスクを作成する

  • My Workspace の下にある My DL Tasks をクリックし、Create New Task ボタンをクリックします。Object Detection をクリックします。

  • Object Detector に名前を付け、データセットが選択されていることを確認し、Build Model をクリックします。

    build_model

  • 実行時間の予測を含んだ、確認ダイアログが表示されます。Create New Task をクリックして開始します。

    create_task_confirm

6. モデルをデプロイしてテストする

  • モデルがビルドされたら、Deploy and Test をクリックします。

    model_built

  • PowerAI Vision UI でモデルをテストします。 テスト画像を選択するには、Select some を使用します。結果は検出されたオブジェクトの数を示し、バウンディングボックス、ラベル、信頼スコアと共に画像が表示されます。

    test_ui

  • コマンドラインから、画像ファイルと curl コマンドを使用して、配備された REST エンドポイントをテストすることができます。出力 JSON は複数の瓶が検出されたことを示し、それぞれの瓶には信頼性、ラベル、および場所が示されています。

    注意点: この例では便宜上 --insecure を使いました。

    $ curl --insecure -i -F files=@coke_bottle_23.png https://ny1.ptopenlab.com/AIVision/api/dlapis/9f9d6787-0183-4a1b-be49-751b6ca16724
    HTTP/1.1 100 Continue
    
    HTTP/1.1 200 OK
    Server: nginx/1.9.13
    Date: Thu, 14 Dec 2017 21:58:26 GMT
    Content-Type: application/json
    Content-Length: 508
    Connection: keep-alive
    Access-Control-Allow-Origin: *
    Access-Control-Allow-Headers: origin, content-type, accept, authorization
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, HEAD
    Access-Control-Allow-Origin: *
    
    { "classified" : [ { "confidence" : 0.9986369013786316 , "ymax" : 578 , "label" : "coca-cola" , "xmax" : 755 , "xmin" : 588 , "ymin" : 29} , { "confidence" : 0.9954010248184204 , "ymax" : 592 , "label" : "coca-cola" , "xmax" : 601 , "xmin" : 437 , "ymin" : 10} , { "confidence" : 0.8161203265190125 , "ymax" : 567 , "label" : "coca-cola" , "xmax" : 426 , "xmin" : 259 , "ymin" : 17}] , "imageUrl" : "http://ny1.ptopenlab.com:443/AIVision/temp/5a26dd3b-d8ba-4e01-8b93-5a43f28e97c7.png" , "result" : "success"}

7. アプリを実行する

サンプルの Web アプリケーションは、画像をアップロードし、訓練されデプロイされたモデルを使用し、検出されたオブジェクトを画面上にバウンディングボックスとラベルを表示する方法を示しています。機能は上記のテストと似ていますが、カスタマイズするためのコードが用意されています。

次の IBM Cloud にデプロイする もしくは ローカル環境で実行する セクションのどちらかを実行してください。

IBM Cloud にデプロイする

Deploy to IBM Cloud

  1. 上記の Deploy to IBM Cloud ボタンを押し、次に Deploy をクリックします。

  2. ツールチェーンで、デリバリーパイプラインをクリックして、アプリケーションがデプロイされるのを待ちます。デプロイされた後、View app をクリックするとアプリを表示できます。

  3. IBM Cloud ダッシュボードを使用してアプリを管理します。このアプリの名前は、powerai-vision-object-detection に、ユニークな接尾辞を追加したものです。

  4. PowerAI Vision APIエンドポイントを追加します:

    • IBM Cloud ダッシュボードでアプリをクリックします。
    • サイドバーの Runtime を選択します。
    • 中央のボタンバーで Environment variables (環境変数) を押します。
    • Add ボタンを押します。
    • 名前 POWERAI_VISION_WEB_API_URL を追加し、配備した Web API の値を設定します(上記)。
    • Save ボタンを押します。アプリは自動的に再起動します。
    • アプリを使用するには、Visit App URL をクリックします。

ローカル環境で実行する

複製されたリポジトリを使用し、Web アプリケーションをビルドして実行します。

ノート: これらの手順は、Deploy to IBM Cloud ボタンを使用する代わりに、ローカル環境で実行する場合にのみ必要です。

  • env.sample を .env にコピーします。ファイルを編集して、さきほどデプロイした Web API を指すように URL を設定します。

  • Node.jsnpm があらかじめインストールされていることを前提として、 次のコマンドを実行します:

    cd powerai-vision-object-detection
    npm install
    npm start
    
  • ブラウザを使用して Web UI を表示します。デフォルトの URLは http://localhost:8081 です。

Web アプリを使用する

  • Choose File ボタンを使ってファイルを選択します。電話では、カメラを使用することもできます。ラップトップでは、画像ファイル (JPGまたはPNG) を選択します。

  • Web API に画像を送信し、結果をレンダリングするには、Upload File ボタンを押してください。

    webui

  • POWERAI_VISION_WEB_API_URL を構成しなかった場合、または API がデプロイされていない場合は、UIにエラーメッセージが表示されます (SuperVessel では1時間ごとにすばやく再デプロイできます)。

リンク

もっと詳しく知る

  • Artificial Intelligence コードパターン: このコードパターンを気に入りましたか? AI Code コードパターン から関連パターンを参照してください。
  • AI and Data コードパターン・プレイリスト: コードパターンに関係するビデオ全ての プレイリスト です。
  • PowerAI: AIのためのエンタープライズプラットフォーム上で機械学習用のソフトウェアを実行することで、より速く開始またはスケーリングできます: IBM Power Systems

ライセンス

Apache 2.0