Help with running Deepstream (with yoloV3)

Hello! I am very new to Nvidia Deepstream and have followed along the QuickStart Guide step-by-step but could not get it to work.
Jetpack Version: 4.4
Deepstream Verson: 5.1
(I think Jetpack 4.5 now works with Deepstream but I installed it about a month ago when 4.4 was required for Deepstream 5.1)

First of all, my goal is to use it with YoloV3 on a depth-sensing camera, but for now I am testing on a logitech webcam. I was able to run AlexeyAB’s yolov3 by itself with no problem.

For deepstream, I tried multiple config files (such as ones in /samples/configs/deepstream-app, and /sources/objectDetector_Yolo).
Currently, I keep getting the error:

deepstream-app -c config_infer_primary_yoloV3.txt
** ERROR: main:655: Failed to set pipeline to PAUSED
Quitting
ERROR from src_bin_muxer: Output width not set
Debug info: /dvs/git/dirty/git-master_linux/deepstream/sdk/src/gst-plugins/gst-nvmultistream/gstnvstreammux.c(2512): gst_nvstreammux_change_state (): /GstPipeline:pipeline/GstBin:multi_src_bin/GstNvStreamMux:src_bin_muxer
App run failed

I get this same error for every file, and when I use “vim (config file)”, it looks a lot shorter than ones I saw in example videos. This is what my “config_infer_primary_yoloV3.txt” looks like:

[property]
gpu-id=0
net-scale-factor=0.0039215697906911373
#0=RGB, 1=BGR
model-color-format=0
custom-network-config=yolov3.cfg
model-file=yolov3.weights
#model-engine-file=yolov3_b1_gpu0_int8.engine
labelfile-path=labels.txt
int8-calib-file=yolov3-calibration.table.trt7.0

0=FP32, 1=INT8, 2=FP16 mode

network-mode=1
num-detected-classes=80
gie-unique-id=1
network-type=0
is-classifier=0

0=Group Rectangles, 1=DBSCAN, 2=NMS, 3= DBSCAN+NMS Hybrid, 4 = None(No clustering)

cluster-mode=2
maintain-aspect-ratio=1
parse-bbox-func-name=NvDsInferParseCustomYoloV3
custom-lib-path=nvdsinfer_custom_impl_Yolo/libnvdsinfer_custom_impl_Yolo.so
engine-create-func-name=NvDsInferYoloCudaEngineGet
#scaling-filter=0
#scaling-compute-hw=0

[class-attrs-all]
nms-iou-threshold=0.3
threshold=0.7

In other examples I saw of people opening it, it had many more options such as ‘width, height, etc’ which I guess I am supposed to specify.

Lastly, some places tell me to edit these files, but when I try, it says it’s read-only, and cannot even use “chmod 775” or “chmod 777”.

Am I just not understanding how to properly run the sample files/models/configs in Deepstream?

Thank you for any help, if I missed any vital information please ask for it.

Could you upgrade to JP4.5.1 for DS5.1?
Or you can use DS5.0.1 on JP4.4.

Thank you for the reply. I tried installing Deepstream 5.0.0 (instead of 5.0.1 since I am following steps from another project that used the same setup, and double checking with the archived guide for 5.0 with dependencies), and when trying to run any config file, I get this:

** ERROR: <create_multi_source_bin:1320>: Failed to create element ‘src_bin_muxer’
** ERROR: <create_multi_source_bin:1411>: create_multi_source_bin failed
** ERROR: <create_pipeline:1294>: create_pipeline failed
** ERROR: main:636: Failed to create pipeline
Quitting
App run failed

I read somewhere it might be a gstreamer problem so I tried using “export GST_PLUGIN_PATH=”/usr/lib/aarch64-linux-gnu/gstreamer-1.0/", which didn’t seem to do anything.

Any solutions I should try? Can’t seem to find much in my case. Much appreciated, thank you!

I believe this is your setup issue.
Please check if you install a correct and complete Jetpack 4.4. And, if you will use DS5.0, you can install it via SDKManager.

For refer, you can also refer to Quickstart Guide — DeepStream 6.1.1 Release documentation to install DS5.0 package manually on JP4.4 system.

Hmm. Well I am quite sure I installed JP4.4 correctly, I double checked with installation videos and most other programs work fine. I also already have many many files on the SD card and do not wish to wipe it with a reinstallation of Jetpack.
I’m using Jetson Xavier NX and installed DS5.0 with the tar file manually.

Are there any other solutions? Thank you very much.

Ok, got your question.
You can’t use config_infer_primary_yoloV3.txt, it’s a sub-config file for GIE only.
You need to use deepstream_app_config_yoloV3.txt instead, and change its source according to your input source.

For logitech webcam, is it a usb camera? If it’s, you should change its source to be like below

[source0]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI
type=1
camera-width=640
camera-height=480
camera-fps-n=30
camera-fps-d=1
camera-v4l2-dev-node=0

Thank you for the reply.
So I am using an old USB Logitech webcam, I tried using the same file and changing the [source0] to have exactly that, however, i get this error:

deepstream-app -c deepstream_app_config_yoloV3.txt
Unknown or legacy key specified ‘is-classifier’ for group [property]
Warn: ‘threshold’ parameter has been deprecated. Use ‘pre-cluster-threshold’ instead.

Using winsys: x11
gstnvtracker: Loading low-level lib at /opt/nvidia/deepstream/deepstream-5.0/lib/libnvds_mot_klt.so
gstnvtracker: Optional NvMOT_RemoveStreams not implemented
gstnvtracker: Batch processing is OFF
gstnvtracker: Past frame output is OFF
ERROR: Could not open lib: /opt/nvidia/deepstream/deepstream-5.0/sources/objectDetector_Yolo/nvdsinfer_custom_impl_Yolo/libnvdsinfer_custom_impl_Yolo.so, error string: /opt/nvidia/deepstream/deepstream-5.0/sources/objectDetector_Yolo/nvdsinfer_custom_impl_Yolo/libnvdsinfer_custom_impl_Yolo.so: cannot open shared object file: No such file or directory
0:00:00.351125300 13426 0x7f44002350 ERROR nvinfer gstnvinfer.cpp:613:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Error in NvDsInferContextImpl::initialize() <nvdsinfer_context_impl.cpp:1139> [UID = 1]: Could not open custom lib: (null)
0:00:00.351205813 13426 0x7f44002350 WARN nvinfer gstnvinfer.cpp:809:gst_nvinfer_start:<primary_gie> error: Failed to create NvDsInferContext instance
0:00:00.351230901 13426 0x7f44002350 WARN nvinfer gstnvinfer.cpp:809:gst_nvinfer_start:<primary_gie> error: Config file path: /opt/nvidia/deepstream/deepstream-5.0/sources/objectDetector_Yolo/config_infer_primary_yoloV3.txt, NvDsInfer Error: NVDSINFER_CUSTOM_LIB_FAILED
** ERROR: main:655: Failed to set pipeline to PAUSED
Quitting
ERROR from primary_gie: Failed to create NvDsInferContext instance
Debug info: /dvs/git/dirty/git-master_linux/deepstream/sdk/src/gst-plugins/gst-nvinfer/gstnvinfer.cpp(809): gst_nvinfer_start (): /GstPipeline:pipeline/GstBin:primary_gie_bin/GstNvInfer:primary_gie:
Config file path: /opt/nvidia/deepstream/deepstream-5.0/sources/objectDetector_Yolo/config_infer_primary_yoloV3.txt, NvDsInfer Error: NVDSINFER_CUSTOM_LIB_FAILED
App run failed

Please follow the README to get the default YoloV3 sample running firstly