如何调用yolov5训练好的结果进行摄像头目标检测 gpu
时间: 2023-08-11 10:28:45 浏览: 173
要调用 YOLOv5 训练好的模型进行摄像头目标检测,首先需要安装 YOLOv5 和相关的依赖库,如 PyTorch、Cython 等。安装完成后,可以使用以下代码进行调用:
```
import torch
import cv2
from models.experimental import attempt_load
from utils.general import non_max_suppression, scale_coords
from utils.torch_utils import select_device
# 加载模型
weights = 'path/to/weights.pt'
device = select_device('gpu')
model = attempt_load(weights, map_location=device)
model.to(device).eval()
# 读取摄像头
cap = cv2.VideoCapture(0)
while True:
# 读取帧
ret, frame = cap.read()
# 预处理帧
img = torch.from_numpy(frame).to(device)
img = img.permute(2, 0, 1).float().unsqueeze(0) / 255.0
# 进行预测
pred = model(img)[0]
pred = non_max_suppression(pred, 0.4, 0.5)
pred = pred[0]
# 可视化结果
if pred is not None:
pred[:, :4] = scale_coords(img.shape[2:], pred[:, :4], frame.shape).round()
for *xyxy, conf, cls in pred:
cv2.rectangle(frame, (int(xyxy[0]), int(xyxy[1])), (int(xyxy[2]), int(xyxy[3])), (0, 255, 0), 2)
cv2.putText(frame, f'{conf:.2f}', (int(xyxy[0]), int(xyxy[1]) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
# 显示结果
cv2.imshow('frame', frame)
# 按下 q 键退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
这段代码使用 PyTorch 加载训练好的 YOLOv5 模型,并使用 OpenCV 读取摄像头的帧。然后对每一帧进行预测,得到目标检测结果,并将结果可视化显示在帧上。最后,按下 q 键退出程序。这段代码在 GPU 上运行,因为 YOLOv5 需要较强的计算能力才能进行实时目标检测。
阅读全文