ディープラーニングの精度検証フレームワーク¶
精度チェッカーは、拡張可能で柔軟かつ構成可能なディープラーニングの精度検証フレームワークです。このツールはモジュラー構造を備えており、検証パイプラインを再現し、ソース・フレームワークのネットワークと OpenVINO™ でサポートされている形式の両方の一般的なデータセットの集約された品質指標を収集できます。
インストール¶
必要条件¶
最初に必要条件をインストールします。
1. Python¶
精度チェッカーは Python 3 を使用します。最初にインストールします。
sudo apt-get install python3 python3-dev python3-setuptools python3-pip
Python* セットアップツールおよび Python* パッケージ・マネージャー (pip) は、デフォルトでパッケージをシステム・ディレクトリーにインストールします。精度チェッカーのインストールは仮想環境経由でのみテストされています。
仮想環境のインストール:
python3 -m pip install virtualenv
python3 -m virtualenv -p `which python3` <directory_for_environment>
仮想環境のアクティブ化:
source <directory_for_environment>/bin/activate
仮想環境の非アクティブ化:
deactivate
2. フレームワーク¶
次のステップでは、精度チェッカーのバックエンド・フレームワークをインストールします。
一部のモデルを評価するには、必要なフレームワークをインストールします。精度チェッカーは以下のフレームワークをサポートしています。
いずれかを使用することも、一度に複数を使用することもできます。正しく動作するには、精度チェッカーは少なくとも 1 つを必要とします。他のフレームワークのインストールを延期し、必要になったときにインストールすることもできます。
精度チェッカーのインストール¶
前提条件がすべてインストールされている場合、精度チェッカーをインストールする準備が整っています。
python3 -m pip install .
精度チェッカーはモジュラー形式のツールであり、タスクに固有の依存関係がいくつかあります。必要なすべてのモジュールは、requirements-extra.in
ファイルにあります。標準のインストール手順には基本部分のみが含まれており、追加のモジュールを取得するには、次のコマンドを実行します。
python3 -m pip install .[extra]
インストールのトラブルシューティング¶
-
以前のバージョンのツールがすでに環境にインストールされている場合、新しいインストールが中断される可能性があります。ディレクトリー/ファイルが見つからないエラーが発生した場合は、以前のツールバージョンを環境から手動で削除するか、setup.py に代わって次のコマンドで精度チェッカーのディレクトリーにツールをインストールしてください。
python3 -m pip install --upgrade --force-reinstall .
accuracy_check
コマンドが次のエラーで失敗した場合:from .cv2 import * ImportError: libGL.so.1: cannot open shared object file: No such file or directory
opencv-python
をアンインストールして、opencv-python-headless
パッケージをインストールしてみてください。エラーと修正方法の詳細については、こちらをご覧ください。
開発目的で IDE 内でツールを実行¶
精度チェッカーツールには CLI で実行するエントリーポイントがありますが、一般的なコードエディターや統合開発環境 (IDE) のほとんどは、アプリケーションの開始点としてスクリプトを想定しています。新しいモデルをデバッグしたり有効にするスクリプトとしてツールを実行すると便利な場合があります。IDE 内で精度チェッカーを使用するには、次のコードを使用して、accuracy_checker のルート・ディレクトリー (例えば、<open_model_zoo>/tools/accuracy_checker/main.py
) にスクリプトを作成します。
from accuracy_checker.main import main
if __name__ == '__main__':
main()
このスクリプトを使用して IDE で精度チェッカーを実行できるようになります。
使用法¶
サンプルを実行してインストールをテストし、精度チェッカーを習熟できます。
Open Model Zoo の各モデルは、構成ファイルを使用して評価できます。事前定義された構成ファイルの使用方法については、こちらを参照してください。
精度チェッカーをインストールしたら、以下を使用して構成を評価できます。
accuracy_check -c path/to/configuration_file -m /path/to/models -s /path/to/source/data -a /path/to/annotation
-h、--help
を使用して、すべてのコマンドライン・オプションを表示できます。いくつかの引数を以下に示します。
-c、--config
設定ファイルへのパス。-m、--models
設定ファイルで宣言されたモデルと重みが検索されるディレクトリーを指定します。異なるディレクトリーにあるモデルで同じ構成を複数回実行する場合、または複数のモデルを含むパイプラインがある場合は、スペースで区切ったディレクトリーのリストを指定することもできます。-s、--source
入力画像を検索するディレクトリーを指定します。-a、--annotations
アノテーションとメタファイルを検索するディレクトリーを指定します。-d、--definitions
グローバル設定ファイルへのパス。-e、--extensions
InferenceEngine 拡張機能を含むディレクトリー。-C、'--converted_models
モデル・オプティマイザーで変換されたモデルを保存するディレクトリー (DLSDK ランチャーのみに使用)。-tf、--target_framework
推論のフレームワーク。-td、--target_devices
推論のデバイス。スペースで区切って複数のデバイスを指定できます。--async_mode
ランチャーがサポートしている場合、非同期モードでツールを実行できます。--num_requests
非同期実行の要求数。構成情報で指定されたオーバーライドを許可します。デフォルトはAUTO
です。--model_attributes
追加のモデル属性を含むディレクトリー。--subsample_size
データセットのサブサンプル・サイズ。--shuffle
subsample_size 引数のサブセットが提供されると、作成中にアノテーションのシャッフルが可能になります。デフォルトはTrue
です。--intermediate_metrics_results
中間メトリック結果の印刷を有効にします。デフォルトはFalse
です。--metrics_interval
--intermediate_metrics_results
フラグが有効な場合、更新されたメトリック結果をプリントする反復回数。デフォルトは 1000 です。--sub_evaluation
事前定義されたsubset_metrics
を使用してデータセットのサブセットを評価できるようにします。デフォルトはFalse
です。サブセットメトリックによる部分評価をご覧ください。
一部のコマンドライン引数を、パスのプリフィクスとして環境変数に置き換えることもできます。サポートされている変数のリストには以下があります。
DEFINITIONS_FILE
--d
、-definitions
と同等。DATA_DIR
--s
、--source
と同等。MODELS_DIR
--m
、--models
と同等。EXTENSIONS
--e
、--extensions
と同等。ANNOTATIONS_DIR
--a
、--annotations
と同等。MODEL_ATTRIBUTES_DIR
---model_attributes
と同等。
構成¶
検証プロセスを宣言する構成ファイルがあります。検証されたすべてのモデルは、以下で説明する個別の名前とその他のプロパティーを持つモデルリストにエントリーを含める必要があります。
すべてのモデルで共有されるグローバルオプションを宣言する定義ファイルもあります。設定ファイルは定義ファイルよりも優先されます。
例:
models:
- name: densenet-121-tf
launchers:
- framework: openvino
adapter: classification
datasets:
- name: imagenet_1000_classes
preprocessing:
- type: resize
size: 256
- type: crop
size: 224
metrics:
- name: accuracy@top1
type: accuracy
top_k: 1
reference: 0.7446
- name: accuracy@top5
type: accuracy
top_k: 5
reference: 0.9213
オプションで、グローバル構成を使用できます。同じデータセット上で実行するモデルが複数ある場合、重複を避けるのに役立ちます。グローバル定義ファイルの例は、<omz_dir>/data/dataset_definitions.yml
にあります。グローバル定義は、データセット名によってランタイムの評価構成とマージされます。グローバル設定のパラメーターはローカル設定によって上書きできます (例えば、定義でデスティネーション・サイズ 224 でサイズ変更を指定し、ローカル構成でサイズ 227 でサイズ変更を使用する場合、設定 227 の値がサイズ変更パラメーターとして使用されます)。global_definitions
フィールドを使用して、モデル構成内で直接、またはコマンドライン引数 (-d
、--definitions
) でグローバル定義へのパスを指定できます。
ランチャー¶
ランチャーは、モデルをどのように実行するかを記述します。各ランチャーの設定は、framework
名の設定から始まります。現在、caffe、dlsdk、mxnet、tf、tf2、tf_lite、opencv、onnx_runtime、pytorch、paddlepaddle がサポートされています。ランチャーの説明は相違する可能性があります。
データセット¶
データセットのエントリーには、モデルを評価する必要があるデータ、必要なすべての前処理および後処理/フィルター処理手順、および評価に使用されるメトリックが記述されます。
データセットのデータが競合問題 (COCO、Pascal VOC など) である場合、または他のモデルに再利用できる可能性がある場合は、グローバル構成ファイル (<omz_dir>/data/dataset_definitions.yml
) でそれを宣言するのが合理的です。この方法では、ローカル設定ファイルに名前のみを指定すると、必要なすべてのステップがグローバル設定ファイルから選択されます。このグローバル設定にパスを渡すには、CLI の --definition
引数を使用します。
準備された構成ファイルと既知のデータセットを使用してモデルを評価したい場合、検証データセットを含むフォルダーを特定の方法で整理する必要があります。データセットの準備に関する詳細については、データセット準備ガイドを参照してください。
各データセットには以下が必要です。
name
- モデル/トポロジーの一意の識別子。data_source
- 入力データが保存されるディレクトリーへのパス。metrics
-計算する必要があるメトリックのリスト。
以下はオプションで指定できます。
preprocessing
- 入力データに適用される前処理ステップのリスト。計算されたメトリックを報告されたものと一致させるには、トポロジーの正規化文書から前処理を再現するか、必要な手順についてトポロジーの作成者に問い合わせる必要があります。postprocessing
- 後処理ステップのリスト。reader
- データ読み取りのアプローチ。デフォルトのリーダーはopencv_imread
です。segmentation_masks_source
- セマンティックのセグメント化タスクの gt マスクが保存されているディレクトリーへのパス。
また、アノテーションに関連するデータも含まれている必要があります。以下を使用して、アノテーションをすぐに変換できます。
annotation_conversion
- アノテーション変換用のパラメーター
または、既存のアノテーション・ファイルとデータセットのメタを使用します。
annotation
- アノテーション・ファイルへのパスを指定するには、最初にアノテーションをデータセットの問題の表現に変換する必要があります。データセットのコンバーターがすでに存在する場合は、アノテーション・コンバーターからコンバーターの 1 つを選択するか、独自のコンバーターを作成できます。-
dataset_meta
- メタデータファイルへのパス (コンバーターが生成)。アノテーション変換の詳細については、アノテーション変換ガイドを参照してください。 -
subset_metrics
---sub_evaluation
フラグが有効な場合に計算される、一意のサイズとメトリックを持つデータセットのサブセットのリスト。subsample_size
が定義されている場合、一致するsubset_size
を持つサブセットのみが評価されます。それ以外は、デフォルトで最初のサブセットが検証されます。サブセットのメトリックによるサブ評価を参照してください。subset_size
- 評価するデータセットのサブセットのサイズ。その値はsubsample_size
と比較され、評価に必要なサブセットが選択されます。metrics
- 定義されたサブセットのサイズに固有のメトリックのリスト
データセットの定義例:
- name: dataset_name
annotation: annotation.pickle
data_source: images_folder
preprocessing:
- type: resize
dst_width: 256
dst_height: 256
- type: normalization
mean: imagenet
- type: crop
dst_width: 227
dst_height: 227
metrics:
- type: accuracy
前処理、メトリック、後処理¶
前処理、メトリック、後処理の各エントリーには、タイプに固有のその他のオプションを含む type
フィールドが必要です。他のオプションを指定しない場合は、定義ファイルから選択されます。
次の手順を使用できます。
計算されたメトリックを特定の値 (つまり、正規に報告されたもの) に対してテストしたい場合は、オプションでメトリックの reference
フィールドを指定できます。
一部のメトリックはベクトル結果の提供をサポートしています。例えば、mAP は各検出クラスの平均精度を返すことができます。presenter
(print_vector
、print_scalar
など) を使用して、メトリック結果の表示モードを変更できます。
例:
metrics:
- type: accuracy
top_k: 5
reference: 86.43
threshold: 0.005
サブセットメトリックによる部分評価¶
オプションで sub_evaluation
フラグを有効にして、大きなデータセットのサブセットの結果を迅速に取得できます。subset_metrics
は、異なる subset_size
と metrics
を持つサブセットを提供する必要があります。subset_metrics
が複数のエントリーで構成されている場合は、subsample_size
値を使用して目的の subset_size
を選択できます。それ以外の場合は、最初に定義された subset_size
が使用されます。
注: 精度の設定に subset_metrics
が定義されていない場合、sub_evaluation
フラグを有効にしても効果はありません。
例:
metrics:
- type: accuracy
top_k: 5
reference: 86.43
subset_metrics:
- subset_size: "10%"
metrics:
- type: accuracy
top_k: 5
reference: 86.13
- subset_size: "20%"
metrics:
- type: accuracy
top_k: 5
reference: 86.23
top_k: 1
reference: 76.42
新しいモデルをテスト¶
新しいモデルをテストする一般的なワークフローには次のものが含まれます。
データセットのアノテーションを変換します。annotation-converters のコンバーターのいずれかを使用するか、データセットのコンバーターがない場合は独自のコンバーターを作成します。コンバーターの使い方の詳細については、アノテーション変換ガイドを参照してください。
いずれかのアダプターを選択するか、独自のアダプターを作成します。アダプターは、フレームワークによって生成された生の出力を、高レベルの問題固有の表現 (例えば、ClassificationPrediction、DetectionPrediction など) に変換します。
正規の文書から前処理、メトリック、後処理を再現します。
設定ファイルにエントリーを作成して実行します。