DL 基于Windows11+GPU的环境搭建及Yolo11运行(二)

一、创建环境

1.创建名为yolov11的conda空环境

打开Anaconda Prompt,创建名为yolov11的空环境:

conda create -n yolov11

在这里插入图片描述

2.配置yolov11环境

2.1 安装python
conda install python=3.11

在这里插入图片描述

2.2 安装torch、torchvision、torchaudio

官方安装指令:https://pytorch.org/get-started/previous-versions/
在这里插入图片描述
根据系统及cuda安装版本选择:

pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu129

在这里插入图片描述

2.3安装ultralytics
pip install ultralytics

在这里插入图片描述
中间可能下载失败,多尝试几次就好。

二、下载ultralytics工程

Github地址:https://github.com/ultralytics/ultralytics?tab=readme-ov-file
Gitcode地址:https://gitcode.com/GitHub_Trending/ul/ultralytics
在这里插入图片描述
版本随意,这里下载的是v8.3.226。解压并重命名ultralytics,从pycharm打开ultralytics工程。
在这里插入图片描述
切换conda环境:yolov11
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
yolov11环境激活并使用中:
在这里插入图片描述

三、yolo11-分割任务

各种详细用法参考:https://docs.ultralytics.com/zh/
在这里插入图片描述
这里以yolo11分割任务为例,在界面选择【任务】→【分割】
在这里插入图片描述

1.yolo11-分割任务-模型及数据集

1.1模型

yolo11分割模型,首次使用会自动从最新的Ultralytics版本下载。也可以点击蓝色字体模型先下载放入工程中。
在这里插入图片描述
这里下载的是YOLO11n-seg模型,将下载好的模型文件放入ultralytics工程中。

1.2数据集

在这里插入图片描述
直接使用coco8-seg数据集,模型训练时会自动下载。(如果想先下载,网址可通过工程中coco8-seg.yaml获取)
在这里插入图片描述

2.yolo11-分割任务-训练

在项目中创建名为train_yolov11.py文件
在这里插入图片描述
根据分割教程中的训练示例编写train_yolov11.py
在这里插入图片描述
在界面左侧点击【训练】,有更详细的说明。(后面的验证、预测同样)
在这里插入图片描述
此界面中提到:
在这里插入图片描述
整合一下信息,train_yolov11.py内容如下:

from ultralytics import YOLO

if __name__ ==  "__main__":
  model = YOLO("yolo11n-seg.yaml")
  model = YOLO("yolo11n-seg.pt")
  model = YOLO("yolo11n-seg.yaml").load("yolo11n.pt")

  results =model.train(data="coco8-seg.yaml",  # 指定训练数据集的配置文件路径,这个.yaml文件包含了数据集的路径和类别信息
                cache=False,  # 是否缓存数据集以加快后续训练速度,False表示不缓存
                imgsz=640,  # 指定训练时使用的图像尺寸,640表示将输入图像调整为640x640像素
                epochs=100,  # 设置训练的总轮数为100轮
                batch=16,  # 设置每个训练批次的大小为16,即每次更新模型时使用16张图片
                close_mosaic=10,  # 设置在训练结束前多少轮关闭 Mosaic 数据增强,10 表示在训练的最后 10 轮中关闭 Mosaic
                workers=2,  # 设置数据加载的线程数,更多线程可以加快数据加载速度。如果电脑显存不够大,该数值越小越好,否则会报错
                patience=50,  # 在训练时,如果经过50轮性能没有提升,则停止训练(早停机制)
                device='0',  # 指定使用的设备,'0'表示使用第一块GPU进行训练
                optimizer='SGD',  # 设置优化器,用于模型参数更新
                )

运行:
在这里插入图片描述
coco8-seg数据集选择自动下载(注意其保存的路径),如果下载失败导致训练失败,多尝试几次就好了
在这里插入图片描述
在这里插入图片描述
训练完成:Result saved to D:\workspace\pycharm\ultralytics\runs\segment\train2
在这里插入图片描述

3.yolo11-分割任务-验证

在项目中创建名为val_yolov11.py验证程序文件。
在这里插入图片描述
根据分割教程中的验证示例编写train_yolov11.py,内容如下:

from ultralytics import YOLO

if __name__ == "__main__":
    model = YOLO("yolo11n-seg.pt")
    model = YOLO("runs/segment/train2/weights/best.pt")

    metrics = model.val()
    metrics.box.map
    metrics.box.map50
    metrics.box.map75
    metrics.box.maps
    metrics.seg.map
    metrics.seg.map50
    metrics.seg.map75
    metrics.seg.maps

运行结果:
在这里插入图片描述
Results saved to D:\workspace\pycharm\ultralytics\runs\segment\val
在这里插入图片描述

4.yolo11-分割任务-预测

4.1单图像预测

