数集仓 · 入门教学案例 · V1.0.2

给果干照片画上检测框,
完成你的第一个视觉项目

这份教程解决一个具体问题:怎样把“有图片、有标注”变成“能运行、能展示、能解释”的课程项目。你将先使用随包模型得到预测结果,再亲手准备数据、训练模型和整理实验。

第一次使用:先完成这 4 步

本教程对应 v1.0.2。旧版 v1.0.1 的安装提示不够清楚,请重新下载新版完整教学包,解压到一个新的短目录;不要覆盖你已经训练得到的 runs 文件夹。仅刷新网页不会更新电脑里已下载的脚本。

顺序你要做什么看到什么再继续
① 下载并解压下载完整教学包 ZIP,右键“全部解压”,进入包含 INSTALL.cmd 的文件夹。能看到 INSTALL.cmd、START_DEMO.cmd 和“开始学习.html”,地址栏不是 ZIP 文件。
② 安装运行环境双击 INSTALL.cmd。新版会自动寻找合适的 Python;若显示“未开始安装”,按下文 2.1 节准备 Python。安装窗口明确显示“安装成功 / PASS / READY”。只有“按任意键”不算成功。
③ 启动演示安装成功后双击 START_DEMO.cmd。若你先点了它,新版会进入安装流程,不会直接退出让你猜。窗口出现 Ready,浏览器显示可选图片的演示界面。
④ 运行一个样例点击“试试样例 1”,再点击“开始检测”。出现带框图片和结果列表。保留终端窗口,关闭它会停止演示。

先区分两个“安装”:Python 是运行程序所需的软件;INSTALL.cmd 安装的是本项目的模型依赖。两者都准备好才能运行。你可以先完整读完第 2 节,再开始操作。

学习目标:跑通并理解整个过程,不以高分作为入门门槛。class_0—class_5 的真实名称尚未确认,不能根据编号宣称识别了某种水果。模型可能误检或漏检。

1. 解压到一个固定文件夹

本教程面向 Windows、Python 3.12、CPU。无需独立显卡。安装环境需要联网和数 GB 空间;完成安装后,演示使用包内模型和图片,不需要再次下载模型。

  1. 右键项目 ZIP,选择“全部解压”。不要在 ZIP 预览窗口中直接双击程序。
  2. 建议解压到 D:\citrus_project。没有 D 盘可用 C:\citrus_project。
  3. 进入能看到 INSTALL.cmd 的文件夹。若里面还套一层项目文件夹,请继续进入。
  4. 在文件夹空白处右键,选择“在终端中打开”。以下以 PowerShell 为例。
Set-Location 'D:\citrus_project'
Get-ChildItem

如果目录不同,只修改第一行的目录。复制代码框中的命令,逐行执行,不要复制代码框外的说明文字。

citrus_project/
├── 开始学习.html          ← 本教程,双击浏览
├── INSTALL.cmd           ← 安装独立环境
├── START_DEMO.cmd        ← 启动本机演示
├── install_env.py / check_environment.py
├── demo.py / demo.html / project_runtime.py
├── prepare_dataset.py / run_yolo.py
├── requirements.txt / package-manifest.json
├── data/dried-citrus-fruits-dataset.zip
├── models/citrus-best.pt  ← 30 轮实验模型
├── models/yolo26n.pt      ← 从头开展教学训练的预训练权重
├── samples/              ← 两张演示原图
├── examples/             ← 真实实验记录及成功、失败图片
├── reference/            ← 固定划分与原始参数记录
└── licenses/             ← 开源许可与数据来源
成功标志:看到上述文件,两个模型不为空。.venv、prepared、runs 和 outputs 将在操作时生成,不需要你手工创建。

2. 第一次安装:每种结果分别怎么处理

2.0 先运行 INSTALL.cmd,识别当前状态

  1. 在解压后的项目文件夹里找到 INSTALL.cmd,双击。
  2. 出现黑色窗口是正常的,这就是显示安装过程的终端。先读最后几行,不要看到“按任意键”就认为装好了。
  3. 新版会检查项目环境、Python Launcher、常见安装位置和已有应用的可用 Python,要求 3.12 且为 64 位;不会改动其他软件的 Python。
