레이블이 NVIDIA-DeepStream인 게시물을 표시합니다. 모든 게시물 표시
레이블이 NVIDIA-DeepStream인 게시물을 표시합니다. 모든 게시물 표시

6/21/2019

DeepStream SDK 1.5 Jetson TX2 TEST ( 에러발생, 호환안됨)

1. Deepstream SDK 1.5 TEST (Jetson TX2)

JetPack 4.2 기준으로 DeepStream 1.5를 설치하여, 테스트를 진행을 했지만, 문제가 발생하여, 아래와 같이 기록한다.
NVIDIA에서 공식적으로 JetPack 4.2에서는 동작이 안된다고 하며, Jetson TX2의 Deepstream SDK 이 추후 제공시 그 때 다시 테스트 해보자.


  • Download 및 설치 

$ scp ./DeepStream_SDK_on_Jetson_1.5_pre-release.tbz2 nvidia@192.168.55.1:~

$ ssh -X nvidia@192.168.55.1   // Jetson USB로 연결됨 

$ cd ~  // Jetson TX2 

$ tar xpvf DeepStream_SDK_on_Jetson_1.5_pre-release.tbz2

$ sudo tar xpvf deepstream_sdk_on_jetson.tbz2 -C /

$ sudo tar xpvf deepstream_sdk_on_jetson_models.tbz2 -C /


$ nvgstiva-app -c ${HOME}/configs/PGIE-FP16-CarType-CarMake-CarColor.txt
libEGL warning: DRI3: failed to query the version
libEGL warning: DRI2: failed to authenticate

(gst-plugin-scanner:14538): GStreamer-WARNING **: 13:59:42.872: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvcaffegie.so': libnvparsers.so.4: cannot open shared object file: No such file or directory
** ERROR: : parse_config_file failed
** ERROR: : Failed to parse config file '/home/jetsontx2/configs/PGIE-FP16-CarType-CarMake-CarColor.txt'
Quitting

(nvgstiva-app:14537): GStreamer-CRITICAL **: 13:59:43.237: gst_element_get_static_pad: assertion 'GST_IS_ELEMENT (element)' failed

(nvgstiva-app:14537): GStreamer-CRITICAL **: 13:59:43.238: gst_pad_send_event: assertion 'GST_IS_PAD (pad)' failed

(nvgstiva-app:14537): GStreamer-CRITICAL **: 13:59:43.338: gst_element_set_state: assertion 'GST_IS_ELEMENT (element)' failed

(nvgstiva-app:14537): GStreamer-CRITICAL **: 13:59:44.237: gst_object_unref: assertion 'object != NULL' failed
App run failed


  • DeepStream 1.5 와 JetPack 4.2 는 호환이 안되며, Jetapck 3.2에서만 동작
JetPack 4.2 기준으로 DeepStream 1.5 호환되지 않는다고 한다.
  https://devtalk.nvidia.com/default/topic/1048781/jetson-tx2/jetpack-4-2-compatibility-with-deepstream-1-5/

6/07/2019

TensorRT 5.0 와 DeepStream 기능

1. TensorRT 와 DeepStream 

DeepStream는 NVIDIA에서 제공하는 Gstreamer의 확장으로, TensorRT의 기능을 포함 Gstreamer기능이라고 생각하면 되겠다.
Gstreamer 에 AI Inference 하기 위해서 별도의 Gstreamer Plugin을 추가하여 개발한 것이다.
DeepStream이 완전지원이 된다면, 사용자는 손쉽게 Gsteamer 처럼 파이프라인만 구축하고 실행을 하면 되기 때문에 상당히 매력적인 기능이다.

