Yutong-gannis / ETSAuto

🚚 ETSAuto is an Advanced driver Assistance System applied in Euro Truck Simulator 2, performing the functions of Lane Centering Control (LCC) and Auto Lane Change (ALC).
MIT License
171 stars 24 forks source link

构建 YOLOV6 的 TensorRT 文件 出现了这个错误 #16

Closed HLeonHong closed 1 year ago

HLeonHong commented 1 year ago

构建 YOLOV6 的 TensorRT 文件 出现了这个错误

Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.

我找了pip install onnx-simplifier的方法也还是不行

Yutong-gannis commented 1 year ago

@HLeonHong 这不是报错,只是警告

HLeonHong commented 1 year ago

@HLeonHong 这不是报错,只是警告 请问这是构建YOLOV6成功了不

PS C:\Users\LeonH\Documents\Euro Truck Simulator 2\Self driving Euro Truck Simulato2> python ./tools/export.py -o ./engines/yolov6s_bdd_60.onnx -e ./engines/yolov6s_bdd_60.engine --end2end Namespace(calib_batch_size=8, calib_cache='./calibration.cache', calib_input=None, calib_num_images=5000, conf_thres=0.4, end2end=True, engine='./engines/yolov6s_bdd_60.engine', iou_thres=0.5, max_det=100, onnx='./engines/yolov6s_bdd_60.onnx', precision='fp16', verbose=False, workspace=1) [02/12/2023-12:04:31] [TRT] [I] [MemUsageChange] Init CUDA: CPU +224, GPU +0, now: CPU 7127, GPU 798 (MiB) [02/12/2023-12:04:33] [TRT] [I] [MemUsageChange] Init builder kernel library: CPU +123, GPU +22, now: CPU 7741, GPU 820 (MiB) [02/12/2023-12:04:33] [TRT] [W] CUDA lazy loading is not enabled. Enabling it can significantly reduce device memory usage. See CUDA_MODULE_LOADING in https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#env-vars ./tools/export.py:109: DeprecationWarning: Use set_memory_pool_limit instead. self.config.max_workspace_size = workspace * (2 ** 30) [02/12/2023-12:04:33] [TRT] [W] onnx2trt_utils.cpp:377: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32. Network Description Input 'images' with shape (1, 3, 640, 640) and dtype DataType.FLOAT Output 'outputs' with shape (1, 8400, 15) and dtype DataType.FLOAT ./tools/export.py:143: DeprecationWarning: Use network created with NetworkDefinitionCreationFlag::EXPLICIT_BATCH flag instead. self.builder.max_batch_size = self.batch_size [02/12/2023-12:04:34] [TRT] [F] Validation failed: score_activation}tion missing required fields: { C:_src\plugin\common\plugin.cpp:41

[02/12/2023-12:04:34] [TRT] [E] Unknown exception Traceback (most recent call last): File "./tools/export.py", line 288, in main(args) File "./tools/export.py", line 248, in main builder.create_network(args.onnx, args.end2end, args.conf_thres, args.iou_thres, args.max_det) File "./tools/export.py", line 191, in create_network layer = self.network.add_plugin_v2([boxes.get_output(0), updated_scores.get_output(0)], nms_layer) TypeError: add_plugin_v2(): incompatible function arguments. The following argument types are supported:

  1. (self: tensorrt.tensorrt.INetworkDefinition, inputs: List[tensorrt.tensorrt.ITensor], plugin: tensorrt.tensorrt.IPluginV2) -> tensorrt.tensorrt.IPluginV2Layer

Invoked with: <tensorrt.tensorrt.INetworkDefinition object at 0x00000225184ECEB0>, [<tensorrt.tensorrt.ITensor object at 0x00000225184D4370>, <tensorrt.tensorrt.ITensor object at 0x0000022515FD2E70>], None PS C:\Users\LeonH\Documents\Euro Truck Simulator 2\Self driving Euro Truck Simulato2>

HLeonHong commented 1 year ago

好像卡了? 图片

HLeonHong commented 1 year ago

好像卡了? 图片

最后是这样 图片

Yutong-gannis commented 1 year ago

@HLeonHong 已经构建完成了

HLeonHong commented 1 year ago

这个也是构建完成了吗? 构建 CLRNet 的 TensorRT 文件 图片

Brady-Le commented 1 year ago

@HLeonHong 这不是报错,只是警告 请问这是构建YOLOV6成功了不

