Code Monkey home page Code Monkey logo

Comments (19)

FeiYull avatar FeiYull commented on May 18, 2024

@lyb36524 For TensorRT8.4.2.4, there will not be this error.

from tensorrt-alpha.

lyb36524 avatar lyb36524 commented on May 18, 2024

@lyb36524 For TensorRT8.4.2.4, there will not be this error.

对在x86上,使用TensorRT只会有警告,不会停止并且可以得到文件。但是在TX2上最高版本只有TensorRT8.2.1,完不成转换,我尝试在x86,转换得到模型,但是在TX2上推理会报错,引擎版本不一致,我尝试了好多TensorRT的版本,以及对应的8.2.1,依然有这个问题,所以我好像必须在TX2上完成转换?

from tensorrt-alpha.

FeiYull avatar FeiYull commented on May 18, 2024

@lyb36524 for Tensorrt8.2, you can reference the following step:

  • export onnx:yolo mode=export model=yolov8n.pt format=onnx batch=1

  • compile onnx:../../TensorRT-8.2.1.8/bin/trtexec --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly

  • This is the compilation success message:
    [02/28/2023-11:35:37] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in engine deserialization: CPU +0, GPU +13, now: CPU 0, GPU 13 (MiB)
    [02/28/2023-11:35:37] [I] Engine built in 128.87 sec.
    &&&& PASSED TensorRT.trtexec [TensorRT v8201] # ../../TensorRT-8.2.1.8/bin/trtexec --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly

  • inference:./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=1 --img=../../data/6406407.jpg --show

demo

from tensorrt-alpha.

lyb36524 avatar lyb36524 commented on May 18, 2024

@lyb36524 Tensorrt8.2,您可以参考以下步骤:

  • 导出 ONNX:yolo mode=export model=yolov8n.pt format=onnx batch=1
  • 编译 onnx:../../TensorRT-8.2.1.8/bin/trtexec --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly
  • 这是编译成功消息: [02/28/2023-11:35:37] [I] [TRT] [内存用法更改] 引擎反序列化中的 TensorRT 管理分配:CPU +0、GPU +13,现在:CPU 0、GPU 13 (MiB) [02/28/2023-11:35:37] [I] 引擎在 128.87 秒内建成。 &&&& 通过了 TensorRT.trtexec [TensorRT v8201] # ../../TensorRT-8.2.1.8/bin/trtexec --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly
  • 推理:./app_yolov8 --model=../../data/yolov8/yolov8n_bs4.trt --size=640 --batch_size=1 --img=../../data/6406407.jpg --show

demo

  • 注意:如果要进行多批量推理,只需要修改上述批量参数,但在进行推理时可能需要修改yolov8.cpp,因为代码支持动态批量。

谢谢你的回复,但是我在X86平台上,使用不同的TensorRT,版本都可以,完成转换。
但是在TX2上,就会报错int64,有可能是ARM架构的原因。
然后我试着在X86平台上找到TX2平台上的TensorRT对应版本,完成转换,我把8.0的版本都试了一遍,可以完成转换。
但是在TX2上推理时都会出现类似的错误:

nvidia@ubuntu:~/TensorRT-Alpha-main/yolov8/build$ ./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=1 --img=../../data/6406407.jpg --show --savePath
[02/28/2023-02:33:47] [I] model_path = ../../data/yolov8/yolov8n.trt
[02/28/2023-02:33:47] [I] size = 640
[02/28/2023-02:33:47] [I] batch_size = 1
[02/28/2023-02:33:47] [I] image_path = ../../data/6406407.jpg
[02/28/2023-02:33:47] [I] is_show = 1
[02/28/2023-02:33:47] [I] save_path = true
[02/28/2023-02:33:48] [I] [TRT] [MemUsageChange] Init CUDA: CPU +261, GPU +0, now: CPU 302, GPU 6756 (MiB)
[02/28/2023-02:33:48] [I] [TRT] Loaded engine size: 16 MiB
[02/28/2023-02:33:48] [E] [TRT] 1: [stdArchiveReader.cpp::StdArchiveReader::40] Error Code 1: Serialization (Serialization assertion stdVersionRead == serializationVersion failed.Version tag does not match. Note: Current Version: 205, Serialized Engine Version: 232)
[02/28/2023-02:33:48] [E] [TRT] 4: [runtime.cpp::deserializeCudaEngine::50] Error Code 4: Internal Error (Engine deserialization failed.)
[02/28/2023-02:33:48] [E] initEngine() ocur errors!
runtime error /home/nvidia/TensorRT-Alpha-main/yolov8/yolov8.cpp:10 cudaFree(m_output_src_transpose_device) failed.
code = cudaErrorInvalidValue, message = invalid argument
nvidia@ubuntu:

