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

2025. 5. 4. 00:24·Qualcomm 기업과제

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

테스트 영상

 

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

🔧 속도 측정 알고리즘 개선  (1) 2025.05.21
Rubik Pi 3 프레임 드랍 문제 해결, 멀티스레딩  (2) 2025.05.07
Rubik Pi 3 보드에서 YOLO-NAS로 실시간 객체탐지 시스템 구축기  (0) 2025.04.26
Rubik Pi3 보드에서 객체 탐지 후, 메타데이터 받기  (0) 2025.04.14
Rubik Pi 3에 Yolo v8 detection Quantized모델 올리기  (0) 2025.04.11
'Qualcomm 기업과제' 카테고리의 다른 글
  • 🔧 속도 측정 알고리즘 개선
  • Rubik Pi 3 프레임 드랍 문제 해결, 멀티스레딩
  • Rubik Pi 3 보드에서 YOLO-NAS로 실시간 객체탐지 시스템 구축기
  • Rubik Pi3 보드에서 객체 탐지 후, 메타데이터 받기
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    과속탐지
    스택
    ptrace
    rubikpi3
    Branch
    소수
    Git
    exception vector table
    커널
    thumb2
    commit
    백준
    파일 입출력
    memory mapped io
    INIT
    Qualcomm
    C++
    버퍼
    순환
    aapcs
    arm
    동적메모리
    포인터
    자료구조
    c언어
    rubik pi
    이진 트리
    파이썬
    yolo
    피보나치
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jminu
Rubik Pi 3 - 현재까지 진행 상황
상단으로

티스토리툴바