퀄컴 Linux 샘플 앱 – AI 객체 감지 및 병렬 AI 융합
이 기사에서는 Qualcomm Intelligent Multimedia SDK에서 실시간 스트리밍 객체 감지 및 병렬 센서 융합 기능에 대해 알아봅니다.
자율 드론이 내비게이션 능력에 영향을 미치는 지속적으로 변화하는 변수들 때문에 강력한 AI 처리가 의사결정에 사용됩니다. 이러한 AI 제어 기능은 매우 복잡하기 때문에 구현이 어렵게 느껴질 수 있습니다. 하지만 Qualcomm의 Linux 기반 샘플 애플리케이션은 제품 개발자들에게 시장 진입까지의 시간을 단축시키는 더 빠른 경로를 제공합니다. 이 글에서는 Qualcomm Intelligent Multimedia SDK에 포함된 라이브 스트림 객체 탐지 및 병렬 센서 융합 기능에 대해 알아봅니다. 지난번에는 Qualcomm Intelligent Multimedia SDK의 두 가지 빌딩 블록 샘플 애플리케이션에 대해 설명드렸습니다. 이 SDK는 Qualcomm® Linux® 소프트웨어를 기반으로 하며, 한 번 작성하면 여러 IoT 시스템 온 칩(SoC)에 사용 가능한 배포판입니다. 이번 포스트에서는 SDK에 포함된 22개의 샘플 애플리케이션 중 두 가지를 더 탐구하여 IoT 칩셋용 애플리케이션을 작성할 수 있는 방법을 보여드리겠습니다.
AI를 통해 보기: 실시간 객체 감지
이 명령줄 애플리케이션, gst-ai-object-detection은 카메라에서 실시간 비디오 스트림을 받아 오픈소스 YOLO (You Only Look Once) AI 모델에 전달하여 객체 감지를 수행합니다. 이 애플리케이션은 전용 하드웨어 블록에서 전처리 및 AI 추론을 통해 YOLOV5, YOLOV8 또는 YOLO-Nas를 실행하며, 이를 위해 Snapdragon Neural Processing SDK를 사용합니다. 이후 모델에 기반한 라벨 및 경계 상자 같은 출력값이 오버레이된 프리뷰를 표시합니다. 애플리케이션의 파이프라인은 다음과 같습니다:
- qtiqmmfsrc – 이 gstreamer 플러그인을 사용하여 애플리케이션은 카메라 라이브 스트림을 캡처한 후 tee를 사용하여 스트림을 분리합니다.
- qtimlvconverter – 이 전처리 플러그인은 스트림 데이터에 대해 색상 변환, 다운스케일링/업스케일링 및 정규화와 같은 작업을 수행합니다. 이를 통해 비디오 스트림을 이후 추론을 위해 텐서 스트림으로 변환합니다.
- qtimlsnpe – 이 머신 러닝 추론 플러그인은 스트림에서 객체를 감지하기 위해 YOLO-Nas(기본값), YOLOV8 또는 YOLOV5를 적용합니다. 이는 CPU, GPU 및 DSP 기반 신경 처리 장치(NPU) 하드웨어에서 Snapdragon Neural Processing 런타임을 실행합니다.
- SNPE 런타임은 텐서 스트림에 대해 추론을 수행하고 추론 결과를 포함한 텐서 스트림을 생성합니다.
- qtimlvdetection – 후처리를 위해 이 플러그인은 원하는 결과 수에 임계값을 적용합니다. YOLO-Nas 모듈을 로드하여 후처리를 수행하며, 오버레이를 위해 경계 상자만 포함된 비디오 프레임을 생성하고 해당 프레임을 동영상 구성에 전달합니다.
- qtivcomposer – 이 플러그인은 라이브 카메라 스트림의 프레임 위에 경계 상자와 라벨이 포함된 프레임을 오버레이한 후, 결합된 레이어가 포함된 gst 버퍼를 전달합니다.
- Waylandsink은 수신된 비디오 스트림을 Weston에 제출하며, Weston은 해당 비디오 스트림을 로컬 디스플레이에 렌더링합니다.
카메라 스트림에서 사람을 감지하기 위해 gst-ai-object-detection을 사용하는 예시입니다:
이 애플리케이션은 언제 사용하시겠습니까?
gst-ai-object-detection에는 수십 개의 클래스를 포함하고 있어 사람, 차량, 동물 등과 같은 객체를 감지하고 카메라 프레임에서 위치를 찾는 자체 애플리케이션을 구축할 수 있습니다. 예로는 헬멧, 화재/연기, 침입자 감지가 포함됩니다.
병렬 AI 융합: 라이브 카메라에서 네 가지 AI 추론
이 명령줄 애플리케이션, gst-ai-parallel-inference는 위의 단일 채널 애플리케이션을 확장하여 전용 하드웨어 블록에서 AI 모델의 4채널 병렬 처리를 수행합니다. 객체 탐지 외에도 분류, 포즈 탐지 및 분할 기능이 추가되며, 모든 모델의 출력이 오버레이로 적용된 실시간 카메라 스트림을 축소하여 구성된 미리보기를 표시합니다. 애플리케이션 파이프라인은 아래에 표시된 대로 각 AI 추론을 위한 별도의 흐름을 포함하며, 위의 파이프라인 변형입니다:
- qtiqmmfsrc – 이 gstreamer 플러그인을 사용하여 애플리케이션은 카메라 라이브 스트림을 캡처한 다음, tee를 사용하여 네 개의 병렬 스트림을 생성합니다.
- qtimlvconverter – 이 전처리 플러그인은 스트림 데이터에 대해 색상 변환, 다운/업스케일링 및 정규화를 수행합니다. 영상 스트림을 추론을 위해 나중에 사용할 텐서 스트림으로 변환합니다.
- qtimlsnpe – 이 머신 러닝 추론 플러그인은 객체 감지를 위해 YOLO-Nas를 적용하고 DeepLabv3 를 이미지 분할에 사용합니다. 이 플러그인은 Snapdragon Neural Processing 런타임을 CPU 기반 하드웨어에서 실행합니다.
- qtimltflite – 이 플러그인은 PoseNet 을 활용하여 자세 감지를 수행하고 Inception V3를 사용하여 객체 분류를 실행합니다. 이 플러그인은 CPU, GPU, 및 DSP 기반 신경처리장치(NPU) 하드웨어에서 TFLite 런타임을 실행합니다.
- 후처리는 각 모델마다 다른 플러그인을 사용합니다.
- qtimlvdetection – 객체 감지를 위해 이 플러그인은 원하는 결과 수에 대한 임계값을 적용합니다. YOLO-Nas 후처리 모듈을 로드하며, 바운딩 박스만 포함된 비디오 프레임을 생성하여 오버레이 용도로 사용하고, 그런 다음 이 프레임을 비디오 구성에 전달합니다.
- qtimlvclassification – 분류를 위해 이 플러그인은 원하는 결과 수에 임계값을 적용합니다. Inception V3 후처리 모듈을 로드하여 분류 레이블을 포함한 비디오 프레임(오버레이용)을 생성하고, 이러한 프레임을 비디오 컴포지션에 넘깁니다.
- qtimlvpose – 자세 추정(Pose Estimation)을 위해 이 플러그인은 원하는 결과 수에 대한 임계값을 적용합니다. 다양한 자세 추정 모델을 위한 모듈을 로드할 수 있는 기능을 갖추고 있습니다. 이 사용 사례에서는 PoseNet 모듈을 로드하고, 포즈가 그려진(오버레이용) 비디오 프레임을 생성한 다음, 비디오 합성을 위해 프레임을 전달합니다.
- qtimlvsegmentation – 세분화를 위해 이 플러그인은 수신된 추론 텐서를 이후 멀티미디어 플러그인이 이해할 수 있는 비디오 형식으로 변환합니다.
- qtivcomposer – 이 플러그인은 AI 모델의 프레임을 실시간 카메라 스트림의 프레임 위에 오버레이한 후, 결합된 레이어가 포함된 gst 버퍼를 전달합니다.
- Waylandsink은 수신된 비디오 스트림을 Weston에 제출하여, Weston이 로컬 디스플레이에 비디오 스트림을 렌더링합니다.
여기 gst-ai-parallel-inference에서 렌더링된 비디오 스트림의 예시가 있습니다:
이 애플리케이션을 언제 사용하시겠습니까?
gst-ai-object-detection의 상위 집합으로서 gst-ai-parallel-inference는 카메라 프레임에서 사람, 차량, 동물과 기타 물체 – 심지어 연기와 불까지도 감지할 수 있게 합니다. 자세 감지(pose detection)를 통해, 예를 들어, 사람이 누워 있는지, 앉아 있는지, 서 있는지, 혹은 넘어졌는지를 판단할 수 있습니다. 체육관 트레이너나 요가 강사는 자세 감지를 이용하여 학생이 올바르게 자세를 취하고 있는지 확인할 수 있습니다. 인간공학 애플리케이션은 의자나 책상에서 올바른 자세를 유지하도록 관찰하고 알림을 줄 수 있습니다. 분류 앱의 활용 시나리오로는 제품 분류가 있으며, 세분화(segmentation)의 경우 제조, 의료 및 물류 분야에서 활용할 수 있습니다.
다음 단계
이것들은 Qualcomm Linux를 선보이기 위해 우리가 개발한 두 개의 더 흥미로운 애플리케이션입니다. 이 애플리케이션들과 전체 Qualcomm Intelligent Multimedia SDK 는 오픈 소스를 통해 제공되며, AI와 멀티미디어를 위한 20개의 추가 애플리케이션도 포함되어 있습니다. 이를 활용해 여러분의 애플리케이션에 통합하기 시작할 수 있습니다. Qualcomm Linux는 동일한 소스 코드를 사용하여 여러 IoT 칩셋에서 실행될 수 있도록 설계되었습니다. Qualcomm Intelligent Multimedia SDK는 카메라, 인공지능, 오디오를 포함한 멀티미디어 서브시스템 전체를 API를 통해 개발자에게 공개한 첫 번째 사례입니다. 우리가 오픈 소스에 더 많은 것을 제공하면서, 여러분은 이를 맞춤화하고, 시도하고, 기여할 수 있습니다. 이는 우리가 Linux에서 실행되는 IoT 애플리케이션에서 원하는 맞춤화를 개발하기 쉽게 만들어주는 개발자 우선 사고방식의 큰 진전입니다.
기사 태그