目次


PowerAI Vision で物体を検出する

PowerAI Vision を使用して物体検出用のモデルと REST エンドポイントを作成する方法を学ぶ

Comments

開発者がコンピューター・ビジョンと物体検出機能を組み合わせてアプリを構築するには、深層学習フレームワークを利用することができます。その場合、モデルのトレーニングとデプロイに PowerAI Vision を利用すれば、必要となる作業と専門知識が大幅に軽減されます。PowerAI Vision が提供する UI では、深層学習の予備知識がなくても、独自の物体検出モデルをトレーニング、デプロイ、テストできるからです。

この入門チュートリアルで、PowerAI Vision UI を使用してサンプル画像を REST エンドポイントに変換し、物体検出アプリ内で使用可能にする方法を学んでください。

2017 年 12 月の時点で、PowerAI Vision はテクノロジー・プレビュー版として提供されており、Power Systems 上にインストールすることも、クラウド内のトライアル・アカウントで使用することもできます。

注: この入門チュートリアルは、PowerAI Vision テクノロジー・プレビュー版 v3.0 の使用を前提として作成されています。

学習の目的

このチュートリアルの目標は、物体検出を目的とした深層学習の基本を説明すると同時に、PowerAI Vision UI を使用して物体検出を極めて容易にすることです。チュートリアルでは実践的アプローチによって、次の目的を達成します。

  • 物体検出用のデータセットを作成してラベルを付ける
  • データセットに基づいてモデルをトレーニングし、デプロイする
  • REST 呼び出しによってモデルをテストする

フレームワークのセットアップ、GPU 処理能力の利用方法、モデルを REST エンドポイントとして公開する方法などといった詳細に対処する必要はほとんどありません。それは、PowerAI Vision が自動的に処理してくれるためです。

チュートリアルの手順に従うと、すぐに使用できるカスタマイズされた物体検出 API が完成します。

前提条件

  • サンプル画像の集合: 独自の画像を集めたものを使用するのでも構いません。物体検出の使用ケースを念頭に置いてください。次のいずれか、または両方の答えを見つける使用ケースでなければなりません。
    • ターゲットとなる物体は画像内のどこにあるか?
    • 画像内にターゲットとなる物体はいくつあるか?
    このチュートリアルでは、サンプル画像としてコカ・コーラのボトルの画像を集めました。この場合、ボトルの数をカウントし、それらの位置を特定するアプリを作成できます。
  • PowerAI Vision プレビュー版へのアクセス: On Premise で使用する場合は、このリンク先の「Try PowerAI (PowerAI トライアル)」ページからインストーラーをダウンロードし、プレビュー版を Power Systems 上にインストールできます。あるいは、SuperVesselSuperVessel へのアクセスを登録し、クラウド内でプレビュー版を試すこともできます。 PowerAI トライアル・ページのスクリーンショット
    PowerAI トライアル・ページのスクリーンショット

注: この入門チュートリアルに記載する手順と例では、読者が SuperVessel を使用していることを前提としています。

所要時間

インタラクティブな手順は 1 時間未満で完了しますが、トレーニング・タスクを開始してから完了するまでには 1 時間以上かかる場合があります (推定時間は 90 分ですが、実際にかかる時間は使用するデータセットとその他の要因に依存します)。この演習を開始した後、休憩を取ってからトレーニングを完了するよう計画してください。

手順

  1. PowerAI Vision にログインする
  2. データセットを作成する
  3. タグを作成して物体にラベルを付ける
  4. DL タスクを作成する
  5. デプロイしてテストする

PowerAI Vision にログインする

SuperVessel を使用する場合は、https://ny1.ptopenlab.com/AIVision/index.html にアクセスしてログインします。

データセットを作成する

PowerAI Vision の物体検出機能は、画像内の物体を発見してラベルを付け、ユーザーや開発者がカスタマイズしたトレーニングに基づいて画像内の物体の数をカウントできるようにします。

