win10系统下使用conda环境部署YOLOv8记录

win10系统下使用conda环境部署YOLOv8

1. conda下载参考网上链接:

一步步教你在 Windows 上轻松安装 Anaconda以及使用常用conda命令(超详细)_windows anaconda-CSDN博客

使用anaconda部署YOLOv8超详细小白教程_anaconda yolov8-CSDN博客

2. win10安装 cuda 、cudnn参考链接:Win10系统安装CUDA、cuDNN、Python、PyTorch、torchvision、opencv环境,用于YOLO系列模型格式转换记录_fmql yolo-CSDN博客
3. 部署YOLOv8虚拟环境
3.1 管理员身份启动win终端,创建conda环境
shell 复制代码
# 创建虚拟环境
conda create -n yolov8 python=3.8 -y
# 激活虚拟环境
conda activate yolov8

# 安装cuda11.7对应的torch、torchvision、torchaudio
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia


#安装完,测试 pytorch是否安装成功,虚拟环境(yolov8)下进入python

python
import torch
import torchvision
print(torch.cuda.is_available())  ## 依次输入完,会显示 True。安装成功

参考pytorch官方链接:PyTorch

3.2 conda环境下安装ultralytics环境
shell 复制代码
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  ultralytics

部署完成后,下载ultralytics源码,将ultralytics放在工作空间中:ultralytics/ultralytics: Ultralytics YOLO 🚀,进入ultralytics-main/路径下,测试,yolov8源码:GitHub - Pertical/YOLOv8: YOLOv8 🚀 in PyTorch > ONNX > CoreML > TFLite

shell 复制代码
yolo predict model=yolov8n.pt source="https://ultralytics.com/images/bus.jpg"   ## 会下载pt模型文件,也可自行下载,提前放置在源码路径,推理完成后结果放在ultralytics-main\runs\detect路径下
3.3 conda环境下mp4视频推理测试

ultralytics-main\路径下创建yolov8_video_inference.py,测试本地mp4视频文件或USB摄像头数据,实时显示播放识别结果和保存本地mp4

python 复制代码
import cv2
from ultralytics import YOLO
import os
import argparse

def process_video(input_video, model_path, output_video, imgsz=1024, show=True, save=True):
    """
    使用 YOLOv8 模型处理视频

    参数:
        input_video: 输入 MP4 视频路径
        model_path:  自定义 YOLOv8 模型权重路径 (.pt 文件)
        output_video: 输出结果视频路径
        imgsz:       模型输入尺寸 (默认 1024)
        show:        是否实时显示检测画面
        save:        是否保存结果视频
    """
    # 检查输入文件是否存在
    if not os.path.exists(input_video):
        raise FileNotFoundError(f"输入视频不存在: {input_video}")
    if not os.path.exists(model_path):
        raise FileNotFoundError(f"模型文件不存在: {model_path}")

    # 创建输出目录
    output_dir = os.path.dirname(output_video)
    if output_dir and not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 加载自定义 YOLOv8 模型
    print(f"Loading model from {model_path} with imgsz={imgsz}...")
    model = YOLO(model_path)

    # 打开视频文件
    cap = cv2.VideoCapture(input_video)
    if not cap.isOpened():
        raise IOError(f"无法打开视频文件: {input_video}")

    # 获取视频属性
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    fps = cap.get(cv2.CAP_PROP_FPS)
    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

    print(f"视频信息: {width}x{height}, {fps:.2f} FPS, 共 {total_frames} 帧")

    # 初始化视频写入器(保存带标注的视频)
    if save:
        fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 或使用 'XVID' / 'H264'
        out = cv2.VideoWriter(output_video, fourcc, fps, (width, height))
        if not out.isOpened():
            raise IOError(f"无法创建输出视频文件: {output_video}")
        print(f"结果视频将保存至: {output_video}")

    frame_count = 0
    print("开始处理视频... 按 'q' 键可提前退出")

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

        frame_count += 1

        # 使用 YOLOv8 进行推理(设置 imgsz=1024)
        results = model(frame, imgsz=imgsz, verbose=False)

        # 绘制检测结果
        annotated_frame = results[0].plot()  # 自动绘制边界框和标签

        # 显示处理进度
        if frame_count % 30 == 0:  # 每30帧打印一次
            print(f"已处理 {frame_count}/{total_frames} 帧 ({frame_count/total_frames*100:.1f}%)")

        # 显示画面
        if show:
            cv2.imshow('YOLOv8 Detection', annotated_frame)
            # 按 'q' 键退出
            if cv2.waitKey(1) & 0xFF == ord('q'):
                print("用户中断处理")
                break

        # 保存结果帧
        if save:
            out.write(annotated_frame)

    # 释放资源
    cap.release()
    if save:
        out.release()
    if show:
        cv2.destroyAllWindows()

    print(f"\n✓ 处理完成! 共处理 {frame_count} 帧")
    if save:
        print(f"结果视频已保存: {output_video}")