현재 Jetson TX2의 경우 JetPack 4.2 용 TensorRT 5.0 의 DeepStream은 아직 제공하고 있지 않으며,  Jetpack 3.2 TensorRT 4.0 기준용 Version로 제공을 하고 있다.
TensorRT 5.0의 경우 Jetson AGX Xavier 에서만 제공하고 있다.


  • Jetson TX2 : DeepStream 1.5 까지 지원 (현재) 
  • Jetson AGX Xavier : DeepStream 3.0 지원  (최근에 지원)


DeepStream SDK Download
  https://developer.nvidia.com/embedded/deepstream-on-jetson-downloads


1.1 Jetson TX2 와 Jetson AGX Xavier 비교 

DeepStream 에서 주요기능은 TensorRT의 역할일 것이며, 나머지는 Gstreamer와 거의 동일하기 때문에 크게 신경을 쓰지 않아도 될 것 같다.

가장 주목해서 봐야할 기능은 DLA(Deep Learning Accelerator)의 기능이 될 것이며, 이것은 TensorRT의 기능이다.
현재 Jetson TX2에서도 TensorRT에서 DLA(gieexec or trtexec)는 지원을 하고 있지만, 아래의 비교를 보면, 
Jetson TX2는 HW 미지원이고 Jetson AGX Xavier는 HW 지원 이다

Jetson AGX Xavier에서 다음으로 봐야할 기능이  Vison Accelerator 일 것 같으며 는  OpenCV or VisionWork처럼 HW적으로 지원해줄 것 같은데,  
아직 써보지 못해서 뭐라고 말은 못하겠다.

기존에 사용되어지는 CUDA기반의 VisionWork/OpenCV가 별도의 엔진이 존재하는 것인지 좀 의문스럽다.

추후 Jetson AGX Xavier를 사용 할 기회가 있다면 사용 해본 후에 관련내용을 다시 정리해보자.
두개의 GPU기능을 보면 차이가 많이나며, Tensor 처리부분도 역시 차이가 많이 난다.

  • Jetson TX2 와  Jetson AGX Xavier 비교 
아래에서 비교해보면 알겠지만, 성능차이가 압도적이다. 
  1. GPU 성능: 아키텍쳐 변경 및 Clock 과 TensorCores ( AI Interence 할 경우)
  2. DL Accelerator:  AI Interence 할 경우, TensorRT 
  3. Vision Accelerator:  비디오 입력시 , 영상처리 

FeatureJetson™ TX2Jetson™ AGX Xavier
GPU256 Core Pascal @ 1.3GHz512 Core Volta @ 1.37GHz
64 Tensor Cores
DL Accelerator-(2x) NVDLA
Vision Accelerator-(2x) 7-way VLIW Processor
CPU6 core Denver and A57 @ 2GHz
(2x) 2MB L2
8 core Carmel ARM CPU @ 2.26GHz
(4x) 2MB L2 + 4MB L3
Memory8GB 128 bit LPDDR4
58.4 GB/s
16GB 256-bit LPDDR4x @ 2133MHz
137 GB/s
Storage32GB eMMC32GB eMMC
Video Encode(2x) 4K @30
HEVC
(4x) 4Kp60 / (8x) 4Kp30
HEVC
Video Decode(2x) 4K @30
12 bit support
(2x) 8Kp30 / (6x) 4Kp60
12 bit support
Camera12 lanes MIPI CSI-2
D-PHY 1.2 30Gbps
16 lanes MIPI CSI-2 | 8 lanes SLVS-EC
D-PHY 40Gbps / C-PHY 109Gbps
PCI Express5 lanes PCIe Gen 2
1x4 + 1x1 | 2x1 + 1x4
16 lanes PCIe Gen 4
1x8 + 1x4 + 1x2 + 2x1
Mechanical50mm x 87mm
400 pin connector
100mm x 87mm
699 pin connector
Power7.5W / 15W10W / 15W / 30W


Jetson Board 비교
  http://connecttech.com/xavier-tx2-comparison/

DeepStream SDK 내용
  http://on-demand.gputechconf.com/gtc-cn/2018/pdf/CH8307.pdf

