Comments (21)
这几天找了些资料尝试了下,总结了下面的步骤能不借助CMake就能编译通过并跑通;希望对大家有用。
-
先把
tensorrtx
库中yolov5的代码下载下来,包括.h
文件、cpp
文件和.cu
文件; -
新建一个空的C++项目,按头文件和源文件把上面下载的代码文件按现有项添加进项目;
-
按照debug和release模式配置opencv、tensorrt和cuda环境;
-
右击项目名称,选择
生成依赖项
===>生成自定义
把CUDA11.3target
勾选上; -
把带有cuda代码的
.cpp
文件和.cu
文件右击属性
===>项类型
===>选择CUDA C/C++
-
右击项目名称,
C/C++
===>命令行
添加/D _CRT_SECURE_NO_WARNINGS
; -
选择
CUDA C/C++
===>命令行
添加%(AdditionalOptions) -std=c++11 -Xcompiler="/EHsc -Ob2"%(AdditionalOptions) -DAPI_EXPORTS
; -
链接器
===>命令行
添加%(AdditionalOptions) /machine:x64
; -
CUDA Linker
===>命令行
添加-forward-unknown-to-host-compiler -Wno-deprecated-gpu-targets
。
from tensorrtx.
还有三处关于yololayer的plugin的报错
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 cannot define dllimport entity yolov5_trtx E:\dl\c++\yolov5_trtx\yolov5_trtx\yololayer.cu 234
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 member "nvinfer1::YoloPluginCreator::mFC" may not be initialized yolov5_trtx E:\dl\c++\yolov5_trtx\yolov5_trtx\yololayer.cu 234
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 cannot define dllimport entity yolov5_trtx E:\dl\c++\yolov5_trtx\yolov5_trtx\yololayer.cu 235
from tensorrtx.
这几天找了些资料尝试了下,总结了下面的步骤能不借助CMake就能编译通过并跑通;希望对大家有用。
- 先把
tensorrtx
库中yolov5的代码下载下来,包括.h
文件、cpp
文件和.cu
文件;- 新建一个空的C++项目,按头文件和源文件把上面下载的代码文件按现有项添加进项目;
- 按照debug和release模式配置opencv、tensorrt和cuda环境;
- 右击项目名称,选择
生成依赖项
===>生成自定义
把CUDA11.3target
勾选上;- 把带有cuda代码的
.cpp
文件和.cu
文件右击属性
===>项类型
===>选择CUDA C/C++
- 右击项目名称,
C/C++
===>命令行
添加/D _CRT_SECURE_NO_WARNINGS
;- 选择
CUDA C/C++
===>命令行
添加%(AdditionalOptions) -std=c++11 -Xcompiler="/EHsc -Ob2"%(AdditionalOptions) -DAPI_EXPORTS
;链接器
===>命令行
添加%(AdditionalOptions) /machine:x64
;CUDA Linker
===>命令行
添加-forward-unknown-to-host-compiler -Wno-deprecated-gpu-targets
。
你是在windows中使用这个吗
from tensorrtx.
from tensorrtx.
你是不使用cmake命令配置然后也能转engine并使用吗
from tensorrtx.
你是不使用cmake命令配置然后也能转engine并使用吗
转engine文件CMAKE没啥关系吧。得到engine不是由pt->wts->engine么。cmake只是搭建好C++工程环境
from tensorrtx.
你是不使用cmake命令配置然后也能转engine并使用吗
转engine文件CMAKE没啥关系吧。得到engine不是由pt->wts->engine么。cmake只是搭建好C++工程环境
奥奥,这几天我是一直按照cmake形式编译,但是没有makefile文件产生,导致无法使用make编译。不知道怎么搞了,还有,您使用的那个项目能给我一份吗?我参照着改一下我的项目,通过您这种方式。
from tensorrtx.
你是不使用cmake命令配置然后也能转engine并使用吗
转engine文件CMAKE没啥关系吧。得到engine不是由pt->wts->engine么。cmake只是搭建好C++工程环境
奥奥,这几天我是一直按照cmake形式编译,但是没有makefile文件产生,导致无法使用make编译。不知道怎么搞了,还有,您使用的那个项目能给我一份吗?我参照着改一下我的项目,通过您这种方式。
我那个项目删除了。你可以按照我这个issue的步骤配一下环境,基本能成功,我这个一步一步写的挺清楚的。
from tensorrtx.
你是不使用cmake命令配置然后也能转engine并使用吗
转engine文件CMAKE没啥关系吧。得到engine不是由pt->wts->engine么。cmake只是搭建好C++工程环境
奥奥,这几天我是一直按照cmake形式编译,但是没有makefile文件产生,导致无法使用make编译。不知道怎么搞了,还有,您使用的那个项目能给我一份吗?我参照着改一下我的项目,通过您这种方式。
我那个项目删除了。你可以按照我这个issue的步骤配一下环境,基本能成功,我这个一步一步写的挺清楚的。
ok
from tensorrtx.
你是不使用cmake命令配置然后也能转engine并使用吗
转engine文件CMAKE没啥关系吧。得到engine不是由pt->wts->engine么。cmake只是搭建好C++工程环境
奥奥,这几天我是一直按照cmake形式编译,但是没有makefile文件产生,导致无法使用make编译。不知道怎么搞了,还有,您使用的那个项目能给我一份吗?我参照着改一下我的项目,通过您这种方式。
我那个项目删除了。你可以按照我这个issue的步骤配一下环境,基本能成功,我这个一步一步写的挺清楚的。
ok
对了,大佬,您这是通过这种方式运行程序,您知道如果使用cmake方式进行编译,没有makefile生成的原因吗?还是说在windows中这个方式不能使用,您才采用这个不使用cmake的方式。
from tensorrtx.
这个我不太清楚,之前我也用过CMAKE在windows上编译成功过。这是我当时的cmakelist,你参考下:
cmake_minimum_required(VERSION 2.6)
project(yolov5)
#change to your own path
##################################################
set(OpenCV_DIR "D:\\opencv460\\opencv\\build")
set(TRT_DIR "E:\\TensorRT-8.2.1.1\\TensorRT-8.2.2.1")
set(Dirent_INCLUDE_DIRS "E:\\DL_file\\Yolov5_Tensorrt_Win10-master\\include")
##################################################
add_definitions(-std=c++11)
add_definitions(-DAPI_EXPORTS)
option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads)
# setup CUDA
find_package(CUDA REQUIRED)
message(STATUS " libraries: ${CUDA_LIBRARIES}")
message(STATUS " include path: ${CUDA_INCLUDE_DIRS}")
include_directories(${CUDA_INCLUDE_DIRS})
include_directories(${Dirent_INCLUDE_DIRS})
#change to your GPU own compute_XX
###########################################################################################
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-std=c++11;-g;-G;-gencode;arch=compute_86;code=sm_86)
###########################################################################################
####
enable_language(CUDA) # add this line, then no need to setup cuda path in vs
####
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${TRT_DIR}\\include)
# -D_MWAITXINTRIN_H_INCLUDED for solving error: identifier "__builtin_ia32_mwaitx" is undefined
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Ofast -D_MWAITXINTRIN_H_INCLUDED")
# setup opencv
find_package(OpenCV QUIET
NO_MODULE
NO_DEFAULT_PATH
NO_CMAKE_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_PACKAGE_REGISTRY
NO_CMAKE_BUILDS_PATH
NO_CMAKE_SYSTEM_PATH
NO_CMAKE_SYSTEM_PACKAGE_REGISTRY
)
message(STATUS "OpenCV library status:")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${TRT_DIR}\\lib)
add_executable(yolov5 ${PROJECT_SOURCE_DIR}/yolov5.cpp ${PROJECT_SOURCE_DIR}/yololayer.cu ${PROJECT_SOURCE_DIR}/yololayer.h ${PROJECT_SOURCE_DIR}/preprocess.cu)
target_link_libraries(yolov5 "nvinfer" "nvinfer_plugin")
target_link_libraries(yolov5 ${OpenCV_LIBS})
target_link_libraries(yolov5 ${CUDA_LIBRARIES})
target_link_libraries(yolov5 Threads::Threads)
from tensorrtx.
这个我不太清楚,之前我也用过CMAKE在windows上编译成功过。这是我当时的cmakelist,你参考下:
cmake_minimum_required(VERSION 2.6) project(yolov5) #change to your own path ################################################## set(OpenCV_DIR "D:\\opencv460\\opencv\\build") set(TRT_DIR "E:\\TensorRT-8.2.1.1\\TensorRT-8.2.2.1") set(Dirent_INCLUDE_DIRS "E:\\DL_file\\Yolov5_Tensorrt_Win10-master\\include") ################################################## add_definitions(-std=c++11) add_definitions(-DAPI_EXPORTS) option(CUDA_USE_STATIC_CUDA_RUNTIME OFF) set(CMAKE_CXX_STANDARD 11) set(CMAKE_BUILD_TYPE Debug) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads) # setup CUDA find_package(CUDA REQUIRED) message(STATUS " libraries: ${CUDA_LIBRARIES}") message(STATUS " include path: ${CUDA_INCLUDE_DIRS}") include_directories(${CUDA_INCLUDE_DIRS}) include_directories(${Dirent_INCLUDE_DIRS}) #change to your GPU own compute_XX ########################################################################################### set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-std=c++11;-g;-G;-gencode;arch=compute_86;code=sm_86) ########################################################################################### #### enable_language(CUDA) # add this line, then no need to setup cuda path in vs #### include_directories(${PROJECT_SOURCE_DIR}/include) include_directories(${TRT_DIR}\\include) # -D_MWAITXINTRIN_H_INCLUDED for solving error: identifier "__builtin_ia32_mwaitx" is undefined set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Ofast -D_MWAITXINTRIN_H_INCLUDED") # setup opencv find_package(OpenCV QUIET NO_MODULE NO_DEFAULT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_PACKAGE_REGISTRY NO_CMAKE_BUILDS_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_SYSTEM_PACKAGE_REGISTRY ) message(STATUS "OpenCV library status:") message(STATUS " version: ${OpenCV_VERSION}") message(STATUS " libraries: ${OpenCV_LIBS}") message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}") include_directories(${OpenCV_INCLUDE_DIRS}) link_directories(${TRT_DIR}\\lib) add_executable(yolov5 ${PROJECT_SOURCE_DIR}/yolov5.cpp ${PROJECT_SOURCE_DIR}/yololayer.cu ${PROJECT_SOURCE_DIR}/yololayer.h ${PROJECT_SOURCE_DIR}/preprocess.cu) target_link_libraries(yolov5 "nvinfer" "nvinfer_plugin") target_link_libraries(yolov5 ${OpenCV_LIBS}) target_link_libraries(yolov5 ${CUDA_LIBRARIES}) target_link_libraries(yolov5 Threads::Threads)
你好,楼主,我使用您的这个代码完成了部署,但是只能使用yolov5s.pt模型,使用我自己.pt模型在wts转engine时显示网络结构有错,您是怎么解决的?另外这个如何让他能够使用摄像头检测?
from tensorrtx.
你用的什么模型?
from tensorrtx.
你用的什么模型?
yolov5
from tensorrtx.
我猜你没有把模型的大小参数加上去
./yolov5_det -s [.wts] [.engine] [n/s/m/l/x/n6/s6/m6/l6/x6 or c/c6 gd gw]
这是生成engine的命令行,最后需要选一下模型大小的参数
from tensorrtx.
我猜你没有把模型的大小参数加上去
./yolov5_det -s [.wts] [.engine] [n/s/m/l/x/n6/s6/m6/l6/x6 or c/c6 gd gw]
这是生成engine的命令行,最后需要选一下模型大小的参数
我猜你没有把模型的大小参数加上去
./yolov5_det -s [.wts] [.engine] [n/s/m/l/x/n6/s6/m6/l6/x6 or c/c6 gd gw]
这是生成engine的命令行,最后需要选一下模型大小的参数
应该不是这个我的生成命令yolov5 -s best.wts best.engine s
from tensorrtx.
那我就不清楚了
from tensorrtx.
那我就不清楚了
好吧 谢谢鸡哥
from tensorrtx.
鸡哥,我在winddows部署的效果感觉是c++的版本,因为不能使用这个开源代码的yolov5trt.py文件。只能使用特定的命令,并且不能使用摄像头实时监测。
from tensorrtx.
@ningjianfeng 我觉得你可能需要了解下tensortRT部署的流程,包括python代码和C++代码;
关于使用摄像头实时检测,你可以使用opencv里面的camcapture函数(是不是这个函数名我忘了,你可以搜一搜);
还有就是你需要学会去debugC++的代码,将命令行中的参数写死在代码里,这样可以摆脱特定命令行
from tensorrtx.
@ningjianfeng 我觉得你可能需要了解下tensortRT部署的流程,包括python代码和C++代码; 关于使用摄像头实时检测,你可以使用opencv里面的camcapture函数(是不是这个函数名我忘了,你可以搜一搜); 还有就是你需要学会去debugC++的代码,将命令行中的参数写死在代码里,这样可以摆脱特定命令行
ok
from tensorrtx.
Related Issues (20)
- Yolov8 想将激活函数修改为relu,但是发现代码写死了,yolov5使用的auto更具有通用性 HOT 1
- yolov5 nms支持CUDA加速 HOT 5
- ImportError: libnvinfer.so.8: cannot open shared object file: No such file or directory HOT 3
- cmake error HOT 1
- The recently updated YOLOv8-Pose does not come with dedicated code for converting to the .wts format. HOT 2
- yolov8-pose似乎 不支持自己训练的模型 HOT 7
- kernel weights has count 2688 but 32640 was expected HOT 1
- yolov5编译问题 HOT 2
- yolov5s.pt微调后在生成.wts报错,改了数据类别,但类别总数不变。麻烦大大帮忙看看~谢谢!!new.pt是我微调后的模型 HOT 1
- ModuleNotFoundError: No module named 'utils.torch_utils' HOT 2
- 博主你好,这个能部署到windows上面了吗 HOT 6
- win10 compile yolov8 happen:yololayer.cu(262): error : expression must have a constant value HOT 12
- yolov8-seg, output error HOT 18
- YOLOV8 Assertion `serialized_engine' failed. 使用自己的.pt 生成 .wts 是成功的,但转.engine 是报错。chat说是卷积层权重数量不匹配 HOT 1
- Unable to build engine file for Yolov7 Custom model
- How to use file yolov8_det_trt.py to check one's own model
- yolov5-7.0,about anchor
- 可以使用onnx模型转换为tensorrt模型,再进行推理吗
- the command : ./yolov5_det -s yolov5s.wts yolov5s.engine s, error!!!
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 tensorrtx.