본문 바로가기
NVIDIA Jeston/Deepstream

딥스트림 입력 소스를 V4L2 카메라로 변경하는 방법

by makepluscode 2022. 7. 17.
반응형

엔비디아 딥스트림 Deepstream 6.0 입력 소스를 카메라로 변경하는 방법

NVIDIA Xavier NX devkit 에서 Deepstream 6.0 의 입력 소스를 filesrc 가 아닌 카메라, v4l2 로 변경하는 방법을 테스트하고 정리한다.

이 예제에서 사용된 환경은 아래 포스팅을 참고한다.

2022.07.10 - [NVIDIA Jeston/Deepstream] - Deepstream 처음 설치하고 실행하기

2022.07.15 - [NVIDIA Jeston/Deepstream] - Deepstream 를 이용하여 유동인구를 분석해보자!

Deepstream 입력소스 변경

테스트 환경

  • NVIDIA Xavier NX devkit (16G emmc module)
  • nvme ssd root file system 사용
  • Jetpack 4.6 (L4T R32.6.1)
  • Camera (mipi type) x 2ea

예제 설명

이 예제에서 사용된 환경은 deepstream-occupancy-analytic 예제이다. 이 예제는 NVIDIA Deepstream SDK, Transfer Learning Toolkit(TLT) 및 사전 훈련된 모델 (Peoplenet) 을 사용하여 건물에 출입하는 사람을 계산하기 위한 샘플 어플리케이션으로 peoplenet 이라는 모델을 사용한다.

코드수정

Deepstream 어플리케이션의 config 파일을 수정 해야한다. (config 파일의 각 group 은 아래 문서를 참고하자.)

https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_ref_app_deepstream.html#configuration-groups

 

DeepStream Reference Application - deepstream-app — DeepStream 6.1 Release documentation

The [nvds-analytics] group is for adding nvds-analytics plugin in the pipeline. Note See the DeepStream Plugin Guide for plugin-specific configuration file specifications (for the Gst-nvdspreprocess, Gst-nvinfer, Gst-nvtracker, Gst-nvdewarper, Gst-nvmsgcon

docs.nvidia.com

이 어플리케이션은 기존 h.264 filesrc 를 사용했으며, 카메라로 입력을 받기 위해 기존의 filesrc source 는 enable=0 로 처리하고, 다음 2개의 source 를 config 파일 (test5_config_file_src_infer_tlt.txt) 에 추가하였다.

[source3]
enable=1
num-sources=2
type=1
camera-width=1920
camera-height=1080
camera-fps-n=65
camera-fps-d=1
camera-csi-sensor-id=1
camera-v4l2-dev-node=0
drop-frame-interval=5

[source2]
enable=1
num-sources=2
type=1
camera-width=1920
camera-height=1080
camera-fps-n=65
camera-fps-d=1
camera-v4l2-dev-node=1
drop-frame-interval=5

 

추가된 source 가 동시에 화면에 출력될 수 있도록 display 항목에 height 를 늘려준다. (720 px → 1440 px)

[tiled-display]
enable=1
rows=2
columns=1
width=1280
height=1440
gpu-id=0
#(0): nvbuf-mem-default - Default memory allocated, specific to particular platform
#(1): nvbuf-mem-cuda-pinned - Allocate Pinned/Host cuda memory, applicable for Tesla
#(2): nvbuf-mem-cuda-device - Allocate Device cuda memory, applicable for Tesla
#(3): nvbuf-mem-cuda-unified - Allocate Unified cuda memory, applicable for Tesla
#(4): nvbuf-mem-surface-array - Allocate Surface Array memory, applicable for Jetson
nvbuf-memory-type=0

테스트

수정된 config 파일을 참조하여 deepstream-test-analytics 예제를 실행한다.

$ ./deepstream-test5-analytics -c ./config/test5_config_file_src_infer_tlt.txt

NVIDIA Xavier NX devkit 과 2개의 mipi 카메라로 실험하였다.

< Jetson + Deepstream + Object detection >

NVIDIA Xavier NX devkit 에서 작은 피규어로 테스트 했음에도 불구하고 people 은 거의 실시간 (25fps) 정도로 검출하고 있다.

< Jetson + Deepstream + Object detection >

NVIDIA Xavier NX devkit 에서 jtop 으로 측정한 GPU 사용량이다. 약 70~80% 를 사용있다.

< Jetson + Deepstream + Object detection jtop 화면>

NVIDIA Xavier NX devkit 에서 20W 6core 로 세팅하고, jtop 으로 측정한 CPU 사용량이다. 6개의 CPU core 를 약 50~90% 를 사용하고 있었다.

< Jetson + Deepstream + Object detection jtop 화면>

Post-mortem

  1. NVIDIA Xavier NX devkit 에서 Deepstream 6.0 의 입력 소스를 filesrc 가 아닌 카메라, v4l2 로 변경하는 방법을 테스트하였다. Deepsteam 의 config 를 수정하여 mipi camera 2개로 쉽게 변경할 수 있었다.
  2. Deepsteam 의 config 내용을 이해하고 다양한 parameter 수정을 해볼 필요가 있다. 어플리케이션 성능과 관련해서 frame 을 drop 하는 전략도 검토해보자.

참고자료

이 예제를 실행하기 위해 아래 포스팅을 참고한다.

2022.07.10 - [NVIDIA Jeston/Deepstream] - Deepstream 처음 설치하고 실행하기

2022.07.15 - [NVIDIA Jeston/Deepstream] - Deepstream 를 이용하여 유동인구를 분석해보자!

반응형