NVIDIA Tesla T4의 기능소개
상위문서를 보면, NVIDIA T4 가 나오는데,  NGC(Nvidia GPU Cloud)를 이용하여 동작되는 것으로 보면, ARM용은 아니며, x86용 기반으로 동작되는  기기 인 것 같다.
  https://www.nvidia.com/ko-kr/data-center/tesla-t4/


2. DeepStream 의 기능 

전체구조를 보면, 쉽게 IP Camera or 보안장비에 연결되어 RTSP로 영상데이터를 받아 이를 Gstream의 중간 기능에, 
TensorRT(Inference Engine)를 추가하여 영상 분석과 Detection 및 Tracking 기능을 주로 추가하여 합성되는 기능이다.

DeepStream SW의 구조를 봐도 상위 설명과 크게 다르지 않으며, 아래의 구조를 보면 쉽게 이해간다.
주요기능이 TRT(TensorRT)를 어떻게 Gstream PiPe에 효율적으로 넣을 것인가가 핵심기능이 될 것 같다.

개인적으로 문제가 될 부분을 미리 예상해보자면

  1. Toltal Latency 문제 : 파이프라인이 길어져서 발생되는 총 Latency 문제 
  2. Gstream 객체간의 Latency :  즉 Pipe Line에서도 각 객체의 Latency가 다를 것이며, 이에관련된 Buffer 처리문제
  3. TensorRT 적용부분:  Gstream에서 이 부분에서 Buffer문제와 빠른 동작이 요구될터인데, HW적으로 어떻게 지원될지가 궁금하다. 





NVIDIA Deep Stream SDK
  https://developer.nvidia.com/deepstream-sdk


  • NVIDIA Tesla T4 기반의 DeepStream SDK 3.0 
아래의 문서를 보면 상당히 편하게 동작이 되는 것을 알 수 있는지만, 이 기능이 Jetson에도 제공해줄지는 의문이다. (현재 Jetson AGX Xavier에는 SDK 3.0제공)

  https://devblogs.nvidia.com/intelligent-video-analytics-deepstream-sdk-3-0/


  •  DeepStream SDK 2.0 
x86 Server 기반의 DeepStream 기능을 소개한다.
  https://devblogs.nvidia.com/accelerate-video-analytics-deepstream-2/?ncid=so-int-dmsk20ntllh-43648


  • DeepStream 기반의 Github 
  https://github.com/NVIDIA-AI-IOT/deepstream_reference_apps/tree/master/yolo

6/04/2019

TensorRT 5.0 Multimedia-Sample

1. TensorRT 5.0 와 Multimedia제어 

Multimedia 와 TensorRT의 테스트를 진행하며, 관련 예제들을 알아보자.
이 부분의 기능은 추후 설명할 DeepStream 부분하고도 거의 동일한 기능이기때문에, 동작은 이해를 하자.

  • 우선 JetsonTX2의 성능을 최대로 변경

$ sudo jetson_clocks   // sudo nvpmodel -m 0

$ sudo jetson_clocks --show
[sudo] password for jetsontx2: 
SOC family:tegra186  Machine:quill
Online CPUs: 0-5
CPU Cluster Switching: Disabled
cpu0: Online=1 Governor=schedutil MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200 IdleStates: C1=0 c7=0 
cpu1: Online=1 Governor=schedutil MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200 IdleStates: C1=0 c6=0 c7=0 
cpu2: Online=1 Governor=schedutil MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200 IdleStates: C1=0 c6=0 c7=0 
cpu3: Online=1 Governor=schedutil MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200 IdleStates: C1=0 c7=0 
cpu4: Online=1 Governor=schedutil MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200 IdleStates: C1=0 c7=0 
cpu5: Online=1 Governor=schedutil MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200 IdleStates: C1=0 c7=0 
GPU MinFreq=1300500000 MaxFreq=1300500000 CurrentFreq=1300500000
EMC MinFreq=40800000 MaxFreq=1866000000 CurrentFreq=1866000000 FreqOverride=1
Fan: speed=255
NV Power Mode: MAXN

