1. DeepStream의 프로세스: 실시간 AI 영상 분석의 핵심

2025. 1. 3. 11:49DeepStream

출처) NVIDIA DeepStream

 

저번 글에서는 왜 DeepStream을 선택해야 하는지에 대해 작성했습니다.

2025.01.03 - [DeepStream] - 0. DeepStream: 왜 선택해야 할까? 다른 프레임워크와의 비교

 

0. DeepStream: 왜 선택해야 할까? 다른 프레임워크와의 비교

AI와 딥러닝 기술의 발전으로, 실시간 비디오 분석은 다양한 산업에서 중요한 역할을 하고 있습니다. NVIDIA의 DeepStream은 이러한 비디오 분석 워크플로우를 지원하는 강력한 툴로 자리 잡았습니다

gapple95.tistory.com

이번 글에서는 DeepStream의 주요 프로세스와 이를 활용한 애플리케이션 개발 방법을 살펴보겠습니다.


0. DeepStream의 특장점

DeepStream은 NVIDIA의 실시간 비디오 스트리밍 분석 프레임워크로, AI와 GPU 기술을 활용하여 효율적인 영상 처리와 분석을 가능하게 합니다.

DeepStream은 모델 개발과 추론 영역을 분리해서 사용하기 때문에, 개발자는 원하는 딥러닝 모델, 전처리 기법 등 프로젝트에 알맞게 사용할 수 있습니다. 개발과는 별개로 추론 프로세스는 계속해서 작동합니다. 단계별 필요한 하드웨어 자원을 적용할 수 있으며, 원한다면 사용을 안 할 수도 있습니다. 이는 DeepStream은 블록 단위로 프로세스를 나눠서 진행하기 때문에 가능한 일입니다.


1. DeepStream의 기본 구성 요소

DeepStream은 NVIDIA의 GStreamer 기반 멀티미디어 프레임워크를 확장하여 설계되었습니다. 이를 통해 다양한 입력 데이터 형식과 AI 모델을 결합한 실시간 스트리밍 분석이 가능합니다. 주요 구성 요소는 다음과 같습니다.

  • Source: 비디오 데이터의 입력을 담당하며, 카메라 스트림, 파일, RTSP 등 다양한 입력 소스를 지원합니다.
  • Decoder: 입력 데이터를 압축 해제하여 프레임 단위로 변환합니다.
  • Pre-Processing: 영상 데이터를 AI 모델에 입력하기 전에 전처리 작업을 수행합니다.
  • Inference: TensorRT를 통해 딥러닝 모델을 실행하여 객체 감지, 분류, 세그멘테이션 등 다양한 분석 작업을 수행합니다.
  • Post-Processing: 모델의 추론 결과를 정리 및 시각화하여 사용자에게 전달합니다.
  • Sink: 분석 결과를 출력하거나 다른 시스템으로 전송합니다. 출력 형식으로는 화면 디스플레이, 파일 저장, 메시지 큐 전송 등이 있습니다.

2. DeepStream의 데이터 파이프라인

DeepStream의 데이터 파이프라인은 비디오 데이터를 단계적으로 처리하여 분석 결과를 생성합니다. 각 단계는 아래와 같이 구성됩니다.

 

1) 데이터 수집

다양한 소스에서 실시간 비디오 데이터를 수집합니다. 예를 들어, 카메라에서 RTSP 스트림을 가져오거나 로컬 파일에서 데이터를 로드할 수 있습니다.

 

2) 디코딩

수집된 데이터는 압축된 비디오 형식으로 되어 있으므로, H.264, H.265와 같은 코덱으로 디코딩됩니다. NVIDIA GPU의 하드웨어 디코더를 사용하여 속도를 최적화할 수 있습니다.

 

3) 전처리

AI 모델에 적합한 형식으로 데이터를 변환합니다. 전처리 작업에는 리사이징, 정규화, 채널 변환 등이 포함됩니다.

 

4) 추론(Inference)

TensorRT가 통합되어 AI 모델을 GPU에서 고속 실행합니다. 여기서 YOLO, SSD, Faster R-CNN 같은 딥러닝 모델을 사용하여 객체를 감지하거나 분류합니다.

 

5) 후처리

추론 결과를 필터링하거나 비주얼라이제이션을 통해 사용자 친화적으로 변환합니다. 예를 들어, 감지된 객체에 바운딩 박스를 그리거나 ROI(Region of Interest)를 강조할 수 있습니다.

 

6) 결과 출력

분석 결과를 화면에 표시하거나 메시지 브로커(Kafka, MQTT 등)을 통해 다른 시스템으로 전송합니다. 클라우드 환경에 데이터를 업로드하는 것도 가능합니다.


3. DeepStream 애플리케이션 개발

DeepStream은 블록 단위로 프로세스를 진행하며, 각 프로세스에 알맞는 conf파일을 적용하여 블록을 정의할 수 있습니다.

정의된 블록들은 DeepStream의 메인 코드에서 로직을 구현할 수 있습니다.

애플리케이션 개발은 다음과 같은 과정으로 진행됩니다:

 

1) 개발 환경 설정

NVIDIA GPU가 장착된 시스템에서 CUDA, TensorRT, DeepStream SDK를 설치합니다.

 

2) AI 모델 준비

NVIDIA TAO에서 필요한 AI 모델을 불러와 사용할 수 있으며, 원하는 AI 모델이 없다면 PyTorch나 TensorFlow에서 학습한 모델을 ONNX 형식으로 변환하고 TensorRT로 최적화합니다.

 

3) 구성 파일 작성

파이프라인의 각 단계(Source, Inference, Sink 등)를 정의하는 구성 파일을 작성합니다.

 

4) 애플리케이션 실행

DeepStream 애플리케이션을 실행하여 실시간 분석 결과를 확인합니다. Python 또는 C++로 사용자 정의 로직을 구현할 수 있습니다.

 

5) 결과 검증 및 배포

결과를 시각적으로 검토하고 필요한 경우 튜닝한 후, 클라우드 또는 엣지 디바이스에 배포합니다.


결론

개인적으로 DeepStream을 공부하면서 느낀 가장 큰 장점은 GPU의 강력한 처리 성능과 다양한 API의 유연성이었습니다. 블록별로 정의를 따로 내리고, 메인 코드에서 로직을 구현하기 때문에 코드 관리에 있어서 매우 용이하고, NVIDIA TAO에서 최적화된 AI 모델을 골라서 사용할 수 있기 때문에 어떠한 프로젝트에서도 좋은 성능을 낼 수 있는 점이 큰 매력으로 다가왔습니다.

다음 글에서는 DeepStream을 적용할 Jetson 설정법에 대해서 작성하겠습니다.

'DeepStream' 카테고리의 다른 글

0. DeepStream: 왜 선택해야 할까?  (9) 2025.01.03