201 lines
4.6 KiB
Markdown
201 lines
4.6 KiB
Markdown
# 📚 训练参数详细说明
|
||
|
||
## 🔍 epochs(训练轮数)vs 照片数量
|
||
|
||
### ❌ 常见误解
|
||
|
||
**错误理解**: `epochs=150` 表示训练150张照片
|
||
|
||
### ✅ 正确理解
|
||
|
||
**`epochs` = 训练轮数**,不是照片数量!
|
||
|
||
---
|
||
|
||
## 📊 概念解释
|
||
|
||
### 1. Epochs(训练轮数)
|
||
|
||
**定义**: 模型完整遍历一次**所有训练数据**的次数
|
||
|
||
**你的数据集**:
|
||
- 训练集: **978张照片**
|
||
- 验证集: 245张照片
|
||
|
||
**如果 `epochs=150`**:
|
||
- 模型会看 **150遍** 所有978张训练照片
|
||
- 总共处理: **978 × 150 = 146,700 次图片训练**
|
||
|
||
### 2. 照片数量
|
||
|
||
**你的数据集**:
|
||
- 训练集: **978张照片**(这是固定的)
|
||
- 验证集: **245张照片**(这是固定的)
|
||
|
||
**照片数量不会改变**,无论epochs设置多少!
|
||
|
||
---
|
||
|
||
## 🎯 实际例子
|
||
|
||
### 例子1: epochs=1
|
||
|
||
```
|
||
训练过程:
|
||
- 第1轮: 看所有978张训练照片(1遍)
|
||
- 总共: 978张照片 × 1轮 = 978次训练
|
||
```
|
||
|
||
### 例子2: epochs=150(你的配置)
|
||
|
||
```
|
||
训练过程:
|
||
- 第1轮: 看所有978张训练照片(第1遍)
|
||
- 第2轮: 看所有978张训练照片(第2遍)
|
||
- 第3轮: 看所有978张训练照片(第3遍)
|
||
- ...
|
||
- 第150轮: 看所有978张训练照片(第150遍)
|
||
- 总共: 978张照片 × 150轮 = 146,700次训练
|
||
```
|
||
|
||
### 例子3: epochs=10(快速测试)
|
||
|
||
```
|
||
训练过程:
|
||
- 看所有978张训练照片,重复10遍
|
||
- 总共: 978张照片 × 10轮 = 9,780次训练
|
||
```
|
||
|
||
---
|
||
|
||
## 📋 参数对比表
|
||
|
||
| 参数 | 含义 | 你的数据集 | 说明 |
|
||
|------|------|-----------|------|
|
||
| **照片数量** | 数据集大小 | **978张**(训练集) | 固定不变 |
|
||
| **epochs** | 训练轮数 | **150轮** | 可以调整 |
|
||
| **总训练次数** | 照片数 × 轮数 | 978 × 150 = **146,700次** | 自动计算 |
|
||
|
||
---
|
||
|
||
## 💡 为什么需要多轮训练?
|
||
|
||
### 单轮训练(epochs=1)的问题
|
||
|
||
- ❌ 模型只看一遍数据,学习不充分
|
||
- ❌ 可能还没学会就停止了
|
||
- ❌ 准确率通常很低
|
||
|
||
### 多轮训练(epochs=150)的优势
|
||
|
||
- ✅ 模型可以反复学习,逐步改进
|
||
- ✅ 每轮都会提高一点准确率
|
||
- ✅ 最终达到更好的效果
|
||
|
||
### 训练过程示意
|
||
|
||
```
|
||
第1轮: 准确率 30% → 模型刚开始学习
|
||
第10轮: 准确率 50% → 模型在进步
|
||
第50轮: 准确率 70% → 模型越来越好
|
||
第100轮: 准确率 85% → 模型接近最佳
|
||
第150轮: 准确率 87% → 模型达到最佳(可能)
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 如何选择合适的epochs?
|
||
|
||
### 根据数据集大小
|
||
|
||
| 数据集大小 | 推荐epochs | 说明 |
|
||
|-----------|-----------|------|
|
||
| < 500张 | 50-100 | 小数据集,不需要太多轮 |
|
||
| 500-2000张 | 100-200 | **你的数据集(1223张)在这个范围** |
|
||
| > 2000张 | 100-300 | 大数据集,可以多训练几轮 |
|
||
|
||
### 你的数据集(1223张照片)
|
||
|
||
**推荐配置**:
|
||
- ✅ `epochs=150` - 足够训练(推荐)
|
||
- ✅ `epochs=100` - 也可以,但可能不够充分
|
||
- ✅ `epochs=200` - 如果时间充足,可以更多
|
||
|
||
---
|
||
|
||
## ⚠️ 注意事项
|
||
|
||
### 1. Epochs不是越多越好
|
||
|
||
**问题**: 训练太多轮可能导致"过拟合"
|
||
- 模型记住了训练数据,但不会泛化到新数据
|
||
- 验证集准确率反而下降
|
||
|
||
**解决**: 使用早停机制(patience)
|
||
- 如果50轮没有改善,自动停止
|
||
- 避免过度训练
|
||
|
||
### 2. 训练时间
|
||
|
||
**公式**: 训练时间 ≈ 单轮时间 × epochs
|
||
|
||
**你的情况**:
|
||
- 单轮时间: 约1-2分钟(使用MPS)
|
||
- epochs=150: 约150-300分钟 = **2.5-5小时**
|
||
|
||
---
|
||
|
||
## 📊 实际训练示例
|
||
|
||
### 你的配置
|
||
|
||
```python
|
||
train_segmentation_model(
|
||
dataset_path="datasets/检测仪/data.yaml",
|
||
model_name="yolov8n-seg.pt",
|
||
epochs=150, # 训练150轮
|
||
batch=8, # 每次处理8张照片
|
||
imgsz=640,
|
||
device="cpu" # 自动检测MPS
|
||
)
|
||
```
|
||
|
||
### 训练过程
|
||
|
||
```
|
||
训练开始...
|
||
训练集: 978张照片
|
||
验证集: 245张照片
|
||
|
||
Epoch 1/150: 处理978张照片(第1遍)
|
||
Epoch 2/150: 处理978张照片(第2遍)
|
||
Epoch 3/150: 处理978张照片(第3遍)
|
||
...
|
||
Epoch 150/150: 处理978张照片(第150遍)
|
||
|
||
训练完成!
|
||
总共: 978张 × 150轮 = 146,700次训练
|
||
```
|
||
|
||
---
|
||
|
||
## 🎓 总结
|
||
|
||
### 关键点
|
||
|
||
1. ✅ **epochs = 训练轮数**,不是照片数量
|
||
2. ✅ **照片数量是固定的**(你的数据集:978张训练,245张验证)
|
||
3. ✅ **epochs可以调整**(建议150轮)
|
||
4. ✅ **总训练次数 = 照片数 × epochs**
|
||
|
||
### 你的数据集
|
||
|
||
- 📸 **照片数量**: 978张(训练集)+ 245张(验证集)= 1223张
|
||
- 🔄 **训练轮数**: 150轮(epochs=150)
|
||
- 📊 **总训练次数**: 978 × 150 = 146,700次
|
||
|
||
---
|
||
|
||
**记住**: epochs是"看几遍",不是"看几张"!📚
|
||
|