Ambarella エラーをトラブルシューティングする - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Ambarella エラーをトラブルシューティングする

SageMaker Neo では、圧縮された TAR ファイル () *.tar.gz にモデルをパッケージ化する必要があります。Ambarella のデバイスでは、コンパイルに送る前に、まず圧縮される tar ファイルの中に追加のファイルを含める必要があります。Neo で Ambarella ターゲット用のモデルをコンパイルする場合は、圧縮 TAR ファイルに以下のファイルを含めてください。 SageMaker

  • Neo がサポートするフレームワークを使ったトレーニング済みモデル SageMaker

  • JSON 設定ファイル

  • キャリブレーションイメージ

例えば、圧縮された tar ファイルの内容は、次の例のようになります。

├──amba_config.json ├──calib_data | ├── data1 | ├── data2 | ├── . | ├── . | ├── . | └── data500 └──mobilenet_v1_1.0_0224_frozen.pb

このディレクトリは、次のように構成されています。

  • amba_config.json: 設定ファイル

  • calib_data: キャリブレーションイメージを含むフォルダ

  • mobilenet_v1_1.0_0224_frozen.pb: TensorFlow フリーズグラフとして保存されたモデル

SageMaker Neo がサポートするフレームワークについては、を参照してください。サポートされるフレームワーク

設定ファイルを設定する

設定ファイルは、モデルのコンパイルのために Ambarella ツールチェーンが必要とする情報を提供します。設定ファイルは JSON ファイルとして保存し、ファイル名は「*config.json」で終わる必要があります。以下の表は、設定ファイルの内容を示しています。

キー 説明

入力

入力レイヤーを属性にマッピングするディクショナリ。

{inputs:{"data":{...},"data1":{...}}}

"data"

入力レイヤー名。注:「data」は、入力レイヤーのラベルとして使うことができる名前の例です。

"data"

shape

モデルの入力の形状を記述します。これは Neo が使用しているのと同じ規則に従っています。 SageMaker

"shape": "1,3,224,224"

filepath

キャリブレーションイメージを含むディレクトリへの相対パス。バイナリファイル、または JPG や PNG などのイメージファイルを使うことができます。

"filepath": "calib_data/"

colorformat

モデルが想定するカラー形式。これは、イメージをバイナリに変換する際に使われます。サポートされている値: [RGB、BGR]。デフォルトは RGB です。

"colorformat":"RGB"

mean

入力から減算される平均値。1 つの値、または値のリストを指定できます。平均をリストとして指定する場合、エントリの数は入力のチャネルディメンションと一致させる必要があります。

"mean":128.0

scale

入力の正規化に使われるスケール値。1 つの値、または値のリストを指定できます。スケールをリストとして指定する場合、エントリの数は入力のチャネルディメンションと一致させる必要があります。

"scale": 255.0

以下は、サンプルの設定ファイルです。

{ "inputs": { "data": { "shape": "1, 3, 224, 224", "filepath": "calib_data/", "colorformat": "RGB", "mean":[128,128,128], "scale":[128.0,128.0,128.0] } } }

キャリブレーションイメージ

キャリブレーションイメージを指定することで、トレーニング済みモデルを量子化します。モデルを量子化すると、Ambarella のシステムオンザチップ (SoC) の CVFlow エンジンのパフォーマンスが向上します。Ambarella ツールチェーンは、キャリブレーションイメージを使ってモデルの各レイヤーを量子化する方法を決定し、最適なパフォーマンスと精度を達成します。各レイヤーは、別個に INT8 形式または INT16 形式に量子化されます。量子化後、最終モデルでは INT8 レイヤーと INT16 レイヤーが混在します。

イメージはいくつ使えばよいですか。

モデルが処理すると予想されるシーンのタイプを代表する 100~200 のイメージを含めることが推奨されます。モデルのコンパイル時間は、入力ファイル内のキャリブレーションイメージの数に応じて直線的に増加します。

推奨されるイメージ形式は何ですか。

キャリブレーションイメージは、未加工のバイナリ形式または JPG や PNG などのイメージ形式にします。

キャリブレーションフォルダでイメージとバイナリファイルが混在していてもかまいません。キャリブレーションフォルダにイメージとバイナリファイルの両方が含まれている場合、まず、ツールチェーンはイメージをバイナリファイルに変換します。変換が完了すると、新しく生成されたバイナリファイルと、フォルダに元からあったバイナリファイルを使います。

最初にイメージをバイナリ形式に変換できますか。

はい。OpenCV または PIL のようなオープンソースパッケージを使って、イメージをバイナリ形式に変換できます。トレーニング済みモデルの入力レイヤーの要件を満たすように、イメージをトリミングしてサイズ変更します。

平均とスケール

Ambarella ツールチェーンには、平均とスケールの前処理オプションを指定できます。これらのオペレーションはネットワークに埋め込まれ、各入力の推論時に適用されます。平均またはスケールを指定する場合は、処理済みのデータを指定しないでください。具体的には、平均を減算したデータや、スケーリングを適用したデータは提供しないでください。

コンパイルログを確認します。

Ambarella デバイスのコンパイルログを確認する方法については、「コンパイルログを確認します。」を参照してください。