$ cat /usr/bin/jetson_clocks   // script 추후 세부분석 
....
 do_hotplug
 do_clusterswitch
 do_cpu
 do_gpu
 do_emc
 do_fan
 do_nvpmodel
......

NVDIA Multimedia API 
  https://docs.nvidia.com/jetson/archives/l4t-multimedia-archived/l4t-multimedia-281/index.html

1.1  Sample Backend Test 

JetPack 3.3 때와 JePack4.2 동일한 Video인 줄 알았는데, 예제 Video가 변경이 되었으며, 
실행되는 시간은 오래 걸리기 때문에 인내를 가지고, 실행을 기다리자.

 
$ cd  /usr/src/tegra_multimedia_api
$ ls
argus  data  include  LEGAL  LICENSE  Makefile  README  samples  tools

$ cd samples     // JetPack3.3 과 거의 동일함 
00_video_decode  02_video_dec_cuda  04_video_dec_trt  06_jpeg_decode    08_video_dec_drm        10_camera_recording  13_multi_camera       backend  frontend  v4l2cuda
01_video_encode  03_video_cuda_enc  05_jpeg_encode    07_video_convert  09_camera_jpeg_capture  12_camera_v4l2_cuda  14_multivideo_decode  common   Rules.mk

$ cd backend 

//JetPack 3.3 과 동일하게, HDMI를 연결한 후 테스트를 진행해야 함 

$ ./backend 1 ../../data/Video/sample_outdoor_car_1080p_10fps.h264 H264 \
    --trt-deployfile ../../data/Model/GoogleNet_one_class/GoogleNet_modified_oneClass_halfHD.prototxt \
    --trt-modelfile ../../data/Model/GoogleNet_one_class/GoogleNet_modified_oneClass_halfHD.caffemodel \
    --trt-proc-interval 1 -fps 10

// --trt-forcefp32 0  옵션이 없어지고, fp16으로 동작 


Backend 의 Sample 구조


  • Gstream 예제 ( not Used TensorRT)
아래와 같이 4 Channel H.264 기반으로 Input으로 받아  H.264를 Decode 하고,  Video Image Compositor (VIC) 걸쳐 CUDA를 이용하여
X11 기반으로 OpenGL을 이용하여 재생을 한다.(일반적인 Gstreamer 를 생각하면 되겠다)



  • Gstream 예제 ( used TensorRT)
상위에서 실행한 실제 Sample의 구조(backend)이며, TensorRT(GIE)를 이용하여 자동차를 구분하는 기능까지 추가해서 동작하는 기능이다.
VIC의 주기능은 주로 영상변환기능(RGB2YUB 변환 or Scale 변환 , 즉 영상 Format의 변화 기능을 담당)이며,이를 TensorRT(GIE, Inference Engine)의 입력포맷에 맞게 데이터를 변환하여 처리한다.



  • 용어
  1. TensorRT (previously known as GPU Inference Engine (GIE))
  2. Video Image Compositor (VIC)

  • VIC(Video Image Compositor)
  https://developer.ridgerun.com/wiki/index.php?title=Xavier/Processors/HDAV_Subsystem/Compositor

  • BackEnd Sample (상위예제)
   https://docs.nvidia.com/jetson/archives/l4t-multimedia-archived/l4t-multimedia-281/nvvid_backend_group.html

  • Yolo 영상 Test (JetsonHacks)
JetPack 3.3 기준으로 Yolo 영상 TEST이며, 3.3 Frame 이라고 하며, 속도가 너무 느리다.
  https://www.youtube.com/watch?v=p1fJFG1S6Sw


1.2  Sample FrontEnd 

