# \[rapa3기\]\[3조\]\[운행정보를 활용한 운전 습관 개선 시스템 개발\] tcnnapp사용에 필요한 yolov8n모델 onnx파일 변환에 관하여 질문 드립니다

**URL:** <https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858>\
**Category:** Projects\
**Created:** [January 30, 2026, 9:42am UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858 "2026-01-30T09:42:56Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![afaa132](https://yyz2.discourse-cdn.com/flex004/user_avatar/community.topst.ai/afaa132/32/919_2.png) [@afaa132](https://community.topst.ai/u/afaa132)\
**Post date:** [January 30, 2026, 9:42am UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/1 "2026-01-30T09:42:56Z")

</div>

안녕하세요, 사전에 커스텀 데이터셋 이용하여 학습한 yolov8n 모델을 이용하여 tcnnapp을 통해 AI-G 보드에서 객체 인식 관련 개발을 진행 중 입니다.  
다만 기존에 생성해둔 .pt 파일 및 .onnx파일을 enlight로 변환하는 것 까지는 진행하였으나, 해당 모델로 추론을 진행했을 때 추론 성능이 매우 안 좋아서, 변환이 잘 진행되지 않은 것 같습니다.

이와 관련해서 여쭙고 싶은 사항이 있습니다.

관련 문서를 보면, 객체 탐지 모델의 경우 convert단계에서 incompatible한 layer는 extract하고 추출된 enlight파일에 --obj 옵션을 인가 하여 --add-detection-post-process 옵션을 넣어야 하는 것으로 이해하였습니다. 그런데 해당 옵션에 첨부할 파일을 어떻게 생성해야 하는 것인지 궁금합니다.

변환 시 사용한 명령어는 다음과 같습니다.

```sh
python ./EnlightSDK/converter.py ./traffic_networks/best_480_3.onnx --type unknown --dataset Custom --dataset-root ./traffic_images/train/ --output ./output_networks/traffic_yolov8n_2.enlight --enable-track --mean 0 0 0 --std 0.0039215 0.0039215 0.0039215 --force-output "Conv2d_41 ___model_22_cv2_0_cv2_0_2_Conv" "Conv2d_42___ model_22_cv3_0_cv3_0_2_Conv" "Conv2d_52 ___model_22_cv2_1_cv2_1_2_Conv" "Conv2d_53___ model_22_cv3_1_cv3_1_2_Conv" "Conv2d_61 ___model_22_cv2_2_cv2_2_2_Conv" "Conv2d_62___ model_22_cv3_2_cv3_2_2_Conv" --num-class 3

```

---

<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:** [February 1, 2026, 1:31am UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/2 "2026-02-01T01:31:02Z")

</div>

안녕하세요 TOPST매니저입니다.  
type옵션은 후처리 타입을 어떤 타입으로 결정하는 옵션입니다. unknown으로 진행하실 경우 build\_network내부에서 custom 타입의 후처리를 선택하여 빌드하게 됩니다. 후처리 빌드 결과물은 net.so이고 해당 파일을 통해 npu앱내부에서 처리하게 됩니다. 기본적인 custom 후처리 파일의 경우 단순하게 출력 텐서를 파악할 수 있도록 출력하는 형태로 제공되고 있어 레이어를 자르신 후 욜로의 텐서들을 모두 출력해야 하기 때문에 성능이 떨어지는것으로 보여지실 수 있습니다.

우선 custom\_postproc라고 하는 후처리 타입내에서 자른 레이어의 추가적인 연산을 직접 구현하셔도 괜찮지만, 저희 toolkit에서 yolo 모델에 대한 후처리를 사전에 제공하고 있기 때문에 관련 문서대로 진행하기 위해서 input\_network/pytorch\_yolo\_input\_generate\_script 디렉터리에 들어가시면  
export\_yolo\_onnx.sh, extract\_yolo\_onnx.sh, gen\_yolo\_defaultbox.sh 3가지 스크립트가 준비되어 있습니다. 각각 욜로 모델을 onnx로 변환, 레이어 추출, 박스 파일 생성 기능을 가지고 있습니다. 해당 스크립트는 yolov m 모델을 위해서 만들어진 스크립트 이므로 내부 파일을 수정하셔서 사용하시면 커스텀 학습한 모델도 사용하실 수 있습니다.

참고로 예시용 yolo 모델 변환 명령어는 다음과 같습니다.  
python ./EnlightSDK/converter.py ./input\_networks/Education/ai\_model/yolov8s\_extracted.onnx   
–type obj \​  
–add-detection-post-process ./input\_networks/Education/ai\_model/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

추가적인 질문이 있으시거나 궁금한 사항이 있으시면 댓글로 남겨주세요!  
감사합니다.

---

<div class="post-metadata">

**Author:** ![afaa132](https://yyz2.discourse-cdn.com/flex004/user_avatar/community.topst.ai/afaa132/32/919_2.png) [@afaa132](https://community.topst.ai/u/afaa132)\
**Post date:** [February 3, 2026, 12:18pm UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/3 "2026-02-03T12:18:37Z")

</div>

답변 감사합니다.  
답변해주신 내용 따라서 onnx 변환하여 network object build 까지 마치고 ai-g 보드에서 tcnnapp 구동까지 성공하였습니다.

다만 input을 동영상 혹은 카메라로 줄 때와, 이미지(동영상에서 png파일 추출)로 줄 때의 추론 결과가 너무나도 차이가 납니다.  
이걸 tcnnapp의 전처리 코드를 수정 하는 것과 카메라를 교체해보는 것 중에 어떤 것이 가장 효과적일지 궁금합니다.

onnx의 enlight변환시 사용한 명령어는 다음과 같습니다.  
python ./EnlightSDK/converter.py ./new\_networks/traffic\_v8m\_modified\_extracted.onnx  
–type obj  
–add-detection-post-process ./input\_networks/traffic\_v8m\_modified\_extracted.bin  
–dataset Custom  
–dataset-root ./traffic\_images/cam\_image/  
–output ./new\_networks/traffic\_v8m\_modified\_extracted.enlight  
–enable-track  
–enable-letterbox  
–mean 0 0 0  
–std 1 1 1  
–num-class 3  
–dfl-reg-max 16  
–yolo-version v8  
–output-order cl

python ./EnlightSDK/quantizer.py  
./new\_networks/traffic\_v8m\_modified\_extracted.enlight  
–output ./output\_quantized/traffic\_v8m\_modified\_quantized.enlight

python ./EnlightSDK/compiler.py  
./output\_quantized/traffic\_v8m\_modified\_quantized.enlight  
–th-iou 0.3  
–th-conf 0.1

---

<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:** [February 3, 2026, 12:31pm UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/4 "2026-02-03T12:31:48Z")

</div>

안녕하세요  
변환에 사용하신 모델파일과 수정하여 학습한 모델 yaml파일 및 커스텀 학습한 데이터정보(어떤 객체를 인식하는지) 까지 제공해주시면 빠르게 확인이 가능할 것 같습니다.  
감사합니다.

---

<div class="post-metadata">

**Author:** ![afaa132](https://yyz2.discourse-cdn.com/flex004/user_avatar/community.topst.ai/afaa132/32/919_2.png) [@afaa132](https://community.topst.ai/u/afaa132)\
**Post date:** [February 3, 2026, 11:49pm UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/5 "2026-02-03T23:49:52Z")

</div>

안녕하세요  
train결과, onnx파일, 학습시 사용한 데이터셋, rtpm으로 test할 때 사용한 영상파일 들 압축한 파일 링크 공유드립니다  
IMX219 카메라 특유의 푸른 기를 고려하여 모델 학습시에 반영해보았으나 큰 영향은 없었습니다

traffic\_yolov8m\_opt2 → yolo모델 학습 결과가 저장된 폴더  
real\_traffic\_sign.mp4 → 실제 신호등 영상  
test\_imx219\_video.mp4 → IMX219 카메라로 촬영한 영상  
Traffic light reconizetion.v4i.yolov8.zip → 훈련 데이터셋  
traffic\_v8m\_modified.onnx → 변환에 사용한 onnx

> **[train\_data\_onnx.zip](https://drive.google.com/file/d/1wLs9qWcMeR3_c2a_EjiDCWj_daBND1KV/view?usp=sharing)**
>
> Google Drive file.

---

<div class="post-metadata">

**Author:** ![afaa132](https://yyz2.discourse-cdn.com/flex004/user_avatar/community.topst.ai/afaa132/32/919_2.png) [@afaa132](https://community.topst.ai/u/afaa132)\
**Post date:** [February 4, 2026, 12:37am UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/6 "2026-02-04T00:37:31Z")

</div>

앞선 링크가 잘못되어 제대로 된 링크로 수정하였습니다  
감사합니다

---

<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:** [February 5, 2026, 2:04am UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/7 "2026-02-05T02:04:41Z")

</div>

안녕하세요.  
동영상, 카메라로 입력을 줄때와 이미지를 입력으로 줄때의 추론 결과가 차이가 나시는 걸까요?  
압축 파일의 동영상 파일이 열리지 않아 확인 한번 부탁드리며, 이미지 추론 시 결과 화면 캡쳐 부탁드립니다.  
또한 모니터의 영상을 카메라로 비추시게 되면 실제 물체를 인식하는게 아니라 성능이 떨어질 수 밖에 없다고 생각됩니다. 이 부분은 테스트 케이스를 수정하시거나 카메라 변경이 효과적일것이라 판단됩니다.  
또한 변환 완료하시고 후처리 빌드까지 완료된 모델 파일도 제공해주시면 감사하겠습니다.

---

<div class="post-metadata">

**Author:** ![afaa132](https://yyz2.discourse-cdn.com/flex004/user_avatar/community.topst.ai/afaa132/32/919_2.png) [@afaa132](https://community.topst.ai/u/afaa132)\
**Post date:** [February 5, 2026, 9:58am UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/8 "2026-02-05T09:58:19Z")

</div>

안녕하세요.

IMX219로 취득한 영상, 노트북 웹캠으로 취득한 영상으로 비교해본 결과,

ISP기능 유무로 인해 추론 결과에 유의미한 차이가 있음을 확인하였고,

모델 자체에는 이상이 없는 것으로 판단하였습니다.

따라서, 혹시 auto exposure(화이트 밸런스 및 색보정)를 위한 tcc-isp-fw를 제공받을 수 있을지 궁금합니다.

아울러 말씀해주셨던 빌드까지 완료된 모델 파일 링크 올립니다.

> **[traffic\_v8s\_quantized.zip](https://drive.google.com/file/d/1tlQikfnR_c8aS4PZY6cRFo3sE6awReqj/view?usp=sharing)**
>
> Google Drive file.

---

<div class="post-metadata">

**Author:** ![su.nam](https://yyz2.discourse-cdn.com/flex004/user_avatar/community.topst.ai/su.nam/32/450_2.png) [@su.nam](https://community.topst.ai/u/su.nam)\
**Post date:** [February 6, 2026, 12:15am UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/9 "2026-02-06T00:15:03Z")

</div>

안녕하새요, 해당 문의에 답변 드립니다.  
auto exposure를 기능하는 tcc-isp-fw는 제공하고 있지 않습니다.  
fine tuning을 하여 릴리즈하였고, 그대로 사용하실 수 밖에 없는 점 양해 부탁드립니다.

궁금한 사항이 있는데요, 현재 IMX219를 빌드한 폴더에서 처음 받은 xml 내용 부탁드립니다.  
{build\_dir}/.repo/mainfests/에 있습니다.  
또한 IMX219를 통해 얻은 이미지 캡처를 부탁 드립니다.  
ISP 적용이 제대로 안되어 색감이 이상하게 나오는지 보려고 합니다.

감사합니다.

---

<div class="post-metadata">

**Author:** ![sunghoon8585](https://yyz2.discourse-cdn.com/flex004/user_avatar/community.topst.ai/sunghoon8585/32/904_2.png) [@sunghoon8585](https://community.topst.ai/u/sunghoon8585)\
**Post date:** [February 14, 2026, 4:02am UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/10 "2026-02-14T04:02:37Z")

</div>

안녕하세요, 프로젝트 준비 등 사유로 늦게 답변드려 죄송합니다.

먼저 라즈베리파이4-usb카메라로 취득한 이미지와, AI-G 보드에 IMX219 카메라로 취득한 이미지를 첨부드립니다. IMX219의 경우 gstreamer 를 통해 YUV2로 취득했습니다.

**라즈베리파이4 + Logitech C920 (파이썬 opencv 패키지 이용)**

 ![rpi4_usbcam](https://canada1.discourse-cdn.com/flex004/uploads/topst/original/1X/8ad16705562010efdab29e4fae5411ed6d1d2f03.jpeg)

\*\*AI-G 보드 + IMX219 (gstreamer 이용)

 ![ai_g_imx219](https://canada1.discourse-cdn.com/flex004/uploads/topst/original/1X/5768a3d43277a23ed472b8be1e9d3db407b18aa6.jpeg)

---

<div class="post-metadata">

**Author:** ![sunghoon8585](https://yyz2.discourse-cdn.com/flex004/user_avatar/community.topst.ai/sunghoon8585/32/904_2.png) [@sunghoon8585](https://community.topst.ai/u/sunghoon8585)\
**Post date:** [February 14, 2026, 4:03am UTC](https://community.topst.ai/t/rapa3-3-tcnnapp-yolov8n-onnx/858/11 "2026-02-14T04:03:52Z")

</div>

이어서 말씀하신 manifests의 xml 파일 공유드립니다

```xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <default revision="develop" remote="topst" sync-j="4"/>
  <remote fetch="https://git.yoctoproject.org" name="yocto" />
  <remote fetch="https://git.openembedded.org" name="openembedded" />
  <remote fetch="https://github.com/topst-development" name="topst" />
  <remote fetch="https://github.com" name="github"/>

  <project remote="yocto" name="poky" path="poky" revision="refs/tags/kirkstone-4.0.17"/>
  <project remote="yocto" name="meta-gplv2" path="poky/meta-gplv2" revision="refs/tags/kirkstone-4.0.17"/>
  <project remote="yocto" name="meta-arm" path="poky/meta-arm" revision="d7b7b6fb6c7c5545e718e44f38853d1718ce5446"/>
  <project remote="yocto" name="meta-lts-mixins" path="poky/meta-lts-mixins" revision="83ce817e19487afa9fd375da687493587f78fbc6"/>
  <project remote="openembedded" name="meta-openembedded" path="poky/meta-openembedded" revision="8bb16533532b6abc2eded7d9961ab2a108fd7a5b"/>
  <project remote="github" name="Igalia/meta-webkit" path="poky/meta-webkit" revision="b1425d0b559bb05e9f704d1db6d53fef8b5e1bdc"/>
  <project remote="github" name="kraj/meta-clang" path="poky/meta-clang" revision="8a1d0a1993040ab9d2fb7259b71e4c9582f5cd17"/>
  <project remote="github" name="OSSystems/meta-browser" path="poky/meta-browser" revision="1f3ccca5678d7cbb221645227ec403aa767c16dd"/>
  <project remote="topst" name="meta-topst-bsp" path="poky/meta-topst-bsp" revision="refs/tags/1.3.0-r01"/>
  <project remote="topst" name="meta-topst" path="poky/meta-topst" revision="refs/tags/1.3.0-r01"/>
  <project remote="topst" name="mktcimg" path="mktcimg"/>
  <project remote="topst" name="tools" path="tools" revision="refs/tags/1.1.0-r02">
    <linkfile dest="easy-setup.sh" src="easy-setup.sh"/>
    <linkfile dest="stitch-fai-d3.sh" src="stitch-fai-d3.sh"/>
    <linkfile dest="stitch-fai-ai.sh" src="stitch-fai-ai.sh"/>
  </project>

</manifest>

```

프로젝트 진행 중 색감 이슈가 의심되어 AI-G보드에 연결된 IMX219에서 취득한 영상으로 1700개 이미지에 대해 라벨링하고 다시 객체인식을 모델을 만들어서 진행하였습니다.

다만 모델을 사용했을 때에도 객체인식이 잘 안됐고, NPU로 공급 되는 픽셀 포맷이 맞지 않은 것 같아 BGRA-\>RGBA로 변환하는 과정을 tc-nn-app 단에서 구현하여 해당 이슈를 해결했습니다.

프로젝트 진행 시 실제 사용한 패치파일은 아래와 같습니다.

```patch
diff --git a/src/NnAppMain.c b/src/NnAppMain.c
index 00c67ab..b4d9501 100644
--- a/src/NnAppMain.c
+++ b/src/NnAppMain.c
@@ -52,7 +52,8 @@
 #define INPUT_RTPM_HEIGHT 720
 #define OUTPUT_RTPM_WIDTH 1280
 #define OUTPUT_RTPM_HEIGHT 720
-#define DEFAULT_TARGET_IP_ADDRESS "192.168.0.8"
+// #define DEFAULT_TARGET_IP_ADDRESS "192.168.0.8"
+#define DEFAULT_TARGET_IP_ADDRESS "192.168.0.123"
 
 #define INTERACTIVE_MODE
 
@@ -930,6 +931,23 @@ static void NnGetFrame(app_context_t *pContext, CameraHandle CameraHandle, Messa
 				break;
 			}
 		}
+
+ // edit !!!
+ if (sizeRet > 0 && pContext->inputImageFormat == IMAGE_FMT_RGBA32) 
+ {
+ uint8_t *pixel = (uint8_t *)pContext->map_base_input;
+ uint32_t total_pixels = pContext->inputWidth * pContext->inputHeight;
+ uint8_t temp;
+
+ for (uint32_t i = 0; i < total_pixels; i++) 
+ {
+ // skip 4 bytes, change 0th(Blue) and 2nd(Red)
+ // BGRA -> RGBA
+ temp = pixel[i * 4 + 0];
+ pixel[i * 4 + 0] = pixel[i * 4 + 2];
+ pixel[i * 4 + 2] = temp;
+ }
+ }
 	}
 	else if(inputMode == INPUT_MODE_FILE)
 	{

```

추가로 tccvin 관련 패키지를 분석해보았을 때 **V4L2\_PIX\_FMT\_RGB32** 로 정의된 픽셀 포맷이 **VIN\_WRAP\_IMG\_FMT\_ARGB8888** 로 정의되어있는데 해당 부분은 아래 파일에 정의되어 있는 것 같습니다.  
`kernel-source/drivers/media/platform/tccvin2/model/vie_wrap/common/vin_wrap_wdma.h` 파일의

```c
#define VIE_WDMACTRL_FMT_ARGB8888	(12U) /* ARGB888 - 4bytes aligned
					       * A[31:24],R[23:16],G[15:8],B[7:0] */

```

주석으로 적으신 비트 순서는 BGRA로 표기되어 있습니다.  
혹시 해당 사유로 인해 tc-nn-app에서 V4L2 표준으로 이미지를 받았을 때 포맷 이슈가 생기는게 맞는지 문의드립니다.

현재 프로젝트가 종료되고 AI-G 보드를 반납하게 되어, 직접 테스트하여 결과 확인을 해보진 못할 것 같습니다.

항상 문의사항 확인해주셔서 감사합니다!
