RK3588S 기반 실시간 YOLOv8n UAV 탐지

RK3588S에서의 고처리량 엣지 추론

Rockchip RK3588S SoC의 세 가지 NPU 코어를 병렬로 활용함으로써, khadas_yolov8n_multithread 파이프라인은 YOLOv8n 추론 처리량을 약 31 FPS에서 46 FPS로 증가시켜 OS08A10 MIPI 카메라 센서의 46 FPS 한계치를 효과적으로 충족합니다. 이 구현을 통해 소프트웨어 파이프라인이 아닌 하드웨어 센서가 실시간 UAV 탐지의 주요 병목 지점이 되도록 보장합니다.

완전한 하드웨어 가속 및 메모리 효율성

모든 무거운 프레임당 작업을 고정 기능 실리콘(fixed-function silicon)으로 오프로딩함으로써, 이 파이프라인은 단일 1080p 스트림에 대해 약 137–152 MB RSS의 일정하고 제한된 메모리 점유율을 달성합니다(이중 스트림의 경우 276–304 MB). 이는 CPU에서 대규모 중간 프레임 버퍼나 스크래치 텐서를 사용할 필요를 없애줍니다.

하드웨어 오프로드 매핑:

  • Capture: Image Signal Processor (ISP)에서 처리됩니다.
  • Color-convert/Resize: Rockchip RGA (Raster Graphic Acceleration) 블록에서 처리됩니다.
  • Inference: NPU에서 처리됩니다.

이러한 낮은 메모리 프로필을 유지하기 위해, 시스템은 프레임당 메모리를 할당하는 대신 재사용되는 사전 할당 버퍼 풀(BufPool)을 사용합니다. 이러한 효율성 덕분에 이 파이프라인은 2 GB RAM만 탑재한 입문용 RK3588S 보드에서도 실행될 수 있습니다.

구성 가능한 멀티 프로세스 아키텍처

소프트웨어는 Unix-domain sockets를 통해 연결된 독립적인 OS 프로세스 체인으로 설계되어 모듈식이고 확장 가능한 데이터 흐름을을 제공합니다. 탐지 결과는 다음 단계를 거칩니다:

  1. Detection: 기본 YOLOv8n 파이프라인.
  2. Tracking: 다중 객체 추적을 위한 ByteTrack 단계(별도 프로세스로 구현됨).
  3. Temporal Features: 시간적 특징을 추출하고 추적 이력을 관리하는 프로세스.
  4. Presence FSM: 객체 존재 여부를 모니터링하는 유한 상태 머신(Finite State Machine).
  5. LLM Summary: Qwen2.5-0.5B 모델에 의해 생성되는 온디맨드 자연어 평가.

LLM을 위한 NPU 리소스 관리

NPU는 공유 리소스이므로, 시스템은 blackout/resume 제어 평면을 구현합니다. 자연어 요약이 필요한 경우, 카메라 파이프라인을 일시적으로 중지하여 Qwen2.5-0.5B LLM을 위해 NPU 전체를 해제함으로써, 요약이 생성된 후 제어권을 다시 비전 파이프라인으로 넘겨주기 전에 요약이 최대 속도로 생성되도록 보장합니다.

기술적 구현 및 배포

이 프로젝트는 Khadas Edge2에서 개발 및 테스트되었으며, RK3588S 하드웨어의 모든 aarch64 Linux 환경을 지원합니다.

빌드 옵션

  • Native Build: build.sh를 사용하여 보드에서 직접 컴파일할 수 있습니다.
  • Cross-Compilation: 제공된 CMake 툴체인을 사용하여 gcc-aarch64-linux-gnug++-aarch64-linux-gnu를 통해 x86-64/WSL 환경을을 지원합니다.

종속성

  • RKNN Runtime: librknnrt v2.3.2
  • RGA Library: librga v1.10.5_[8]

커뮤니티 인사이트 및 토론

프로젝트가 멀티스레딩을 통해 상당한 성능 향상을 보여주지만, 일부 커뮤니티 멤버들은 배치(batching) 방식과 비교했을 때 이 접근 방식에 대해 의문을 제기했습니다.

"More slop again. The way to get more throughput is to bump batch size, not to try and 'multithread' job submits to the NPU as if its a CPU."

이에 대해 저자는 RK3588S 비전 파이프라인의 한계를 조사하기 위해 가능한 많은 작업을 CPU에서 분리하는 것이 주된 목표였다고 설명했습니다. 3-스레드 추론 풀은 NPU 코어당 하나의 RKNN 컨텍스트(rknn_dup_context + rknn_set_core_mask)를 활용하여, 센서의 최대 성능까지 처리량을 끌어올리는 데 성공했습니다.

프로젝트 에코시스템

이 프로젝트는 Rockchip NPU를 위한 광범위한 도구 모음의 일부입니다:

  • RKNN_TRAIN_YOLO: YOLO 모델을 .rknn 형식으로 훈련시키고 내보내는 파이프라인.
  • RKLLM_LLAMA_QWEN: RKLLM (NPU) 또는 llama.cpp (CPU)를 사용하여 RK3588S에서 최적화된 LLM 모델을 실행하는 파이프라인.

Sources