窗口显示它表示什么你现在该做什么
环境检查 / 已找到 / 正在安装 / [1/5] 至 [5/5]检查、下载、安装或模型验证正在执行。保持联网,保留窗口;按第 2.2 节辨认进度。
未开始安装 / No suitable Python runtime found没找到符合要求的 Python,没有在后台安装。不用等待。按任意键关闭窗口,然后执行第 2.1 节。
安装失败 / Installation failed / ERROR某一步失败了,程序已停止。不用等待,也不要运行演示。保留错误信息,按第 8 节处理后重跑 INSTALL.cmd。
安装成功 / PASS / READY文件、依赖与一次真实模型预测已通过。按任意键关闭安装窗口,再双击 START_DEMO.cmd。
请按任意键继续只是窗口暂停提示,本身不能说明成功或失败。看它上面的状态。按键通常只是关闭窗口,不会帮你补装或修复。

2.1 没有找到 Python,具体怎样安装?

如果已经显示“已找到”,跳到 2.2。只有出现“未开始安装”才需要这一步。不要为了这个案例卸载 ArcGIS、其他项目或其他版本的 Python。

  1. 用浏览器打开 Python 官方 3.12.10 下载页。这是可提供传统 Windows 安装器的 3.12 版本;页面会列出后续安全版本,有可用的更新版 3.12 环境也可以由安装入口检查识别。包内原实验使用 3.12.14,版本与结果需如实记录。
  2. 向下找到 Files 区域,选择 Windows installer (64-bit)。普通 Intel / AMD Windows 电脑使用这一项;不要选 source、embeddable、32-bit 或 ARM64。本案例未验证 ARM 电脑。
  3. 下载后打开安装程序。确认标题是 Python 3.12,勾选 Add python.exe to PATH,保留默认的 Launcher 选项,再点 Install Now。使用默认的个人安装目录即可。
  4. 等待出现 Setup was successful,点 Close。如果显示安装错误,不要继续本教程,先记录该错误。
  5. 回到项目文件夹,重新双击 INSTALL.cmd。新版会检查默认安装位置,不要求你先手工修改系统环境变量。
本步成功标志:项目安装窗口出现“已找到”及 Python 路径,并继续到“正在安装”。装好 Python 本身,还不等于本项目依赖已经安装完。
我确定已经有 Python 3.12,但仍然提示未找到

先确认它是 64 位。自定义目录的用户可明确指定该解释器,仅影响当前终端。操作:在项目文件夹的地址栏输入 powershell 并按回车,将下面第一行路径替换成你真实的 python.exe 路径,再逐行执行。下方路径是占位示例,不能原样复制使用。

$env:PYTHON312_EXE = 'C:\你的实际安装目录\python.exe'
.\INSTALL.cmd

安装入口会检查版本和位数,不会仅凭文件名运行错误版本。No suitable Python runtime found 只能说明启动器没有找到需要的版本,不代表电脑上完全没有 Python。

2.2 项目依赖正在安装:哪些需要等,哪些不用等?

安装器创建当前目录下的 .venv,按 5 个阶段显示中文状态:创建环境 → 安装 CPU 模型依赖 → 安装其他依赖 → 检查依赖冲突 → 校验文件并实际预测一张图。首次需要联网和数 GB 空间,不是免安装便携版;不同网络和电脑耗时不同。

唯一可以继续启动演示的成功信号:最后显示“安装成功 / PASS / READY”。outputs/environment-check.json 中 passed 为 true,并生成本版本的安装成功记录。只看到 .venv 文件夹或 python.exe 并不能证明全部安装完成。

完整依赖安装日志在 outputs/install.log。如果连 Python 都未找到,Python 安装器尚未启动,因此没有这份日志也是正常的。只有明确安装成功后,按任意键关闭安装窗口,再进入第 3 步。

3. 快速体验:先用模型得到一张预测图

  1. 确认上一节安装成功后,双击 START_DEMO.cmd。首次误点启动文件时,新版会自动进入安装;如果安装失败,仍需先按提示修复。熟悉终端的用户也可用下面的命令。
  2. 等待终端显示 Ready,浏览器将打开本机页面。
  3. 点击“试试样例 1:单个目标”,再点击“开始检测”。
  4. 右侧出现真实预测框,下方列出编号、置信度和框坐标。
  5. 点击“保存带框图片”和“保存结果 JSON”,保存你的这次输出。
  6. 换成“样例 2:观察误检”,重复检测,对照下方说明。
