Error in Yolov4 engine conversion,

Thanks @Morganh

I Followd the step 4.

But getting /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7 is not a symbolic link issue.

Suggest you backing up the default 7.1.3 plugin.
Then use "sudo ln -s xxx xxx " to generate the expected I mentioned above.

For example,
$ cd /usr/lib/aarch64-linux-gnu
$ sudo ln -s libnvinfer_plugin.so.7.1.3 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so
$ sudo ln -s libnvinfer_plugin.so.7.1.3 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7
$ sudo ln -s libnvinfer_plugin.so.7.1.3 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7.0.0

Yes I have done that.
Below is the output of ll /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so*

smarg@smarg-NX:~/Documents/Pritam/Models/TensorRT/build$ ll /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so*
-rwxr-xr-x 1 root root 9697336 Oct 12 13:50 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so*
-rwxr-xr-x 1 root root 9697336 Oct 12 13:50 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7*
lrwxrwxrwx 1 root root 26 Oct 12 14:30 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7.0.0 → libnvinfer_plugin.so.7.1.3*
-rwxr-xr-x 1 root root 11028968 Oct 12 14:11 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7.1.3*

It is not expected yet.
The /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so should point to libnvinfer_plugin.so.7.1.3
The /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7 should point to libnvinfer_plugin.so.7.1.3

But with the command

$ sudo ln -s libnvinfer_plugin.so.7.1.3 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so
$ sudo ln -s libnvinfer_plugin.so.7.1.3 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7

I was getting

ln: failed to create symbolic link '/usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so': File exists
ln: failed to create symbolic link '/usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7': File exists

Just run
$ sudo rm /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so
$ sudo rm /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7

then,
$ sudo ln -s libnvinfer_plugin.so.7.1.3 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so
$ sudo ln -s libnvinfer_plugin.so.7.1.3 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7

Okay Now getting.

smarg@smarg-NX:/usr/lib/aarch64-linux-gnu$ ll /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so*
lrwxrwxrwx 1 root root       26 Oct 12 14:50 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so -> libnvinfer_plugin.so.7.1.3*
lrwxrwxrwx 1 root root       26 Oct 12 14:50 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7 -> libnvinfer_plugin.so.7.1.3*
lrwxrwxrwx 1 root root       26 Oct 12 14:30 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7.0.0 -> libnvinfer_plugin.so.7.1.3*
-rwxr-xr-x 1 root root 11028968 Oct 12 14:36 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7.1.3*
smarg@smarg-NX:/usr/lib/aarch64-linux-gnu$ 

Now what should I do next ?
Still the same issue :

Sometime error msg invisible and some time visible.

Can you try to rebuild TRT OSS plugin?
On my side, the size is 10009144 .
-rwxr-xr-x 1 root root 10009144 10月 12 15:06 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7.1.3*

Yes Retrying.

Hi @morganh
I rebuild the TRT OSS plugin but still same issue.

Steps I followed :



    $ git clone -b 21.03 https://github.com/nvidia/TensorRT
    $ cd TensorRT/
    $ git submodule update --init --recursive
    $ export TRT_SOURCE=pwd
    $ cd $TRT_SOURCE
    $ mkdir -p build && cd build
    $ /usr/local/bin/cmake … -DGPU_ARCHS=72 -DTRT_LIB_DIR=/usr/lib/aarch64-linux-gnu/ -DCMAKE_C_COMPILER=/usr/bin/gcc -DTRT_BIN_DIR=pwd/out

    $ ll /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so*
    Previously My NX is using libnvinfer_plugin.so.7.1.3
    $ sudo cp libnvinfer_plugin.so.7.2.2 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7.1.3
    $ sudo ldconfig

    $ ./tlt-converter -k nvidia_tlt -d 3,544,960 -e trt.fp16.engine -t fp16 -p Input,1x3x544x960,1x3x544x960,1x3x544x960 yolov4_resnet18.etlt

Issue :

Can you try my plugin which is built in NX ?libnvinfer_plugin.so.7.2.2 (9.5 MB)

Sure.
I have to run only two commands

    $ sudo cp libnvinfer_plugin.so.7.2.2 /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so.7.1.3
    $ sudo ldconfig

At the place of libnvinfer_plugin.so.7.2.2 in the above command will be your plugin ?

Can you share your yolov4 engine file too. ?

Yes, please share the result of $ ll /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so* as well.

Below is the output $ ll /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so*

But tlt-converter again giving me the error:

smarg@smarg-NX:~/Documents/Pritam/Models/yolov4$ ./tlt-converter -k nvidia_tlt -d 3,544,960 -e trt.fp16.engine -t fp16 -p Input,1x3x544x960,1x3x544x960,1x3x544x960 yolov4_resnet18.etlt
[ERROR] UffParser: Unsupported number of graph 0
[ERROR] Failed to parse the model, please check the encoding key to make sure it's correct
[ERROR] Network must have at least one output
[ERROR] Network validation failed.
[ERROR] Unable to create engine
Segmentation fault (core dumped)

Can you run
$ md5sum yolov4_resnet18.etlt

Result of $ md5sum yolov4_resnet18.etlt

d41d8cd98f00b204e9800998ecf8427e yolov4_resnet18.etlt

It is different. Mine is as below. Can you double check if it is downloaded correctly?
$ md5sum yolov4_resnet18.etlt
69f6e4cbeaa4df4e95f8808fa9167e52 yolov4_resnet18.etlt

Let me download again the file.