diff --git a/README.md b/README.md index b6fc85a..d4305e4 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ All the models are implemented in pytorch or mxnet first, and export a weights f - [A guide for quickly getting started, taking lenet5 as a demo.](./tutorials/getting_started.md) - [Migrating from TensorRT 4 to 7](./tutorials/migrating_from_tensorrt_4_to_7.md) - [How to implement multi-GPU processing, taking YOLOv4 as example](./tutorials/multi_GPU_processing.md) +- [Frequently Asked Questions (FAQ)](./tutorials/faq.md) ## Test Environment diff --git a/tutorials/faq.md b/tutorials/faq.md new file mode 100644 index 0000000..ea2d52b --- /dev/null +++ b/tutorials/faq.md @@ -0,0 +1,89 @@ +# Frequently Asked Questions (FAQ) + +## 1. fatal error: NvInfer.h: No such file or directory + +`NvInfer.h` is one of the headers of TensorRT. If you install the tensorrt DEB package, the headers should in `/usr/include/x86_64-linux-gnu/`. If you install tensorrt TAR or ZIP file, the `include_directories` and `link_directories` of tensorrt should be added in `CMakeLists.txt`. + +``` +$ dpkg -L libnvinfer-dev +/. +/usr +/usr/lib +/usr/lib/x86_64-linux-gnu +/usr/lib/x86_64-linux-gnu/libnvinfer_static.a +/usr/lib/x86_64-linux-gnu/libmyelin_compiler_static.a +/usr/lib/x86_64-linux-gnu/libmyelin_executor_static.a +/usr/lib/x86_64-linux-gnu/libmyelin_pattern_library_static.a +/usr/lib/x86_64-linux-gnu/libmyelin_pattern_runtime_static.a +/usr/include +/usr/include/x86_64-linux-gnu +/usr/include/x86_64-linux-gnu/NvInfer.h +/usr/include/x86_64-linux-gnu/NvInferRuntime.h +/usr/include/x86_64-linux-gnu/NvInferRuntimeCommon.h +/usr/include/x86_64-linux-gnu/NvInferVersion.h +/usr/include/x86_64-linux-gnu/NvUtils.h +/usr/share +/usr/share/doc +/usr/share/doc/libnvinfer-dev +/usr/share/doc/libnvinfer-dev/copyright +/usr/share/doc/libnvinfer-dev/changelog.Debian +/usr/lib/x86_64-linux-gnu/libmyelin.so +/usr/lib/x86_64-linux-gnu/libnvinfer.so +``` + +## 2. fatal error: cuda_runtime_api.h: No such file or directory + +`cuda_runtime_api.h` is from cuda-cudart. If you met this error, you need find where it is and adapt the `include_directories` and `link_directories` of cuda in `CMakeLists.txt`. + +``` +$ dpkg -L cuda-cudart-dev-10-0 +/. +/usr +/usr/local +/usr/local/cuda-10.0 +/usr/local/cuda-10.0/targets +/usr/local/cuda-10.0/targets/x86_64-linux +/usr/local/cuda-10.0/targets/x86_64-linux/lib +/usr/local/cuda-10.0/targets/x86_64-linux/lib/libcudadevrt.a +/usr/local/cuda-10.0/targets/x86_64-linux/lib/libOpenCL.so.1.1 +/usr/local/cuda-10.0/targets/x86_64-linux/lib/libculibos.a +/usr/local/cuda-10.0/targets/x86_64-linux/lib/libcudart_static.a +/usr/local/cuda-10.0/targets/x86_64-linux/include +/usr/local/cuda-10.0/targets/x86_64-linux/include/cuda_runtime_api.h +/usr/local/cuda-10.0/targets/x86_64-linux/include/cudart_platform.h +/usr/local/cuda-10.0/targets/x86_64-linux/include/cuda_device_runtime_api.h +/usr/local/cuda-10.0/targets/x86_64-linux/include/cuda_runtime.h +/usr/lib +/usr/lib/pkgconfig +/usr/lib/pkgconfig/cudart-10.0.pc +/usr/share +/usr/share/doc +/usr/share/doc/cuda-cudart-dev-10-0 +/usr/share/doc/cuda-cudart-dev-10-0/changelog.Debian.gz +/usr/share/doc/cuda-cudart-dev-10-0/copyright +/usr/local/cuda-10.0/targets/x86_64-linux/lib/libOpenCL.so +/usr/local/cuda-10.0/targets/x86_64-linux/lib/libOpenCL.so.1 +/usr/local/cuda-10.0/targets/x86_64-linux/lib/libcudart.so +``` + +## 3. .wts not prepared or not in the right directory + +If .wts file not in the right directory. The loadWeights() function will report error. Error logs like following. + +By default, the .wts file usually should be put in the same dir as `build`. For example, `tensorrtx/yolov5/yolov5s.wts`. And the .wts path defined in `yolov5.cpp`. + +``` +std::map loadWeights(std::__cxx11::string): Assertion `input.is_open() && "Unable to load weight file."' failed. +Aborted (core dumped) +``` + +## 4. yolo -s failed, class_num not adapted + +If you train your own yolo model, you need set the `CLASS_NUM` in `yololayer.h`. Which is `80` by default. Otherwise, you will get errors like following. + +``` +[Convolution]: kernel weights has count xxx but xxx was expected +void APIToModel(unsigned int, nvinfer1::IHostMemory**): Assertion `engine != nullptr' failed. +Aborted (core dumped) +``` +