望远镜里有一把竖直的标尺,印着数字 1~5 和刻度线;视场中央有一条水平的十字叉丝。改变砝码,叉丝上下移动,停在某个刻度值上。
读数的动作分三步:调焦看清 → 让叉丝对准刻度 → 估读到毫米的十分位。
| 局限 | 具体表现 |
|---|---|
| 慢 | 一次读数要调焦、对线、估读。做一组数据要读十几二十次 |
| 主观 | 估读的那一位靠目测。不同人读、同一个人不同时候读,结果可能差零点几毫米 |
| 易疲劳 | 连读十几次之后眼睛发花、判断力下降,误差越读越大 |
| 不可追溯 | 最后记录本上只有一个数字。这个数怎么读出来的、当时叉丝在什么位置,全都没有凭证 |
| 难复核 | 别人没法验证你读得对不对,只能从头重做一遍 |
| 精度受限 | 估读位的判读能力,受限于人眼分辨和现场条件 |
先说清楚:现在拿一张照片去问一个大模型"这个读数是多少",它多半能给你一个数。
那为什么不这么做,非要花一个学期从头自己做一个?
| 你会亲手经历 | 你会得到 |
|---|---|
| 标数据、训模型、看结果 | 知道 AI 需要什么样的"养料"才能学会 |
| 看到它在某些图上突然失灵 | 知道它的能力边界在哪、边界为什么在那儿 |
| 设计校验规则、拒读规则 | 学会用可验证的逻辑把 AI 包起来 |
| 量误差、分析失败案例 | 学会对一个 AI 系统的结果负责 |
这个项目做完,你再拿一张图去问 AI,你会知道:
没做过这个项目的人,永远只能凭感觉。
整个项目九步,今天要完成的是前两步。
| 步骤 | 做什么 | 一句话说明 |
|---|---|---|
| 1 | 搭环境 | 建两个互不干扰的软件环境 |
| 2 | 标注 | 把图上的数字、刻度线、叉丝人工标出来 |
| 3 | 重命名 | 统一文件编号,保住拍摄时间信息 |
| 4 | 转格式 | 把标注格式转成训练格式 |
| 5 | 数据自检 | 用脚本把标注错误抓出来 |
| 6 | 划分数据集 | 留一份"考题"用来验收 |
| 7 | 试跑训练 | 用最小代价确认链路通不通 |
| 8 | 正式训练 | 租云 GPU,高分辨率、长轮次 |
| 9 | 评估与读数 | 量误差,输出读数 |
你写了个程序,需要某个软件包的 2.0 版本。过了两周,另一个任务需要同一个包的 1.5 版本。
如果你把它们都装在系统里——装第二个的时候,第一个就被覆盖了,之前的程序跑不起来了。
conda 是一个"环境管理 + 软件包管理"工具。它做两件事:
| 功能 | 含义 |
|---|---|
| 环境管理 | 为每个项目建一个独立的"工具箱",里面的软件包互不干扰 |
| 包管理 | 从网上把需要的软件包下载安装到指定的工具箱里 |
所以一个"环境"= 一份独立的 Python + 一套独立的软件包。你可以建十个环境,它们彼此看不见对方。
去官网下载 Windows 64 位安装包。安装时注意两件事:
装完后打开命令行:Win + R → 输入 cmd → 回车。之后所有操作都在这个窗口里做。
conda --version # 能打印出版本号就成功
conda init cmd.exe,
然后关掉所有命令行窗口、重新开一个 cmd,再试。
我们要建的两个环境,各管一件事:
| 环境名 | 用途 |
|---|---|
label | 数据标注 |
train | 模型训练与推理 |
为什么要分两个:标注工具和训练工具的依赖互不相关,混装会让两边都变脆,出问题时难以定位。
# 标注环境
conda create -n label python=3.10 -y --override-channels -c conda-forge
conda activate label
pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple
# 训练环境
conda create -n train python=3.10 -y --override-channels -c conda-forge
conda activate train
python -m pip install --upgrade pip
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
pip install ultralytics
conda env list # 两个环境都在 python -V # 3.10.x python -c "import torch; print(torch.__version__)" yolo version labelme --version
conda activate label # 切到标注环境 conda activate train # 切到训练环境 conda deactivate # 退出当前环境
(label) 或 (train) 才是进对了环境;显示 (base) 说明你还在默认环境里,
此时敲任何命令都可能出问题。它不是在学"什么是数字 3",而是在学"什么样的画面,通常对应数字 3"。
这种"给例子 + 给答案"的学习方式,叫监督学习。而我们提供的"答案",就叫标注。
关键设计:不教模型"读数",教它"认元素"。
| 标签名 | 含义 | 画法 |
|---|---|---|
dig1 ~ dig5 | 数字 1~5 | 矩形框(类别名本身就代表数值) |
scale | 整厘米刻度线 | 线段 |
cross | 十字叉丝横线 | 线段(它才是被测对象) |
这是本课最需要记住的一句话:模型的能力,不可能超过数据的质量。