PS C:\Users\LeonH\Documents\Euro Truck Simulator 2\Self Driving Euro Truck Simulato2> python ./tools/export.py -o ./engines/yolov6s_bdd_60.onnx -e ./engines/yolov6s_bdd_60.engine --end2end Namespace(calib_batch_size=8, calib_cache='./calibration.cache', calib_input=None, calib_num_images=5000, conf_thres=0.4, end2end=True, engine='./engines/yolov6s_bdd_60.engine', iou_thres=0.5, max_det=100, onnx='./engines/yolov6s_bdd_60.onnx', precision='fp16', verbose=False, workspace=1) [02/12/2023-12:04:31] [TRT] [I] [内存用法更改] 初始化 CUDA: CPU +224, GPU +0, 现在: CPU 7127, GPU 798 (MiB) [02/12/2023-12:04:33] [TRT] [I] [内存用法更改] 初始化生成器内核库:CPU +123,GPU +22,现在:CPU 7741,GPU 820 (MiB) [02/12/2023-12:04:33] [TRT][W] 未启用 CUDA 延迟加载。启用它可以显著减少设备内存使用量。请参阅 https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#env-vars ./tools/export.py:109:弃用警告:请改用set_memory_pool_limit。 self.config.max_workspace_size = workspace * (2 ** 30) [02/12/2023-12:04:33] [TRT] [W] onnx2trt_utils.cpp:377:您的 ONNX 模型是使用 INT64 权重生成的,而 TensorRT 本身不支持 INT64。尝试向下转换为 INT32。网络描述 输入带有形状 (1, 3, 640, 640) 的 'images' 和 dtype DataType.FLOAT 输出 'outputs' 与形状 (1, 8400, 15) 和 dtype DataType.FLOAT ./tools/export.py:143: 弃用警告: 改用使用 NetworkDefinitionCreationFlag::EXPLICIT_BATCH 标志创建的网络。 self.builder.max_batch_size = self.batch_size [02/12/2023-12:04:34] [TRT] [F] 验证失败:score_activation}缺少必填字段:{ C:_src\plugin\common\plugin.cpp:41CUDA_MODULE_LOADING

[02/12/2023-12:04:34] [TRT] [E] 未知异常回溯(最近最后一次调用):文件 “./tools/export.py”,第 288 行,在 main(args) 中 文件 “./tools/export.py”,第 248 行,在主builder.create_network(args.onnx, args.end2end, args.conf_thres, args.iou_thres, args.max_det) 文件 “./tools/export.py”,第 191 行,create_network layer = self.network.add_plugin_v2([boxes.get_output(0), updated_scores.get_output(0)], nms_layer) TypeError: add_plugin_v2(): 不兼容的函数参数。支持以下参数类型:1. (self: tensorrt.tensorrt.INetworkDefinition, inputs: List[tensorrt.tensorrt.ITensor], plugin: tensorrt.tensorrt.IPluginV2) -> tensorrt.tensorrt.IPluginV2Layer

调用方式: <tensorrt.tensorrt.INetworkDefinition object at 0x00000225184ECEB0>, [<tensorrt.tensorrt.ITensor object at 0x00000225184D4370>, <tensorrt.tensorrt.ITensor object at 0x0000022515FD2E70>], none PS C:\Users\LeonH\Documents\Euro Truck Simulator 2\Self driving Euro Truck Simulato2>

请问出现上述一样的错误是如何解决的呢?

HLeonHong commented 1 year ago

由于学习原因我不太记得具体的了,不过我当时也是在网上查的 作者说了不是报错,那么可以暂时忽略。进行下一步 这期间也会有好几个地方与作者的不相同的,比如所用到软件的版本等等 按照自己的情况灵活处理一下就好了

Brady-Le commented 1 year ago

由于学习原因我不太记得具体的了,不过我当时也是在网上查的 作者说了不是报错,那么可以暂时忽略。进行下一步 这期间也会有好几个地方与作者的不相同的,比如所用到软件的版本等等 按照自己的情况灵活处理一下就好了

已找到解决办法: 在 export.py里的 fc = trt.PluginFieldCollection(fc) 前面加上一行 fc.append(trt.PluginField("score_activation", np.array([0], dtype=np.int32), trt.PluginFieldType.INT32)) 就可以生成了

HLeonHong commented 1 year ago

很棒!这么快就找到了解决方法

HLeonHong commented 1 year ago

由于学习原因我不太记得具体的了,不过我当时也是在网上查的 作者说了不是报错,那么可以暂时忽略。进行下一步 这期间也会有好几个地方与作者的不相同的,比如所用到软件的版本等等 按照自己的情况灵活处理一下就好了

已找到解决办法: 在 export.py里的 fc = trt.PluginFieldCollection(fc) 前面加上一行 fc.append(trt.PluginField("score_activation", np.array([0], dtype=np.int32), trt.PluginFieldType.INT32)) 就可以生成了

麻烦你告诉我一下你所找到方法的网址吧

Brady-Le commented 1 year ago

由于学习原因我不太记得具体的了,不过我当时也是在网上查的 作者说了不是报错,那么可以暂时忽略。进行下一步 这期间也会有好几个地方与作者的不相同的,比如所用到软件的版本等等 按照自己的情况灵活处理一下就好了

已找到解决办法: 在 export.py里的 fc = trt.PluginFieldCollection(fc) 前面加上一行 fc.append(trt.PluginField("score_activation", np.array([0], dtype=np.int32), trt.PluginFieldType.INT32)) 就可以生成了

麻烦你告诉我一下你所找到方法的网址吧

其实就在本项目的issue里 https://github.com/Yutong-gannis/ETSAuto/issues/14

HLeonHong commented 1 year ago

的确是我忘了 你已经部署好了吧 我昨晚也重新部署了,这次比较顺利,也做了笔记