Nvidia Tegrastats Max N Command Please Try Again or See
DeepStream Full general topics¶
How practise I uninstall DeepStream?¶
-
For dGPU:
To remove all previous DeepStream iii.0 or prior installations, enter the control:
$ sudo rm -rf /usr/local/deepstream /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnv* /usr/bin/deepstream* /usr/lib/x86_64-linux-gnu/gstreamer-i.0/libnvdsgst* /usr/lib/x86_64-linux-gnu/gstreamer-one.0/deepstream* /opt/nvidia/deepstream/deepstream* $ sudo rm -rf /usr/lib/x86_64-linux-gnu/libv41/plugins/libcuvidv4l2_plugin.so
To remove DeepStream four.0 or later installations:
-
Open up the uninstall.sh file in
/opt/nvidia/deepstream/deepstream/
-
Set up
PREV_DS_VER
equally4.0
-
Run the script every bit sudo:
./uninstall.sh
-
-
For Jetson: Wink the target device with the latest release of JetPack.
What types of input streams does DeepStream 6.0.one support?¶
It supports H.264, H.265, JPEG, and MJPEG streams.
Where can I find the DeepStream sample applications?¶
The DeepStream sample applications are located at:
< DeepStream installation dir >/ sources / apps / sample_apps /
The configuration files for the sample applications are located at:
< DeepStream installation dir >/ samples / configs / deepstream - app
For more than data, see the NVIDIA DeepStream Development Guide.
How can I verify that CUDA was installed correctly?¶
Check the CUDA version:
How can I interpret frames per second (FPS) display information on console?¶
The FPS number shown on the console when deepstream-app runs is an average of the well-nigh recent five seconds. The number in brackets is average FPS over the unabridged run. The numbers are displayed per stream. The operation measurement interval is set by the perf-measurement-interval-sec
setting in the configuration file.
My DeepStream functioning is lower than expected. How tin I determine the reason?¶
Meet the Troubleshooting chapter in the NVIDIA DeepStream Evolution Guide.
How can I specify RTSP streaming of DeepStream output?¶
Y'all can enable remote display by adding an RTSP sink in the application configuration file. The sample configuration file source30_1080p_dec_infer-resnet_tiled_display_int8.txt
has an case of this in the [sink2]
section. You must set the enable
flag to i
. Once you lot enable remote display, the application prints the RTSP URL, which you lot tin open in whatever media player like VLC.
What is the recipe for creating my own Docker epitome?¶
Utilize the DeepStream container as the base paradigm. Add your ain custom layers on summit of it using standard technique in Docker.
How can I display graphical output remotely over VNC? How tin I determine whether X11 is running?¶
If the host machine is running X, starting VNC is trivial. Otherwise you must start X, and so get-go VNC. To make up one's mind whether X is running, check the Brandish environment variable. If X is non running you must start it first, and so run DeepStream with GUI, or set type to ane or 3 under sink groups to select fakesink or save to a file. If y'all are using an NVIDIA® Tesla® V100 or P100 GPU Accelerator (both compute-merely cards without a display), you must set type to four for DeepStream output RTSP streaming. See the NVIDIA DeepStream SDK Development Guide for sink settings.
Why does the deepstream-nvof-examination application bear witness the error message "Device Does Non back up Optical Flow Functionality" if run with NVIDIA Tesla P4 or NVIDIA Jetson Nano, Jetson TX2, or Jetson TX1?¶
Optical menstruation functionality is supported but on NVIDIA® Jetson AGX Xavier™, NVIDIA® Jetson NX™ and on GPUs with Turing compages (NVIDIA® T4, NVIDIA® GeForce® RTX 2080 etc.).
Why is the Gst-nvstreammux plugin required in DeepStream 4.0+?¶
Multiple source components similar decoder, camera, etc. are connected to the Gst-nvstreammux plugin to class a batch. This plugin is responsible for creating batch metadata, which is stored in the structure NvDsBatchMeta. This is the primary course of metadata in DeepStream four.0.1. All plugins downstream from Gst-nvstreammux piece of work on NvDsBatchMeta to access metadata and make full in the metadata they generate.
Why is a Gst-nvegltransform plugin required on a Jetson platform upstream from Gst-nveglglessink?¶
On a Jetson platform Gst-nveglglessink works on EGLImage structures. Gst-nvegltranform is required to catechumen incoming data (wrapped in an NVMM structure) to an EGLImage instance. On a dGPU platform, Gst-nveglglessink works directly on data wrapped in an NVMM structure.
How can I check GPU and memory utilization on a dGPU system?¶
Enter nvidia-smi
or nvidia-settings
on the console.
What is the gauge memory utilization for 1080p streams on dGPU?¶
Use the table below equally a guide to retentiveness utilization in this example.
Notation
Width and pinnacle in Gst-nvstreammux are set up to the input stream resolution specified in the configuration file. The pipeline is: decoder → nvstreammux → nvinfer → fakesink.
Batch size (Number of streams) | Decode memory | Gst-nvinfer retention | Gst-nvstreammux memory |
---|---|---|---|
1 | 32 MB | 333 MB | 0 MB |
2 | 64 MB | 341 MB | 0 MB |
iv | 128 MB | 359 MB | 0 MB |
eight | 256 MB | 391 MB | 0 MB |
16 | 512 MB | 457 MB | 0 MB |
If input stream resolution and Gst-nvstreammux resolution (prepare in the configuration file) are the same, no additional GPU retentiveness is allocated in Gst-nvstreammux. If input stream resolution is not same every bit Gst-nvstreammux resolution, Gst-nvstreammux allocates memory of size:
buffers * ( one.5 * width * acme ) * mismatches
Where:
-
buffers
is the number of Gst-nvstreammux output buffers (gear up to 4). -
width
andheight
are the mux output width and height. -
mismatches
is the number of sources with resolution mismatch.
This table shows some examples:
Case | Gst-nvstreammux | Gst-nvstreammux GPU memory size |
---|---|---|
sixteen sources at | | |
15 sources at | | |
When deepstream-app is run in loop on Jetson AGX Xavier using "while true; do deepstream-app -c <config_file>; done;", later a few iterations I see low FPS for certain iterations. Why is that?¶
This may happen when you are running 30 1080p streams at 30 frames/2nd. The issue is caused by initial load. I/O operations bog down the CPU, and with qos=one
every bit a default property of the [sink0]
group, decodebin
starts dropping frames. To avoid this, prepare qos=0
in the [sink0]
group in the configuration file.
Why do I go the error Makefile:13: *** "CUDA_VER is not gear up". Stop
when I compile DeepStream sample applications?¶
Export this environment variable:
-
For dGPU:
CUDA_VER=11.4
-
For Jetson:
CUDA_VER=10.two
Then compile again.
How can I construct the DeepStream GStreamer pipeline?¶
Here are few examples of how to construct the pipeline. To run these instance pipelines as-is, run the applications from the samples directory:
-
V4l2 decoder → nvinfer → nvtracker → nvinfer (secondary) → nvmultistreamtiler → nvdsosd → nveglglessink
-
For multistream (4x1080p) functioning on dGPU:
$ gst-launch-1.0 filesrc location= streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder \ ! m.sink_0 nvstreammux proper noun=m batch-size=4 width=1920 tiptop=1080 ! nvinfer config-file-path= configs/deepstream-app/config_infer_primary.txt \ batch-size=4 unique-id=ane ! nvtracker ll-lib-file=/opt/nvidia/deepstream/deepstream-half dozen.0/lib/libnvds_nvmultiobjecttracker.so \ ! nvinfer config-file-path= configs/deepstream-app/config_infer_secondary_carcolor.txt batch-size=xvi unique-id=2 infer-on-gie-id=1 infer-on-class-ids=0 \ ! nvmultistreamtiler rows=two columns=2 width=1280 pinnacle=720 ! nvvideoconvert ! nvdsosd ! nveglglessink filesrc location= streams/sample_1080p_h264.mp4 \ ! qtdemux ! h264parse ! nvv4l2decoder ! m.sink_1 filesrc location= streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder \ ! grand.sink_2 filesrc location= streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! k.sink_3
-
For multistream (4x1080p) performance on Jetson:
$ gst-launch-1.0 filesrc location= streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder \ ! 1000.sink_0 nvstreammux name=1000 batch-size=4 width=1920 elevation=1080 ! nvinfer config-file-path= configs/deepstream-app/config_infer_primary.txt \ batch-size=4 unique-id=1 ! nvtracker ll-lib-file=/opt/nvidia/deepstream/deepstream-vi.0/lib/libnvds_nvmultiobjecttracker.so \ ! nvinfer config-file-path= configs/deepstream-app/config_infer_secondary_carcolor.txt batch-size=16 unique-id=2 infer-on-gie-id=1 infer-on-class-ids=0 \ ! nvmultistreamtiler rows=2 columns=ii width=1280 top=720 ! nvvideoconvert ! nvdsosd ! nvegltransform \ ! nveglglessink filesrc location= streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder \ ! m.sink_1 filesrc location= streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder \ ! yard.sink_2 filesrc location= streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! m.sink_3
-
For single stream (1080p) operation on dGPU:
$ gst-launch-1.0 filesrc location= streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder \ ! m.sink_0 nvstreammux name=m batch-size=1 width=1920 tiptop=1080 ! nvinfer config-file-path= configs/deepstream-app/config_infer_primary.txt \ batch-size=1 unique-id=1 ! nvtracker ll-lib-file=/opt/nvidia/deepstream/deepstream-half dozen.0/lib/libnvds_nvmultiobjecttracker.so \ ! nvinfer config-file-path= configs/deepstream-app/config_infer_secondary_carcolor.txt batch-size=xvi unique-id=2 infer-on-gie-id=ane infer-on-class-ids=0 \ ! nvmultistreamtiler rows=1 columns=1 width=1280 height=720 ! nvvideoconvert ! nvdsosd ! nveglglessink
-
For single stream (1080p) operation on Jetson:
$ gst-launch-one.0 filesrc location= streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder \ ! m.sink_0 nvstreammux name=m batch-size=i width=1920 height=1080 ! nvinfer config-file-path= configs/deepstream-app/config_infer_primary.txt \ batch-size=1 unique-id=1 ! nvtracker ll-lib-file=/opt/nvidia/deepstream/deepstream-half-dozen.0/lib/libnvds_nvmultiobjecttracker.so \ ! nvinfer config-file-path= configs/deepstream-app/config_infer_secondary_carcolor.txt batch-size=sixteen unique-id=ii infer-on-gie-id=i infer-on-class-ids=0 \ ! nvmultistreamtiler rows=1 columns=i width=1280 height=720 ! nvvideoconvert ! nvdsosd ! nvegltransform ! nveglglessink
-
-
JPEG decode
-
Using nvv4l2decoder on Jetson:
$ gst-launch-1.0 filesrc location= ./streams/sample_720p.jpg ! jpegparse ! nvv4l2decoder ! nvegltransform ! nveglglessink
-
Using nvv4l2decoder on dGPU:
$ gst-launch-1.0 filesrc location= ./streams/sample_720p.jpg ! jpegparse ! nvv4l2decoder ! nveglglessink
-
Using nvjpegdec on Jetson:
$ gst-launch-1.0 filesrc location= ./streams/sample_720p.jpg ! nvjpegdec ! nvegltransform ! nveglglessink
-
Using nvjpegdec on dGPU:
$ gst-launch-1.0 filesrc location= ./streams/sample_720p.jpg ! nvjpegdec ! nveglglessink
-
-
Dewarper
-
On dGPU:
$ gst-launch-1.0 uridecodebin uri= file://`pwd`/../../../../samples/streams/sample_cam6.mp4 ! nvvideoconvert \ ! nvdewarper source-id=6 num-output-buffers=4 config-file=config_dewarper.txt ! grand.sink_0 nvstreammux proper noun=m width=1280 pinnacle=720 batch-size=four \ batched-push-timeout=100000 num-surfaces-per-frame=4 ! nvmultistreamtiler rows=1 columns=one width=720 height=576 ! nvvideoconvert ! nveglglessink
-
On Jetson:
$ gst-launch-1.0 uridecodebin uri= file://`pwd`/../../../../samples/streams/sample_cam6.mp4 ! nvvideoconvert ! nvdewarper source-id=6 num-output-buffers=4 \ config-file=config_dewarper.txt ! chiliad.sink_0 nvstreammux proper noun=one thousand width=1280 height=720 batch-size=4 batched-push button-timeout=100000 \ num-surfaces-per-frame=iv ! nvmultistreamtiler rows=1 columns=1 width=720 tiptop=576 ! nvvideoconvert ! nvegltransform ! nveglglessink
Note
This Gst pipeline must be run from the dewarper test application directory,
sources/apps/sample_apps/deepstream-dewarper-examination
. This pipeline runs only for four surfaces. To run for one, two, or three surfaces, use the dewarper examination application. -
-
Dsexample
-
On dGPU:
$ gst-launch-1.0 filesrc location = ./streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder \ ! thousand.sink_0 nvstreammux name=m width=1280 peak=720 batch-size=1 ! nvinfer config-file-path= ./configs/deepstream-app/config_infer_primary.txt \ ! dsexample total-frame=1 ! nvvideoconvert ! nvdsosd ! nveglglessink sync=0
-
On Jetson:
$ gst-launch-1.0 filesrc location = ./streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder \ ! m.sink_0 nvstreammux name=m width=1280 meridian=720 batch-size=ane ! nvinfer config-file-path= ./configs/deepstream-app/config_infer_primary.txt \ ! dsexample full-frame=ane ! nvvideoconvert ! nvdsosd ! nvegltransform ! nveglglessink sync=0
-
The property bufapi-version is missing from nvv4l2decoder, what to do?¶
The bufapi-version
property is not required if used with DeepStream direct, but you may not go NvBufSurface
every bit output if you use pipeline with no cadre DeepStream component. For instance:
$ gst-launch-1.0 filesrc location= /opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.h264 ! h264parse ! nvv4l2decoder bufapi-version=1 ! nvegltransform ! nveglglessink
In such cases prepare $consign DS_NEW_BUFAPI=one
and apply the to a higher place pipeline. This will guarantee that output buffer blazon of nvv4l2decoder
is NvBufsurface
. For example:
$ DS_NEW_BUFAPI=1 gst-launch-1.0 filesrc location= /opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.h264 ! h264parse ! nvv4l2decoder ! nvegltransform ! nveglglessink
Or use nvvideoconvert
in the pipeline directly without setting the surroundings variable:
$ gst-launch-one.0 filesrc location= /opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.h264 ! h264parse ! nvv4l2decoder ! nvvideoconvert ! nvegltransform ! nveglglessink
Why am I getting "ImportError: No module named google.protobuf.internal when running convert_to_uff.py on Jetson AGX Xavier"?¶
If yous gear up upwards Tensorflow using https://elinux.org/Jetson_Zoo#TensorFlow, please use Python 3 for running convert_to_uff.py
:
$ python3 /usr/lib/python3.half-dozen/dist-packages/uff/bin/convert_to_uff.py
Does DeepStream Support 10 Chip Video streams?¶
ten-chip decode (P010_10LE) is Supported, although most of the components work on eight-bit input. Information technology is suggested to utilize nvvideoconvert
to transform stream from x-bit to eight-bit, and then add the relevant components. Sometimes, RTSP output from DeepStream is non observed remotely Try running post-obit pipeline to see if at that place is issue in network. With this you'll be able to see output.
gst-launch-i.0 uridecodebin uri=rtsp://<rtsp link> ! nveglglessink sync=0 on remote automobile.
What is the deviation between batch-size of nvstreammux and nvinfer? What are the recommended values for nvstreammux
batch-size?¶
nvstreammux's batch-size is the number of buffers(frames) it will batch together in one muxed buffer. nvinfer'due south batch-size is the number of frame(primary-mode)/objects(secondary-mode) it will infer together. We recommend that the nvstreammux'south batch-size be set to either number of sources linked to it or the primary nvinfer'southward batch-size.
Why practise some caffemodels neglect to build after upgrading to DeepStream vi.0.i?¶
DeepStream 6.0.1 uses explicit batch dimension for caffemodels. Some caffemodels use TensorRT plugins/layers which have not been updated for explicit batch dimensions. Add strength-implicit-batch-dim=1
in the nvinfer config file for such models to build the models using implicit batch dimension networks.
How do I configure the pipeline to get NTP timestamps?¶
To go NTP timestamps, gear up attach-sys-ts
property to Faux
on nvstreammux component.
Why is the NTP timestamp value 0?¶
NTP timestamp 0 suggests that you are non receiving NTP timestamp from RTCP sender report. You can verify this using a tool like Wireshark.
How to handle operations not supported by Triton Inference Server?¶
For details on handling unsupported operations, run across: https://docs.nvidia.com/deeplearning/sdk/triton-inference-server-guide/docs/custom_operation.html.
The custom library mentioned in the document can be loaded in the DeepStream awarding by one of the following methods:
-
Running the application as
LD_PRELOAD =./ libcustomOp . and so deepstream - app - c < app - config >
-
Add the custom-lib path in "nvinferserver" config file every bit
infer_config { ... custom_lib { path : "./libcustomOp.so" } }
Why do I see confidence value as -0.1.?¶
If "Group Rectangles" mode of clustering is chosen then confidence value is set to -0.1
because the algorithm does not preserve confidence value. Also, for the objects being tracked by the tracker but not detected by the inference component, confidence value is set to -0.1
.
How to employ the OSS version of the TensorRT plugins in DeepStream?¶
If TensorRT OSS plugins library is not already available, please follow instructions from https://github.com/NVIDIA/TensorRT to build the library. To utilise the library in DeepStream, export LD_PRELOAD=/path/to/oss/libnvinfer_plugin.and then before running whatever DeepStream app.
Why exercise I see the below Fault while processing H265 RTSP stream?¶
Error : gstrtph265depay . c : 1196 : gst_rtp_h265_finish_fragmentation_unit : assertion failed :( outsize >= iv )
This outcome is observed from h265depay
gstreamer plugin component when size of rtp payload
is less than 4
. The component throws assertion. This invalid packet size could be considering of packet corruption. To overcome this issue, you should ignore exclamation and handle such errors. Required modification in the code is present at https://forums.developer.nvidia.com/t/deepstream-sdk-faq/80236. Y'all'll demand to compile the lawmaking and identify the lib at the advisable location.
Why do I observe a lot of buffers existence dropped when running deepstream-nvdsanalytics-test awarding on Jetson Nano ?¶
Past default nvdsanalytics
test awarding uses main detector every frame equally well every bit NvDCF tracker
and nveglglessink
, all the above component eat GPU resources, due to which awarding is not executing in real-time. To overcome this, practise the following:
-
Change the tracker setting to a more perf-oriented setting (e.g., config_tracker_NvDCF_perf.yml or config_tracke1r_NvDCF_max_perf.yml) in
deepstream_nvdsanalytics_test.cpp
-
Alter video renderer from
nveglglessink
tonvoverlaysink
, and also changenvegltransform
element toidentity
while doing so. -
If above two steps don't assist, user can increase
interval
property to value greater than 0 innvdsanalytics_pgie_config.txt
Why do I find: A lot of buffers are existence dropped. When running alive camera streams even for few or single stream, also output looks jittery?¶
For live streams, nvstreammux chemical element live-source
property should be fix as one
. Also, sink/renderer
element's sync
and qos
property should be prepare equally 0
or Imitation
.
Why does the RTSP source used in gst-launch pipeline through uridecodebin evidence blank screen followed by the error - Alarm: from chemical element /GstPipeline:pipeline0/GstNvStreamMux:chiliad: No Sources constitute at the input of muxer. Waiting for sources
?¶
At times the requested muxer pad gets deleted before linking happens, as streams might contain both video and sound. If queue element is added between nvstreammux and the uridecodebin
and so the above pipeline will work. Equally uridecodebin
will link to queue pad and non nvstreammux pad. This problem is not observed programmatically every bit the linking takes place new pad callback of decoder on video stream.
What if I exercise not get expected 30 FPS from camera using v4l2src plugin in pipeline but instead go xv FPS or less than thirty FPS?¶
This could exist possible due to exposure or lighting weather condition effectually camera however this can be fixed by changing camera settings through beneath reference commands to change the exposure settings.
v4l2 - ctl - d / dev / video0 -- list - ctrls v4l2 - ctl -- set - ctrl = exposure_auto = 1 v4l2 - ctl -- set - ctrl = exposure_absolute = 300
On Jetson platform, I get aforementioned output when multiple Jpeg images are fed to nvv4l2decoder using multifilesrc plugin. Why is that?¶
For instance
multifilesrc location = frame%d.jpeg ! jpegparse ! nvv4l2decoder ! nvegltransform ! nveglglessink
On Jetson platfroms nvv4l2decoder needs to set holding mjpeg=1
in gild to work with multifilesrc
.
How do I obtain individual sources after batched inferencing/processing? What are the sample pipelines for nvstreamdemux?¶
Some sample nvstreamdemux pipelines:
gst-launch-1.0 filesrc location = sample_1080p_h264.mp4 ! decodebin ! m.sink_0 \ filesrc location = sample_1080p_h264.mp4 ! decodebin ! thousand.sink_1 \ filesrc location = sample_1080p_h264.mp4 ! decodebin ! m.sink_2 \ filesrc location = sample_1080p_h264.mp4 ! decodebin ! chiliad.sink_3 \ nvstreammux name=m width=1920 superlative=1080 batch-size=4 batched-push button-timeout=40000 ! \ queue ! nvinfer config-file-path=<config> batch-size=4 ! \ queue ! nvtracker ll-lib-file=<lib-file> ! \ nvstreamdemux name=d \ d.src_0 ! queue ! nvvideoconvert ! nvdsosd ! nveglglessink \ d.src_1 ! queue ! nvvideoconvert ! nvdsosd ! nveglglessink \ d.src_2 ! queue ! nvvideoconvert ! nvdsosd ! nveglglessink \ d.src_3 ! queue ! nvvideoconvert ! nvdsosd ! nveglglessink .. annotation:: Queue element should be inserted later every ``nvstreamdemux src`` pad.
It is not required to demux all sources / create all nvstreamdemux src pad. As well, the downstream pipeline for every source may exist different. Sample pipeline:
gst-launch-1.0 filesrc location = sample_1080p_h264.mp4 ! decodebin ! chiliad.sink_0 \ filesrc location = sample_1080p_h264.mp4 ! decodebin ! m.sink_1 \ filesrc location = sample_1080p_h264.mp4 ! decodebin ! m.sink_2 \ filesrc location = sample_1080p_h264.mp4 ! decodebin ! grand.sink_3 \ nvstreammux proper name=m width=1920 meridian=1080 batch-size=4 batched-button-timeout=40000 ! \ queue ! nvinfer config-file-path=<config> batch-size=4 ! \ queue ! nvtracker ll-lib-file=<lib-file> ! \ vstreamdemux name=d \ d.src_1 ! queue ! nvvideoconvert ! nvdsosd ! nvvideoconvert ! nvv4l2h264enc ! h264parse ! qtmux ! filesink location=out.mp4 \ d.src_2 ! queue ! nvvideoconvert ! nvdsosd ! nveglglessink
Why practice I encounter such error while running Deepstream pipeline memory type configured and i/p buffer mismatch ip_surf 0 muxer iii?¶
This mistake is observed on dGPU, when NvStreamMux
is configured for retention type 3, i.e., NVBUF_MEM_CUDA_UNIFIED
and the input surface to the nvstreammux
has the retention blazon 0 i.e., NVBUF_MEM_CUDA_DEFAULT
(Cuda device for dGPU). The resolution of input surface is same as nvstreammux
configured resolution, in such scenario the nvstreammux ``tries to send the original buffer on its sinkpad to downstream muxed with buffers from other sources, simply due to different configured retention type of ``nvstreammux
it can't do the same. To become effectually this ensure that all the sources connected to nvstreammux
are generating aforementioned type of memory and configure the nvstreammux
memory to the same type. Alternatively, if there is scaling in nvstreammux
this error won't be encountered.
How does secondary GIE ingather and resize objects?¶
SGIE will crop the object from NvStreamMux
buffer using the object'due south bbox detected by the Master GIE. The ingather is so scaled/converted to the network resolution/color format. For example, if the NvStreamMux
resolution is 1920x1080, SGIE will crop using object bbox co-ordinates (e.g. x=1000, y=20, w=400, y=500) from the 1920x1080 image and and then scale it to the SGIE network resolution (say 224x224). In practice, the object crop + scaling + color conversion happens in one go.
How to save frames from GstBuffer?¶
To save frames from gst buffer you need to Map gst buffer using gst_buffer_map ()
API.
Here is the pseudo code:
GstMapInfo in_map_info; NvBufSurface *surface = NULL; memset (&in_map_info, 0, sizeof (in_map_info)); if (!gst_buffer_map (inbuf, &in_map_info, GST_MAP_READ)) { g_print ("Error: Failed to map gst buffer\due north"); } surface = (NvBufSurface *) in_map_info.data;
At present that you have access to NvBufSurface
construction, you tin can admission actual frame memory and salvage information technology. At the end you lot need to unmap gst buffer using gst_buffer_unmap (inbuf, &in_map_info)
For more details, see gst_dsexample_transform_ip()
in gst-dsexample plugin
source lawmaking.
What are different Retentiveness types supported on Jetson and dGPU?¶
Memory Type | Jetson | dGPU or X86_64 |
---|---|---|
| Retention of type Surface Assortment which is 2D pitched allocated by default: Used past all hardware accelerator on the platform. Attainable by CPU using | Memory of type Cuda Device is allocated past default, accessible only by GPU. User might need to have custom Cuda kernels to admission or alter retentiveness. Or |
| Page Locked Memory allocated using | Folio Locked Memory allocated using |
| Memory of type Cuda Device is allocated, accessible only by GPU. User might need to have custom Cuda kernels to access or modify memory. | Retentivity of type Cuda Device is allocated, accessible just past GPU. User might demand to have custom Cuda kernels to access or modify memory. Or |
| Unsupported | Unified Virtual Memory allocated using |
| Retention of type Surface Array which is 2nd pitched allocated by default; used by all hardware accelerator on the platform; attainable by CPU using | Unsupported |
| Used internally for Jetson | Unsupported |
| Allocated using | Allocated using |
What are dissimilar Memory transformations supported on Jetson and dGPU?¶
dGPU: User can utilize NvBufSurfaceCopy()
to copy from one retentiveness type to another. If transformation is required, nvvideoconvert plugin support nvbuf-memory-type
property to allow different type of retentivity. NvBufSurfTransform()
can also exist used to do the transformation between various CUDA types of memories. CUDA to NVBUF_MEM_SYSTEM
transformation is not supported by NvBufSurfTransform
direct, user can use NvBufSurfaceCopy()
to copy into CUDA memory and perform transformation on that retention.
Jetson: User can utilise NvBufSurfaceCopy()
to copy from one memory blazon to another, although CUDA retention copies are non supported directly. User can perform NvBufSurfTransform()
for transformation from NVBUF_MEM_SURFACE_ARRAY/NVBUF_MEM_DEFAULT
to Cuda Retentiveness, but user need to use GPU as compute device for doing the transformation, as VIC doesn't support transformation to CUDA retentiveness or NVBUF_MEM_SYTEM
. Come across NvBufSurfTransform
APIs for more data.
Why does my image look distorted if I wrap my cudaMalloc'ed retentivity into NvBufSurface and provide to NvBufSurfTransform?¶
If you are not using NvBufSurfaceCreate
for allocation, ensure the pitch of the allocated retentivity is multiple of 32. Likewise ensure that the starting address of each plane of the input is 128-byte aligned.
Why am I getting post-obit waring when running deepstream app for first fourth dimension?¶
"GStreamer-WARNING: Failed to load plugin '...libnvdsgst_inferserver.and then': libtrtserver.so: cannot open shared object file: No such file or directory"
This is a harmless warning indicating that the DeepStream'due south nvinferserver plugin cannot exist used since "Triton Inference Server" is not installed. If DeepStream-Triton is required, try to pull DeepStream's Triton docker epitome on dGPU post-obit instructions at https://ngc.nvidia.com/catalog/containers/nvidia:deepstream and run the examination apps inside container. Triton Inference Server is automatically installed on Jetson along with DeepStream package. No actress instructions are needed.
How to find out the maximum number of streams supported on given platform?¶
DeepStream can support as many streams as possible as long as awarding under run is non express by retention/decode/compute capability.
How to fix "cannot allocate memory in static TLS cake" error?¶
On Jetson, sometimes the post-obit error might occur:
( gst - plugin - scanner : 21845 ): GStreamer - Alert ** : 04 : 34 : 02.887 : Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstlibav.so' : / usr / lib / aarch64 - linux - gnu / libgomp . so . 1 : cannot allocate memory in static TLS block
This error can exist stock-still past running the post-obit:
export LD_PRELOAD =/ usr / lib / aarch64 - linux - gnu / libgomp . so . 1
Smart Record¶
Does smart record module work with local video streams?¶
Yes. Smart record module expects encoded frames which tin can be from either local video or RTSP stream. But deepstream-test5-app only supports RTSP sources for smart tape.
Are multiple parallel records on same source supported?¶
No. Only single record at a fourth dimension on the same source is supported. You need to stop the ongoing tape to start the new recording again.
What if I forgot to finish the recording?¶
At that place is default duration setting and if record is not stopped past stop result it would be stopped automatically as per default elapsing value.
I started the record with a set duration. Tin I end it before that elapsing ends?¶
Aye, running recording instance can be stopped any time.
What if I don't set default duration for smart record?¶
Default value of record duration is 10 seconds.
What if I don't ready video cache size for smart tape?¶
Default value of video cache size is xxx seconds.
What is maximum duration of data I can enshroud as history for smart record?¶
As such, there is no limit on cache size. It is limited by available arrangement memory.
Can I record the video with bounding boxes and other data overlaid?¶
To accept meliorate functioning and optimization, smart tape avoids transcoding and caches only encoded frames. To that extent recording the video with overlaid bounding boxes is non possible. Only you can implement that use case in two ways:
-
Run the inference pipeline on recorded video and save the output in a file using sink (
type = filesink
) -
Add together encoding components in the pipeline later on OSD and then add smart record module.
Triton¶
Tin Jetson platform support the same features as dGPU for Triton plugin?¶
Non exactly. dGPU tin can support virtually models such every bit TensorRT, Tensorflow (and TF-TRT), ONNX(and with TRT optimization), Pytorch. Jetson can back up TensorRT, Tensorflow (and TF-TRT). Back up for other models are coming in time to come releases. For more than details, see Deepstream Plugin Guide section.
Can Gst-nvinfereserver (DeepSream Triton plugin) run on Nano platform?¶
Yep. But due to Nano'southward retention limitation, performance of certain models is tiresome and even run into OOM (out of memory) issues, specifically on heavy Tensorflow models. There is an option to run CPU instance for certain models on Nano. For more than details, see samples/configs/deepstream-app-triton/README
How to enable TensorRT optimization for Tensorflow and ONNX models?¶
To acquire details TensorRT optimization setting in Triton models, meet: https://github.com/triton-inference-server/server/hulk/r20.11/README.md TF-TRT is supported on both dGPU and Jetson platforms. i. Open up the model'southward Triton config.pbtxt
file 2. Brand sure GPU instance enabled iii. Append tensorrt accelerator.(e.yard. triton_model_repo/ssd_mobilenet_v1_coco_2018_01_28/config.pbtxt
)
optimization { execution_accelerators { gpu_execution_accelerator : [ { name : "tensorrt" parameters { fundamental : "precision_mode" value : "FP16" } }] }}
For more on TF-TRT parameters, meet TF-TRT
API in Tensorflow i.x. is_dynamic_op
is set to True
natively in Triton. Additionally, yous can generate offline TF-TRT models by their ain script running with tensorflow surround. Read TF-TRT User guide to generate offline(static) models. Once the original online model is replaced past offline model, remove optimization
block in instance TF-TRT online runs again to overwrite offline TF-TRT caches. ONNX is supported on dGPU only. TensorRT optimization can be enabled by
optimization { execution_accelerators { gpu_execution_accelerator : [ { name : "tensorrt" } ] }}
The TensorRT engine caches volition be generated at run fourth dimension. It is getting started during initialization or first frame come. This might take from several seconds even to minutes depends on how heavy the model is and how good platform information technology is.
How to tune GPU memory for Tensorflow models?¶
When running TensorFlow models using Triton Inference Server, the GPU device memory may fall short. The allowed GPU device memory allocation for TensorFlow models can be tuned using the tf_gpu_memory_fraction
parameter in the nvdsinferserver'southward config files ( config_infer_*
). For more details, come across samples/configs/deepstream-app-triton/README
. This parameter is aforementioned equally tensorflow config's per_process_gpu_memory_fraction
. For more details, meet:
-
Tensorflow one.x gpu-guide
-
TF-TRT user guide
Can Gst-nvinferserver support models cross processes or containers?¶
No. The plugin is based on Triton Server CAPIs instead of customer APIs. It doesn't support customer/server compages. But the single process could run a standalone Triton model repo no matter how many models running together.
Can users set up dissimilar model repos when running multiple Triton models in single procedure?¶
No. All config files for a same deepstream-app procedure must accept aforementioned model_repo. Otherwise GSt-nvinferserver
may report fault or utilise random config on model_repo
.
infer_config { triton { model_repo { root: "path/to/model_repo" strict_model_config: true tf_gpu_memory_fraction: 0.35 ... } } }
What is the divergence betwixt DeepStream nomenclature and Triton nomenclature?¶
Gst-nvinferserver plugin back up 2 nomenclature methods:
-
Use DeepStream plugin to parse classification output and select labels. Configure the plugin's postprocess block with
labelfile_path
, and nomenclature options.infer_config { postprocess { labelfile_path: "path/to/classification_labels.txt" nomenclature { threshold: 0.v } } }
Instance:
samples/ configs/deepstream-app-triton/config_infer_primary_classifier_inception_graphdef_postprocessInDS.txt
-
Use Triton native nomenclature method. The characterization file configured in Triton model'south
config.pbtxt
(e.yard.samples/triton_model_repo/inception_graphdef/config.pbtxt
)output [ { name : "InceptionV3/Predictions/Softmax" data_type : TYPE_FP32 dims : [ 1001 ] label_filename : "inception_labels.txt" } ]
To enable information technology, need update Gst-nvinferserver'southward config file with:
infer_config { postprocess { triton_classification { topk : 1 threshold : 0.5 } } }
Example: samples/configs/deepstream-app-triton/config_infer_primary_classifier_inception_graphdef_postprocessIntriton.txt
Why is max_batch_size: 0
used in some Triton model config files ( samples/triton_model_repo/*/config.pbtxt
)?¶
This is the parameter settings for Triton runtime. Some models practice non support batching according to Triton docs (https://github.com/triton-inference-server/server/blob/master/docs/model_configuration.physician#maximum-batch-size). Gst-nvinferserver plugin supports these models in the non-batching mode, and tensor input/output shapes normally exist with full dimensions (1st dim is a batch-size). For example in triton_model_repo/densenet_onnx/config.pbtxt
with:
max_batch_size : 0 input { ... dims : [ 1 , 3 , 224 , 224 ] }
The 1st dim 1
is a batch-size in full-dims.
In improver to some specific cases, if a model can back up dynamic-shape with:
max_batch_size : 0 input { ... dims : [ - 1 , three , 224 , 224 ] }
The 1st dim -1
means a dynamic batching size. In this case, to control the maximum batching size for pre-allocated buffer pool, user need to configure Gst-nvinferserver plugin configs/deepstream-app-triton/config_infer_**.txt
with a valid maximum batch-size:
infer_config { unique_id : 1 gpu_ids : [ 0 ] max_batch_size : 30 ... }
The example in a higher place limits the final input batch-size to <= 30.
Gst-nvinferserver tin also support Triton models reshape in config files. Read more than details here: https://github.com/triton-inference-server/server/blob/principal/docs/model_configuration.md#reshape
How to support Triton ensemble model?¶
Come across details in Triton Ensemble Models in :doc: DS_plugin_gst_nvinferserver section.
Why am I getting error Could non get EGL display connection
while running deepstream sample application?¶
Earlier running the application, if display device is continued, use command: $consign DISPLAY=:0
If brandish device is non connected, apply command: $unset DISPLAY
Can Gst-nvinferserver back up inference on multiple GPUs?¶
Not withal. When running on multiple-gpu platform, you'll need a specific single gpu-id for GPU instances. If no gpu-id is specified, all GPU instances would exist running together by default. This could cause unexpected behaviors. Update config.pbtxt
and specify single gpu-id explicitly.
instance_group { count : 1 gpus : 0 kind : KIND_GPU }
Or specify single GPU in docker cmdline:
docker run - information technology -- rm -- gpus '"' device = 0 '"' ...
What is batch-size differences for a unmarried model in dissimilar config files ( gie group in source
, config_inferserver..
, and Triton model'due south config.pbtxt
)?¶
Take TensorRT Primary_Detector for example:
-
Gst-nvinferserver Plugin'south config file
configs/deepstream-app-triton/config_infer_plan_engine_primary.txt
, definesinfer_config { max_batch_size : xxx }
This indicates the Gst plugin would pre-allocate 30 input buffers for preprocessing and pass at most thirty batched preprocessed buffers into Triton Runtime each time. This value must be > 0
-
Deepstream-app's config file
configs/deepstream-app-triton/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
, defines[ primary - gie ] batch - size = 4 config - file = config_infer_plan_engine_primary . txt
This config-file has meridian-priority and would overwrite
configs/deepstream-app-triton/config_infer_plan_engine_primary.txt
withmax_batch_size
toiv
at run fourth dimension.
-
Triton Runtime has its ain config file format following https://github.com/triton-inference-server/server/blob/master/docs/model_configuration.doctor. Inside
triton_model_repo/Primary_Detector/config.pbtxt
, it definesname : "Primary_Detector" platform : "tensorrt_plan" max_batch_size : 30
This indicates Triton Runtime can batch at near 30 input buffers for model inference. In this instance, plan engine model
resnet10.caffemodel_b30_gpu0_int8.engine
in Triton backend can support maximumbatch-size: 30
. If Triton model is not non-batching configured withmax_batch_size: >0
, you'll need to make certain batch-size in config-file of Gst-nvinferserver and deepstream-app must less than or equal to this Triton model'smax_batch_size
intriton_model_repo/${model}/config.pbtxt
. If Triton model is non-batching configured withmax_batch_size: 0
, see the non-batching support questions above.
How to use NVTX for profiling?¶
NVIDIA® Tools Extension SDK (NVTX) provides APIs for annotating events, lawmaking ranges, and resources in an application. The cadre GStreamer plugins in DeepStreamSDK accept integrated NVTX and the events and ranges can be captured and visualized using NVIDIA Nsight tool, Tegra System Profiler, and Visual Profiler to capture and visualize these events and ranges. For more information on NVTX, visit https://docs.nvidia.com/gameworks/content/gameworkslibrary/nvtx/nvidia_tools_extension_library_nvtx.htm. Following are the instructions on how to capture and visualize these events using deepstream-app with NVIDIA Nsight tool:
-
Download and install Nsight tool from https://developer.nvidia.com/nsight-systems. Installation tin can be done using any file (.deb, .run or .rpm).
-
Run the post-obit control on last:
-
Click on File -> New Projection
-
Select target system as "Target for profiling".
-
Now the deepstream-app process needs to be launched by Nsight tool for profiling. In club to exercise that, add the following command in "Command line with arguments":
deepstream - app - c / opt / nvidia / deepstream / deepstream / samples / configs / deepstream - app / source30_1080p_dec_infer - resnet_tiled_display_int8 . txt
-
In the tick box options, enable "Collect NVTX trace". User can select other custom options as per requirement on the tool.
-
To begin profiling, click on "Start".
-
Manually stop collection of traces once application run is completed.
-
Once drove is stopped, in analytics view, the framewise analysis of each plugin will be shown, which gives an idea of time taken past each plugin.
Source: https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_FAQ.html
0 Response to "Nvidia Tegrastats Max N Command Please Try Again or See"
إرسال تعليق