微信公众号:OpenCV学堂
关注获取更多计算机视觉与深度学习知识
软件版本信息
软件版本信息
JetPack4.6
CUDA10.2
TensorRT8.0.1
OpenCV4.5.4
导出YOLOv5 engine文件
python export.py --weights yolov5.pt --include onnx engine
TensorRT推理
cmake_minimum_required( VERSION 2.8 )
# 声明一个 cmake 工程
project(yolov5_tensorrt_demo)
# 设置编译模式
#set( CMAKE_BUILD_TYPE "Release" )
#添加OPENCV库
#指定OpenCV版本,代码如下
#find_package(OpenCV 4.5.4 REQUIRED)
#如果不需要指定OpenCV版本,代码如下
find_package(OpenCV REQUIRED)
find_package(CUDA REQUIRED)
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)
# tensorRT
include_directories(/usr/local/cuda/include)
link_directories(/usr/lib/arrch64-linux-gnu)
#显示OpenCV_INCLUDE_DIRS的值
message(${OpenCV_INCLUDE_DIRS})
FILE(GLOB_RECURSE TEST_SRC
src/*.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上打开终端命令行输入:
mkdir build
cd build
cmake ..
运行结果如下:
然后运行make
成功运行之后,执行编译生成的target文件:
./target
运行推理与显示界面如下:
错误与修正
01
错误一:
error: 'cudaMalloc' was not declared in this scope
这个是因为没有添加下面的头文件:
添加之后就可以解决。
02
错误二:
#include
#include
#include
#include
#include "tensorrt_yolov5_demo.h"
using namespace cv;
std::string label_map = "classes.txt";
int main(int argc, char** argv) {
std::vector<std::string> classNames;
std::ifstream fp(label_map);
std::string name;
while (!fp.eof()) {
getline(fp, name);
if (name.length()) {
classNames.push_back(name);
}
}
fp.close();
auto detector = std::make_shared();
detector->initConfig("yolov5s.engine", 0.25, 0.25);
std::vector results;
cv::VideoCapture capture("example_dsh.mp4");
cv::Mat frame;
while (true) {
bool ret = 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);
char c = cv::waitKey(1);
if (c == 27) { // ESC 退出
break;
}
// reset for next frame
results.clear();
}
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
扫码查看OpenCV+OpenVIO+Pytorch系统化学习路线图
推荐阅读
CV全栈开发者说 - 从传统算法到深度学习怎么修炼
2022入坑深度学习,我选择Pytorch框架!
Pytorch轻松实现经典视觉任务
教程推荐 | Pytorch框架CV开发-从入门到实战
OpenCV4 C++学习 必备基础语法知识三
OpenCV4 C++学习 必备基础语法知识二
OpenCV4.5.4 人脸检测+五点landmark新功能测试
OpenCV4.5.4人脸识别详解与代码演示
OpenCV二值图象分析之Blob分析找圆
OpenCV4.5.x DNN + YOLOv5 C++推理
OpenCV4.5.4 直接支持YOLOv5 6.1版本模型推理
OpenVINO2021.4+YOLOX目标检测模型部署测试
比YOLOv5还厉害的YOLOX来了,官方支持OpenVINO推理