이 Sample은 EVM JetsonTX2에는 Camera가 기본적으로 존재하기 때문에 동작하며, 다른 Jetson EVM에서는 동작이 될지는 정확하게 모르겠다.
Jetson TX2 EVM은 MIPI로 Camera가 연결이 되어있으며, 거의 구조가 Gstream의 Pipe와 비슷하며, 이를 비교해서 봐야할 것이다.

 
$ cd  /usr/src/tegra_multimedia_api
$ ls
argus  data  include  LEGAL  LICENSE  Makefile  README  samples  tools

$ cd samples     // JetPack3.3 과 거의 동일함 
00_video_decode  02_video_dec_cuda  04_video_dec_trt  06_jpeg_decode    08_video_dec_drm        10_camera_recording  13_multi_camera       backend  frontend  v4l2cuda
01_video_encode  03_video_cuda_enc  05_jpeg_encode    07_video_convert  09_camera_jpeg_capture  12_camera_v4l2_cuda  14_multivideo_decode  common   Rules.mk

$ cd frontend 

//JetPack 3.3 과 동일하게, HDMI를 연결한 후 테스트를 진행, 실시간으로 화면재생  

// 처음 구동시 trtModel.cache 를 생성하기 때문에 시간이 걸린다. 

$ sudo ./frontend --deploy ../../data/Model/GoogleNet_three_class/GoogleNet_modified_threeClass_VGA.prototxt \
       --model ../../data/Model/GoogleNet_three_class/GoogleNet_modified_threeClass_VGA.caffemodel

$ ll  // 아래와 같이 새로 생성된 파일이 존재 (trt.h264 / trtModel.cache / output1.h265 ...)
total 1134276
drwxr-xr-x  2 root root      4096  6월  7 13:00 ./
drwxr-xr-x 20 root root      4096  5월 30 15:17 ../
-rwxr-xr-x  1 root root    784936  5월 30 15:19 frontend*
-rw-r--r--  1 root root     12271  5월 30 15:17 main.cpp
-rw-r--r--  1 root root    157944  5월 30 15:19 main.o
-rw-r--r--  1 root root      2821  5월 30 15:17 Makefile
-rw-r--r--  1 root root 287496172  6월  7 12:59 output1.h265
-rw-r--r--  1 root root 287555462  6월  7 12:59 output2.h265
-rw-r--r--  1 root root 287447012  6월  7 12:59 output3.h265
-rw-r--r--  1 root root      2626  5월 30 15:17 Queue.h
-rw-r--r--  1 root root      3134  5월 30 15:17 StreamConsumer.cpp
-rw-r--r--  1 root root      2854  5월 30 15:17 StreamConsumer.h
-rw-r--r--  1 root root     62112  5월 30 15:19 StreamConsumer.o
-rw-r--r--  1 root root 287331038  6월  7 12:59 trt.h264
-rw-r--r--  1 root root  10003768  6월  7 12:49 trtModel.cache
-rw-r--r--  1 root root     13293  5월 30 15:17 TRTStreamConsumer.cpp
-rw-r--r--  1 root root      3856  5월 30 15:17 TRTStreamConsumer.h
-rw-r--r--  1 root root    341584  5월 30 15:19 TRTStreamConsumer.o
-rwxr-xr-x  1 root root       208  6월  7 12:48 tst.sh*
-rw-r--r--  1 root root      9197  5월 30 15:17 VideoEncoder.cpp
-rw-r--r--  1 root root      3462  5월 30 15:17 VideoEncoder.h
-rw-r--r--  1 root root     83496  5월 30 15:19 VideoEncoder.o
-rw-r--r--  1 root root      4177  5월 30 15:17 VideoEncodeStreamConsumer.cpp
-rw-r--r--  1 root root      2480  5월 30 15:17 VideoEncodeStreamConsumer.h
-rw-r--r--  1 root root    104768  5월 30 15:19 VideoEncodeStreamConsumer.o


