OpenCv —— Win10使用OpenCv调用Yolov5的.pt导出的.onnx模型进行测试【GPU版Cv】(附源码、附CV编译视频)

该博客介绍了在Win10环境下,如何使用OpenCV加载并运行从YOLOv5的.pt模型转换而来的.onnx模型。详细步骤包括模型转换和OpenCV代码实现,并提供了相关源码和编译视频教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

### Ubuntu 上实现 YOLOv5 的教程与示例代码 #### 1. 环境准备 为了成功运行 YOLOv5,在 Ubuntu 20.04 中需要完成 CUDA 和 TensorRT 的安装。这可以通过 Anaconda 来简化依赖管理过程[^2]。 ```bash sudo apt update && sudo apt upgrade -y wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb sudo dpkg -i cuda-keyring_1.0-1_all.deb sudo apt-get update sudo apt-get install -y cuda ``` 接着,通过以下命令验证 CUDA 是否正常工作: ```bash nvcc --version nvidia-smi ``` 如果显示 GPU 驱动程序和 CUDA 已正确加载,则可以继续下一步。 --- #### 2. 安装 PyTorch 及其他依赖项 YOLOv5 基于 PyTorch 构建,因此需确保已安装最新的 PyTorch 并匹配当前系统的 CUDA 版本。 ```bash pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install numpy opencv-python matplotlib pyyaml tqdm scikit-image scipy ``` 上述命令会自动检测并适配本地 CUDA 版本到合适的 PyTorch 轮子文件中。 --- #### 3. 下载 YOLOv5 模型及其权重 克隆官方仓库并将预训练模型下载至指定路径。 ```bash git clone https://github.com/ultralytics/yolov5.git cd yolov5 pip install -r requirements.txt python detect.py --source data/images/zidane.jpg --weights yolov5s.pt ``` 注意:如果不显式提供 `--weights` 参数,默认情况下脚本会尝试从远程服务器拉取最新的 `.pt` 文件。这种行为可能导致版本不一致问题,从而引发错误[^3]。 --- #### 4. 使用 ONNX 导出模型 ONNX 是一种跨框架的标准格式,支持多种推理引擎(如 TensorRT 或 OpenVINO)。以下是导出流程: ```bash python export.py --weights yolov5s.pt --include onnx --opset 12 python -m onnxsim yolov5s.onnx simplified_yolov5s.onnx ``` 此步骤将原始 PyTorch 模型转换为优化后的 ONNX 表达形式,并移除冗余计算节点以提升性能。 --- #### 5. 利用 TensorRT 加速推理 对于高性能需求场景,推荐采用 NVIDIA 提供的 TensorRT 库来加速神经网络执行速度。具体操作如下所示: ##### (a) 替换 C++ 接口源码 进入 TensorRTX/YOLOv5 存储库目录后修改默认实现逻辑,随后按照提示构建共享库文件。 ```cpp // 修改部分核心函数定义... void preprocess(const cv::Mat& img, float* input_data); std::vector<Detection> postprocess(float* output_data, int output_size); int main(int argc, char** argv){ // 初始化 TRT 运行时环境变量... } ``` 重新编译工程结构树下的目标二进制可执行体: ```bash cd tensorrtx/yolov5/build/ cmake .. make sudo ./yolov5 -v yolov5s.engine ``` 最终生成的结果即为基于硬件特化的高效预测工具链[^1]。 --- #### 6. 测试效果评估 选取若干张样本图像作为输入数据集,调用前述开发完毕的服务端接口获取边界框坐标以及类别标签信息反馈结果质量如何。 ```python import cv2 from utils.general import non_max_suppression def infer(image_path="data/images/bus.jpg"): model = attempt_load('yolov5s.pt', map_location='cpu') img = letterbox(cv2.imread(image_path), new_shape=640)[0] with torch.no_grad(): pred = model(img.unsqueeze(0))[0] det = non_max_suppression(pred)[0].numpy() print(det) if __name__ == "__main__": infer() ``` 上述 Python 函数展示了如何加载自定义权重并对单帧画面实施实时物体识别任务。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信必诺

嗨,支持下哥们呗。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值