.\.venv\Scripts\python.exe -B demo.py

浏览器没有自动打开时,手动访问 http://127.0.0.1:8771/。运行期间不要关闭终端;完成后回到终端按 Ctrl+C。界面仅绑定本机,不对局域网或公网提供服务。

样例 1 · 计数一致单目标真实预测

标签为 class_5 一个,示例模型也预测一个。计数相同仍不能单独证明框位置正确。

样例 2 · 有额外预测误检真实样例

标签为 class_5 一个,但在 0.25 阈值下还预测了 class_0 和 class_2。框重叠时要结合 JSON 检查。

3.1 换自己的图片

点击“本机图片”,选择 JPG 或 PNG,再点击“开始检测”。限制为 10 MB、2000 万像素。图片在本机内存中处理,程序不上传云端,也不自动保存你选择的原图。数据分布不同的照片可能效果很差,这正是需要记录的实验结果。

3.2 理解阈值与置信度

框旁边的 0.99 是单个预测的置信度,不是模型准确率。把阈值从 0.25 调到 0.50,再点击检测,观察哪些框消失。提高阈值可能减少误检,也可能漏掉目标;降低阈值不等于模型更好。换图或改变阈值后,旧结果会清空,避免错配。

这一阶段完成标准:能选择样例和自己的图片、获得真实输出、保存结果、解释一个错误。到这里已可做一次入门课堂演示。

4. 检查数据并理解标注

.\.venv\Scripts\python.exe -B prepare_dataset.py --zip data/dried-citrus-fruits-dataset.zip

脚本读取包内原始 ZIP,不修改它。检查图片解码、图片标签配对、标签数值和六个类别编号,并用固定种子划分数据。

图片 / 标签目标框训练 / 验证 / 测试
299 / 299671239 / 30 / 30

生成 prepared/check_report.json、split_manifest.json、data.yaml 和图像标签目录。完全相同像素的图片保持在同一集合;近似重复和同一采集场景尚未人工复查,因此这套划分用于入门教学。

Start-Process '.\prepared\annotations.html'

预览中的红框来自原始标签,不是模型输出。YOLO 标签每行有五个字段:

类别编号  中心x  中心y  宽度  高度
5         0.50   0.50   0.60  0.70

上面只是格式示意,坐标按图像宽高归一化。一个标签文件的每一行表示一个目标。打开 prepared/labels/train 下的 TXT,与同名图片对照。

成功标志:数量与表格一致,标注预览能打开。脚本遇到已存在的 prepared 会停止以保留旧结果;需要重做时用 --out prepared_v2,后续加 --data prepared_v2/data.yaml。

5. 自己训练:先一轮,再完整实验

5.1 一轮试跑

.\.venv\Scripts\python.exe -B run_yolo.py train --model models/yolo26n.pt --epochs 1 --imgsz 320 --batch 4 --device cpu --name smoke

该命令使用包内预训练权重,不把已训练好的 citrus-best.pt 误当成新实验起点。epochs 是轮数,imgsz 是模型输入尺寸,batch 是每批图片数。Windows 数据读取进程数设为 0。

成功标志:runs/smoke/weights/best.pt、last.pt 和训练日志生成。一轮用于确认程序可运行,不要求高分。

5.2 完整入门训练

.\.venv\Scripts\python.exe -B run_yolo.py train --model models/yolo26n.pt --epochs 30 --imgsz 320 --batch 4 --device cpu --name baseline

训练完成后查看 runs/baseline/results.csv 和图表。best.pt 按验证集表现选出,last.pt 是最后一轮。示例实验在 i9-14900HX CPU 上训练约 10.2 分钟;普通电脑可能更久,不能把这个时长作为保证。

第二次实验改名为 baseline_v2,不要覆盖第一次结果。模型效果有限也可以形成教学案例:记录真实结果,说明可能原因,再比较改进方案。

6. 在测试集评估,并预测图片

没有时间训练时,可先用随包模型跑通评估:

.\.venv\Scripts\python.exe -B run_yolo.py test --model models/citrus-best.pt --imgsz 320 --name test_example
.\.venv\Scripts\python.exe -B run_yolo.py predict --model models/citrus-best.pt --source prepared/images/test --imgsz 320 --name predict_example

自己的 30 轮训练完成后,把 --model 改为 runs/baseline/weights/best.pt,实验名分别改为 test_mine 和 predict_mine。

