NVIDIA® 비전 프로그래밍 인터페이스(VPI) 는 NVIDIA 임베디드 및 개별 장치에서 사용할 수있는 여러 컴퓨팅 하드웨어 플랫폼에서 컴퓨터 비전(CV) 및 이미지 처리(IP) 알고리즘을 구현하는 소프트웨어 라이브러리입니다.
VPI는 백엔드라고하는 다양한 하드웨어 가속기에서 원활하게 실행할 수있는 컴퓨터비전 및 이미지처리 알고리즘 모음을 제공하는 소프트웨어 라이브러리입니다. VPI의 목표는 고성능을 유지하면서 컴퓨팅 백엔드에 균일 한 인터페이스를 제공하는 것입니다. 이는 기본 하드웨어와 그것이 조작하는 데이터의 얇고 성능이 뛰어난 소프트웨어 추상화를 노출함으로써 달성됩니다. 이 다이어그램은 VPI의 아키텍처를 보여줍니다. API는 초기화 단계에서 개체 할당 및 설정이 이루어지는 패러다임을 따릅니다. 다음은 초기화 중에 생성 된 객체를 사용하여 주요 처리가 발생하는 애플리케이션 루프입니다. 주 처리가 완료되면 생성 된 개체가 파괴되고 환경이 정리됩니다. 시간과 공간 모두에서 메모리 할당이 제한되는 임베디드 리소스 제약 환경에서는 VPI에서 제공하는 메모리 할당 및 수명에 대한 제어가 유용합니다.
VPI의 핵심 구성 요소는 다음과 같습니다.
- 알고리즘 : 분리할수 없는 컴퓨팅 작업을 말합니다.
- 백엔드 : 실제 계산을 담당하는 하드웨어 엔진입니다.
- 스트림 : 알고리즘이 실행되어지고 궁극적으로 주어진 백엔드에서 순차적으로 실행되는 비동기 대기열 역할을합니다. 스트림과 이벤트는 컴퓨팅 파이프 라인의 구성 요소입니다.
- 버퍼 : 입력과 출력 데이터를 저장합니다.
- 이벤트 : 스트림 또는 애플리케이션 스레드간에 동기화 기본 요소를 제공합니다.
- 컨텍스트 : VPI 및 생성 된 개체의 상태를 유지합니다.
제공된 샘플 애플리케이션과 실행 방법에 대한 지침은 다음과 같습니다.
- VPI-1.0 웨비나: https://youtu.be/vfOAvpS5Y7M
- VPI-1.0 웨비나 슬라이드: https://github.com/jugfk/NVIDIA_VPI-1.0-samples/raw/main/assets/vpi_webinar_202102.pdf
- VPI-1.0 영문 동영상: https://youtu.be/vfOAvpS5Y7M