物体検出トレーニングで使用する新しいデータセットを作成するには、次の手順に従います。

  • My Data Sets (マイ・データセット)」ビューで、「Add Dataset (データセットを追加)」ボタンをクリックし、プルダウンから「For Object Detection (物体検出用)」を選択します。 データセットを追加する画面のスクリーンショット
    データセットを追加する画面のスクリーンショット
  • データセット名を入力してから、「Add Dataset (データセットを追加)」をクリックします。 追加するデータセットの名前を入力する画面のスクリーンショット
    追加するデータセットの名前を入力する画面のスクリーンショット
  • 1 つ以上の画像をアップロードします。それにはドラッグ・アンド・ドロップ操作を使用するか、「Select some (対象を選択)」を使用します。zip ファイルを使用して多数の画像ファイルを一度にアップロードすることも、複数選択することもできます。コカ・コーラのボトルの画像からなるサンプル・データセットをダウンロードする場合は、ここをクリックしてください。 データセットをアップロードする画面のスクリーンショット
    データセットをアップロードする画面のスクリーンショット

    注: 独自の zip ファイルをアップロードした後、ファイルのサムネイルが表示されなければ、アップロードは失敗しています。ファイル名には小文字だけを使用して、特殊文字やスペースが含まれないようにしてください。また、個々のファイルをアップロードするか、複数のファイルを選択して一度にアップロードすると、アップロードが失敗する原因となったファイルを特定できます。

タグを作成して物体にラベルを付ける

  • 1 つ以上のタグを作成します。それには、「+」アイコンをクリックして新しいタグを追加します。各タグで、具体的な使用ケースに基づく、画像内のトレーニング用物体を表します。
  • 各画像内の物体にラベルを付けます。それには、タグを選択し、境界ボックスをドラッグして画像内の物体を囲みます。各画像での作業が終わるごとに「Save (保存)」をクリックします。
  • すべてのタグとすべての画像について、このプロセスを繰り返します。 データセットを追加する画面のスクリーンショット
    データセットを追加する画面のスクリーンショット

    ヒント:「Only Show Unlabeled Files (ラベルが付いていないファイルのみを表示)」プルダウンを使用すると、すべてのファイルに対して作業を完了したかどうかがわかります。

  • Export As Zip File (zip ファイルとしてエクスポート)」をクリックして、作業結果のコピーを保存します。ラベル付けに時間を費やしましたが、この zip ファイルがあれば、最初からやり直すときにラベル付けに費やした労力を無駄にしなくてもすみます。

DL タスクを作成する

  • 「My Workspace (マイ・ワークスペース)」にある「My DL Tasks (マイ DL タスク)」をクリックし、「Create New Task (新規タスクを作成)」ボタンをクリックします。「Object Detection (物体検出)」をクリックします。
  • 物体検出器に名前を付けて、目的のデータセットが選択されていることを確認してから、「Build Model (モデルを作成)」をクリックします。 モデルを作成する画面のスクリーンショット
    モデルを作成する画面のスクリーンショット
  • 推定所要時間を示す確認ダイアログが表示されたら、「Create New Task (新規タスクを作成)」をクリックしてモデルの作成を開始します。 タスクの作成を確認するダイアログのスクリーンショット
    タスクの作成を確認するダイアログのスクリーンショット

デプロイしてテストする

  • モデルの作成が完了したら、「Deploy and Test (デプロイしてテスト)」をクリックします。 作成されたモデルを表示する画面のスクリーンショット
    作成されたモデルを表示する画面のスクリーンショット
  • PowerAI Vision UI 内でモデルをテストします。「Select some (対象を選択)」を使用して、テスト画像を選択します。テスト結果として、検出された物体の数と、境界ボックス、ラベル、信頼度スコアが付加された画像が表示されます。 テスト UI を表示する画面のスクリーンショット
    テスト UI を表示する画面のスクリーンショット
  • 画像ファイルと curt コマンドを使用して、コマンドラインからデプロイ済み 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"}

まとめ

このチュートリアルでは、深層学習テクノロジーによってラベル付きのサンプル画像から学習し、物体検出 API を作成する方法を説明しました。ここで作成した REST エンドポイントは結果を JSON 形式で返すため、どのアプリでも簡単に使用できます。

PowerAI Vision ではプロセス全体を極めて容易にするとともに、GPU 処理能力を活用してトレーニングを加速化します。

物体検出の精度は、提供するサンプルによって左右されます。ほとんどの場合、本番環境に対応できるだけの高精度の結果を出すには、実験に使用するデータセットでは小さすぎます。トレーニングには時間をかけて、十分なトレーニング・データを使用してください。データセットを大きくすることで、精度を向上させることができます。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cognitive computing, Linux
ArticleID=1065975
ArticleTitle=PowerAI Vision で物体を検出する
publish-date=06132019