所以,我在想是不是必须在TX2,上完成onnxx到trt的转换,所以有什么方法可以将,onnx转为INT32的格式?或者其他导出trt的方法?

from tensorrt-alpha.

FeiYull avatar FeiYull commented on May 18, 2024

@lyb36524 According to your error message, suggestions:

  1. Please compile onnx and run app_yolov8 on the same device
  2. The TensorRT version corresponding to compiling onnx must be consistent with the version linked by app_yolov8

from tensorrt-alpha.

lyb36524 avatar lyb36524 commented on May 18, 2024

@lyb36524 According to your error message, suggestions:

  1. Please compile onnx and run app_yolov8 on the same device
  2. The TensorRT version corresponding to compiling onnx must be consistent with the version linked by app_yolov8

是的,但是我好像绕不开,TX2上的ARM平台的TensorRT8.2.1,如果我在其他平台编译了app_yolov8,在TX2上就依然无法运行。
所以,好像必须把ONNX int64 转换为 int32,再转换trt,但是我不知道有什么方法可以转换,或着其他,在TX2上转换模型的方法?

from tensorrt-alpha.

FeiYull avatar FeiYull commented on May 18, 2024

@lyb36524 Why do you copy trt files between different devices? This is forbidden by TensorRT! #15 (comment)

from tensorrt-alpha.

lyb36524 avatar lyb36524 commented on May 18, 2024

@lyb36524 Why do you copy trt files between different devices? This is forbidden by TensorRT! #15 (comment)

因为,我在TX2平台上无法,完成onnx到trt 文件 的转换,他会提示:

[02/28/2023-12:49:19] [E] [TRT] ModelImporter.cpp:779: ERROR: builtin_op_importers.cpp:3352 In function importRange:
[8] Assertion failed: inputs.at(0).isInt32() && "For range operator with dynamic inputs, this version of TensorRT only supports INT32!"

我不知道还有什么方法,能完成 trt文件的转换,或者怎么修改ONNX文件,实现trt文件的转换?谢谢

from tensorrt-alpha.

FeiYull avatar FeiYull commented on May 18, 2024

