# AI-G보드 Convert 관련 문의

**URL:** <https://community.topst.ai/t/ai-g-convert/1054>\
**Category:** AI\
**Created:** [July 28, 2026, 2:23am UTC](https://community.topst.ai/t/ai-g-convert/1054 "2026-07-28T02:23:13Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![giyun4120](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@giyun4120](https://community.topst.ai/u/giyun4120)\
**Post date:** [July 28, 2026, 2:23am UTC](https://community.topst.ai/t/ai-g-convert/1054/1 "2026-07-28T02:23:13Z")

</div>

### 이 글은 기술 질문입니다.

on

### 사용 보드

AI-G

### 보드 이미지 또는 펌웨어

Ubuntu

### 사용자 PC 또는 빌드 환경

Windows + WSL

### 사용자 PC 운영체제 버전

Ubuntu 22.04

### SDK/BSP 버전

EnlightSDK v0.9.9 (Telechips NPU Toolkit / Enlight SDK)

### 기술 분야

NPU/AI 모델

### 사용 예제 또는 모델

YOLOV8

### 질문 내용

# [Converter] 12클래스 커스텀 YOLOv8 모델에서 grid shape mismatch 에러

1. 12클래스처럼 COCO(80클래스)가 아닌 커스텀 클래스 수를 가진 YOLOv8 모델을 변환할 때, 추가로 맞춰야 하는 조건이 있을까요?
2. `add_detection_post_process` (frozen 모듈, `nn.post_process.python_yolo_post_process`)가 grid shape을 검증할 때 실제로 비교하는 두 값이 무엇인지 알 수 있을까요? (에러 메시지에 구체적인 숫자가 나오지 않아 어떤 shape끼리 비교되는지 파악이 어렵습니다.)
3. `--num-class`가 80이 아닌 값일 때 알려진 이슈나 제약사항이 있는지 궁금합니다.

### 현재 상태 또는 발생 증상

동일한 절차로 만든 yolov8n.pt(COCO, 80클래스)는 converter → quantizer → compiler까지 전부 정상 완료됩니다.

커스텀 학습한 12클래스 YOLOv8n 모델(best.pt, Roboflow 데이터셋으로 학습)만 converter 단계에서 위 에러가 재현됩니다.

### 실행한 명령 또는 코드

```auto
python ./EnlightSDK/converter.py \
  ./input_networks/best.onnx \
  --model-config ./input/yolov8_model_zoo/best.json

```

best.json은 yolov8.json의 파일을 복사해서 수정할 부분만 수정한 파일입니다.

### 오류 로그

converter 실행 시 아래 에러가 발생합니다.

```auto
File "<frozen network>", line 1237, in add_detection_post_process
File "<frozen nn.post_process.python_yolo_post_process>", line 175, in init_grid
Exception: [Error] YOLO grid file is invalid. Network output and grid shape do not match

```

### 이미 시도한 방법

지금까지 확인/배제한 원인 목록

아래 항목들을 전부 `yolov8n.onnx`(정상 동작)와 `best.onnx`(에러 재현) 사이에서 직접 비교했으며, **모두 일치하거나 정상 값으로 확인되었습니다.**

| 항목 | 확인 방법 | 결과 |
| --- | --- | --- |
| ONNX opset / ir\_version | `onnx.load()` 후 `opset_import`, `ir_version` 확인 | 둘 다 opset=12, ir\_version=7로 일치 |
| 입력 shape | `graph.input` 확인 | 둘 다 [1, 3, 640, 640] |
| Detection head 그래프 구조 | node output 이름 비교 | 둘 다 Slice 기반 (Split 아님) — opset 12로 통일 후 일치 확인 |
| cv2(box) 레이어 output shape | shape\_inference 후 확인 | 둘 다 [1,64,80,80], [1,64,40,40], [1,64,20,20] |
| Grid .bin 파일 | `default_box_generator.py`로 생성, 파일 크기 비교 | 둘 다 정확히 67,328 bytes로 동일 |
| Grid .bin 헤더 값 | struct unpack으로 직접 파싱 | 둘 다 grid\_shape = (1, 1, 16800)으로 동일 |
| value\_info 중복 | 이름 기준 dedup 스크립트로 확인/제거 | best.onnx에서 중복 없음 확인 (240개 전부 고유) |
| output0 shape | graph.output 확인 | best.onnx: [1, 16, 8400] (4+12클래스로 정상 계산됨) |
| num\_class 영향 여부 | 진단용으로 best.json의 num-class를 80으로 임시 변경 후 재시도 | 80으로 바꿔도 동일 에러 재현 → num\_class 자체는 원인 아님 |
| dfl\_reg\_max | dfl conv weight shape 확인: (1, 16, 1, 1) | reg\_max=16으로 정상, json 설정과 일치 |
| dfl 관련 중간 텐서 shape | Reshape/Softmax output shape 확인 | [1,4,16,8400] 등 정상 |
| 가중치 NaN/Inf | 모든 initializer를 numpy로 변환 후 np.isnan/isinf 검사 | 문제 없음 |
| --type unknown으로 우회 시도 | `--type unknown`으로 실행 | model\_config가 "auto"로 인식되어 여전히 동일 grid 로직이 적용되고 동일 에러 재현 |

### 원하는 결과

사용자 지정 학습 모델(yolov8)의 Build Guide

---

<div class="post-metadata">

**Author:** ![giyun4120](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@giyun4120](https://community.topst.ai/u/giyun4120)\
**Post date:** [July 28, 2026, 2:39am UTC](https://community.topst.ai/t/ai-g-convert/1054/2 "2026-07-28T02:39:01Z")

</div>

> **[pt\_file - Google Drive](https://drive.google.com/drive/folders/11n3J708C6qxIYJ5B139jBsv6GFPnivl6?usp=sharing)**

위 파일들은 프로젝트에 사용한 파일 목록입니다!

---

<div class="post-metadata">

**Author:** ![TOPST-manager-cy](https://avatars.discourse-cdn.com/v4/letter/t/35a633/32.png) [@TOPST-manager-cy](https://community.topst.ai/u/TOPST-manager-cy)\
**Post date:** [July 28, 2026, 4:17am UTC](https://community.topst.ai/t/ai-g-convert/1054/3 "2026-07-28T04:17:56Z")

</div>

안녕하세요.  
yolo 모델의 경우 후처리단에서 지원하지 않는 레이어가 존재합니다.  
때문에 해당 레이러를 제거하는 작업을 거쳐야하며 컴파일러의 tc-nn-toolkit/input\_networks 해당 경로에 존재하는 export\_yolo\_onnx.sh, extract\_yolo\_onnx.sh, gen\_yolo\_defaultbox.sh 3가지 스크립트를 사용하여 yolo 변환을 위한 onnx파일과 bin 파일을 만드셔야합니다.  
이후에 변환 명령어는 다음과 같습니다.

python EnlightSDK/converter.py ./input\_networks/yolov8s\_extracted.onnx \​  
--type obj \​  
--add-detection-post-process ./input\_networks/yolov8s.bin \​  
--dataset Custom --dataset-root my\_dataset\_path \​  
--output ./output\_networks/yolov8s.enlight \​  
--enable-track --mean 0 0 0 --std 1 1 1 \​  
--num-class 80 --yolo-version v8 --enable-letterbox --dfl-reg-max 16 \​  
--output-order cl  
진행하시고 막히시면 다시 댓글 남겨주시면 빠르게 도와드릴게요.  
감사합니다.
