Deepstream 6.0 유동인구 분석 예제
NVIDIA Xavier NX devkit 에서 Deepstream 6.0 를 이용하여 유동인구를 분석할 수 있는 예제를 실행해본다.
Deepstream 이 관한 개발환경은 아래 포스팅을 참고한다.
2022.07.10 - [NVIDIA Jeston/Deepstream] - Deepstream 처음 설치하고 실행하기
2022.07.13 - [NVIDIA Jeston/Deepstream] - Deepstream graphviz dot 그래프를 이용한 시각화
2022.07.13 - [NVIDIA Jeston/Deepstream] - Deepstream 오브젝트 트래커 예제 실행하기
이 예제에서는 <엔비디아>에서 제공하는 deepstream-occupancy-analytic 모델과 <한국지능 정보 사회진흥원>에서 제작한 "유동 인구 분석을 위한 CCTV 영상" 데이터셋을 사용하였다.
엔비디아 deepstream-occupancy-analytic
NVIDIA Xavier NX devkit 에서 Deepstream 6.0 설치는 아래 포스팅을 참고한다.
2022.07.10 - [임베디드 컴퓨팅/nVidia Jetson] - [Jetson] Deepstream 6.0 설치하기
deepstream-occupancy-analytic 모델 다운로드
README.md 에 의하면 model.sh 를 실행하여 peoplenet.zip 를 다운로드하라고 되어있다. 2022년 7월 기준으로 model.sh 의 download link 에서 다운로드 되지 않는다. 아래의 경로에서 수동으로 다운로드 한다.
https://catalog.ngc.nvidia.com/orgs/nvidia/models/tlt_peoplenet
deepstream-occupancy-analytic 빌드하기
deepstream-occupancy-analytic 예제는 NVIDIA Deepstream SDK, Transfer Learning Toolkit(TLT) 및 사전 훈련된 모델 (Peoplenet) 을 사용하여 건물에 출입하는 사람을 계산하기 위한 샘플 어플리케이션이다.
어플리케이션을 실행하기 위해 deepstream 설치 위치에 deepstream-occupancy-analytic 을 복제한다.
$ cd /opt/nvidia/deepstream/deepstream-6.0/sources/apps/sample_apps
$ git clone $ https://github.com/NVIDIA-AI-IOT/deepstream-occupancy-analytics.git
Deepstream 6.0 에서 테스트하기 위해 ds_6.0 브랜치로 체크아웃 한다.
$ git checkout ds_6.0
$ git branch
* ds_6.0
master
테스트를 위해 deepstream-occupancy-analytic 의 message brocker 를 disable 한다.
$ git diff config/test5_config_file_src_infer_tlt.txt
diff --git a/config/test5_config_file_src_infer_tlt.txt b/config/test5_config_file_src_infer_tlt.txt
index 2a8cc2e..2243011 100644
--- a/config/test5_config_file_src_infer_tlt.txt
+++ b/config/test5_config_file_src_infer_tlt.txt
@@ -91,7 +91,7 @@ output-file=resnet.mp4
source-id=0
[sink1]
-enable=1
+enable=0
#Type - 1=FakeSink 2=EglSink 3=File 4=UDPSink 5=nvoverlaysink 6=MsgConvBroker
type=6
msg-conv-config=dstest5_msgconv_sample_config.txt
Deepstream 6.0 으로 빌드할 경우, meta message 의 일부 field 가 빠져서 build error 가 발생한다. 어플리케이션에서 build error 발생하는 부분을 임시 삭제한다.
$ git diff deepstream_test5_app_main.c
diff --git a/deepstream_test5_app_main.c b/deepstream_test5_app_main.c
index bb0d985..5f5d2f0 100644
--- a/deepstream_test5_app_main.c
+++ b/deepstream_test5_app_main.c
@@ -311,7 +311,7 @@ meta_copy_func (gpointer data, gpointer user_data)
}
}
- g_print(" %s %d source id: %d, Enter: %d, Exit: %d\n",__func__,__LINE__, dstMeta->source_id, dstMeta->lccum_cnt_entry, dstMeta->lccum_cnt_exit);
+// g_print(" %s %d source id: %d, Enter: %d, Exit: %d\n",__func__,__LINE__, dstMeta->source_id, dstMeta->lccum_cnt_entry, dstMeta->lccum_cnt_exit);
return dstMeta;
}
@@ -410,10 +410,10 @@ generate_event_msg_meta (gpointer data, gint class_id, gboolean useTs,
meta->type = NVDS_EVENT_ENTRY;
meta->objType = NVDS_OBJECT_TYPE_PERSON;
meta->objClassId = PERSON_ID;
- meta->occupancy = obj_params->lccum_cnt;
- meta->lccum_cnt_entry = obj_params->lcc_cnt_entry;
- meta->lccum_cnt_exit = obj_params->lcc_cnt_exit ;
- meta->source_id = obj_params->source_id;
+// meta->occupancy = obj_params->lccum_cnt;
+// meta->lccum_cnt_entry = obj_params->lcc_cnt_entry;
+// meta->lccum_cnt_exit = obj_params->lcc_cnt_exit ;
+// meta->source_id = obj_params->source_id;
// g_print("source id: %d, Enter: %d, Exit: %d\n", meta->source_id, meta->lccum_cnt_entry, meta->lccum_cnt_exit);
}
터미널에서 CUDA_VER=10.2 와 함께 make 를 실행한다.
$ sudo CUDA_VER=10.2 make
deepstream-occupancy-analytic 실행하기
터미널에서 다음 명령어로 어플리케이션을 실행한다.
$ ./deepstream-test5-analytics -c config/test5_config_file_src_infer_tlt.txt
txt 파일의 uri 를 수정하면 입력되는 비디오 영상을 변경할 수 있다.
$ git diff config/test5_config_file_src_infer_tlt.txt
diff --git a/config/test5_config_file_src_infer_tlt.txt b/config/test5_config_file_src_infer_tlt.txt
index 2a8cc2e..2243011 100644
--- a/config/test5_config_file_src_infer_tlt.txt
+++ b/config/test5_config_file_src_infer_tlt.txt
@@ -53,7 +53,7 @@ nvbuf-memory-type=0
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=3
-uri=file:///opt/nvidia/deepstream/deepstream-6.0/samples/streams/sample_1080p_h264.mp4
+uri=file:///home/nvidia/2021-09-09_14-45-00_thu_sunny_out_ye-ma_CD0001.mp4
num-sources=1
gpu-id=0
nvbuf-memory-type=0
deepstream-occupancy-analytic 실행화면
<한국지능 정보 사회진흥원>에서 제작한 "유동 인구 분석을 위한 CCTV 영상" 데이터셋을 사용하였다.
- 2021-09-08_14-30-00_wed_sunny_out_se-yk_C12-0306_고2.mp4
- 2021-09-09_14-45-00_thu_sunny_out_ye-ma_CD0001.mp4
- 2021-09-09_16-30-00_thu_sunny_out_ye-ma_CD0002.mp4
2021-09-09_16-30-00_thu_sunny_out_ye-ma_CD0002.mp4 실행화면
2021-09-09_14-45-00_thu_sunny_out_ye-ma_CD0001.mp4 실행화면
2021-09-08_14-30-00_wed_sunny_out_se-yk_C12-0306_고2.mp4 실행화면
참고자료
본 예제에 사용된 deepstream-occupancy-analytic 모델은 아래 github 를 참고한다.
https://github.com/NVIDIA-AI-IOT/deepstream-occupancy-analytics
본 예제에서 사용된 <한국지능 정보 사회진흥원>에서 제작한 "유동 인구 분석을 위한 CCTV 영상" 데이터셋은 아래 link 를 참고한다.
https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100
Deepstream 이 관한 개발환경은 아래 포스팅을 참고한다.
2022.07.10 - [NVIDIA Jeston/Deepstream] - Deepstream 처음 설치하고 실행하기
2022.07.13 - [NVIDIA Jeston/Deepstream] - Deepstream graphviz dot 그래프를 이용한 시각화
2022.07.13 - [NVIDIA Jeston/Deepstream] - Deepstream 오브젝트 트래커 예제 실행하기
'NVIDIA Jeston > Deepstream' 카테고리의 다른 글
NVIDIA Jeston deepstream RTSP 수신 (0) | 2022.08.03 |
---|---|
UDP sink 를 이용한 Deepstream RTSP 출력 (0) | 2022.07.21 |
딥스트림 입력 소스를 V4L2 카메라로 변경하는 방법 (0) | 2022.07.17 |
Deepstream Test1 객체 검출결과 RTSP 전송 (0) | 2022.07.17 |
Deepstream 오브젝트 트래커 예제 실행하기 (0) | 2022.07.13 |
Deepstream graphviz dot 그래프를 이용한 시각화 (0) | 2022.07.13 |
Deepstream 6.0 Yolov2 Yolov3 예제 실행하기 (0) | 2022.07.11 |
Deepstream 처음 설치하고 실행하기 (1) | 2022.07.10 |