퀄컴 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 애플리케이션에서 원하는 맞춤화를 개발하기 쉽게 만들어주는 개발자 우선 사고방식의 큰 진전입니다.
기사 태그