본문으로 건너뛰기

Grounding-DINO를 DeepStream에 통합한 구현과 실시간 프롬프트 처리

이 구현은 Grounding-DINO의 이미지와 다섯 개 텍스트 입력을 하나의 텐서로 패킹하고 실시간 토크나이저 플러그인과 FIFO 제어 파일, 클래스 비종속 NMS 기반 bbox 파서를 결합해 DeepStream에서 open-vocab VLM을 동작시킨 오픈소스 파이프라인이다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

이 프로젝트는 Grounding-DINO가 요구하는 이미지와 다섯 개의 텍스트 텐서를 DeepStream의 단일 텐서 경로 제약 하에서 운용하기 위해 ONNX 그래프를 편집하여 모든 입력을 하나의 packed 텐서로 합치고 그래프 내부에서 split 전처리를 수행한 구현이다. 실시간으로 프롬프트를 토크나이즈해 매 배치 packed 텐서에 쓰는 custom nvdspreprocess 플러그인과 FIFO 제어 파일을 통해 클래스 변경 시 파이프라인 재시작 없이 새로운 질의를 반영하도록 구성했다. pred_logits와 pred_boxes를 디코딩하는 custom bbox 파서는 class-agnostic NMS를 적용하여 일관된 박스 출력을 생성하며, 동일 파이프라인에서 NVIDIA TAO의 상용 체크포인트와 IDEA-Research의 SwinT-OGC 체크포인트를 교체해 실행할 수 있도록 지원한다. 구현은 오픈소스 코드와 스크린샷을 제공하므로 엣지 디바이스에서의 성능·지연·토크나이저 비용에 대한 벤치마크와 최적화 피드백을 요청하고 있다.

실용적 조언

  • ONNX 그래프를 직접 편집하여 다중 입력을 하나의 packed 텐서로 합치는 방식은 DeepStream의 단일 텐서 경로 제약을 우회하는 현실적 방법이다. 이 접근은 런타임에 별도 입력 채널을 추가하지 않으면서도 모델이 요구하는 입력 레이아웃을 보존하므로 파이프라인 재설계 비용을 줄인다. 다만 ONNX 조작 후 그래프 일관성과 성능 영향은 벤치마크로 검증해야 한다.
  • 실시간 프롬프트 업데이트를 위해 FIFO 제어 파일과 nvdspreprocess 플러그인을 결합하면 파이프라인 재시작 없이 클래스 집합을 교체할 수 있다. 이 방식은 운영 편의성을 높이지만 배치별 토크나이저 처리 비용과 I/O 지연이 늘어날 수 있어 엣지 환경에서는 토크나이저 최적화나 배치 전략을 같이 고려해야 한다. 따라서 프롬프트 갱신 빈도에 따른 처리량·지연 측정이 권장된다.
  • 예측 출력의 안정적 디코딩을 위해 class-agnostic NMS를 적용한 custom bbox 파서를 사용하는 것은 open-vocab 설정에서 중복 박스 처리를 단순화하는 효과가 있다. 이 방법은 클래스별 NMS로 인한 불일치를 제거하므로 동적으로 바뀌는 클래스 집합에서 일관된 박스 출력을 확보하는 데 유리하다. 다만 score calibration이나 텍스트-임베딩 매칭 정확도에 따라 최종 품질이 달라지므로 후처리 파라미터 튜닝이 필요하다.

섹션별 상세