// 각 동영상 H.264/ H.265 재생확인


$ sudo ../00_video_decode/video_decode H265 output1.h265 //480P
or 
$ sudo ../02_video_dec_cuda/video_dec_cuda output1.h265 H265 //480p
$ sudo ../02_video_dec_cuda/video_dec_cuda output2.h265 H265  //720p
$ sudo ../02_video_dec_cuda/video_dec_cuda output3.h265 H265  //1080p 
$ sudo ../02_video_dec_cuda/video_dec_cuda trt.h264 H264  //1080p


상위 테스트를 진행후 생긴 영상들의 종류를 아래와 같이 나눠볼 수 있겠다.
아래의 File Sink 부분이 각각의 H.265의 OUTPUT이라고 생각하면된다.
그리고, TensorRT를 걸쳐 직접 Rendering 하고 Display 해주는 부분과 H.264로 저장해주는 부분이다. (trt.h264)



아래의 Flow대로 라면 ,
Jetson TX 카메라의 실시간 영상분석(TensorRT이용하여,Box를 만들어 구분)하여 파일로 저장한다.
정확하게 테스트를 해볼 환경이 되지 않아 이부분을 직접 일일 보드를 가지고 돌아다니면서 다 테스트를 해보지 못했지만, 
일단 Box가 실시간으로 생기는 것은 확인은 했지만,아쉽게도 자동차는 잘 구분을 할 줄 알았으나, 구분을 잘 못하는 것 같음.
( 테스트 환경이 잘못될 수도 있음, 일반 자동차사진을 비추고 찍고 테스트함 )

좌측 Argus Camera API
우측 V4L2 

https://docs.nvidia.com/jetson/archives/l4t-multimedia-archived/l4t-multimedia-281/l4t_mm_camcap_tensorrt_multichannel_group.html


  • FrontEnd Example
상위내용설명 
  https://docs.nvidia.com/jetson/archives/l4t-multimedia-archived/l4t-multimedia-281/l4t_mm_camcap_tensorrt_multichannel_group.html


  • Frame Buffer 정보
  https://devtalk.nvidia.com/default/topic/1017059/jetson-tx2/onboard-camera-dev-video0/


  • Gstream 관련기능 
  https://devtalk.nvidia.com/default/topic/1010795/jetson-tx2/v4l2-on-jetson-tx2/
  https://devtalk.nvidia.com/default/topic/1030593/how-to-control-on-board-camera-such-as-saving-images-and-videos/


  • 다른 Camera Solution
  https://github.com/Abaco-Systems/jetson-inference-gv


1.3  Sample Videe_dec_trt 

Backend와 유사한 Sample이지만,  영상으로 보여주지 않고 분석까지만 해주는 Sample 이다.

 
$ cd  /usr/src/tegra_multimedia_api
$ ls
argus  data  include  LEGAL  LICENSE  Makefile  README  samples  tools

$ cd samples     // JetPack3.3 과 거의 동일함 
00_video_decode  02_video_dec_cuda  04_video_dec_trt  06_jpeg_decode    08_video_dec_drm        10_camera_recording  13_multi_camera       backend  frontend  v4l2cuda
01_video_encode  03_video_cuda_enc  05_jpeg_encode    07_video_convert  09_camera_jpeg_capture  12_camera_v4l2_cuda  14_multivideo_decode  common   Rules.mk

$ cd 04_video_dec_trt 

//result.txt result0.txt result1.txt 생성되며, HDMI 연결가능, 다른 모델을 사용했지만, 문제발생 

// 2 Channel 분석 
$ sudo ./video_dec_trt 2 ../../data/Video/sample_outdoor_car_1080p_10fps.h264 \
    ../../data/Video/sample_outdoor_car_1080p_10fps.h264 H264 \
    --trt-deployfile ../../data/Model/resnet10/resnet10.prototxt \
    --trt-modelfile ../../data/Model/resnet10/resnet10.caffemodel \
    --trt-mode 0


