Qualcomm 기업과제

Rubik Pi 3 - 현재까지 진행 상황

Jminu 2025. 5. 4. 00:24

Rubik Pi 3 보드에서 YOLO기반의 객체 탐지 및 속도 측정 시스템을 개발하고 있다.

어느정도 핵심 기능이 구현되어 중간 경과를 간단히 적어본다.

  • YOLO 모델 구동
  • Rubik Pi 보드 환경 세팅
  • GStreamer 기반 객체 탐지 + Bounding Box + 기타 시각화
  • appsink를 통한 메타데이터 파싱 및 후처리
  • IoU기반 객체 트래킹
  • 중심 좌표 기반 속도 측정
  • 과속 시 스크린샷 촬영 기능

가장 어려웠던 부분

환경 구성과 메타데이터 처리
  • qtimlsnpe, qtimlvdetection 이후의 text/x-raw 포맷을 appsink로 받아오는 과정
  • 바운딩 박스 좌표, 기타 정보 파싱 과정
  • GPU 메모리 포맷 (NV12, GBM, RGB) 호환 문제

이 모든 과정은 커뮤니티에서도 사례가 없었기 때문에,

직접 파이프라인을 작성하여 하나씩 검증해야만 했다.

 

공식 문서가 부족하고 파편화되어 있어, GStreamer의 파이프라인 설정과 메모리포맷 문제로 많이 헤맸다.

특히 text/x-raw 형식으로 메타데이터를 파싱하고, 바운딩박스에 반영하는 작업은 시행착오가 많았다.

커뮤니티에서도, 이 작업을 진행한사람이 아직 없어서 다른 유저들에게 질문을 받기도 하였다.

 

https://community.rubikpi.ai/

 

RUBIK Pi

the first Pi built on Qualcomm AI platforms for developers.

community.rubikpi.ai

루빅보드 커뮤니티이다.

여기서, 내가 겪은 문제점과, 해결방안들을 적극적으로 공유하고, 답변하고 있다.


핵심 로직: 좌표 기반 객체 트래킹

이 시스템에서 가장 중요한 정보는 '좌표'이다.

각 객체가 다음 프레임에서도 동일한 객체인지 판단해야 속도 측정이 가능하기 때문이다.

이를 위해서 IoU(Intersection over Union)방식을 사용했다.

 

IoU는, 바운딩 박스의 겹치는 정도를 기준으로

같은 객체인지 판단하는 정석적인 방법인 듯 하다.

iou = 교집합의 영역 넓이 / 합집합의 영역 넓이

https://www.waytoliah.com/1491

 

mAP, IOU란 + Object Detection 성능 평가 지표의 이해 및 예시

1. IOU (Intersection Over Union) 객체 검출의 정확도를 평가하는 지표. 일반적으로 Object Detection에서 개별 객체(Object)에 대한 검출(Detection)이 성공하였는지를 결정하는 지표로 0~1 사이의 값을 가짐 실제

www.waytoliah.com


속도 측정 로직

프레임간 중심 좌표의 변화량을 초 단위 시간으로 나누어 px/s 단위로 속도를 구한다.

지금은 픽셀 단위이므로, 추후에 보정 계수를 적용해서 실제 속도(km/h)로 변환할 예정이다.


과속 시 스크린샷 저장

이 기능을 만들기 위해서 파이프라인을 다시 수정해야했다.

기존 파이프라인에서, 화면을 출력하는 부분에서 브랜치를 하나 더 나눴다.

qtiqmmfsrc (카메라 입력)
    → qtivtransform (flip-vertical 적용)
    → tee split
        ├── qtimetamux → qtioverlay → waylandsink (화면 출력)
        ├── qtimlvconverter → qtimltflite → qtimlvdetection
                → tee mt
                    ├── metamux (메타데이터 합성용)
                    └── appsink meta_sink (메타데이터 수신, emit-signals=true)
        └── qtivtransform → videoconvert → appsink frame_sink (프레임 캡처용)

전체 적인 프레임 구성도는 이렇다.


https://www.youtube.com/watch?v=Wji8e__3MN4

테스트 영상