01
원문 작성자는 Grounding-DINO가 이미지와 다섯 개의 텍스트 텐서를 입력으로 요구하는 반면 DeepStream의 Gst-nvinfer 텐서 경로는 단일 텐서만 운반할 수 있다는 근본적 불일치를 문제로 제기했다. 이 제약을 해결하기 위해 ONNX 그래프를 직접 편집하여 모든 입력을 하나의 packed 텐서에 합치고 그래프 내부에서 split 전처리(preamble)를 수행하도록 구성했다. 구체적 구현으로서 ONNX 조작을 통해 런타임에 별도의 입력 채널을 추가하지 않고도 모델이 기대하는 다중 입력 구조를 재현했다. 이 방식은 DeepStream의 기존 텐서 파이프라인 제약을 우회하면서 모델 입력 호환성을 확보하는 실무적 해법으로 제시됐다.
02
라이브 프롬프트 처리를 위해 custom nvdspreprocess 플러그인을 도입하여 사용자로부터 주어진 텍스트 프롬프트를 실시간으로 토크나이즈하고 매 배치마다 packed 텐서의 해당 영역에 기록하는 방식을 채택했다. 프롬프트 변경을 위해서는 FIFO 제어 파일을 사용하여 쉘 명령으로 새로운 클래스 문자열을 에코하면 다음 프레임부터 해당 클래스에 대해 탐지가 수행되도록 설계했다. 이 구현은 파이프라인 재시작 없이 클래스 집합을 동적으로 갱신할 수 있게 하여 운영 편의성을 높였고, 원문에는 echo 예시(`/tmp/gdino_prompt`)가 제공되어 재현 가능성을 높였다. 실시간 토크나이저와 FIFO 제어의 결합은 스트리밍 환경에서 open-vocab 질의를 효율적으로 반영하는 실행 가능한 방법으로 나타났다.
03
출력 디코딩 측면에서는 pred_logits와 pred_boxes를 파싱하는 custom bbox 파서를 도입했고, 여기에서 class-agnostic NMS를 적용하여 중복 박스를 제거하도록 처리했다. 이 파서는 모델의 raw 출력(로그잇스와 박스 좌표)을 받아 텍스트 조건과의 매칭 결과를 기준으로 점수화하고 NMS로 최종 박스 세트를 생성하는 역할을 수행하며, 구현은 클래스가 동적으로 변하는 open-vocab 환경에 적합한 흐름을 따른다. 파이프라인은 두 가지 백엔드를 교체 가능하게 지원하는데, 하나는 NVIDIA TAO의 Grounding-DINO 상용 버전이며 다른 하나는 IDEA-Research의 SwinT-OGC 체크포인트로 동일한 파이프라인에서 실행되도록 구성되었다. 이 설계는 상용·연구용 체크포인트를 같은 전처리·후처리 파이프라인으로 시험할 수 있는 유연성을 제공한다.
탐지 출력이 오버레이된 스크린샷으로, 토마토와 손에 대해 바운딩 박스와 클래스 텍스트가 표시되어 있다.
Screenshot이 이미지는 모델이 실세계 장면에서 open-vocab 질의에 따라 객체를 감지하고 박스를 반환하는 결과를 시각적으로 입증한다. pred_logits/pred_boxes의 후처리 결과로서 NMS와 텍스트 매칭이 결합된 출력이 어떻게 보이는지 확인할 수 있어 구현한 bbox 파서의 효과를 직관적으로 보여준다. 따라서 파이프라인의 작동 증거로 활용될 수 있으며 디버깅 및 품질 평가에 유용하다.
같은 장면의 대체 해상도 스크린샷으로, 바운딩 박스와 클래스 레이블 오버레이가 포함되어 있다.
Screenshot두 번째 이미지는 첫 번째와 동일한 검출 결과의 다른 해상도 버전으로, 모델이 다양한 스케일에서 안정적으로 박스를 출력하는지 시각적으로 확인할 수 있다. 이 자료는 박스 위치와 크기, 레이블 일관성을 검토하는 데 도움이 되며 방법론의 실무 적용 가능성을 판단하는 근거로 쓰일 수 있다. 원문이 주장하는 실시간 탐지 흐름과 일치하는 시각적 증거를 제공한다.
04
원문 작성자는 특히 엣지 디바이스에서 open-vocab/ VLM 기반 탐지기를 배포한 경험을 가진 사람들에게 피드백을 요청했다. 구현은 ONNX 기반 그래프 수정과 DeepStream 플러그인 개발, FIFO를 이용한 런타임 제어 등 여러 실무적 트레이드오프를 포함하므로 엣지 메모리·레イ턴시 관점에서의 성능 특성, 토크나이저 처리 비용, 배치당 프롬프트 갱신 빈도 같은 운영적 고려가 중요하다고 예측된다. 원문은 재현 가능한 코드 링크와 구현 세부를 제공했으므로 동일 환경에서의 벤치마크 공유나 최적화 제안이 도움이 된다는 요지를 드러냈다.

용어 해설

오픈 보캡 탐지(Open-Vocabulary Detection)
레이블 집합에 제한되지 않고 자연어 질의를 통해 새로운 객체 클래스를 인식하는 탐지 접근법으로, 이미지와 텍스트 입력을 결합하여 텍스트 조건에 맞는 박스와 점수를 출력한다. 이 방식은 모델 입력에 텍스트 텐서를 포함하고, 예측된 pred_logits를 텍스트 임베딩과 비교하는 과정을 거쳐 동작한다. 프로젝트 맥락에서는 Grounding-DINO와 같은 VLM을 Edge 스트리밍 파이프라인에서 실시간으로 구동하는 문제가 핵심이다.
클래스 비종속 NMS(Class-Agnostic NMS)
모든 클래스 예측을 하나의 집합으로 간주하여 중복 박스를 제거하는 비최대 억제 방식으로, 클래스별 처리 대신 전체 예측을 기준으로 IOU 임계값을 적용한다. 클래스가 많거나 open-vocab 환경처럼 동적으로 클래스가 바뀌는 상황에서 중복 제거 일관성을 유지하는 데 유리하다. 이 구현에서는 pred_logits/pred_boxes 디코딩 이후 일관된 박스 출력을 얻기 위해 사용됐다.
ONNX 분절 조작(ONNX Surgery)
ONNX 그래프를 직접 편집하여 모델의 입력·출력 구조를 변경하거나 텐서 레이아웃을 재구성하는 기법으로, 런타임 제약을 우회할 때 사용된다. 여기서는 다중 입력(이미지 + 5개의 텍스트 텐서)을 하나의 packed 텐서로 합치고 그래프 안에서 split 전처리를 넣기 위해 적용됐다. DeepStream의 단일 텐서 경로 제약을 해결하기 위한 핵심 구현 단계였다.

언급된 도구

Grounding-DINO중립

open-vocab object detection을 수행하는 비전-라벨링 모델

DeepStream중립

비디오 스트리밍 환경에서 모델 추론을 수행하는 NVIDIA 기반 파이프라인 프레임워크

ONNX중립

모델 그래프를 변형하고 런타임 호환성을 확보하기 위한 중간 표현 포맷

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 06. 12.수집 2026. 06. 28.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.