if __name__ == "__main__":
    # 命令行参数解析(方便灵活调用)
    parser = argparse.ArgumentParser(description='YOLOv8 视频目标检测')
    parser.add_argument('--input', type=str, required=True, help='输入 MP4 视频路径')
    parser.add_argument('--model', type=str, required=True, help='自定义模型权重路径 (.pt)')
    parser.add_argument('--output', type=str, default='output/result.mp4', help='输出视频路径')
    parser.add_argument('--imgsz', type=int, default=1024, help='模型输入尺寸 (默认 1024)')
    parser.add_argument('--noshow', action='store_true', help='不显示实时画面')
    parser.add_argument('--nosave', action='store_true', help='不保存结果视频')

    args = parser.parse_args()

    # 执行视频处理
    process_video(
        input_video=args.input,
        model_path=args.model,
        output_video=args.output,
        imgsz=args.imgsz,
        show=not args.noshow,
        save=not args.nosave
    )

运行

shell 复制代码
python yolov8_video_inference.py --input ./a.mp4 --model ./yolov8n.pt --output ./detected_video.mp4 --imgsz 640
相关推荐
QQ676580081 天前
基于深度学习YOLO的苹果采摘点图像识别 苹果枝条分割识别 苹果分割检测 苹果茎叶分割识别 果园自动化采摘设备目标识别算法第10386期
深度学习·yolo·自动化·苹果采摘点图像·苹果枝条分割·苹果茎叶分割·果园自动化采摘设备
QQ676580081 天前
基于YOLO26算法的智慧农业橙子图像识别 橙子采摘识别 水果采摘识别 高清采摘过程图像识别 YOLO+voc个数据集第10410期
算法·yolo·橙子采摘·水果采摘识别·高清采摘过程图像识别
深度学习lover1 天前
<数据集>yolo 瓶盖识别<目标检测>
人工智能·python·yolo·计算机视觉·瓶盖识别
乔公子搬砖1 天前
告别识别率焦虑:视频 AI 工程化实战 —— 检测→判定→聚合→治理全链路拆解
人工智能·yolo·决策树·计算机视觉·视觉检测
qxl_7999151 天前
PCB元件对位:相机采集+YOLO定位完整工程方案(含坐标转换公式)
数码相机·yolo·fpga开发
从0至11 天前
Conda 命令指南:从入门到精通
python·conda·小项目
xiaoyaohou112 天前
013、Neck结构改进(一):BiFPN、ASFF等多尺度特征融合技术
yolo
泰恒2 天前
人工智能简述
人工智能·深度学习·yolo·机器学习·计算机视觉
jay神2 天前
大米杂质检测数据集(YOLO格式)
人工智能·深度学习·yolo·目标检测·毕业设计
xiaoyaohou112 天前
007、注意力机制改进(一):SE、CBAM、ECA模块原理与融合
yolo