Rubik Pi 3에 Yolo v8 detection Quantized모델 올리기

2025. 4. 11. 00:56·Qualcomm 기업과제

보드에서 정상적으로 카메라 스트리밍이 되는 것 까지는 확인을 했다.

그러면 이제, 사용할 욜로 모델을 보드에 올려야한다.

 

https://aihub.qualcomm.com/iot/models/yolov8_det_quantized?searchTerm=yolo&chipsets=QCS6490+%28Proxy%29

 

YOLOv8-Detection-Quantized

Quantized real-time object detection optimized for mobile and edge by Ultralytics.

aihub.qualcomm.com

1. YOLOv8 모델을 사용하기 위한 준비 과정

처음에 모델을 적용하려고 했을 때, 퀄컴의 QCS6490 칩셋을 사용하는 Rubik 보드에서 YOLO 모델을 실행하는 과정에서 여러 가지 문제에 부딪혔다. 과정은 대체로 다음과 같았다:

  • YOLOv8 모델을 불러옴
  • ONNX로 변환 후 모델 컴파일
  • Qualcomm 플랫폼에서 실행 확인
  • DLC 모델을 다운로드
  • .dlc 파일을 Rubik 보드로 전송

2. 퀄컴 AI Hub를 통한 모델 활용

Qualcomm AI Hub에서 제공하는 YOLOv8-Detection-Quantized 모델을 사용하기로 결정했다. 퀄컴 디바이스는 SNPE 런타임을 사용하여 모델을 실행하므로, .dlc 파일 형식으로 모델을 컴파일해야 한다. 이를 통해 최종적으로 .dlc 파일을 얻을 수 있었다.

 

https://aihub.qualcomm.com/get-started

 

Qualcomm AI Hub

The platform for on-device AI, with optimized open source and licensed models, or bring your own. Validate performance on real Qualcomm devices.

aihub.qualcomm.com

여기있는 과정을 따라하면 된다.

 

3. 모델 변환 및 양자화

처음에는 YOLOv8 모델을 다운로드하고, ONNX 형식으로 변환한 후, 양자화(Quantization) 작업을 시도했다. .dlc.tflite가 생성되었지만, 루빅 보드에서 실행할 수 있는 양자화된 모델이 아니어서 에러가 발생했다. 이때 QAI-Hub 0.27 버전에서는 양자화가 지원되지 않아 직접 양자화를 진행하게 되었다.

.dlc얻기 성공
.dlc.tflite가 생김

그리고 .labels 파일을 만들어

대상들을 넣고 저장해준다.

.labels 파일

양자화를 진행한 후, Ruibk보드에 ssh로 전송했지만, 알수없는 에러를 만났고

이를 해결할 수 없을 것 같았다.

4. QIM SDK 사용

양자화 문제를 해결하기 위해, QIM SDK에서 제공하는 검증된 양자화된 모델을 활용하기로 했다. QIM SDK는 이미 양자화가 완료된 YOLO 모델을 제공하고, 이를 활용하여 객체 인식을 성공적으로 수행할 수 있었다.

객체인식에 성공한 모습

5. 모델 실행 및 객체 인식

모델이 정상적으로 실행되고 객체 인식을 진행했을 때, 자동차, 오토바이, 버스와 같은 이동 수단에 대해서만 객체 인식을 수행하고 싶었다. 이를 위해 labels 파일을 수정하면 필요한 객체만 인식하도록 할 수 있었다.

 


6. 결론

처음에는 양자화와 ONNX 변환 등 여러 가지 개념과 과정을 이해하기 위해 삽질을 많이 했다. 하지만, 최종적으로 QIM SDK를 통해 이미 제공되는 양자화된 모델을 사용하여 객체 인식을 성공적으로 완료할 수 있었다. 이렇게 모델을 적용하는 방식과 과정에 대한 기본적인 이해를 얻었다.

다음에 ai프로젝트를 할때 도움이 될 것 같다.

 

교훈: 진작에 제공된 tflite 파일을 사용했다면 많은 시간을 절약했을 것이다. 공식 문서를 자세히 살펴보자.

 

'Qualcomm 기업과제' 카테고리의 다른 글

Rubik Pi 3 프레임 드랍 문제 해결, 멀티스레딩  (2) 2025.05.07
Rubik Pi 3 - 현재까지 진행 상황  (0) 2025.05.04
Rubik Pi 3 보드에서 YOLO-NAS로 실시간 객체탐지 시스템 구축기  (0) 2025.04.26
Rubik Pi3 보드에서 객체 탐지 후, 메타데이터 받기  (0) 2025.04.14
Rubik Pi3 보드로 개발하기  (2) 2025.04.10
'Qualcomm 기업과제' 카테고리의 다른 글
  • Rubik Pi 3 - 현재까지 진행 상황
  • Rubik Pi 3 보드에서 YOLO-NAS로 실시간 객체탐지 시스템 구축기
  • Rubik Pi3 보드에서 객체 탐지 후, 메타데이터 받기
  • Rubik Pi3 보드로 개발하기
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Web
      • Linux
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
      • Qualcomm 기업과제
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    INIT
    rubik pi 3
    가상 주소 공간
    rubikpi3
    Branch
    파일 입출력
    C++
    백준
    Git
    이진 트리
    커널
    스택
    소수
    권머현
    피보나치
    Batch OS
    파이썬
    rubik pi
    commit
    yolo
    c언어
    포인터
    버퍼
    Qualcomm
    동적메모리
    자료구조
    루빅보드
    그래서 컴퓨터는 어떻게 동작하나요?
    순환
    rubikpi
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jminu
Rubik Pi 3에 Yolo v8 detection Quantized모델 올리기
상단으로

티스토리툴바