

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

# Ambarella エラーをトラブルシューティングする
<a name="neo-troubleshooting-target-devices-ambarella"></a>

SageMaker Neo では、圧縮された tar ファイル (`*.tar.gz`) にモデルをパッケージ化する必要があります。Ambarella のデバイスでは、コンパイルに送る前に、まず圧縮される tar ファイルの中に追加のファイルを含める必要があります。SageMaker Neo を使って Ambarella ターゲットのモデルをコンパイルする場合は、圧縮された tar ファイルに次のファイルを含めます。
+ SageMaker Neo でサポートされているフレームワークを使ったトレーニング済みモデル 
+ 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`: Frozen グラフとして保存された TensorFlow モデル

SageMaker Neo でサポートされているフレームワークの詳細については、「[サポートされるフレームワーク](neo-supported-devices-edge-frameworks.md)」を参照してください。

## 設定ファイルを設定する
<a name="neo-troubleshooting-target-devices-ambarella-config"></a>

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


| キー | 説明 | 例 | 
| --- | --- | --- | 
| 入力 | 入力レイヤーを属性にマッピングするディクショナリ。 | <pre>{inputs:{"data":{...},"data1":{...}}}</pre> | 
| "data" | 入力レイヤー名。注:「data」は、入力レイヤーのラベルとして使うことができる名前の例です。 | "data" | 
| shape | モデルの入力の形状を記述します。これは SageMaker Neo が使う規則と同じものに従います。 | "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]
        }
    }
}
```

## キャリブレーションイメージ
<a name="neo-troubleshooting-target-devices-ambarella-calibration-images"></a>

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

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

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

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

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

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

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

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



## 平均とスケール
<a name="neo-troubleshooting-target-devices-ambarella-mean-scale"></a>

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

## コンパイルログを確認します。
<a name="neo-troubleshooting-target-devices-ambarella-compilation"></a>

Ambarella デバイスのコンパイルログを確認する方法については、「[コンパイルログを確認します。](neo-troubleshooting-compilation.md#neo-troubleshooting-compilation-logs)」を参照してください。