发布时间:2026/8/9 6:17:56
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/8/9 6:17:56

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

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

2026/8/9 6:17:56

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

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

2026/8/9 6:17:56

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

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

2026/8/9 7:27:58

出版业IP跨界变现的挑战与解决方案

1. 出版业IP跨界变现的现状与挑战出版行业正面临数字化转型的阵痛期。我接触过不少传统出版社的编辑总监,他们手里握着大量优质图书IP,却苦于找不到合适的变现路径。去年某省级出版社的年度财报显示,其数字业务收入占比不足15%,而…

2026/8/9 7:27:58

自动化测试框架封装

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快封装自动化测试框架,测试人员不用关注框架的底层实现,根据指定的规则进行测试用例的创建、执行即可,这样就降低了自动化测试门槛…

2026/8/9 7:27:58

生成式AI测试误报优化:从根源拆解到实战降噪70%

1. 项目概述:当AI成为测试员,误报为何如影随形?最近和几个测试团队的朋友聊天,大家不约而同地都在吐槽同一件事:引入生成式AI辅助测试后,报告里的“狼来了”次数明显变多了。一个简单的表单提交&#xff0c…

2026/8/9 7:27:58

Unity游戏模组开发入门:BepInEx框架安装与使用全指南

1. 项目概述:为什么BepInEx是Unity模组开发的“瑞士军刀”?如果你玩过一些基于Unity引擎开发的PC游戏,比如《雨中冒险2》、《星露谷物语》的某些大型模组,或者想给一些独立游戏添加点“私人订制”的功能,那你大概率已经…

2026/8/9 7:27:58

项目反应理论在AI安全评估中的应用与Python实战

在AI模型评估与安全对齐的研究中,我们常常面临一个核心挑战:如何精准、高效地衡量一个模型在特定能力或安全属性上的真实水平?传统的评估方法,如使用固定难度的测试集计算平均准确率,往往忽略了题目难度与模型能力之间…

2026/8/9 7:22:58

每日八股day16

### 本系列帖子为鼠鼠复习八股巩固记忆和个人理解所写,如有错误纯属本人实力不佳,欢迎各位大佬阅读指正 ###1.Redis 键过期删除三种策?定时删除:key设置过期时间时,创建一个定时器,时间一到立即删除。优点…

2026/8/9 0:01:56

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:56

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/9 0:01:56

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:56

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/7 9:44:18

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/7 19:03:32

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/8 2:17:42

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…