linghu8812 / tensorrt_inference

696 stars 205 forks source link

cmake error #6

Open DataXujing opened 3 years ago

DataXujing commented 3 years ago
CMakeFiles/yolov5_trt.dir/build.make:86: recipe for target 'CMakeFiles/yolov5_trt.dir/yolov5.cpp.o' failed
make[2]: *** [CMakeFiles/yolov5_trt.dir/yolov5.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/yolov5_trt.dir/all' failed
make[1]: *** [CMakeFiles/yolov5_trt.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
linghu8812 commented 3 years ago

@DataXujing Hello, please give me more information about your build environment and error outputs.

DaChaoXc commented 3 years ago

/usr/local/include/NvOnnxParser.h:27:34: fatal error: NvOnnxParserTypedefs.h: 没有那个文件或目录 compilation terminated. CMakeFiles/Yolov4_trt.dir/build.make:86: recipe for target 'CMakeFiles/Yolov4_trt.dir/Yolov4.cpp.o' failed make[2]: [CMakeFiles/Yolov4_trt.dir/Yolov4.cpp.o] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/Yolov4_trt.dir/all' failed make[1]: [CMakeFiles/Yolov4_trt.dir/all] Error 2 Makefile:127: recipe for target 'all' failed make: *** [all] Error 2

maybe need onnx-tensorrt?

linghu8812 commented 3 years ago

@DaChaoXc Hello, my NvOnnxParser.h file is the same as https://github.com/NVIDIA/TensorRT/blob/release/7.1/include/NvOnnxParser.h, no NvOnnxParserTypedefs.h has been included, perhaps it is a TensorRT installation problem.

DaChaoXc commented 3 years ago

@linghu8812 Input filename: ../cfg/yolov4-csp.onnx ONNX IR version: 0.0.5 Opset version: 10 Producer name: darknet to ONNX example Producer version: Domain:
Model version: 0 Doc string:

WARNING: ONNX model has a newer ir_version (0.0.5) than this parser was built against (0.0.3). [12/07/2020-13:55:10] [E] [TRT] (Unnamed Layer* 0) [Convolution]: at least 4 dimensions are required for input [12/07/2020-13:55:10] [I] [TRT] 001_convolutional:Conv -> While parsing node number 1 [BatchNormalization -> "001_convolutional_bn"]: 3 --- Begin node --- input: "001_convolutional" input: "001_convolutional_bn_scale" input: "001_convolutional_bn_bias" input: "001_convolutional_bn_mean" input: "001_convolutional_bn_var" output: "001_convolutional_bn" name: "001_convolutional_bn" op_type: "BatchNormalization" attribute { name: "epsilon" f: 1e-05 type: FLOAT } attribute { name: "momentum" f: 0.99 type: FLOAT }

--- End node --- ERROR: /home/xc/xc/code/obj/TensorRT-CenterNet-master/onnx-tensorrt/builtin_op_importers.cpp:598 In function importBatchNormalization: [6] Assertion failed: scale_weights.shape == weights_shape [12/07/2020-13:55:10] [E] Failure while parsing ONNX file start building engine [12/07/2020-13:55:10] [E] [TRT] Network must have at least one output build engine done Yolov4_trt: /home/xc/xc/code/obj/YOLO/yolov4-csp-tensorrt/includes/common/common.hpp:138: void onnxToTRTModel(const string&, const string&, nvinfer1::ICudaEngine*&, const int&): Assertion `engine' failed. 已放弃 (核心已转储)

DaChaoXc commented 3 years ago

tensorrt-6.1.0.5

DaChaoXc commented 3 years ago

@linghu8812 ,hello,can you upload a yolov4-csp.onnx?

linghu8812 commented 3 years ago

@DaChaoXc Hello,

DaChaoXc commented 3 years ago

@linghu8812 hello,use your onnx,the result is right, i think maybe convert onnx wrong, i use python3.6 + onnx1.5.0, the results is terrible! 1_

linghu8812 commented 3 years ago

@DaChaoXc Hello, please try the latest Yolov4/export_onnx.py

DaChaoXc commented 3 years ago

@linghu8812 hello,i used the last version,the results no change,is wrong。 ./Yolov4_trt ../config-xmish.yaml ../samples/

Input filename: ../cfg/yolov4x-mish-normal-best.onnx ONNX IR version: 0.0.5 Opset version: 10 Producer name: darknet to ONNX example Producer version: Domain:
Model version: 0 Doc string:

[12/11/2020-13:50:56] [W] [TRT] onnx2trtutils.cpp:220: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32. start building engine [12/11/2020-13:50:56] [W] [TRT] Half2 support requested on hardware without native FP16 support, performance will be negatively affected. [12/11/2020-13:50:57] [I] [TRT] Some tactics do not have sufficient workspace memory to run. Increasing workspace size may increase performance, please check verbose output. [12/11/2020-13:51:59] [I] [TRT] Detected 1 inputs and 4 output network tensors. build engine done writing engine file... save engine file done binding0: 5419008 binding1: 1555848 Processing: ../samples//1.jpg prepareImage prepare image take: 4.76912 ms. host2device execute Inference take: 86.2528 ms. execute success device2host post process Post process take: 216.316 ms. ../samples//1.jpg Average processing time is 307.338ms

linghu8812 commented 3 years ago

@DaChaoXc if the number of classes is 80, the binding1 number is wrong, it should be 9446220=(21 21+ 42 42 + 84 84) 3 85 4. if binding1=1555848, the class number should be 42, then the labels file should be modified. https://github.com/linghu8812/tensorrt_inference/blob/ffb65126d2fbc327f859b767566766a3b7807822/Yolov4/config-xmish.yaml#L4

DaChaoXc commented 3 years ago

@linghu8812 the number of my labels is 9, binding1=1555848=(21 21+ 42 42 + 84 84) 3 (9 + 5) 4 why the binding0 is 5419008?

linghu8812 commented 3 years ago

@DaChaoXc

DaChaoXc commented 3 years ago

@linghu8812 hello, I changed coco.names to obj.names: car bus person bike truck motor rider traffic sign traffic light 9 labels

i changed export_onnx.py def init(self, output_tensors): """Initialize with all DarkNet default parameters used creating YOLOv4, and specify the output tensors as an OrderedDict for their output dimensions with their names as keys.

    Keyword argument:
    output_tensors -- the output tensors as an OrderedDict containing the keys'
    output dimensions
    """
    self.output_tensors = output_tensors
    self._nodes = list()
    self.graph_def = None
    self.input_tensor = None
    self.epsilon_bn = 1e-5
    self.momentum_bn = 0.99
    self.alpha_lrelu = 0.1
    self.param_dict = OrderedDict()
    self.major_node_specs = list()
    self.batch_size = 1
    self.classes = 9##############
    self.num = 9

i seems nothing changed ![Uploading 1_.jpg…]()

linghu8812 commented 3 years ago

@DaChaoXc 导出的onnx模型不受names文件的影响,只需要修改config-xmish.yaml文件中第4行的coco.names就行,names文件中的行数决定了TensorRT推理的类别个数

DaChaoXc commented 3 years ago

@linghu8812 find the difference: in cfg.file activation=linear instead of activation=logistic heng

linghu8812 commented 3 years ago

@DaChaoXc Congratulations, it's the lastest cfg file in AlexeyAB/darknet

lfydegithub commented 3 years ago

@DaChaoXc Hello,

我要转scaled-yolov4-csp. 可以使用tensorRT6.0吗? 因为TensorRT7需要cuda10.2, 而我电脑是cuda10.1

linghu8812 commented 3 years ago

@lfydegithub 使用TensorRT 6需要在导出engine时选择opset 10; https://github.com/linghu8812/tensorrt_inference/blob/887cca1487395cc46a23537213201d224600a976/yolov5/export_onnx.py#L50 生成engine的函数需要重写,TensorRT 7和TensorRT 6不一样; https://github.com/linghu8812/tensorrt_inference/blob/887cca1487395cc46a23537213201d224600a976/includes/common/common.hpp#L114-L152 如果有Docker的话,可以使用Dockerfile build镜像。

lfydegithub commented 3 years ago

onnxToTRTModel

多谢大佬! 还是多装了一个cuda10.2... :)

lkyw5210 commented 3 years ago

@linghu8812

Input filename: ../cfg/yolov4-csp.onnx ONNX IR version: 0.0.5 Opset version: 10 Producer name: darknet to ONNX example Producer version: Domain: Model version: 0 Doc string: WARNING: ONNX model has a newer ir_version (0.0.5) than this parser was built against (0.0.3). [12/07/2020-13:55:10] [E] [TRT] (Unnamed Layer* 0) [Convolution]: at least 4 dimensions are required for input [12/07/2020-13:55:10] [I] [TRT] 001_convolutional:Conv -> While parsing node number 1 [BatchNormalization -> "001_convolutional_bn"]: 3 --- Begin node --- input: "001_convolutional" input: "001_convolutional_bn_scale" input: "001_convolutional_bn_bias" input: "001_convolutional_bn_mean" input: "001_convolutional_bn_var" output: "001_convolutional_bn" name: "001_convolutional_bn" op_type: "BatchNormalization" attribute { name: "epsilon" f: 1e-05 type: FLOAT } attribute { name: "momentum" f: 0.99 type: FLOAT }

--- End node --- ERROR: /home/xc/xc/code/obj/TensorRT-CenterNet-master/onnx-tensorrt/builtin_op_importers.cpp:598 In function importBatchNormalization: [6] Assertion failed: scale_weights.shape == weights_shape [12/07/2020-13:55:10] [E] Failure while parsing ONNX file start building engine [12/07/2020-13:55:10] [E] [TRT] Network must have at least one output build engine done Yolov4_trt: /home/xc/xc/code/obj/YOLO/yolov4-csp-tensorrt/includes/common/common.hpp:138: void onnxToTRTModel(const string&, const string&, nvinfer1::ICudaEngine*&, const int&): Assertion `engine' failed. 已放弃 (核心已转储)

hello !have you solve the problem ? i have the same problem.