YOLO环境部署指南零基础

发布时间:2026/9/23 14:35:40

YOLO环境部署指南零基础 从零搭建 YOLO 训练环境GPU版本前言这里是用到的X-AnyLabelingyolov8产出.pt后转成.onnx文件使用末尾附带自动按照yolo要求放好文件的脚本。最近在 Windows 上折腾 YOLO 训练环境因为是国内网络 老显卡驱动踩了一堆坑pip 默认源超时、自动装错版本导致 DLL 报错、单线程下载 3 小时……网上教程大多默认你能流畅访问 GitHub / PyTorch 官网照着做基本都会卡死。所以我把完整可跑通的流程 5 个真实踩坑整理出来照着做 30 分钟就能在本地 GPU 上跑通yolo train。实测环境Windows 10 RTX 3060 Laptop6 GB 显存 驱动 527.99最终成果yolo train dataxxx.yaml正常 GPU 训练并产出.pt权重文件一、整体流程5 步① 装 Python 3.11 → ② 建 venv 虚拟环境 → ③ 装 PyTorch GPU 版 → ④ 装 Ultralytics → ⑤ 验证总下载量约2.8 GB其中 PyTorchtorch是大头。不要用 pip 默认源直接下必失败见坑 2、坑 3。二、详细步骤第 1 步安装 Python 3.11下载地址https://www.python.org/ftp/python/3.11.9/python-3.11.9-amd64.exe安装时务必勾选 “Add python.exe to PATH”安装结束界面建议点“Disable path length limit”避免 pip 装大包时路径超长报错⚠️ 不要用 Python 3.13太新容易踩兼容坑3.11 最稳验证新开 cmdpy -3.11 --version第 2 步创建虚拟环境py -3.11 -m venv C:\yolo-env C:\yolo-env\Scripts\activate看到命令行前面出现(yolo-env)才算激活成功后续所有命令都要在这个状态下执行。第 3 步安装 PyTorch GPU 版关键先看坑 2、坑 3推荐做法浏览器多线程下载 本地安装浏览器打开下载这两个文件阿里云镜像国内满速https://mirrors.aliyun.com/pytorch-wheels/cu118/torch-2.7.1%2Bcu118-cp311-cp311-win_amd64.whl (约 2.8 GB) https://mirrors.aliyun.com/pytorch-wheels/cu118/torchvision-0.22.1%2Bcu118-cp311-cp311-win_amd64.whl (约 5 MB)等两个都下载完浏览器里的.crdownload临时文件消失才算完然后pip install 下载目录\torch-2.7.1cu118-cp311-cp311-win_amd64.whl pip install 下载目录\torchvision-0.22.1cu118-cp311-cp311-win_amd64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple⚠️必须先装 torch再装 torchvision后者依赖前者顺序反了会报No matching distribution第 4 步安装 UltralyticsYOLO 本体pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simpleOpenCV 等依赖自动带入无需单独安装。第 5 步验证全链路python -c import torch; print(CUDA可用:, torch.cuda.is_available()) yolo predict modelyolov8n.pt sourcehttps://ultralytics.com/images/bus.jpg通过标准输出CUDA可用: Truedemo 输出含CUDA:0 (NVIDIA ...)且Results saved to runs\detect\predict三、踩坑记录每条都是实测血泪坑 1pip 混用镜像时自动选错版本 最隐蔽pip install torch torchvision -i 清华源 -f 阿里云镜像 ← 错误示范pip 默认挑最高版本会无视 cu118 镜像从清华源装torch 2.13.0新版内置 CUDA 太新老驱动带不动装完import torch直接报OSError: [WinError 1114] 动态链接库(DLL)初始化例程失败。Error loading ...\c10.dll对策必须锁死版本号pip install torch2.7.1cu118 torchvision0.22.1cu118 ...坑 2官方源国内直连必超时download.pytorch.org在国外2.8 GB 文件下到一半必断pip._vendor.urllib3.exceptions.ReadTimeoutError: ... Read timed out.对策小依赖走清华源-i https://pypi.tuna.tsinghua.edu.cn/simpletorch 本体走阿里云镜像。坑 3pip 单线程下载慢到绝望即使走阿里云镜像pip 单线程也只有约 242 kB/s2.8 GB 要 3 小时且pip 不支持断点续传。对策改用浏览器 / IDM / 迅雷下载 whl 文件实测 3.7 MB/s再本地pip install。坑 4CUDA 版本与驱动匹配驱动版本可选 wheel≥ 527.99CUDA 12.0cu118 ✅ / cu121 ❌≥ 531.xxCUDA 12.1cu118 / cu121 均可先用nvidia-smi看右上角驱动支持的最高 CUDA 版本。cu118 兼容性最广装机首选不确定就装 cu118。坑 5杂项小坑执行 pip 前确认已激活 venv命令行有(yolo-env)前缀否则装进全局环境浏览器下载没完成时文件是.crdownload后缀pip 会报 “No such file or directory”——等下载完再装中文路径加英文双引号下载目录\torch-xxx.whlsetx设置环境变量后要关闭 cmd 重开才生效如果重装后仍报 WinError 1114装微软 VC 运行库 https://aka.ms/vs/17/release/vc_redist.x64.exe四、磁盘规划建议位置内容占用C:\yolo-env虚拟环境torch 等大包~6 GBC:\yolo工作区数据集、yaml、训练输出随项目增长系统盘建议预留 ≥ 20 GB 余量想换盘把上面路径里的C换成D即可流程完全一样五、日常训练命令1、cmdC:\yolo-env\Scripts\python.exe C:\Users\Admin\Desktop\DeepTrain\ScriptFile\3_convert_dataset.py 图片JSON文件夹 screw ok ng----------加载图像将图像标签转成txt区分标签类别拆分图像文件夹训练和验证文件 2、C:\yolo-env\Scripts\activate------调用yolo 3、cd /d C:\yolo------调用yolo 4、yolo train dataC:\yolo\datasets\screw\data.yaml modelyolov8n.pt epochs100 imgsz640 batch16 workers4 patience30 name训练后的文件名-----开始训练 {设置训练参数 epochs100训练轮数每次看多少边把训练集完整学 100 遍。学太少没记住太多会死记硬背 imgsz640输入尺寸训练前把每张图统一缩放到 640×640 再喂给模型什么时候调大目标在图里很小小螺丝、远处零件→ 960/1280。什么时候调小显存不够、图本身分辨率低 batch16一次同时算 16 张图再统一更新一次越多越快但越吃显存 workers4 数据加载线程用 4 个线程后台读图/增强主线程不等待默认就行。 patience30连续 30 轮精度不再提升就自动停下省时间 namescrew_v2输出文件夹名这次结果存到 runs/detect/screw_v2/不和上次混在一起 5、yolo export modelC:\yolo\runs\detect\screw_v2\weights\best.pt formatonnx opset12 将训练的格式从pt转换成onnx; opset12(把模型用最通用的旧语法导出确保你那边的老程序也读得动)训练产物runs\detect\train\weights\best.pt结语到这里你的 YOLO 训练环境就完全搭建好了。后续标注推荐 X-AnyLabeling→ 转 YOLO 格式 → 写data.yaml→ 一行yolo train就能开训。#自动按照yolo要求放好文件的脚本。 #C:\yolo\datasets\screw\ #├── images\ ← 图片总文件夹 #│ ├── train\ ← 90 张训练用图 #│ └── val\ ← 22 张验证用图 #├── labels\ ← 标注总文件夹 #│ ├── train\ ← 90 份训练图的标注.txt #│ └── val\ ← 22 份验证图的标注.txt #└── data.yaml ← 配置文件 # -*- coding: utf-8 -*- Step 3: Convert X-AnyLabeling / LabelMe JSON annotations to YOLO dataset. Works fully offline. Pure standard library, no extra packages needed. Usage: C:\\yolo-env\\Scripts\\python.exe 3_convert_dataset.py 图片和JSON所在文件夹 项目名 [类别名...] Example (two classes ok/ng, same as screw project): C:\\yolo-env\\Scripts\\python.exe 3_convert_dataset.py D:\\raw\\op100 screw ok ng Output: C:\\yolo\\datasets\\项目名\\ images/train, images/val, labels/train, labels/val, data.yaml Split: 80% train / 20% val, stratified so every class appears in val. import json, os, shutil, random, sys def main(): if len(sys.argv) 4: print(__doc__) sys.exit(1) src sys.argv[1] project sys.argv[2] class_names sys.argv[3:] # e.g. ok ng - 0-ok, 1-ng dst os.path.join(rC:\yolo\datasets, project) for sub in [images/train, images/val, labels/train, labels/val]: os.makedirs(os.path.join(dst, sub), exist_okTrue) items [] skipped 0 for f in os.listdir(src): if not f.endswith(.json): continue name os.path.splitext(f)[0] img None for ext in (.jpg, .jpeg, .png, .bmp): p os.path.join(src, name ext) if os.path.exists(p): img p break if img is None: skipped 1 # orphan json (image deleted) continue d json.load(open(os.path.join(src, f), encodingutf-8)) W, H d[imageWidth], d[imageHeight] lines, classes_in_img [], set() for s in d[shapes]: if s.get(shape_type, rectangle) ! rectangle: continue # only rectangles supported pts s[points] xs [p[0] for p in pts]; ys [p[1] for p in pts] x1, x2, y1, y2 min(xs), max(xs), min(ys), max(ys) cx (x1 x2) / 2 / W; cy (y1 y2) / 2 / H w (x2 - x1) / W; h (y2 - y1) / H cls int(s[label]) classes_in_img.add(cls) lines.append(f{cls} {cx:.6f} {cy:.6f} {w:.6f} {h:.6f}) if lines: items.append((name, lines, classes_in_img, img)) # stratified 8:2 split by rarest class presence random.seed(42) random.shuffle(items) val, train [], [] # ensure each class shows up in val with ~20% of its images for cls in range(len(class_names)): group [i for i in items if cls in i[2]] take group[: max(1, len(group) // 5)] val.extend(take) val_names {i[0] for i in val} train [i for i in items if i[0] not in val_names] for name, lines, _, img in train: shutil.copy(img, os.path.join(dst, images/train, os.path.basename(img))) open(os.path.join(dst, labels/train, name .txt), w).write(\n.join(lines)) for name, lines, _, img in val: shutil.copy(img, os.path.join(dst, images/val, os.path.basename(img))) open(os.path.join(dst, labels/val, name .txt), w).write(\n.join(lines)) yaml_lines [ fpath: C:/yolo/datasets/{project}, train: images/train, val: images/val, names:, ] [f {i}: {n} for i, n in enumerate(class_names)] open(os.path.join(dst, data.yaml), w, encodingutf-8).write(\n.join(yaml_lines) \n) print(ftotal: {len(items)} images (skipped orphan json: {skipped})) print(ftrain: {len(train)} val: {len(val)}) print(fyaml : {os.path.join(dst, data.yaml)}) print(next : run 4_train.bat) if __name__ __main__: main()
延伸阅读

