微调模型

本工程通过PyTorch库进行卷积网络训练,其微调实现参考迁移学习

预训练模型

PyTorch提供了AlexNet的预训练模型

python文件

  • 微调实现:py/finetune.py
  • 自定义微调数据集类:py/utils/data/custom_finetune_dataset.py
  • 自定义批量采样器类:py/utils/data/custom_batch_sampler.py
  • 辅助函数:py/utils/util.py

训练参数

  • 批量处理:每次训练128个图像,其中32个正样本,96个负样本
  • 输入模型图像:缩放到(227, 227),随机水平翻转,进行归一化操作
  • 优化器
    • 使用SGD:学习率为1e-3,动量大小为0.9
    • 随步长衰减:每隔7轮衰减一次,衰减因子为0.1
  • 迭代次数:25

训练结果

$ python finetune.py 
...
...
Epoch 0/24
----------
train Loss: 0.1906 Acc: 0.9163
val Loss: 0.3662 Acc: 0.8692

Epoch 1/24
----------
train Loss: 0.1204 Acc: 0.9499
val Loss: 0.4081 Acc: 0.8701

Epoch 2/24
----------
train Loss: 0.0958 Acc: 0.9608
val Loss: 0.4002 Acc: 0.8719

Epoch 3/24
----------
train Loss: 0.0825 Acc: 0.9663
val Loss: 0.4505 Acc: 0.8725

Epoch 4/24
----------
train Loss: 0.0726 Acc: 0.9707
val Loss: 0.5031 Acc: 0.8697

Epoch 5/24
----------
train Loss: 0.0662 Acc: 0.9733
val Loss: 0.5340 Acc: 0.8681

Epoch 6/24
----------
train Loss: 0.0611 Acc: 0.9754
Qval Loss: 0.5102 Acc: 0.8714

Epoch 7/24
----------
train Loss: 0.0505 Acc: 0.9799
val Loss: 0.5529 Acc: 0.8725

Epoch 8/24
----------
train Loss: 0.0489 Acc: 0.9806
val Loss: 0.5540 Acc: 0.8728

Epoch 9/24
----------
train Loss: 0.0479 Acc: 0.9810
val Loss: 0.5818 Acc: 0.8717

Epoch 10/24
----------
train Loss: 0.0465 Acc: 0.9815
val Loss: 0.5819 Acc: 0.8727

Epoch 11/24
----------
train Loss: 0.0452 Acc: 0.9821
val Loss: 0.5765 Acc: 0.8732

Epoch 12/24
----------
train Loss: 0.0456 Acc: 0.9819
val Loss: 0.5957 Acc: 0.8725

Epoch 13/24
----------
train Loss: 0.0449 Acc: 0.9823
val Loss: 0.5857 Acc: 0.8724

Epoch 14/24
----------
train Loss: 0.0438 Acc: 0.9827
val Loss: 0.5943 Acc: 0.8723

Epoch 15/24
----------
train Loss: 0.0442 Acc: 0.9823
val Loss: 0.5874 Acc: 0.8730

Epoch 16/24
----------
train Loss: 0.0443 Acc: 0.9824
val Loss: 0.5950 Acc: 0.8720

Epoch 17/24
----------
train Loss: 0.0437 Acc: 0.9828
val Loss: 0.5945 Acc: 0.8729

Epoch 18/24
----------
train Loss: 0.0434 Acc: 0.9828
val Loss: 0.5975 Acc: 0.8725

Epoch 19/24
----------
train Loss: 0.0435 Acc: 0.9827
val Loss: 0.5900 Acc: 0.8730

Epoch 20/24
----------
train Loss: 0.0432 Acc: 0.9828
val Loss: 0.5922 Acc: 0.8730

Epoch 21/24
----------
train Loss: 0.0426 Acc: 0.9832
val Loss: 0.5977 Acc: 0.8720

Epoch 22/24
----------
train Loss: 0.0426 Acc: 0.9832
val Loss: 0.5974 Acc: 0.8726

Epoch 23/24
----------
train Loss: 0.0435 Acc: 0.9828
val Loss: 0.6019 Acc: 0.8718

Epoch 24/24
----------
train Loss: 0.0432 Acc: 0.9828
val Loss: 0.5996 Acc: 0.8718

Training complete in 461m 14s
Best val Acc: 0.873228

模型在训练过程中呈现过拟合现象,可考虑调整学习率、添加权重衰减以及更换优化器的方式:

  1. 学习率从1e-3调整为1e-4
  2. 添加L2权重衰减,衰减因子为1e-4
  3. 使用Adam替换SGD