Skip to content

ypwhs/DogBreed_gluon

Repository files navigation

使用 gluon 实现狗品种分类

本项目是为了熟悉 gluon 操作的练手作,可以在测试集上获得0.28228的分数。

环境参考:

  • mxnet 0.12.1
  • numpy 1.13.3
  • tqdm 4.11.2
  • pandas 0.20.3
  • sklearn 0.19.0

思路

复现步骤分为以下几步:

Update

为了确定使用的预训练模型是否是最好的,我对所有预训练模型进行了迁移学习:

model val_loss
inceptionv3 0.296050225385
resnet152_v1 0.399359531701
resnet101_v1 0.410383010283
densenet161 0.418100789189
densenet201 0.453403010964
resnet50_v2 0.484435886145
resnet50_v1 0.496179759502
densenet169 0.512498702854
resnet34_v2 0.536734519526
vgg19_bn 0.557294445112
vgg16_bn 0.586511127651
resnet34_v1 0.591432901099
densenet121 0.591716498137
vgg19 0.619780953974
vgg16 0.669267293066
vgg13_bn 0.702507363632
vgg11_bn 0.708396691829
vgg13 0.756541173905
resnet18_v2 0.761708110571
vgg11 0.789955694228
resnet18_v1 0.832537706941
squeezenet1.1 1.6066500321
squeezenet1.0 1.62178872526
alexnet 1.77026221156

可以看到 densenet 并没有那么好,于是我只使用 inceptionv3 和 resnet152_v1 的特征,进行了融合迁移学习,获得了 0.27143 的分数。

Update

使用 Stanford Dogs Dataset 进行训练,使用了 inceptionv3 和 resnet152_v1,最终获得了 0.00398 的分数。

  • get_features_v3.ipynb 导出所有预训练模型输出的特征
  • stanford.ipynb 导出 Stanford Dogs Dataset 对应的特征,然后进行迁移学习,最后在测试集上进行预测