更多相关文章

2026/9/23 14:35:33

设计带操作界面的应用程序

概述 本文面向编程零基础小白,用生活化案例通俗讲解 Java 图形界面(GUI)开发核心概念、界面组件、交互原理与完整实操流程,手把手演示从定义界面类、封装界面组件、绑定交互事件,到创建窗口对象、运行可视化程序的完整…

2026/9/19 3:25:21

Python自动化临时文件管理系统设计与实现

1. 临时文件管理的痛点与自动化需求在软件开发、数据处理和日常办公中,临时文件就像空气一样无处不在却又容易被忽视。我见过太多项目因为临时文件管理不善导致的灾难:某次服务器磁盘被临时日志塞满导致生产环境崩溃;一个数据分析项目因为临时…

2026/9/23 5:15:52

C++访问者模式解析:双分派技术与编译器AST实战

1. 访问者模式在C中的核心价值访问者模式是23种经典设计模式中最具挑战性的一种,它完美解决了"在不修改已有类结构的前提下扩展功能"这一核心痛点。我在实际开发中多次遇到这样的场景:一个稳定的类层次结构已经投入生产环境,突然需…

2026/9/23 14:34:07

MATLAB遗传算法实现多机器人任务分配

简介:本资源是一份面向机器人系统开发工程师与智能优化研究者的MATLAB实践项目,聚焦遗传算法在多机器人任务分配中的建模、实现与性能评估,适用于工业自动化、物流调度及协同侦察等实际场景。压缩包共590个文件,主体为482个MATLAB…

