

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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`: 프로즌 그래프로 저장된 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”는 입력 계층에 레이블을 지정하는 데 사용할 수 있는 이름의 예입니다. | “데이터” | 
| 셰이프 | 모델에 입력되는 입력의 형태를 설명합니다. 이는 SageMaker Neo가 사용하는 것과 동일한 규칙을 따릅니다. | “셰이프”: “1,3,224,224" | 
| 파일 경로 | 보정 이미지가 들어 있는 디렉토리의 상대 경로. JPG 또는 PNG와 같은 바이너리 또는 이미지 파일일 수 있습니다. | “파일 경로”: “calib\$1data/” | 
| 컬러 포맷 | 모델에 필요한 색상 형식. 이미지를 바이너리로 변환할 때 사용됩니다. 지원되는 값: [RGB, BGR]. 기본값은 RGB입니다. | “컬러 포맷”: “RGB” | 
| 평균 | 입력값에서 뺄 평균값입니다. 단일 값 또는 값 목록일 수 있습니다. 평균이 목록으로 제공되는 경우 항목 수는 입력의 채널 차원과 일치해야 합니다. | “평균”: 128.0 | 
| 사용 | 입력을 정규화하는 데 사용할 스케일 값입니다. 단일 값 또는 값 목록일 수 있습니다. 스케일이 목록으로 제공되는 경우 항목 수는 입력의 채널 크기와 일치해야 합니다. | “스케일”: 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\$1200개 정도 포함하는 것이 좋습니다. 모델 컴파일 시간은 입력 파일의 보정 이미지 수에 따라 선형적으로 증가합니다.

**권장 이미지 형식은 무엇입니까?**

보정 이미지는 원시 바이너리 형식이거나 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) 섹션을 참조하세요.