日常生活的交流与学习

首页 新随笔 联系 管理

安装支持 GPU 版本的 Pytorch

首先安装 ultraytics

python -m venv venv
source venv/Scripts/activate
pip install ultralytics
python main.py
  1. 首先安装上面的 ultralytics,但是无法调用 gpu,原因是我没有 gpu 版本的 pytorch
  2. 虽然说上面的命令已经帮我安装了 pytorch,但不是支持 gpu 版本的 pytorch,所以需要安装支持 gpu 版本的 pytorch
  3. 当然,也可以先安装下面的程序,然后在安装 ultralytics

Pytorch 覆盖安装

要通过 pip 命令安装支持 gpu 版本的 ultralytics,您需要先安装一个 GPU 兼容的 PyTorch 版本。根据您的电脑配置,您可以从PyTorch 官网选择合适的命令。例如,如果您的电脑使用的是 CUDA 11.3,您可以使用以下命令:

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113

然后,您可以使用以下命令安装 ultralytics 包:


pip install ultralytics

这样,您就可以使用 ultralytics 包来运行 YOLOv8 模型了。YOLOv8 是一个先进的目标检测、多目标跟踪、实例分割、姿态估计和图像分类模型。您可以参考YOLOv8 文档来了解更多关于训练、验证、预测和部署的细节。

测试代码


# yolov8快速使用说明

# python -m venv venv
# source venv/Scripts/activate
# pip install ultralytics
# python main.py

import os
import cv2 # 导入cv2库
from ultralytics import YOLO # 导入ultralytics库中的YOLO模块
import numpy as np # 导入numpy库


cap = cv2.VideoCapture("street.mp4") # 创建一个视频捕获对象,读取"street.mp4"文件

model = YOLO("yolov8m.pt") # 加载预训练好的YOLOv8模型

while True: # 循环地处理每一帧图像

    ret, frame = cap.read() # 从视频捕获对象中读取一帧图像
    if not ret: # 如果没有读取到图像,说明视频已经结束,跳出循环
        break
    # 配置使用mac book 的gpu加速(mps)
    # results = model(frame, device="mps") # 将图像输入到YOLOv8模型中,得到检测结果
    # cuda 12.2
    results = model(frame, device=0) # 将图像输入到YOLOv8模型中,得到检测结果
    result = results[0] # 取出第一个检测结果(如果有多个结果,表示有多个图像输入)

    bboxes = np.array(result.boxes.xyxy.cpu(), dtype="int") # 将检测结果中的边界框坐标转换为numpy数组,并转换为整数类型
    classes = np.array(result.boxes.cls.cpu(), dtype="int") # 将检测结果中的类别编号转换为numpy数组,并转换为整数类型

    for cls, bbox in zip(classes, bboxes): # 遍历每个物体的类别和边界框
        (x, y, x2, y2) = bbox # 取出边界框的左上角和右下角坐标
        cv2.rectangle(frame, (x, y), (x2, y2), (0, 0, 225), 2) # 在原图像上绘制红色的边界框
        cv2.putText(frame, str(cls), (x, y - 5), cv2.FONT_HERSHEY_PLAIN, 2, (0, 0, 225), 2) # 在原图像上绘制红色的类别标签

    cv2.imshow("Img", frame) # 显示处理后的图像
    key = cv2.waitKey(1) # 等待用户按键
    if key == 27: # 如果用户按下ESC键,退出程序
        break

cap.release() # 释放视频捕获对象
cv2.destroyAllWindows() # 销毁所有窗口



posted on 2023-09-12 20:13  lazycookie  阅读(3394)  评论(0编辑  收藏  举报