在项目中创建名为test_yolov11.py预测程序文件。
在这里插入图片描述
根据分割教程中的预测示例编写train_yolov11.py(bus.jpg图片从https://ultralytics.com/images/bus.jpg下载,路径随便放,这里我放在工程目录下的runs文件夹中),内容如下:

from ultralytics import YOLO

if __name__ == "__main__":
  # Load a model
  model = YOLO("yolo11n-seg.pt")  # load an official model
  model = YOLO("runs/segment/train2/weights/best.pt")  # load a custom model

  # Predict with the model
  results = model("runs/bus.jpg")  # predict on an image

  # Access the results
  for result in results:
    xy = result.masks.xy  # mask in polygon format
    xyn = result.masks.xyn  # normalized
    masks = result.masks.data  # mask in matrix format (num_objects x H x W)
    result.show()

运行:
报错1:
缺少pytest插件
在这里插入图片描述
解决措施:
从pycharm界面下方的Terminal进入已激活yolov11的conda环境终端,输入安装指令:

pip install pytest

在这里插入图片描述
报错2:
D:\workapp\pycharm\PyCharm 2023.1.6\plugins\python\helpers\pycharm_jb_pytest_runner.py:8: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
from pkg_resources import iter_entry_points
在这里插入图片描述
解决措施:有两种(第二种适合我)
1)第一种:修改_jb_pytest_runner.py
打开报错的路径文件D:\workapp\pycharm\PyCharm 2023.1.6\plugins\python\helpers\pycharm_jb_pytest_runner.py
对第8行、第28行进行修改:
原来:

from pkg_resources import iter_entry_points

if "pytest-teamcity" not in map(lambda e: e.name, iter_entry_points(group='pytest11', name=None)):

修改后:

from importlib.metadata import entry_points

if "pytest-teamcity" not in [e.name for e in entry_points().get('pytest11', [])]:

在这里插入图片描述
此方法,对我没用,还是报错,又改回去了。

2)第二种:降低Setuptools版本
Setuptools版本太高导致pytest报错。
查看自己的版本:pip show setuptools
在这里插入图片描述
卸载setuptools:pip uninstall setuptools
安装合适的低版本:pip install setuptools==67.6.1
问题解决。(后来想了想,可能是我的Setuptools版本过高,导致第一种不合适。)

再次运行发现报错“Empty suite “
仔细查看,我的文件名:test_yolov11.py
默认情况下,PyCharm将检查以test开头的文件,它们是unittest.TestCase的子类
所以修改文件名为t_yolov11.py,运行:
左边是刚训练的模型best.pt检测结果(因为训练参数是随便设置的分割效果肯定不好),右边是yolo11n-seg.pt检测结果
在这里插入图片描述

4.2视频预测

随便找的MP4格式视频网址https://www.aigei.com/video/index/video_extName_mp4/
下载了一个汽车行驶和一位教师教学的视频,重命名并放入工程目录中
在这里插入图片描述
t_yolov11.py内容:

from ultralytics import YOLO
import cv2
import numpy as np

def main():
    # 加载模型
    model = YOLO("yolo11n-seg.pt")  # 官方模型
    # model = YOLO("runs/segment/train2/weights/best.pt")  # 自定义模型
    # 视频源
    source = "runs/car.mp4"
    # 打开视频
    cap = cv2.VideoCapture(source)
    # 处理每一帧
    while True:
        ret, frame = cap.read()
        if not ret:
            break

        # 使用模型预测(使用stream=True提高效率)
        results = model(frame, stream=True, conf=0.5)
        # 在帧上绘制结果
        for result in results:
            annotated_frame = result.plot()  # 使用内置绘图函数
        # 显示结果
        cv2.imshow('YOLOv11 Segmentation', annotated_frame)
        # 按'q'退出
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    main()

汽车行驶视频检测结果:
在这里插入图片描述
教师教学视频检测结果:
在这里插入图片描述

4.3 电脑自带摄像头预测

t_yolov11.py内容:

from ultralytics import YOLO
import cv2
import time

def optimized_camera_detection():
    # 加载模型
    model = YOLO("yolo11n-seg.pt")
    # model = YOLO("runs/segment/train2/weights/best.pt")  # 自定义模型
    # 打开摄像头
    cap = cv2.VideoCapture(0)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

    # 性能优化设置
    prev_time = 0
    fps = 0
    print("优化版摄像头检测中... 按 'q' 退出")

    while True:
        ret, frame = cap.read()
        if not ret:
            break

        # 计算FPS
        current_time = time.time()
        fps = 1 / (current_time - prev_time) if prev_time > 0 else 0
        prev_time = current_time

        # 执行检测(使用半精度推理加速)
        results = model(frame, conf=0.5, half=True, verbose=False)
        # 绘制结果
        annotated_frame = results[0].plot()
        # 显示FPS
        cv2.putText(annotated_frame, f'FPS: {fps:.1f}',
                    (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
        # 显示结果
        cv2.imshow('YOLOv11 实时分割检测', annotated_frame)
        # 退出控制
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    optimized_camera_detection()

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值