Comments (19)
@lyb36524 For TensorRT8.4.2.4, there will not be this error.
from tensorrt-alpha.
@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.
@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
from tensorrt-alpha.
@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
- 注意:如果要进行多批量推理,只需要修改上述批量参数,但在进行推理时可能需要修改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.
@lyb36524 According to your error message, suggestions:
- Please compile onnx and run app_yolov8 on the same device
- The TensorRT version corresponding to compiling onnx must be consistent with the version linked by app_yolov8
from tensorrt-alpha.
@lyb36524 According to your error message, suggestions:
- Please compile onnx and run app_yolov8 on the same device
- 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.
@lyb36524 Why do you copy trt files between different devices? This is forbidden by TensorRT! #15 (comment)
from tensorrt-alpha.
@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.
- 改用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.
- 改用tensorrt8.2,编译onnx的时候,和你一样的报错,即:Assertion failed: inputs.at(0).isInt32() && "For range operator ...
- 但是依据方法我尝试在TX2设备上部署YOLOV8项目,但是TX2上的tensorrt,转换模型时会报告不支持int64的错误,有什么方法可以转换为int32呢? #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
在你哪里,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.
@lyb36524 上面指令试过?batch=1。另外,yolov8可能有个bug,batch=4导出onnx还是1
from tensorrt-alpha.
@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.
@lyb36524 不应该,有两个兄弟反馈在TX2跑通了,加企鹅732369616
from tensorrt-alpha.
@lyb36524 不应该,有两个兄弟反馈在TX2跑通了,加企鹅732369616
太感谢了,我现在要出去一下,我先加您QQ
from tensorrt-alpha.
@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.
@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.
把作者逼的最后说中文了😄,感谢,我也碰到类似问题
from tensorrt-alpha.
@Phoenix8215 可以直接提新的issue
from tensorrt-alpha.
@Phoenix8215 如图在yolo.cpp中,将0改为1,最下方代码注释。
from tensorrt-alpha.
Related Issues (20)
- yolov8 obb HOT 1
- yolov8 vs项目生成报错 HOT 2
- 编译失败
- 如何计算转化后mAP值 HOT 1
- yolov8-pose推理时报错 HOT 1
- support yolo-world
- 抓狂,过了一夜报错:UDA initialization failure with error: 222.,之前还是跑通的
- 自己训练的模型检测框错位,标签乱 HOT 1
- Cuda12.1+tensorrt10.0 运行C++yolov8工程报错,提示getBindingDimensions 不是 nvinfer1::IExecutionContext成员 代码C2039 HOT 3
- spend more than 20ms on prepocess on jetson nano, batch=1 HOT 7
- make -j10在jetson nano上报错
- 希望后期可以支持目标跟踪 HOT 1
- onnx转换trt报错 HOT 1
- 关于多batch推理问题 HOT 1
- yolov8原网络改进 HOT 1
- 如何对rstp流进行测试 HOT 1
- Yolov5-seg HOT 1
- 如何计算边缘部署后的mAP值 HOT 1
- make j10 报错 HOT 1
- fps计算,延时问题 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tensorrt-alpha.