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
相关推荐
向哆哆7 天前
高精度织物缺陷检测数据集(适用YOLO系列/1000+标注)(已标注+划分/可直接训练)
yolo·目标检测
前网易架构师-高司机8 天前
带标注的驾驶员安全带识别数据集,识别率99.5%,可识别有无系安全带,支持yolo,coco json,pascal voc xml格式
xml·yolo·数据集·交通·安全带
Nightmare0048 天前
切换conda环境的时候输出zstandard could not be imported. Running without .conda support.
开发语言·python·conda
墨染天姬8 天前
【AI】conda常用指令
人工智能·conda
SCBAiotAigc8 天前
2026.2.25:conda与uv并存时,如何取消base激活
人工智能·python·conda·uv
向哆哆8 天前
粉尘环境分类检测千张图数据集(适用YOLO系列)(已标注+划分/可直接训练)
yolo·分类·数据挖掘
琅琊榜首20208 天前
移动端AI挂机新范式:YOLOv8+NCNN实现无Root视觉自动化
人工智能·yolo·自动化
智驱力人工智能9 天前
地铁隧道轨道障碍物实时检测方案 守护城市地下动脉的工程实践 轨道障碍物检测 高铁站区轨道障碍物AI预警 铁路轨道异物识别系统价格
人工智能·算法·yolo·目标检测·计算机视觉·边缘计算
智驱力人工智能9 天前
机场鸟类活动智能监测 守护航空安全的精准工程实践 飞鸟检测 机场鸟击预防AI预警系统方案 机场停机坪鸟类干扰实时监测机场航站楼鸟击预警
人工智能·opencv·算法·安全·yolo·目标检测·边缘计算
何伯特9 天前
ROS与Conda的兼容性问题深度解析与解决方案
conda·ros