评估输出 runs/test_example/metrics.json;预测输出 runs/predict_example 内的带框图片、标签和 counts.json。这些是模型预测,不能代替人工标注。
2026-10-01 示例实验记录
测试集 mAP@0.50.9565
测试集 mAP@0.5:0.950.9373
测试图片30 张

mAP 是检测指标,不要写成“分类准确率 95.65%”。测试集较小,相似图片可能影响结果。你的环境和训练结果可能不同;请填写自己的输出。不要反复根据测试成绩调参,调参主要依据验证集。

6.1 文件夹移动后怎么办

本包训练脚本会按 data.yaml 所在目录重新定位默认的 prepared 数据,不依赖作者电脑的绝对路径。若你自行改了配置结构,请同步调整 path、train、val、test。已安装的 .venv 通常不能直接搬家;在新目录重新运行 INSTALL.cmd。

7. 把实验整理成你自己的课程报告

打开 实验记录模板.html,按章节填写自己的参数、指标和截图。它是提纲,不是可直接冒充个人实验的现成报告。

  1. 问题:输入一张果干照片,输出框、类别编号和数量。
  2. 数据:记录数量、类别编号、许可和数据划分限制。
  3. 环境:从 environment-check.json 和安装日志提取实际版本。
  4. 训练:记录轮数、输入尺寸、批大小、设备和实验名。
  5. 结果:粘贴自己生成的 metrics.json 数字和预测图。
  6. 错误:至少保留一个误检或漏检,说明它为什么不符合标签。
  7. 改进:提出复查类别名称、按采集场景划分、补充真实场景图片等具体方向。

演示时按“问题 → 原图与标签 → 运行预测 → 解释失败 → 改进方向”顺序讲。不要宣称模型已达到生产效果,也不以模型分数代替自己的分析。

8. 常见错误:先看现象,再做最小修复

现象处理步骤
No suitable Python runtime found / 未开始安装没有在下载,不用等待。按第 2.1 节安装 64 位 Python 3.12,或指定已有解释器;重新运行 INSTALL.cmd。不要卸载其他 Python。
按任意键后窗口消失按键只是关闭窗口。若上方是安装失败,先修复;若上方是安装成功,接下来双击 START_DEMO.cmd。
路径太长把完整 ZIP 解压到 D:\citrus_project 等短路径。不要把已创建的 .venv 直接搬到新位置,也不要只移动脚本。
No space left / 磁盘空间不足安装已失败。检查项目所在盘与系统临时目录所在盘的剩余空间,保留数据和实验结果,释放足够空间后重跑安装。
安装下载失败打开 outputs/install.log 找最后一个错误,确认网络可访问官方依赖下载站点,恢复后重跑 INSTALL.cmd。日志中的红色 ERROR 或“安装失败”表示停止;“Retrying”是仍在重试。安装没有通过之前不要启动演示。
No module named …确认命令前缀是 .\.venv\Scripts\python.exe;重新运行安装器,避免装在一个环境却用另一个运行。
Package file changed / missing模型或包文件校验不符,重新完整解压原交付包;保留自己产生的 runs 输出,不要随意关闭校验。
端口占用关闭自己之前打开的演示终端,或执行 demo.py --port 8772,按终端的新地址访问。
页面打不开或连接断开确认终端仍运行、已显示 Ready;启动未成功时先看终端报错。
没有任何框确认用了随包模型;换回样例 1 核对,再尝试较低阈值。空结果也可能是模型能力有限。
框太多或类别奇怪提高阈值观察;对照原始标签。不要改成看起来漂亮的假结果。
Output exists查看已有结果,或者使用新的 --name。数据准备则使用新的 --out。
内存不足 / 训练很慢先 batch 1、一轮 CPU 试跑;关闭其他重程序。效果与耗时真实记录即可。

需要反馈问题时,提供:执行的命令、终端最后约 20 行、环境检查结果和操作到哪一步。不要发送账号口令、网盘提取码或整台电脑的信息。

使用与许可

项目软件与随包 YOLO 模型按 AGPL-3.0 开源方案提供,许可和完整项目源文件随包保留;数据依据原始声明另行标明 Apache 2.0。请阅读 licenses/使用说明.txt 与原始来源记录。教程整理和配套服务与开源代码的使用权区分,不把开源模型包装成独家闭源授权。