DeepStream은 C와 Python 두가지 언어 바인딩을 제공한다.
그 중 Python으로 되어있는 예제는 DeepStream-5.1을 설치했어도 따로 받아야한다.
다음 명령어를 DeepStream설치디렉토리 밑의 /sources 폴더로 이동하고 git을 받아온다.
cd /opt/nvidia/deepstream/deepstream-5.1/sources/
git clone <https://github.com/NVIDIA-AI-IOT/deepstream_python_apps>
DeepStream 파이프라인은 GStreamer 프레임워크의 Python 바인딩인 Gst Python을 사용하여 구성할 수 있다. 구성 예제는 sample apps를 통해 확인 할 수 있다.
DeepStream MetaData에는 분석에 사용되는 추론 결과 및 기타 정보가 포함된다. 메타 데이터는 각 파이프라인 요소의 Gst 버퍼에 연결된다. SDK MetaData 라이브러리는 C/C++로 개발되었으며 Python 바인딩을 통해 Python으로 접근할 수 있다. 바인딩은 x86_64 및 Jetson플랫폼에서 사용할수 있게 컴파일되어 pyds.so 모듈로 제공된다. Sample app은 common/utils.py 를 통해 /lib 디렉토리에서 import path를 가져온다. 모듈을 경로에 설치하기 위한 setup.py도 제공한다.
cd /opt/nvidia/deepstream/deepstream/lib
python3 setup.py install
Python 사용은 옵션이므로 SDK 설치시 자동으로 설치되지 않는다. 바인딩은 대부분 C/C++ API와 비슷하지만, Memory Management, String Access, Casting, Callback Function Registration등 몇가지 차이점도 있으니 주의해야된다.
Python 예제들은 deepstream-5.1/sources/deepstream_python_apps/apps/ 폴더 밑에 있다.
그 중 Simple test application 1은 단일 h.264 스트림을 사용한 예제이다.
"Vehicle , RoadSign, TwoWheeler, Person" 4가지 클래스에 대한 Object Detection을 수행한다.
구조는 다음과 같다.
filesrc → decode → nvstreammux → nvinfer (primary detector) → nvdsosd → renderer