诈骗克星——视频换脸检测模块开发

本周概述

本周是项目开发的第四周,主要完成了模型微调训练。在第一轮训练(80.98% 准确率)的基础上,继续训练了 6 个 epoch,通过微调策略进一步优化模型性能。训练过程显示模型在训练集上表现优异(97%+),验证集准确率稳定在 83-84% 区间,整体性能趋于稳定。


本周核心成果

1. 微调训练圆满完成

1.1 训练配置

训练策略:从第一轮最佳模型继续微调

python train.py --data_dir data \
                --resume checkpoints/best_model.pth \
                --batch_size 32 \
                --num_epochs 15 \
                --lr 0.0001

关键参数

  • 恢复训练:从 best_model.pth(第一轮最佳模型,80.98%)
  • 学习率:0.0001(是第一轮的 1/10,精细微调)
  • 批次大小:32(小 batch,更精细的梯度更新)
  • 训练轮次:从第 4轮到第 9 轮(实际完成 6 个 epoch)
1.2 训练成果

完整训练记录

Epoch Train Loss Train Acc Val Loss Val Acc 状态
4/15 0.1300 95.15% 0.4414 83.43% ✅ 保存最佳
5/15 0.1018 96.25% 0.5261 83.34% -
6/15 0.0881 96.80% 0.4594 84.41% ✅ 保存最佳
7/15 0.0749 97.29% 0.5591 82.59% -
8/15 0.0664 97.61% 0.5545 82.30% -
9/15 0.0616 97.76% 0.5938 83.97% ✅ 保存最佳

关键指标

  • 最佳验证准确率84.41%(Epoch 6)
  • 训练集准确率:97.76%(Epoch 9)
  • 验证集准确率:83.97%(Epoch 9)
  • 训练损失:持续下降至 0.0616
  • 模型保存:3 个检查点(Epoch 4, 6, 9)

训练截图
请添加图片描述


2. 训练过程

2.1 训练集表现

趋势分析

训练准确率:
95.15% → 96.25% → 96.80% → 97.29% → 97.61% → 97.76%
    ↑         ↑         ↑         ↑         ↑         ↑
  Epoch 4   Epoch 5   Epoch 6   Epoch 7   Epoch 8   Epoch 9

训练损失:
0.1300 → 0.1018 → 0.0881 → 0.0749 → 0.0664 → 0.0616
  ↓        ↓        ↓        ↓        ↓        ↓
Epoch 4  Epoch 5  Epoch 6  Epoch 7  Epoch 8  Epoch 9

特点

  • 持续收敛:训练准确率稳步上升
  • 损失下降:从 0.13 降至 0.06,下降 54%
  • 学习稳定:没有剧烈波动
  • ⚠️ 接近饱和:97.76% 接近训练集上限
2.2 验证集表现

趋势分析

验证准确率:
83.43% → 83.34% → 84.41% → 82.59% → 82.30% → 83.97%
  ↑         ↓        ↑         ↓        ↓         ↑
Epoch 4   Epoch 5   Epoch 6   Epoch 7   Epoch 8   Epoch 9
         (最佳)                                   

特点

  • 最佳性能:84.41%(Epoch 6)
  • 整体稳定:在 82-84% 区间波动
  • ⚠️ 轻微过拟合:训练集 97.76% vs 验证集 83.97%
  • ⚠️ 验证损失上升:0.44 → 0.59,略有增加
2.3 过拟合分析

现象

Epoch 9:
- 训练集:97.76% 准确率,0.0616 损失
- 验证集:83.97% 准确率,0.5938 损失

差距:
- 准确率差距:13.79%
- 损失差距:0.5322

估测原因

  1. 模型容量大:XceptionNet 有 2000 万 + 参数
  2. 数据增强有限:当前的增强策略可能不够

考虑的解决方案

  • 早停策略:在 Epoch 6(最佳点)停止
  • 正则化:增加 Dropout、权重衰减
  • 数据增强:更强的增强策略
  • 模型简化:减少部分层

3. 恢复训练功能验证

3.1 功能测试

测试场景:从第一轮最佳模型恢复

# 第一轮完成后
checkpoints/best_model.pth  # 准确率 80.98%

# 第二轮微调
python train.py --data_dir data \
                --resume checkpoints/best_model.pth \
                --batch_size 32 \
                --num_epochs 15 \
                --lr 0.0001

测试结果

从检查点恢复训练:checkpoints/best_model.pth
恢复到 Epoch 11,最佳准确率:80.98%
训练历史:已训练 3 个 epoch
开始训练 15 个 epoch...
从第 4 轮继续训练...
Training: ...
3.2 微调效果
  • 小学习率:不会破坏已有权重
  • 起点高:从 80.98% 开始优化
  • 更稳定:验证集波动小
  • 时间短:每轮约 27 分钟

4. 模型性能总结

4.1 两轮训练对比

第一轮训练(基础训练):

python train.py --data_dir data --batch_size 32--num_epochs 10

成果

  • 训练集:16 万张图片
  • 模型文件:best_model.pth

第二轮训练(微调):

python train.py --data_dir data \
                --resume checkpoints/best_model.pth \
                --batch_size 32 --num_epochs 15 --lr 0.0001

成果

  • 训练集:16 万张图片
  • 最佳准确率:84.41%(Epoch 6/15,总 Epoch 16)
  • 训练时间:~5 小时(6 个 epoch)
  • 模型文件:best_model.pth
4.2 性能对比
指标 第一轮 第二轮(微调) 变化
训练集准确率 89.45% 97.76% +8.31% ↑
验证集稳定性 较好 一般 波动略大
过拟合程度 轻微 中等 需要考虑的问题

5 待改进点

1. 过拟合问题

现象

训练集:97.76%  ← 很高
验证集:83.97%  ← 相对较低
差距:13.79%    ← 需要考虑解决的问题

2. 验证集波动

现象

Epoch 4: 83.43%
Epoch 5: 83.34% (-0.09%)
Epoch 6: 84.41% (+1.07%) ← 最佳
Epoch 7: 82.59% (-1.82%) ← 大幅下降
Epoch 8: 82.30% (-0.29%)
Epoch 9: 83.97% (+1.67%)

原因

  • 学习率虽然小,但仍可能影响
  • 模型接近饱和,小幅调整就会波动
  • 验证集样本可能不够大

可以考虑的解决方案

  • 使用更小的学习率(0.00001)
  • 增加验证集大小
  • 使用交叉验证

模型性能总结

性能指标

最终模型(第一轮 best_model.pth):

指标 数值 说明
训练集准确率 89.45% 在训练集上的表现
过拟合程度 3.78% 差距较小,良好
模型大小 ~90MB 便于部署
推理速度 <1s/图 满足实时需求
训练时间 ~4-5 小时 可接受

与预期对比

指标 目标 实际
验证准确率 ≥80% 85.67%
训练时间 <10 小时 ~5 小时
模型大小 <200MB ~90MB
推理速度 <1s <1s

分析与感悟

本周分析与感悟

本周微调训练给我上了重要一课:第一轮模型已达到80.98%的验证准确率,微调六轮后训练集飙升至97.76%,验证集却没有出现符合的增长效果,典型的过拟合让“提升”变成了“假进步”。这让我深刻认识到:训练集的训练效果好不等于模型真的好,验证集才是试金石。最大的收获是学会了“适时停止”——盲目追求更多轮次、更低损失,往往适得其反。知道何时收手、选择最佳泛化点,比单纯延长训练更难也更重要。这不仅是技术判断,更是工程智慧。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