@lyb36524

  • 改用tensorrt8.2,编译onnx的时候,和你一样的报错,即:Assertion failed: inputs.at(0).isInt32() && "For range operator ...
  • 但是依据方法#15 (comment)
  • 经过验证没有问题的
  • onnx模型在任意平台设备导出,接着拷贝到你的TX2中。编译ONNX,运行app_yolov8。注:使用tensorrt8.2编译的onnx,可执行程序链接一定是tensorrt8.2,同时TX2编译出的trt文件模型,只能在TX2上使用。你上面混用了版本、硬件平台, Error Code 1: Serialization (Serialization assertion stdVersionRead == serializationVersion failed.Version tag does not match

from tensorrt-alpha.

lyb36524 avatar lyb36524 commented on May 18, 2024

@lyb36524

在你哪里,onnx拷贝到TX2可以完成转换?我这里ONNX拷贝到TX2,不能完成转换,会出现:
[02/28/2023-01:55:04] [E] [TRT] ModelImporter.cpp:779: ERROR: builtin_op_importers.cpp:3352 In function importRange:
[8] Assertion failed: inputs.at(0).isInt32() && "For range operator with dynamic inputs, this version of TensorRT only supports INT32!"
就是第一张图片那样。
我的TX2使用的是,JetPack4.6.3,已经是TX2支持的最高版本了。

from tensorrt-alpha.

FeiYull avatar FeiYull commented on May 18, 2024

@lyb36524 上面指令试过?batch=1。另外,yolov8可能有个bug,batch=4导出onnx还是1

from tensorrt-alpha.

lyb36524 avatar lyb36524 commented on May 18, 2024

@lyb36524 上面指令试过?batch=1。另外,yolov8可能有个bug,batch=4导出onnx还是1

试过,我一开始就是按照,这个步骤,在TX2上操作的:
https://blog.csdn.net/m0_72734364/article/details/128758544?app_version=5.12.1&csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128758544%22%2C%22source%22%3A%22m0_72734364%22%7D&utm_source=app

直到我遇到了这个问题:
[02/28/2023-01:55:04] [E] [TRT] ModelImporter.cpp:779: ERROR: builtin_op_importers.cpp:3352 In function importRange:
[8] Assertion failed: inputs.at(0).isInt32() && "For range operator with dynamic inputs, this version of TensorRT only supports INT32!"

from tensorrt-alpha.

FeiYull avatar FeiYull commented on May 18, 2024

@lyb36524 不应该,有两个兄弟反馈在TX2跑通了,加企鹅732369616

from tensorrt-alpha.

lyb36524 avatar lyb36524 commented on May 18, 2024

@lyb36524 不应该,有两个兄弟反馈在TX2跑通了,加企鹅732369616

太感谢了,我现在要出去一下,我先加您QQ

from tensorrt-alpha.

lyb36524 avatar lyb36524 commented on May 18, 2024

@lyb36524 不应该,有两个兄弟反馈在TX2跑通了,加企鹅732369616

问题成功解决,感谢飞哥大力援助,以下是,解决方法:
TX2 系统版本,jetpak4.6
关键步骤:
1.在PC or TX2导出静态onnx.
2.在TX2上,用TRT8.2编译onnx,得到trt文件.
注意:
然后编译tensorrt-alpha代码时所用的Tensorrt版本,要与trt转换时的一致。
关键命令:
1.在PC 或者 TX2导出静态onnx,注意这里与其他X86 ubuntu 上的转换命令不一致
yolo mode=export model=yolov8n.pt format=onnx batch=1
2.将onnx文件拷贝到,TX2上,并在TX2上运行以下命令编译trt文件:
../../TensorRT-8.2.1.8/bin/trtexec --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly
TX2的trtexec可执行文件目录在:
/usr/src/tensorrt/bin
注意自行更改命令的目录
3.运行测试:
./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=1 --img=../../data/6406407.jpg --show

from tensorrt-alpha.

FeiYull avatar FeiYull commented on May 18, 2024

@lyb36524 不应该,有两个兄弟反馈在TX2跑通了,加企鹅732369616

问题成功解决,感谢飞哥大力援助,以下是,解决方法: TX2 系统版本,jetpak4.6 关键步骤: 1.在PC or TX2导出静态onnx. 2.在TX2上,用TRT8.2编译onnx,得到trt文件. 注意: 然后编译tensorrt-alpha代码时所用的Tensorrt版本,要与trt转换时的一致。 关键命令: 1.在PC 或者 TX2导出静态onnx,注意这里与其他X86 ubuntu 上的转换命令不一致yolo mode=export model=yolov8n.pt format=onnx batch=1 2.将onnx文件拷贝到,TX2上,并在TX2上运行以下命令编译trt文件: ../../TensorRT-8.2.1.8/bin/trtexec --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly TX2的trtexec可执行文件目录在: /usr/src/tensorrt/bin 注意自行更改命令的目录 3.运行测试: ./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=1 --img=../../data/6406407.jpg --show

除此之外,TX2设备拷贝数据需要简单修改下,参考:#16 (comment)

from tensorrt-alpha.

Phoenix8215 avatar Phoenix8215 commented on May 18, 2024

把作者逼的最后说中文了😄,感谢,我也碰到类似问题

from tensorrt-alpha.

FeiYull avatar FeiYull commented on May 18, 2024

@Phoenix8215 可以直接提新的issue

from tensorrt-alpha.

FeiYull avatar FeiYull commented on May 18, 2024

@Phoenix8215 如图在yolo.cpp中,将0改为1,最下方代码注释。
捕获

from tensorrt-alpha.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.