在Jetson Nano上使用TensorRT C++实现YOLOv5模型推理
蓝字存眷我们
微信公家号:OpenCV私塾
存眷获取更多计算机视觉与深度进修常识
微信公家号:OpenCV私塾
存眷获取更多计算机视觉与深度进修常识
软件版本信息
软件版本信息
导出YOLOv5 engine文件
前面有一篇文章详细阐了然若何在Jetson Nano上安拆YOLOv5,然后运行,那里只需在导出的时候导出engine模子文件撑持,号令行如下:
那里需要留意的TensorRT版本一致问题。若是engine文件不是在Jetson Nano上生成的,而在其他PC机器上生成,则TensorRT版本必需与Jetson Nano上利用的版本连结一致。
TensorRT推理
起首创建编译CMakeLists.txt文件,然后把下面的内容copy进去:
include_directories(./src/)#添加OpenCV头文件include_directories( ${OpenCV_INCLUDE_DIRS}) # 添加CUDA10.2头文件include_directories(/usr/ local/cuda-10.2/include) link_directories(/usr/ local/cuda-10.2/lib64) # tensorRTinclude_directories(/usr/ local/cuda/include) link_directories(/usr/lib/arrch64-linux-gnu)#显示OpenCV_INCLUDE_DIRS的值message( ${OpenCV_INCLUDE_DIRS})
FILE(GLOB_RECURSE TEST_SRCsrc/*.cpp)# 添加一个可施行法式# 语法:add_executable( 法式名 源代码文件 )add_executable(target main.cpp ${TEST_SRC}) # 将库文件链接到可施行法式上target_link_libraries(target nvinfer)target_link_libraries(target cudart)target_link_libraries(target ${OpenCV_LIBS})
构建的目次构造如下
展开全文
然后在Jetson Nano上翻开末端号令行输入:
运行成果如下:
然后运行make
胜利运行之后,施行编译生成的target文件:
运行推理与显示界面如下:
错误与批改
01
错误一:
error: 'cudaMalloc' was not declared in this scope
那个是因为没有添加下面的头文件:
添加之后就能够处理。
02
错误二:
Engine文件版本一致招致,原因是我之前导出的是在tensorRT8.4版本,jetsonNano是8.0的,从头在Jetson Nano上导出一下就能够处理。
最初贴一下,演示的法式main C++代码:
# includefstream
# includeiostream
# includesstream
# includeopencv2/opencv.hpp
# include"tensorrt_yolov5_demo.h"
usingnamespacecv;
std:: stringlabel_map = "classes.txt";
intmain( intargc, char** argv) {
std:: vector std:: string classNames;
std:: ifstream fp(label_map);
std:: stringname;
while(!fp.eof) {
getline(fp, name);
if(name.length) {
classNames.push_back(name);
fp.close;
autodetector = std::make_sharedYOLOv5TRTDetector;
detector-initConfig( "yolov5s.engine", 0.25, 0.25);
std:: vectorDetectResult results;
cv:: VideoCapture capture( "example_dsh.mp4") ;
cv::Mat frame;
while( true) {
boolret = capture.read(frame);
if(!ret) {
break;
detector-detect(frame, results);
for(DetectResult dr : results) {
cv::Rect box = dr.box;
cv::putText(frame, classNames[dr.classId], cv::Point(box.tl.x, box.tl.y - 10), cv::FONT_HERSHEY_SIMPLEX, .5, cv::Scalar( 0, 0, 0));
cv::imshow( "YOLOv5-6.1 + TensorRT8.4 + Jetson Nano - by gloomyfish", frame);
charc = cv::waitKey( 1);
if(c == 27) { // ESC 退出
break;
// reset for next frame
results.clear;
cv::waitKey( 0);
cv::destroyAllWindows;
return0;
扫码获取YOLOv5 TensorRT INT8量化脚本与视频教程
扫码查看OpenCV+OpenVIO+Pytorch系统化进修道路图
CV全栈开发者说 - 从传统算法到深度进修怎么修炼
2022入坑深度进修,我选择Pytorch框架!
Pytorch轻松实现典范视觉使命
教程保举 | Pytorch框架CV开发-从入门到实战
OpenCV4 C++进修 必备根底语法常识三
OpenCV4 C++进修 必备根底语法常识二
OpenCV4.5.4 人脸检测+五点landmark新功用测试
OpenCV二值图象阐发之Blob阐发找圆
OpenCV4.5.x DNN + YOLOv5 C++推理
OpenCV4.5.4 间接撑持YOLOv5 6.1版本模子推理
OpenVINO2021.4+YOLOX目的检测模子摆设测试
比YOLOv5还凶猛的YOLOX来了,官方撑持OpenVINO推理