• Hardware Platform Jetson • DeepStream Version 6.3 • JetPack Version 5.1 • TensorRT Version 5.1 • Issue Type: questions
LPRNet I have trained on custom dataset produces different results when running on Jetson.
In my experiment I would process video on Jetson and save crops from object detector, and then run inference in my training environment. In some cases results are the same, while in others model outputs a wrong character. Sometimes it would drop one character or give wrong output for one or two characters.
For example:
On Jetson I get MLY0005, while on Docker I get correct value of MLY9905
I train LPRNet on nvcr.io/nvidia/tao/tao-toolkit:5.0.0-tf1.15.5 image, use it to export to onnx and then transfer it to Jetson where it is automatically converted to tlt once I start the app.
What could be the reason for this behavior and how to get my model to give better results?
For Jetson, may I know what is the tensorrt version?
And how did you convert onnx file to tensorrt engine, with trtexec, or tao-converter, or deepstream-tao-apps or your own script?
Jtop says this is my version, but here’s the full dpkg output:
ii cuda-11-4 11.4.19-1 arm64 CUDA 11.4 meta-package
ii cuda-cccl-11-4 11.4.298-1 arm64 CUDA CCCL
ii cuda-command-line-tools-11-4 11.4.19-1 arm64 CUDA command-line tools
ii cuda-compiler-11-4 11.4.19-1 arm64 CUDA compiler
ii cuda-cudart-11-4 11.4.298-1 arm64 CUDA Runtime native Libraries
ii cuda-cudart-dev-11-4 11.4.298-1 arm64 CUDA Runtime native dev links, headers
ii cuda-cuobjdump-11-4 11.4.315-1 arm64 CUDA cuobjdump
ii cuda-cupti-11-4 11.4.298-1 arm64 CUDA profiling tools runtime libs.
ii cuda-cupti-dev-11-4 11.4.298-1 arm64 CUDA profiling tools interface.
ii cuda-cuxxfilt-11-4 11.4.300-1 arm64 CUDA cuxxfilt
ii cuda-documentation-11-4 11.4.298-1 arm64 CUDA documentation
ii cuda-driver-dev-11-4 11.4.298-1 arm64 CUDA Driver native dev stub library
ii cuda-gdb-11-4 11.4.298-1 arm64 CUDA-GDB
ii cuda-libraries-11-4 11.4.19-1 arm64 CUDA Libraries 11.4 meta-package
ii cuda-libraries-dev-11-4 11.4.19-1 arm64 CUDA Libraries 11.4 development meta-package
ii cuda-nvcc-11-4 11.4.315-1 arm64 CUDA nvcc
ii cuda-nvdisasm-11-4 11.4.298-1 arm64 CUDA disassembler
ii cuda-nvml-dev-11-4 11.4.298-1 arm64 NVML native dev links, headers
ii cuda-nvprune-11-4 11.4.298-1 arm64 CUDA nvprune
ii cuda-nvrtc-11-4 11.4.300-1 arm64 NVRTC native runtime libraries
ii cuda-nvrtc-dev-11-4 11.4.300-1 arm64 NVRTC native dev links, headers
ii cuda-nvtx-11-4 11.4.300-1 arm64 NVIDIA Tools Extension
ii cuda-profiler-api-11-4 11.4.298-1 arm64 CUDA Profiler API
ii cuda-runtime-11-4 11.4.19-1 arm64 CUDA Runtime 11.4 meta-package
ii cuda-samples-11-4 11.4.300-1 arm64 CUDA example applications
ii cuda-sanitizer-11-4 11.4.298-1 arm64 CUDA Sanitizer
ii cuda-toolkit-11-4 11.4.19-1 arm64 CUDA Toolkit 11.4 meta-package
ii cuda-toolkit-11-4-config-common 11.4.298-1 all Common config package for CUDA Toolkit 11.4.
ii cuda-toolkit-11-config-common 11.4.298-1 all Common config package for CUDA Toolkit 11.
ii cuda-toolkit-config-common 11.4.298-1 all Common config package for CUDA Toolkit.
ii cuda-tools-11-4 11.4.19-1 arm64 CUDA Tools meta-package
ii cuda-visual-tools-11-4 11.4.19-1 arm64 CUDA visual tools
ii graphsurgeon-tf 8.5.2-1+cuda11.4 arm64 GraphSurgeon for TensorRT package
ii libcudnn8 8.6.0.166-1+cuda11.4 arm64 cuDNN runtime libraries
ii libcudnn8-dev 8.6.0.166-1+cuda11.4 arm64 cuDNN development libraries and headers
ii libcudnn8-samples 8.6.0.166-1+cuda11.4 arm64 cuDNN samples
ii libnvinfer-bin 8.5.2-1+cuda11.4 arm64 TensorRT binaries
ii libnvinfer-dev 8.5.2-1+cuda11.4 arm64 TensorRT development libraries and headers
ii libnvinfer-plugin-dev 8.5.2-1+cuda11.4 arm64 TensorRT plugin libraries
ii libnvinfer-plugin8 8.5.2-1+cuda11.4 arm64 TensorRT plugin libraries
ii libnvinfer-samples 8.5.2-1+cuda11.4 all TensorRT samples
ii libnvinfer8 8.5.2-1+cuda11.4 arm64 TensorRT runtime libraries
ii libnvonnxparsers-dev 8.5.2-1+cuda11.4 arm64 TensorRT ONNX libraries
ii libnvonnxparsers8 8.5.2-1+cuda11.4 arm64 TensorRT ONNX libraries
ii libnvparsers-dev 8.5.2-1+cuda11.4 arm64 TensorRT parsers libraries
ii libnvparsers8 8.5.2-1+cuda11.4 arm64 TensorRT parsers libraries
ii nvidia-cuda 5.1-b147 arm64 NVIDIA CUDA Meta Package
ii nvidia-cuda-dev 5.1-b147 arm64 NVIDIA CUDA dev Meta Package
ii nvidia-l4t-cuda 35.2.1-20230124153320 arm64 NVIDIA CUDA Package
ii python3-libnvinfer 8.5.2-1+cuda11.4 arm64 Python 3 bindings for TensorRT
ii python3-libnvinfer-dev 8.5.2-1+cuda11.4 arm64 Python 3 development package for TensorRT
ii tensorrt 8.5.2.2-1+cuda11.4 arm64 Meta package for TensorRT
ii uff-converter-tf 8.5.2-1+cuda11.4 arm64 UFF converter for TensorRT package
To narrow down, can you generate a tensorrt engine in tao-deploy docker instead. nvcr.io/nvidia/tao/tao-toolkit:5.2.0-deploy
Please run the docker in a dgpu machine instead of Jetson device.
Since I’m using training on a shared server I will make a request for their team to prepare tao-deploy, but this might take some time.
Is there something else I can try while waiting?
Also, during conversion to tensorrt engine I get this warning:
Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.
Could you try more in Jetson devices?
experiment1: generate fp32 engine
experiment2: generate engine with --maxShapes=image_input:1x3x48x96 --minShapes=image_input:1x3x48x96 --optShapes=image_input:1x3x48x96
I have video of still images I feed to my deepstream application, with YoloV5 as my primary detector and LPRNet as secondary classifier. After inference, crops are saved in a folder. These crops I later upload to server where I can do inference with LPRNet.
I am afraid there is something mismatching in preprocessing.
To narrow down, suggest you to install tao-deploy in Jetson device.
Please run with below steps. The tao-deploy can work on Jetson(For example, Orin).
docker run --runtime=nvidia -it --rm -v nvcr.io/nvidia/l4t-tensorrt:r8.5.2.2-devel /bin/bash
Then, inside the docker,
$apt-get update
$apt install libopenmpi-dev
$pip install nvidia_tao_deploy==5.0.0.423.dev0
$pip install https://urm.nvidia.com/artifactory/sw-eff-pypi/nvidia-eff-tao-encryption/0.1.7/nvidia_eff_tao_encryption-0.1.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
$pip install https://urm.nvidia.com/artifactory/sw-eff-pypi/nvidia-eff/0.6.2/nvidia_eff-0.6.2-py38-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
$lprnet --help