or 
// 1 Channel 분석 
$ sudo ./video_dec_trt 1  ../../data/Video/sample_outdoor_car_1080p_10fps.h264 H264 \
    --trt-deployfile ../../data/Model/resnet10/resnet10.prototxt \
    --trt-modelfile ../../data/Model/resnet10/resnet10.caffemodel \
    --trt-mode 0


$cat  ../../data/Model/resnet10/labels.txt    // Labeling 확인 
Car
RoadSign
TwoWheeler
Person

//result.txt , result0.txt , result1.txt  생성 (2ch)

$ cat result.txt | head -n 100        // num 0,1,2 모두 생성되며, 1과,2의 정보가 없어 문제 발생  
frame:0 class num:0 has rect:5
 x,y,w,h:0.55625 0.410326 0.040625 0.0516304
 x,y,w,h:0.595312 0.366848 0.0546875 0.0923913
 x,y,w,h:0.09375 0.36413 0.223438 0.201087
 x,y,w,h:0.323438 0.413043 0.0984375 0.111413
 x,y,w,h:0.403125 0.418478 0.0390625 0.076087

frame:0 class num:1 has rect:0

frame:0 class num:2 has rect:0

frame:1 class num:0 has rect:5
 x,y,w,h:0.55625 0.413043 0.0390625 0.048913
 x,y,w,h:0.595312 0.366848 0.0546875 0.0923913
 x,y,w,h:0.09375 0.36413 0.225 0.201087
 x,y,w,h:0.323438 0.413043 0.0984375 0.111413
 x,y,w,h:0.403125 0.418478 0.040625 0.076087

frame:1 class num:1 has rect:0

frame:1 class num:2 has rect:0

frame:2 class num:0 has rect:5
 x,y,w,h:0.55625 0.410326 0.0390625 0.0516304
 x,y,w,h:0.595312 0.366848 0.0546875 0.0923913
 x,y,w,h:0.0921875 0.36413 0.221875 0.201087
 x,y,w,h:0.323438 0.413043 0.0984375 0.11413
 x,y,w,h:0.403125 0.418478 0.040625 0.076087

frame:2 class num:1 has rect:0

frame:2 class num:2 has rect:0

frame:3 class num:0 has rect:5
 x,y,w,h:0.554688 0.410326 0.0375 0.0516304
 x,y,w,h:0.595312 0.366848 0.0546875 0.0923913
 x,y,w,h:0.0921875 0.361413 0.220313 0.201087
 x,y,w,h:0.323438 0.413043 0.0984375 0.111413
 x,y,w,h:0.403125 0.421196 0.0390625 0.076087
........

$ cat ./result0.txt | head -n 100    // num0 만 생성 
frame:0 class num:0 has rect:5
 x,y,w,h:0.55625 0.410326 0.040625 0.0516304
 x,y,w,h:0.595312 0.366848 0.0546875 0.0923913
 x,y,w,h:0.09375 0.36413 0.223438 0.201087
 x,y,w,h:0.323438 0.413043 0.0984375 0.111413
 x,y,w,h:0.403125 0.418478 0.0390625 0.076087

frame:1 class num:0 has rect:5
 x,y,w,h:0.55625 0.413043 0.0390625 0.048913
 x,y,w,h:0.595312 0.366848 0.0546875 0.0923913
 x,y,w,h:0.09375 0.36413 0.225 0.201087
 x,y,w,h:0.323438 0.413043 0.0984375 0.111413
 x,y,w,h:0.403125 0.418478 0.040625 0.076087

frame:2 class num:0 has rect:5
 x,y,w,h:0.55625 0.410326 0.0390625 0.0516304
 x,y,w,h:0.595312 0.366848 0.0546875 0.0923913
 x,y,w,h:0.0921875 0.36413 0.221875 0.201087
 x,y,w,h:0.323438 0.413043 0.0984375 0.11413
 x,y,w,h:0.403125 0.418478 0.040625 0.076087

