【YOLO-v5】torch的使用


前言

torch调用已经训练好的模型进行识别操作


一、代码

初始版本

'''
#Author :susocool
#Creattime:2024/9/18
#FileName:Hub_detect
#Description:加载一个自定义的 YOLOv5 模型导入

'''
import cv2
import torch
import sys
sys.path.insert(0, 'D:\\yolov5-master')  # 将 yolov5-master 目录添加到路径中
# 可以确保 Python 首先在这个目录中查找模块。
# 这对于解决模块名称冲突(例如,如果你有一个模块的副本)或者确保使用本地开发版本的模块非常有用。

# 加载本地YOLOv5模型
model_path = 'D:\\yolov5-master\\runs\\train\\exp4\\weights\\best.pt'
model = torch.hub.load('D:\\yolov5-master', 'custom', 
path=model_path, 
source='local')

# 初始化摄像头
cap = cv2.VideoCapture(0)
if not cap.isOpened():
    print("无法打开摄像头")
    exit()

while True:
    # 捕获摄像头的帧
    ret, frame = cap.read()
    if not ret:
        print("无法读取摄像头数据")
        break

    # 将图像转换为YOLOv5模型所需的格式
    img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    results = model(img)

    # 获取检测结果
    detections = results.pandas<
### 封装YOLOv5模型的方法 为了使YOLOv5模型能够更方便地部署或复用,可以将其封装成易于调用的形式。通常的做法是创建一个Python类来管理模型加载、预测等功能,并提供清晰简洁的应用程序接口(API)。 #### 创建模型封装类 下面是一个简单的例子展示如何实现这一点: ```python import torch from pathlib import Path class YOLOv5Wrapper: """ A wrapper class to encapsulate the functionality of a YOLOv5 model """ def __init__(self, weights_path: str, device: str = 'cuda'): """ Initialize the YOLOv5 wrapper with given parameters. :param weights_path: The path where your trained .pt file is located. :param device: Device on which you want to run inference ('cpu', 'cuda'). """ self.device = torch.device(device) self.model = torch.hub.load('ultralytics/yolov5', 'custom', path=Path(weights_path), force_reload=True).to(self.device) def predict(self, img_paths): """ Perform object detection using loaded YOLOv5 model. :param img_paths: List containing paths to images that need predictions. :return: Results from running prediction over provided images. """ results = [] for img_path in img_paths: result = self.model(img_path) results.append(result.pandas().xyxy[0]) return results ``` 此代码片段定义了一个名为`YOLOv5Wrapper`的类[^3],该类负责初始化YOLOv5实例并执行图像上的目标检测任务。通过这种方式,可以在其他项目中轻松导入此类来进行快速而有效的对象识别操作。 另外,如果计划将这个工具集成到Web服务或其他应用程序中,则可能还需要考虑API设计方面的问题——比如RESTful API的设计模式或是gRPC这样的高性能通信协议的选择等;同时也应该考虑到安全性因素如输入验证和错误处理机制等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值