Melody-Zhou/tensorRT_Pro-Vision

This repository is forked from shouxieai/tensorRT_Pro, extending it to support a wide range of vision models with high-performance TensorRT C++ inference.

해결하는 문제

NVIDIA GPU에서 다수의 비전 모델을 배포할 때는 일반적으로 작업별로 별도의 프로젝트를 유지 관리해야 하며, CPU와 GPU 간의 데이터 이동으로 인해 성능이 저하됩니다. 이 프레임워크는 20개 이상의 작업(탐지, 분류, 세그멘테이션, 포즈, 회전 박스, 깊이, OCR, 차선 탐지, 다중 객체 추적)을 단일 C++ 실행 파일에 통합하고 모든 전처리 및 후처리를 GPU에서 실행함으로써 이 문제를 해결합니다.

작동 방식

이 프로젝트는 TensorRT C++ API를 기반으로 구축되었습니다. 모든 모델은 비동기 추론 스켈레톤을 공유하며, 차이점은 전처리 및 후처리뿐입니다. 모델을 ONNX(동적 배치 지원)로 내보내고 워크스페이스 폴더에 배치한 다음, 워크스페이스에서 ./pro 을 실행하기만 하면 됩니다. 프레임워크가 TensorRT 엔진(FP32, FP16 또는 INT8)을 컴파일하고 실행합니다. 전처리(리사이즈, 정규화)와 후처리(디코드, NMS)는 CUDA 커널로 구현되어 데이터가 GPU에 유지됩니다. 또한 필요한 모델을 위한 사용자 지정 TensorRT 플러그인(LayerNorm, DCNv2 등)도 포함되어 있습니다. 새로운 작업을 추가하려면 Infer 인터페이스, preprocess() 및 worker() 함수, 그리고 후처리 CUDA 커널 등 세 가지를 구현하고 main.cpp에 작업을 등록하면 됩니다.

대상 사용자

NVIDIA GPU에서 낮은 지연 시간과 높은 처리량으로 비전 모델을 배포해야 하는 C++ 개발자 및 엔지니어, 특히 여러 가지 비전 작업을 포함하는 제품을 개발하는 분들에게 적합합니다. CUDA, TensorRT 및 Makefile이나 CMake 경로 수정에 익숙해야 합니다. 또한 단일 코드베이스에서 YOLO 변형, OCR, 차선 탐지, 깊이 추정 등을 빠르게 벤치마킹하거나 배포하려는 연구자에게도 유용합니다.

주요 특징

  • 20개 이상의 모델, 단일 실행 파일: 작업 이름으로 전환 가능하며 작업별 프로젝트 유지 관리가 필요 없음.
  • 전체 GPU 파이프라인: 리사이즈, 정규화, 디코드, NMS 및 깊이 리사이즈가 모두 CUDA 커널로 구현되어 CPU↔GPU 왕복을 방지.
  • TensorRT 8.x/10.x 적응형: 조건부 컴파일을 통해 protobuf 없이 두 API 세대 모두 지원.
  • 동적 배치 및 세 가지 정밀도: FP32, FP16, INT8 지원 및 Entropy와 MinMax 캘리브레이터 내장.
  • 모듈식 확장: 작업 추가 시 preprocess(), worker() 및 후처리 커널만 구현하면 됨.
  • 폭넓은 작업 범위: 탐지(YOLOv3–v13, v26, DETR), 분류, 세그멘테이션, 포즈, OBB, 깊이, OCR, 차선, ByteTrack 추적.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트