yolov8 segment predict python代码
时间: 2023-07-22 13:17:11 浏览: 251
以下是一个使用YOLOv8进行图像分割和预测的Python示例代码(基于PyTorch实现):
```python
import torch
import cv2
import numpy as np
import time
# 导入YOLOv8模型
model = torch.hub.load('ultralytics/yolov5', 'custom', path_or_model='yolov8.pt')
# 图像预处理函数
def preprocess(img):
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转换颜色通道
img = cv2.resize(img, (640, 640)) # 调整大小
img = img.astype(np.float32) / 255.0 # 归一化
img = np.transpose(img, (2, 0, 1)) # 转换维度顺序
img = np.expand_dims(img, axis=0) # 增加batch维度
return img
# 图像后处理函数
def postprocess(pred):
boxes = pred.xyxy[0].cpu().numpy() # 获取预测框坐标
scores = pred.xyxy[0, :, 4].cpu().numpy() # 获取预测框置信度
labels = pred.xyxy[0, :, 5].cpu().numpy().astype(np.int) # 获取预测框类别
return boxes, scores, labels
# 加载测试图像
img = cv2.imread('test.jpg')
# 图像预处理
img = preprocess(img)
# 模型推理
with torch.no_grad():
start = time.time()
pred = model(torch.from_numpy(img).to('cuda'))
end = time.time()
print('Inference time: {:.4f} s'.format(end - start))
# 图像后处理
boxes, scores, labels = postprocess(pred)
# 可视化预测结果
for box, score, label in zip(boxes, scores, labels):
if score > 0.5:
x1, y1, x2, y2 = box.astype(np.int)
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), 2)
cv2.putText(img, str(label), (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码包括了模型加载、图像预处理、模型推理、图像后处理和结果可视化等步骤。你需要将`yolov8.pt`替换成你自己的YOLOv8模型权重文件,并将`test.jpg`替换成你自己的测试图像。
希望这个示例代码能够对你有所帮助!
阅读全文