Azure
DeepLearning
CNTK
DSVM

CNTKによる画像認識のサンプルをAzure DSVM上で動かしてみる

More than 1 year has passed since last update.

はじめに

今回は、CNTKでの画像認識処理の例として、Fast R-CNNという手法とAlexNetというモデルを使い、冷蔵庫内の画像に写る品物の種類を識別するサンプルプログラムを動かしてみます。
参考にしたサイトはこちら(Object Detection using Fast R-CNN)です。

今回の概要

サンプルプログラムは前回構築したDSVMに既に入っているので、今回はひとまずサンプルプログラムの実行まで試してみます。
(具体的な処理内容については、次回以降で追ってみます。)

[作業手順]
1. 環境準備
2. サンプルプログラム実行

1.環境準備

今回はDSVMにプリインストールされているPython 3.5を利用するので、Anaconda PromptのPython3.5用を起動します。
[Anaconda Prompt実行手順]
・スタートメニューのプログラムリストの中から、「Anaconda2 (64bit) 」を選択
・「Anaconda Prompt (py35)」を選択

次に、環境設定とモデル・データファイルのダウンロード、ライブラリのインストールを行います。
[設定・導入手順]
・カレントディレクトリをFast R-CNNのサンプルプログラムディレクトリに変更
 cd "C:\dsvm\samples\CNTK-Samples-2-0\Examples\Image\Detection\FastRCNN"
・ファイルダウンロード用プログラムを起動
 python install_fastrcnn.py
 これで、AlexNetのモデルと冷蔵庫画像のデータ一式が所定ディレクトリにダウンロードされます。
事前インストール作業.png
・今回はPython3.5.3を利用した環境を作ります。(環境名は"cntk"としています。)
 conda create --name cntk python=3.5.3 numpy scipy
 activate cntk
・scikit-learn、open-cvパッケージをこちらのサイトからダウンロード
 今回は下記2つのパッケージを導入しました。
 ・scikit_image-0.13.1-cp35-cp35m-win_amd64.whl
 ・opencv_python-3.3.1-cp35-cp35m-win_amd64.whl
 インストールは、下記pipコマンドで実行しました。
 pip install (ダウンロードフォルダ 例:C:\users\[ユーザー名]\Downloads)\scikit_image-0.13.1-cp35-cp35m-win_amd64.whl
 pip install (ダウンロードフォルダ 例:C:\users\[ユーザー名]\Downloads)\opencv_python-3.3.1-cp35-cp35m-win_amd64.whl
・環境変数"path"に、cntk.exeのあるディレクトリ(今回の場合は"c:\dsvm\cntk\cntk")を追加する。

2.サンプルプログラム実行

データ前処理

  1. 物体領域候補の取得 (A1_GenerateInputROIs.py)
    今回のサンプルの学習データには、野菜や飲料等の内容物のラベル情報と、それらが冷蔵庫画像の中のどの領域にあるか、という情報が付加されています。
    Fast R-CNNの学習処理を実行する前に、先ずSelective Searchという手法を用い、画像の中で物体と思しき領域(ROI)の候補をリストアップする処理を実行します。
    下記で実行します。
    python A1_GenerateInputROIs.py
    [実行例]
    A1_中略.png

  2. 物体領域の可視化
    python B1_VisualizeInputROIs.pyを実行すると、学習・評価データそれぞれに対し、1.で算出されたROIを合成した画像が表示されます。(最大10画像)
    [実行例]
    B1_画像.png

  3. 算出した領域の評価
    python B2_EvaluateInputROIs.py を実行すると、1.で算出されたROIの評価が実施されます。
    [実行例]
    B2.png

Fast R-CNNによる画像認識処理

  1. Fast R-CNNによる学習
     python A2_RunWithBSModel.pyを実行すると、学習処理が実行されます。
     このプログラムは、BrainScriptという言語で書かれた設定ファイル(fastrcnn.cntk)を利用して、Fast R-CNNのトレーニング処理を実行しています。
     ※上記手順で記載した環境変数設定が無いと、ここでエラー(The system cannot find the file specifiedなどのメッセージ)が出ることがあります。

  2. モデルの精度評価
    python A3_ParseAndEvaluateOutput.pyを実行すると、認識精度を解析して評価が行われます。
    [実行例]
    A3.png

  3. 評価結果の可視化
    python B3_VisualizeOutputROIs.pyを実行すると、認識結果が画像に重ね合わせて表示されます。
    [実行例]
    B3_画像.png

次回

上記までで、Fast R-CNNでの画像認識サンプルが実行できました。
次回は、今回のサンプルプログラムをベースに、少し詳しく内容を確認してみます。