2026/9/23 14:34:07

千笔论文辅助工具:智能写作与文献管理全解析

1. 工具定位与核心价值解析作为一名经历过研究生阶段的科研工作者,我深知论文写作过程中的痛点:文献管理混乱、格式调整耗时、语言表达不专业、查重降重效率低下。千笔这款工具正是针对这些痛点设计的全流程论文辅助系统,它不同于简单的语法检…

2026/9/23 14:34:07

C语言五子棋课程设计源码:可编译运行的ANSI C工程实践

简介:本资源是一份面向高校C语言初学者的课程设计实践项目,聚焦五子棋游戏开发,帮助学生通过完整可运行的代码掌握控制流程、二维数组应用、胜负判定算法及基础I/O交互等核心编程能力。压缩包共3个文件(29KB)&#xff…

2026/9/23 14:34:07

5个高频面试题拆解耳鼻喉科最好的医院选型逻辑

5个高频面试题拆解耳鼻喉科最好的医院选型逻辑 面试被问原理答不上来,是不是常态?很多工程师在谈“耳鼻喉科最好的医院”这种非技术关键词时,容易陷入自嗨,却忽略了背后的搜索意图匹配与系统架构隐喻。这恰恰是 高频面试题…

2026/9/23 14:34:07

Python数据分析与挖掘实训数据全流程实战指南

简介:这份实训数据包面向正在学习Python数据分析与挖掘的在校学生与转行开发者,围绕真实业务场景提供可动手练习的数据素材,帮助读者把数据清洗、探索分析、特征工程与机器学习建模等环节串联成完整实践链路。包内共17个文件,以cs…

2026/9/23 14:29:06

分时电价与需求响应建模的MATLAB实现

1. 分时电价与需求响应分析概述分时电价(Time-of-Use Pricing, TOU)作为电力市场的重要调节机制,通过价格杠杆引导用户优化用电行为。我在电力系统分析项目中多次应用该方法,发现其实施效果高度依赖科学的分析模型和精准的参数设计…

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/23 0:01:54

3个实战技巧搞定形式英语:从看教程到跑通性能优化

3个实战技巧搞定形式英语:从看教程到跑通性能优化 看了一堆教程还是不会写项目?别慌,这种“眼高手低”的困境在开发者圈子里太常见了。很多人以为卡点在语法,其实真正拦路虎是缺乏将知识点串联成完整链路的能力。今天咱们不聊虚的,直接拿【形式英语】这…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码