

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 排查 Ambarella 错误
<a name="neo-troubleshooting-target-devices-ambarella"></a>

SageMaker Neo 要求将模型打包到压缩的 TAR 文件中 (`*.tar.gz`)。Ambarella 设备需要在压缩的 TAR 文件中包含其他文件，然后才能将其发送出去以进行编译。如果您想使用 Neo 为 Ambarella 目标编译模型，请在压缩的 TAR 文件中加入以下文件： SageMaker 
+ 使用 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`: TensorFlow 模型另存为冻结图形

有关 SageMaker Neo 支持的框架的信息，请参阅[支持的框架](neo-supported-devices-edge-frameworks.md)。

## 设置配置文件
<a name="neo-troubleshooting-target-devices-ambarella-config"></a>

配置文件提供 Ambarella 工具链编译模型所需的信息。配置文件必须另存为 JSON 文件，并且文件名必须以 `*config.json` 结尾。下表显示配置文件的内容。


| Key | 说明 | 示例 | 
| --- | --- | --- | 
| 输入 | 将输入层映射到属性的字典。 | <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 | 要从输入中减去的平均值。可以是单个值或值的列表。当以列表形式给出平均值时，条目数量必须与输入的通道维度相匹配。 | "mean":128.0 | 
| scale | 用于对输入进行统一的小数位数值。可以是单个值或值的列表。当以列表形式给出小数位数时，条目数量必须与输入的通道维度相匹配。 | "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>

通过提供校准图像来量化训练的模型。对模型进行量化可以提高安霸片上系统 (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>

您可以为 Amberalla 工具链指定平均值和缩放预处理选项。这些运算嵌入到网络中，并在推理期间应用于每个输入。如果您指定平均值或小数位数，请不要提供经过处理的数据。更具体地说，不要提供已从中减去平均值或已应用缩放的数据。

## 查看您的编译日志
<a name="neo-troubleshooting-target-devices-ambarella-compilation"></a>

有关查看 Ambarella 设备的编译日志的信息，请参阅 [查看您的编译日志](neo-troubleshooting-compilation.md#neo-troubleshooting-compilation-logs)。