보드에서 정상적으로 카메라 스트리밍이 되는 것 까지는 확인을 했다.
그러면 이제, 사용할 욜로 모델을 보드에 올려야한다.
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 버전에서는 양자화가 지원되지 않아 직접 양자화를 진행하게 되었다.
그리고 .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 |