docs: 清掉失效的 train.py 引用与 ONNX 导出依赖组

仓库里从来没有 train.py / eval.py,入口是 classify.py 与 detect.py。

- README 的计算后端与 SwanLab 示例改用 classify.py,看板路径跟着 work_dir
  改为 runs/classify/swanlog。
- 删掉"train.py 的 train.restart_schedule 同理":restart_schedule 只在
  engine/simclr.py 里实现,分类训练没有这个选项。
- 目录表里 configs/ 的子目录(原写 model/ dataset/ train/ eval/)与 scripts/
  的描述改成实际内容;入口那行补上 detect.py。
- 导出走 OpenVINO,没有脚本用到 onnx/onnxscript,删掉 export 依赖组。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Shaun Zhou
2026-10-08 14:57:11 +08:00
co-authored by Claude Opus 5
parent c2bd5301b4
commit 29ff7a2c9b
4 changed files with 18 additions and 131 deletions
+15 -15
View File
@@ -15,36 +15,37 @@
| 目录 | 作用 |
| --- | --- |
| `configs/` | yaml 配置(`model/` 模型、`dataset/` 数据、`train/` 训练、`eval/` 评估) |
| `configs/` | yaml 配置(`cluster/` 聚类与自监督、`classify/` 分类、`detect/` 检测) |
| `models/` | 模型骨架:`backbones/` + `necks/` + `heads/`,由 `defect_net.py` 组装 |
| `datasets/` | 抛出数据样本的 Dataset 类、数据增强、监督信号编码 |
| `data/` | 数据集本体或软链接(不入库,见 [data/README.md](data/README.md)) |
| `scripts/` | 格式转换、数据集切分、ONNX 导出等批处理脚本 |
| `scripts/` | 聚类、框生成、数据集装配与切片、OpenVINO 导出等批处理脚本 |
| `engine/` | 训练 / 评估循环、损失、指标、优化器、检查点、SwanLab 可视化 |
| `utils/` | 配置、注册表、日志、随机种子、设备解析(cuda/mps/cpu) |
| `tests/` | 单元测试 |
| `docs/` | 算法与数学说明文档 |
| `figures/` | 文档用的 mermaid 图(`.mmd` 源 + `.md` 预览 + `.png`) |
入口:[classify.py](classify.py)(分类训练与评估)、[scripts/](scripts/) 下的聚类、导出与框生成脚本。
入口:[classify.py](classify.py)(分类训练与评估)、[detect.py](detect.py)(YOLO 检测训练与评估),
以及 [scripts/](scripts/) 下的聚类、框生成、导出脚本。
## 环境
```bash
uv sync # 安装依赖(含 swanlab)
uv sync --group export # 需要导出 ONNX 时再装
uv run python scripts/check_env.py # 自检(Python / PyTorch / 可用后端)
```
### 计算后端
支持 **CUDA / MPS(Apple Silicon)/ CPU**。配置里的 `device: auto` 按 `cuda > mps > cpu`
自动挑最快的可用后端,也可以显式写 `cuda` / `mps` / `cpu`,或用命令行 `--device` 覆盖:
自动挑最快的可用后端(`classify.py` / `detect.py` / `cluster_unlabeled.py` 都一样),也可以显式写
`cuda` / `mps` / `cpu`,或用命令行 `--device` 覆盖:
```bash
uv run python train.py --config configs/train/baseline.yaml # auto
uv run python train.py --config configs/train/baseline.yaml --device mps # 强制 Mac GPU
uv run python train.py --config configs/train/baseline.yaml --device cpu
uv run python classify.py --config configs/classify/film.yaml # auto
uv run python classify.py --config configs/classify/film.yaml --device mps # 强制 Mac GPU
uv run python classify.py --config configs/classify/film.yaml --device cpu
```
**显式指定不可用的后端会直接报错退出**,不会悄悄退回 CPU——训练慢几十倍却不吭声是最坏的情况。
@@ -61,7 +62,8 @@ uv run python train.py --config configs/train/baseline.yaml --device cpu
## 训练可视化(SwanLab)
训练过程通过 [SwanLab](https://swanlab.cn) 记录:按 step 记录各项损失与学习率,按 epoch 记录
验证指标与显存峰值,实验的超参就是完整的 yaml 配置。在 `train.swanlab` 里配置:
验证指标与显存峰值,实验的超参就是完整的 yaml 配置。分类(`configs/classify/`)、检测
(`configs/detect/`)与自监督(`simclr.swanlab`)都在各自配置的 `swanlab` 段里开关:
```yaml
train:
@@ -75,15 +77,15 @@ train:
```bash
# 本地看板:不需要账号,训练时用 local 模式,另开终端起看板
uv run python train.py --config configs/train/baseline.yaml --set train.swanlab.mode=local
uv run swanlab watch runs/baseline/swanlog # 默认 http://127.0.0.1:5092
uv run python classify.py --config configs/classify/film.yaml --set train.swanlab.mode=local
uv run swanlab watch runs/classify/swanlog # 默认 http://127.0.0.1:5092
# 云端
uv run swanlab login # 首次使用需登录
uv run python train.py --config configs/train/baseline.yaml # mode 默认 online
uv run python classify.py --config configs/classify/film.yaml # mode 默认 online
# 离线跑完后再补传云端
uv run swanlab sync runs/baseline/swanlog
uv run swanlab sync runs/classify/swanlog
```
看板可以在训练**进行中**打开,指标边训边刷。端口冲突用 `-p 5100`,要局域网访问加 `-h 0.0.0.0`。
@@ -282,8 +284,6 @@ uv run python scripts/cluster_unlabeled.py --config configs/cluster/film.yaml \
--set simclr.epochs=5000
```
`train.py` 的 `train.restart_schedule` 同理。
续训时各项配置的行为:
| 配置项 | 续训时 |