frame:3 class num:0 has rect:5
 x,y,w,h:0.554688 0.410326 0.0375 0.0516304
 x,y,w,h:0.595312 0.366848 0.0546875 0.0923913
 x,y,w,h:0.0921875 0.361413 0.220313 0.201087
 x,y,w,h:0.323438 0.413043 0.0984375 0.111413
 x,y,w,h:0.403125 0.421196 0.0390625 0.076087

frame:4 class num:0 has rect:5
 x,y,w,h:0.55625 0.413043 0.0375 0.0461957
 x,y,w,h:0.596875 0.366848 0.0546875 0.0923913
 x,y,w,h:0.0921875 0.36413 0.220313 0.201087
 x,y,w,h:0.323438 0.413043 0.0984375 0.111413
 x,y,w,h:0.403125 0.421196 0.0375 0.076087
..........

//상위 분석한 정보기반으로 동영상 Play ( Backend와 동일)
$ sudo ../02_video_dec_cuda/video_dec_cuda ../../data/Video/sample_outdoor_car_1080p_10fps.h264 H264  --bbox-file result0.txt


각 영상을 Decoding 한 후  각 Size에 맞게 변환 후에 TensorRT에 적용한 후 Save BBOX 정보



  • 명령어 사용법 

$ ./video_dec_trt   // 사용법 1 Channl or 2 Channel Video 입력을 받아 최종으로 result.txt 를 만들어냄 (box 정보)

video_dec_trt [Channel-num]   ...  [options]

Channel-num:
 1-32, Number of file arguments should exactly match the number of channels specified

Supported formats:
 H264
 H265

OPTIONS:
 -h,--help            Prints this text
 --dbg-level   Sets the debug level [Values 0-3]

 --trt-deployfile     set deploy file name
 --trt-modelfile      set model file name
 --trt-mode           0 fp16 (if supported), 1 fp32, 2 int8
 --trt-enable-perf    1[default] to enable perf measurement, 0 otherwise




$  ../02_video_dec_cuda/video_dec_cuda 
video_dec_cuda   [options]

Supported formats:
 H264
 H265

OPTIONS:
 -h,--help            Prints this text
 --dbg-level   Sets the debug level [Values 0-3]

 --disable-rendering  Disable rendering
 --fullscreen         Fullscreen playback [Default = disabled]
 -ww           Window width in pixels [Default = video-width]
 -wh          Window height in pixels [Default = video-height]
 -wx        Horizontal window offset [Default = 0]
 -wy        Vertical window offset [Default = 0]

 -fps            Display rate in frames per second [Default = 30]

 -o         Write to output file

 -f       1 NV12, 2 I420 [Default = 1]

 --input-nalu         Input to the decoder will be nal units
 --input-chunks       Input to the decoder will be a chunk of bytes [Default]
 --bbox-file          bbox file path
 --display-text     enable nvosd text overlay with input string

04_video_dec_trt
상위와 비슷한 예제이며, 직접 Video Input을 받아 처리
  https://docs.nvidia.com/jetson/archives/l4t-multimedia-archived/l4t-multimedia-281/l4t_mm_vid_decode_trt.html

JetsonTX2 Gstreamer
  https://developer.ridgerun.com/wiki/index.php?title=Gstreamer_pipelines_for_Jetson_TX2
  https://elinux.org/Jetson/H264_Codec
  https://developer.ridgerun.com/wiki/index.php?title=NVIDIA_Jetson_TX1_TX2_Video_Latency

Jetson TX2 Gstreamer and OpenCV (python)
  https://jkjung-avt.github.io/tx2-camera-with-python/
  https://devtalk.nvidia.com/default/topic/1025356/how-to-capture-and-display-camera-video-with-python-on-jetson-tx2/