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
相关推荐
空堂与归15 小时前
实时目标检测怎么做到又快又准?YOLOv12架构深度解析
人工智能·yolo·目标检测·计算机视觉·架构
FL162386312916 小时前
电力场景变电站火灾检测数据集VOC+YOLO格式564张2类别
人工智能·yolo·机器学习
jay神19 小时前
27届计算机专业深度学习选题推荐
人工智能·深度学习·yolo·机器学习·计算机视觉
vortex52 天前
从Conda到UV:Python项目依赖管理的现代演进
python·conda·uv
向哆哆2 天前
夜间野生动物目标检测数据集分享(适用于YOLO系列深度学习分类检测任务)
深度学习·yolo·目标检测
呆萌很3 天前
YOLO 系列算法版本概述
yolo
CODER03043 天前
Anaconda和Mamba创建环境管理包常用命令合集
python·深度学习·conda·虚拟环境·mamba·常用命令大全
FL16238631293 天前
人员聚集人群拥挤密度检测数据集VOC+YOLO格式163张2类别
人工智能·yolo·机器学习
智购科技自动售货机厂家3 天前
2026自动售货机AI视觉识别优化:从YOLOv11n模型量化到RKNN部署的端侧推理工程实践~YH
javascript·人工智能·yolo·机器学习·计算机视觉·目标跟踪·perl
YOLO数据集集合3 天前
UAVDT 无人机车辆检测数据集 - 无人机航拍 | 车辆检测 | 目标检测 | YOLO格式 | 智能交通 | 城市管理 | 多类别数据集 | 计算机视觉
人工智能·yolo·目标检测·机器学习·计算机视觉·目标跟踪·无人机