我是靠谱客的博主 无限河马,最近开发中收集的这篇文章主要介绍Kaggle —— Dogs VS Cats top 0.53%(ranking top 7),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目: 猫狗分类

数据集: train:    cat: 12500张 

                            dog: 12500张

                test:  12500张

输出结果:对于每一个图片给出该图片属于狗的概率

评价结果:[loss =  - frac{1}{n}sumlimits_{i = 1}^n {left[ {y_i^{true}log left( {y_i^{pred}} right) + left( {1 - y_i^{true}} right)log left( {1 - y_i^{pred}} right)} right]} ]

                  其中: n是样本的数量

                  注意:当预测精度较高时,如非常接近1或者0,此时会导致 ln(x) 出现偏差较大,因此这里有个小trick。此处的0.8与0.2分别为对Dog和Cat的置信度(实验验证,0.8和0.2的置信度效果好)。具体公式如下:

[fleft( {y_{pred}^i} right) = left{ begin{array}{l}
0.995{rm{                          }}y_{pred}^i ge 0.8\
0.005{rm{                          }}y_{pred}^i le 0.2\
y_{pred}^i{rm{                               }}else
end{array} right.]

   分析: 由于此处为二分类问题,且分类的对象:Dog and Cat在ImageNet分类中出现,因此可以适合迁移学习。

   方案1: 利用Caffe进行快速实验,查看迁移学习的效果。这里采用的是ResNet101进行的迁移学习,学习的部分为最后的全连接层。参数为:learning rate=1e-3, epochs = 1(实验验证,learning rate = 1e-4收敛较慢)。

  方案2:利用基于Tensorflow的高级库Keras进行快速的迁移学习。ImageNet上的模型对比结果为

Model NameModel SizeTop1 AccTop5 Acc
InceptionResNetV2215MB0.8040.953
Xception88MB0.7900.945
InceptionV392MB0.7880.944
ResNet5099MB0.7590.929
VGG19549MB0.7270.910
VGG16528MB0.7150.901
MobileNet17MB0.6650.871

通过对比,选择模型较好的InceptionResNetV2、Xception和InceptionV3进行finetuning。

实验参数为:learning rate = 1e-3,epoch = 10。

实验过程的测试:

1、在InceptionResNetV2、Xception和InceptionV3中,添加的全连接层探索。实验在InceptionResNetV2的基础上进行的实验。

    InceptionResNetV2_1024表示只添加一层全连接层,然后连接Softmax。

    InceptionResNetV2_1024*2表示添加两层全连接层,每一层后面加上一个Dropout层,然后连接Softmax。

实验结果如下表所示(last epoch)。

ModelTraining LossTraining AccVal LossVal AccScore on KaggleRanking
InceptionResNetV2_10240.16210.93560.02520.99490.0458535/1314
 InceptionResNetV2_1024*20.00610.99830.42630.95840.21145794/1314

2、实验在InceptionResNetV2中,上述lossTrick的作用。实验在InceptionResNetV2的基础上进行的实验。

其中 InceptionResNetV2表示只添加一层全连接层,然后连接Softmax, InceptionResNetV2+modifyLoss表示网络相同,只修改loss的求解方法。

ModelTraining LossTraining Acc

    Val

   Loss

Val AccScore on KaggleRanking
         InceptionResNetV2_1024 0.1621   0.9356  0.0252   0.9949   0.04585                   35/1314
InceptionResNetV2+modifyLoss 0.1621   0.9356   0.0252   0.99490.0445328/1314

3. 下面给出各个模型的实验结果以及Ensemble的结果。

ModelTraining LossTraining AccVal LossVal AccScore on KaggleRanking
InceptionResNetV2(Keras-TF)0.16210.93560.002520.99490.0445328/1314
Xception(Keras-TF)0.00850.99730.01970.99370.0434825/1314
InceptionV3(Keras-TF)0.01470.99500.03010.98930.07149177/1314
ResNet101(Caffe)--------0.05707102/1314
Ensemble--------0.037357/1314

Ensemble的过程:实验中实验了基于投票的Ensemble结果,但是效果并不好。本文中的Ensemble策略是:在原来的预测精度上进行求均值,然后利用上述的loss trick来得到最后的结果。

 

 

本文只是为了记录此次作业的过程。

     There may be some mistakes in this blog. So, any suggestions and comments are welcome!

    [Reference]

[1]  https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition#description

[2] https://baijiahao.baidu.com/s?id=1563055785256199&wfr=spider&for=pc

    

最后

以上就是无限河马为你收集整理的Kaggle —— Dogs VS Cats top 0.53%(ranking top 7)的全部内容,希望文章能够帮你解决Kaggle —— Dogs VS Cats top 0.53%(ranking top 7)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部