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:
co-authored by
Claude Opus 5
parent
c2bd5301b4
commit
29ff7a2c9b
@@ -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` 同理。
|
||||
|
||||
续训时各项配置的行为:
|
||||
|
||||
| 配置项 | 续训时 |
|
||||
|
||||
Reference in New Issue
Block a user